# 操作检测 策略配置说明 # 一、使用举例 例子有些天马行空,目的是为了帮助大家更好的理解策略配置。 1. 杭州市3天内点击店铺列表>=5次,且点击店铺图片>=2次的用户,当用户再次点击店铺时,延迟2秒触发指定操作。 2. 全国范围5天内点击海底捞店铺>=3次,或者点击麦当劳店铺>=2次的用户,延迟2秒触发指定操作。 3. 上海市用户单次访问APP时,点击同一种商品>=3次,就触发指定操作。 4. 北京市用户30天内,累积5天以上都点击过朋友圈,当用户再次访问朋友圈时,就触发指定操作。 例子暂时就这么多,脑容量有限,大家各自尽情脑补吧! # 二、语义详解 ## 1、地理位置维度 ### 城市信息 字段名:cityId 字段类型:整型 比如可以限定策略只发生在杭州市。 ## 2、时间维度 **整体说明** 时间维度下的`周期天数`、`生效时间`、`是否包含历史行为`会综合作用,具体逻辑为: ``` if 包含历史行为 完全参考`周期天数` if 不包含历史行为 通过`周期天数`确定天数时不得早于`生效时间` ``` ### 周期天数 字段名:period 字段类型:整型 * 0: 限定为本次访问 * 1: 限定为当天访问 * 2: 限定为两天内,即昨天和今天 * ..依次类推。 ### 生效时间 字段名:effectiveTime 字段类型:整型 注:秒级时间戳 ### 是否包含历史行为 字段名:containHistory 字段类型:整型 * 0: 不包含 * 1: 包含 ## 3、触发维度 ### 触发时机 字段名:triggerMoment 字段类型:整型 * 0: 满足条件后即可触发 * 1: 满足条件后,触发基准点时才可触发。(基准点概念见 5、基准维度) ### 触发延迟 字段名:triggerDelay 字段类型:整型 注:单位秒 ### 是否循环触发 字段名:cycleTrigger 字段类型:整型 * 0: 不循环 * 1: 循环 ## 4、逻辑维度 ### 与或关系 字段名:relation 字段类型:字符串 * and: 与 * or: 或 ### 对比维度 字段名:type 字段类型:字符串 * same_person_number: 点击次数 * same_item_number: 任一item的点击次数 * same_person_date: 访问天数 * same_item_date: 任一item的访问天数 ### 条件表达式 字段名:operator typeValue 字段类型:字符串 数组 `operator`为"gte"代表“大于等于”。 `typeValue`中的第0项代表具体数值。 ## 5、基准维度 **概念解释** 通常我们会有类似这样的诉求:点击过3次A车型,并且在A车型详情(不能是A以外的车型详情)中点击过2次车型图片。 此时就需要基准维度来限定,点击A车型这个行为就是基准点,点击车型图片这个行为就需要参考基准点。 ### 是否是基准点 字段名:basePoint 字段类型:整型 * 0: 不是 * 1: 是 注:每个策略中最多只能有1个基准点。 ### 是否参考基准点 字段名:consultBasePoint 字段类型:整型 * 0: 不参考 * 1: 参考 ## 6、操作行为指令描述 ### 操作行为指令 字段名:instruction 字段类型:数组 (指令匹配时,数组元素之间默认为“或”的关系,意在兼容可能的新老版本指令) 详见:[操作行为指令格式说明](/Doc/操作行为指令/操作行为指令格式说明.md) ### 行为指令参数 字段名:itemName 字段类型:字符串 扩展参数。 # 三、JSON格式说明及字段注释 ``` { "rules": [ { "ruleId": 1, "cityId": 0, // 城市ID 大于0生效。 "period":3, // 涵盖天数 0:本次访问 1:当天 2:今天和昨天 依次类推。 "effectiveTime": 1603707142, // 策略生效时间 秒级时间戳 "cycleTrigger": 0, // 是否循环触发 0:不循环 1:循环 "containHistory": 0, // 是否包含历史行为 0:不包含 1:包含 "triggerMoment": 0, // 触发时机 0:满足条件时触发 1:满足条件后,访问基准商品时触发 "triggerDelay": 2, // 触发延迟,单位秒 "ruleContent": { "relation": "and", // and为且关系,or为或关系。 "rules": [{ "instruction": [{ "vm": { "value": ["",""], // 各元素之间是 且 关系。 "operator": "=" // =:等于 %:包含 }, "vp": { "value": [""], "operator": "%" }, "vl": { "value": [""], "operator": "%" }, "vq": { "value": [""], "operator": "%" }, "vr": { "value": [""], "operator": "%" }, "vf": { "value": [""], "operator": "%" }, "e": { "value": [""], "operator": "%" }, "h5": { "value": [""], "operator": "%" } }], // 元素之间是 或 关系。 "itemName": "", "type": "same_person_number", // same_person_number:点击次数 same_item_number:任一item的点击次数 same_person_date:访问天数 same_item_date:任一item的访问天数 same_person_category:访问种类数 "operator": "gte", // 大于等于 当前版本仅支持这一种。 "typeValue": [1], "basePoint": 1 // 是否是基准,0:不是 1:是 }, { "instruction": [{ "vm": { "value": ["",""], // 元素之间是 且 关系。 "operator": "=" }, "vp": { "value": [""], "operator": "%" }, "vl": { "value": [""], "operator": "%" }, "vq": { "value": [""], "operator": "%" }, "vr": { "value": [""], "operator": "%" }, "vf": { "value": [""], "operator": "%" }, "e": { "value": [""], "operator": "%" }, "h5": { "value": [""], "operator": "%" } }], // 元素之间是 或 关系。 "itemName": "", "type": "same_person_number", // same_person_number:点击次数 same_item_number:任一item的点击次数 same_person_date:访问天数 same_item_date:任一item的访问天数 same_person_category:访问种类数 "operator": "gte", "typeValue": [1], "consultBasePoint": 1 // 是否参考基准,0:不参考 1:参考 }] } } ] } ```