1. 分群规则描述

规则描述部分是可嵌套的结构,较为复杂,此处单独进行描述。
在 “添加” 分群时,会用到规则描述。

rules\_relation\_node: 规则之间的逻辑关系

// 规则间逻辑关系
{
  "type": "rules_relation"
  "relation": string; // and/or
  "rules":[] // 只允许 type 为 "rules_relation" 和三种规则节点,不允许为空
}

rule\_node: 规则节点,分三种

// 属性规则
{
  "type": "profile_rule",
  "field": string, // 属性、分群或属性和分群的组合
  "function": string, // 规则函数(指标约束) 
  "params": [] // 规则条件值。List<Object>
}
// 事件规则
{
  "type": "event_rule",
  "measure": {
    "type": "event_measure",
    "event_name": string, // 事件名
    "aggregator": string, // 指标统计方式,如count, sum之类
    "field": string // optional. 某些指标统计方式对应的 field 可以为空
  },
  "time_function": string, // 时间区间函数
  "time_params": [], // 时间区间参数
  "function": string, // 规则函数 (指标约束)
  "params": [], // 规则条件。不出现指标
  "filters": [] // 筛选条件。可以为空列表,不为空时只有一个元素,filter_relation_node或filter_node
}
// 行为序列规则
{
  "type": "event_sequence_rule",
  "time_function": string, // 行为序列的时间函数
  "time_params": [], // 行为序列的时间区间参数
  "steps":
  [
    {
      "event": string, // 事件名1/虚拟事件1
      "filters": [] // 筛选条件,同上
    },
    {
      "event": string, // 事件名2/虚拟事件2
      "filters": [] // 筛选条件,同上
    }
  ]
}

filter\_realtion\_node: 同一事件的筛选条件的逻辑关系

{
  "type": "filters_relation",
  "relation": string; // and/or
  "subfilters":[] // 只允许type为filters_relation或filter
}

filter\_node: 事件或事件型指标的数据约束

{
  "type": "filter"
  "field": string, // 事件属性
  "function": string, // 筛选条件函数
  "params": [] // 筛选条件的值
}

2. 添加一个分群

[POST /segmenter/rule]

  • Request (application/json)
{
  "id": 0, // 写 0 即可 
  "name": "last_30_days_apply",
  "cname": "last_30_days_apply",
  "type": 0, // 分群执行方式,0 单次、1 规则创建例行执行、2 query_result 计算结果、5 外部导入单次执行、6 外部导入例行执行
  "app_push_list": [
    0 // app push 配置列表,不带可以不写
  ],
  "scheduler": { // 例行分群配置
    "running": true, // 执行状态,true 已启动、false 已停止
    "cron": "string" // 更新时间,cron 表达式格式,如:0 0 3 2,3,4 * ? *
  },
  "content": {
    "type": "string",
    "relation": "string",
    "rules": [
      {}
    ]
  }
}
  • Response 200 (application/json)
{
  "id": 0, // 分群ID
  "base_time": "string" // 新建分群的首个 partition 的 base_time,形如:2018-01-02 10:00:00
}

3. 执行一个分群

[POST /segmenter/execute]

  • Request (application/json)
[
  {
    "id": 0, // 分群 ID
    "base_time_list": [
      "string" // 2018-08-28 10:00:00
    ]
  }
]
  • Response 200 (application/json)
{}

4. 获取一个分群的执行状态

[POST /segmenter/status]

  • Request (application/json)
[
  {
    "id": 0, // 分群 id
    "base_time_list": [
      "string" // base_time 列表, 形如 2018-08-28 10:00:00
    ]
  }
]
  • Response 200 (application/json)
[
  {
    "id": 0, // 分群ID
    "result": [
      {
        "base_time": "string", // 计算的基准时间,形如 2018-08-28 10:00:00
        "count": 0, // 计算结果:总人数
        "status": "string", // 分群状态,新建分群还未执行:new、执行中:computing、执行完毕:succeed、执行失败:failed
        "finished_time": "string", // 分群计算的完成时间
        "error_code": 0 // 失败原因
      }
    ]
  }
]

5. 删除一个分群

[DELETE /segmenter/rule/{id}]

  • Response 200 (application/json)
{}

6. 获取所有分群

[GET /segmenter/rule/all]

  • Response (application/json)
{
  "total": 0, // 分群总数
  "result": [
    {
      "id": 0, // 分群 ID
      "name": "string", // 分群名
      "cname": "string", // 分群显示名
      "user_name": "string", // 创建分群的用户
      "create_time": "string", // 创建分群的时间
      "type": 0, // 分群执行方式,0 单次、1 规则创建例行执行、2 query_result 计算结果、5 外部导入单次执行、6 外部导入例行执行、7 SQL 创建
      "dir_id": 0, // 分群所在的目录 ID
      "scheduler": {
        "running": true, // 执行状态,true 已启动、false 已停止
        "cron": "string", // 更新时间,cron 表达式格式,如:0 0 3 2,3,4 * ? *
        "execute_cron": "string" // 执行时间,execute_cron 表达式格式,如:0 0 3 2,3,4 * ? *
      },
      "failed_partition_count": 0, // 失败的 partition 数
      "content": {
        "type": "string", // 定义规则间的逻辑关系,值为:rules_relation
        "relation": "string", // and/or
        "rules": [ // 规则节点列表
          {}
        ]
      },
      "last_partition": {
        "base_time": "string", // 分群计算的基准时间 2018-08-28 11:00:00
        "finished_time": "string", // 分群计算的完成时间
        "count": 0, // 总人数
        "app_push_list": [ // 推送配置
          0 // 推送配置 ID
        ],
        "status": "string", // Partition 状态,新建分群还未执行:new、执行中:computing、执行完毕:finish、执行失败:failed
        "content": { // 分群规则,此结构可以作为规则节点来嵌套、组合使用
          "type": "string", // 定义规则间的逻辑关系,值为:rules_relation
          "relation": "string", // and/or
          "rules": [ // 规则节点列表
            {}
          ]
        }
      }
    }
  ]
}