使用者群規則描述

規則描述部分是可嵌套的結構,較為複雜,此處單獨進行描述。

在 「新增」 使用者群時,會用到規則描述。


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": [] // 篩選條件的值
}

分群 API

以下介面的 request 和 response 都是 application/json 格式
公開欄位欄位名稱、欄位含義、欄位類型及可選取值:

欄位名

欄位含義

欄位類型

是否必填

可選值

其他說明

name

使用者群英文名

string


創建時不填寫則不校驗(預設給個不衝突的 name),如果填寫了則會進行重名校驗

cname

使用者群中文名

string



comment

使用者群備註

string



cron

調度週期

string


cron 運算式 如:0 0 0 ? * 表示每天 0 點計算,如果是單次使用者群則可省略

is_routine

是否是例行使用者群

boolean


如果是例行使用者群,則上面的cron必填

app_push_list

app push 配置清單

list



base_time

使用者群計算的基準時間

string


創建時不需填寫(填寫也無效)格式如:"2019-03-05 00:00:00"

unit

使用者群更新週期

string

DAY

目前只支援DAY

data_type

使用者群數據類型

string

BOOL


source_type

使用者群類型

string

1

規則創建的使用者群
註:匯入建立使用者群參考:「匯入建立」分群

limit

人群數量限制

integer

100

設置人群數量限制,會在計算使用者群時隨機取 limit 數值的人群
註:只支援手動群

獲取使用者群清單

GET /v2/user_groups 獲取使用者群清單

  • Responses 200

    [
      {
        "id": 0,
        "name": "string",
        "cname": "string",
        "user_name": "string",
        "create_time": "string", // 創建時間
        "data_type": "BOOL",
        "unit": "HOUR",
        "source_type": 0,
        "is_routine": true,
        "status": "PENDING",
        "comment": "string",
        "cron": "string",
        "app_push_list": [
          0
        ],
        "rule_content_list": [ // 規則創建的用戶信息, list size 為 1
          {
            "type": "string",
            "relation": "string",
            "rules": [
              {}
            ]
          }
        ],
        "failed_partition_count": 0, // 失敗的 partition 數, Type:int
        "last_succeed_partition": { // 最後一次計算成功的 partition 資訊,如果沒有則不傳
          "base_time": "string",
          "start_time": "string", // 計算的開始時間
          "finished_time": "string", // 計算的結束去間
          "user_count": 0, // 計算的用戶數
          "status": "SUCCEED", // partition 的狀態
          "rule_content_list": [
            {
              "type": "string",
              "relation": "string",
              "rules": [
                {}
              ]
            }
          ]
        },
        "last_partition_info": {
          "base_time": "string",
          "start_time": "string",
          "finished_time": "string",
          "user_count": 0,
          "status": "NEW",
          "next_partition_base_time": "string" // 下次計算的 base_time,單次用戶群不返回
        }
      }
    ] 

    執行使用者群

    POST /v2/user_groups/{id}/execute 執行使用者群

  • Request(In Path):
    • base_time_list :Partition 的 base_time。 Type :List<String>,可省略。 省略計算最近一次 Partition
  • Response 200

    {}

    獲取使用者群資訊

    GET /v2/user_groups/{id} 獲取使用者群資訊

  • Response 200

    {
      "id": 0,
      "name": "string",
      "cname": "string",
      "user_name": "string",
      "create_time": "string", // 創建時間
      "data_type": "BOOL",
      "unit": "HOUR",
      "source_type": 0,
      "is_routine": true,
      "status": "PENDING",
      "comment": "string",
      "cron": "string",
      "app_push_list": [
        0
      ],
      "rule_content_list": [ // 規則創建的用戶信息, list size 为 1
        {
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ],
      "failed_partition_count": 0, // 失敗的 partition 數, Type:int
      "last_succeed_partition": { // 最後一次計算成功的partition 信息,如果没有則不傳
        "base_time": "string",
        "start_time": "string", // 計算的開始時間
        "finished_time": "string", // 計算的開始時間
        "user_count": 0, // 計算的用戶數
        "status": "SUCCEED", // partition 的狀態
        "rule_content_list": [
          {
            "type": "string",
            "relation": "string",
            "rules": [
              {}
            ]
          }
        ]
      },
      "last_partition_info": {
        "base_time": "string",
        "start_time": "string",
        "finished_time": "string",
        "user_count": 0,
        "status": "NEW",
        "next_partition_base_time": "string" // 下次計算的 base_time,單次用户群不返回
      }
    }


    刪除使用者群

    DELETE /v2/user_groups/{id} 删除用户群

  • Response 200

    {}


    檢查使用者群執行狀態

    GET /v2/user_groups/{id}/status 檢查使用者群執行狀態

  • Request(In Path):
    • base_time_list:使用者群的 Partition 對應的 base_time,Type:List<String>,省略則返回最新一個 Partition 的狀態
  • Response 200

    [
      {
        "base_time": "string",
        "user_count": 0, // 對應 partition 的人數
        "status": "NEW", // partition 的狀態
        "start_time": "string", // partition 計算開始時間
        "finished_time": "string" // partition 計算結束時間
      }
    ]