Rule engine el規則轉換 (for cms).md
46 additions, 16 deletions
| ... | ... | @@ -7,14 +7,22 @@ |
| 7 | - * Reference Table: | |
| 7 | + * Reference Table:RULE_ENGINE_FLOW | |
| 8 | - 1. 待母任務送審時, 會先以"子任務"為單位, 寫入MISSION_SUB_SETTING.mission_content, 格式為JSON | |
| 9 | - 2. 呼叫Backend api, 以"母任務"為單位 此api為寫入RULE_ENGINE_FLOW table (若子任務有更動也要重打該api), 以及若該母任務下架的話也要將該對應的RULE_ENGINE_FLOW.enable設定為false | |
| 10 | - 3. 之後cms在協助將response的資訊協助寫入RULE_ENGINE_FLOW(以及其母任務相關資訊), 以及將MISSION_MASTER_SETTING.rule.id回寫 | |
| 8 | + 1. 待母任務送審時, 會先以"子任務"為單位, 寫入對應的子任務json object到MISSION_SUB_SETTING.mission_content , example : | |
| 9 | + ```json | |
| 10 | + { | |
| 11 | + "field": "product_name", | |
| 12 | + "operator": "in", | |
| 13 | + "values": ["星巴克 150 元券", "威秀電影票"] | |
| 14 | + } | |
| 15 | + ``` | |
| 16 | + 2. 呼叫Backend api /rs/ruleEngineSetting, 此為以"母任務"為單位作為Request,其response如此頁spec 所述 | |
| 17 | + 3. 之後cms在協助將b的response的資訊,協助寫入RULE_ENGINE_FLOW table 中(包含table pk), 以及將MISSION_MASTER_SETTING.rule_id回寫 | |
| 18 | + 4. 註解:若子任務有更動或是若該母任務下架的話也要重打該api,RULE_ENGINE_FLOW.enable設定為false | |
| 19 | +request: | |
| 20 | + "activity_type":"EXCHANGE_VOUCHER", | |
| 11 | 21 | "content": { |
| 12 | 22 | "logic": "and", |
| 13 | 23 | "rules": [ |
| 14 | 24 | "errorCode": null, |
| 15 | 25 | "message": null, |
| 16 | 26 | "values": { |
| 17 | - "CHAIN_ID":"VERIFY001", | |
| 27 | + "CHAIN_TYPE":"MISSION", | |
| 28 | + "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 29 | + "ID":"0001", | |
| 18 | 30 | "content": "SER( |
| 19 | 31 | VERIFY001, |
| 20 | 32 | AND( |
| 21 | - "tier": "1", | |
| 33 | + "sub_id": "001", | |
| 22 | 34 | "activity_type":"exchange_voucher", |
| 23 | 35 | "field": null, |
| 24 | 36 | "operator": null, |
| 25 | - SER( | |
| 37 | + { | |
| 38 | + "success": true, | |
| 39 | + "errorCode": null, | |
| 40 | + "message": null, | |
| 41 | + "values": { | |
| 42 | + "CHAIN_TYPE":"MISSION", | |
| 43 | + "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 44 | + "ID":"0001", | |
| 45 | + "content": "SER( | |
| 26 | 46 | VERIFY001, |
| 27 | 47 | AND(VOUCHER) |
| 28 | - ).DATA'{"sub_id": '004', 'value': null}' | |
| 48 | + ).DATA'{"sub_id": '004', 'value': null}' " | |
| 49 | +} | |
| 29 | 50 | "logic": "and", |
| 30 | 51 | "rules": [ |
| 31 | 52 | { |
| 32 | - "tier": "1", | |
| 53 | + "sub_id": "001", | |
| 33 | 54 | "activity_type":"exchange_voucher", |
| 34 | 55 | "field": "serial_id", |
| 35 | 56 | "operator": "in", |
| 36 | 57 | "values": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] |
| 37 | 58 | }, |
| 38 | 59 | { |
| 39 | - "tier": "2", | |
| 60 | + "sub_id": "002", | |
| 40 | 61 | "activity_type":"exchange_voucher", |
| 41 | 62 | "field": "product_name", |
| 42 | 63 | "operator": "in", |
| 43 | 64 | "values": ["星巴克 150 元券", "威秀電影票"] |
| 44 | 65 | }, |
| 45 | 66 | { |
| 46 | - "tier": "3", | |
| 67 | + "sub_id": "003", | |
| 47 | 68 | "activity_type":"exchange_voucher", |
| 48 | 69 | "logic": "and", |
| 49 | 70 | "rules": [ |
| 50 | 71 | ] |
| 51 | 72 | }, |
| 52 | 73 | { |
| 53 | - "tier": "4", | |
| 74 | + "sub_id": "004", | |
| 54 | 75 | "activity_type":"exchange_voucher", |
| 55 | 76 | "field": null, |
| 56 | 77 | "operator": null, |
| 57 | 78 | } |
| 58 | 79 | |
| 59 | - | |
| 60 | - | |
| 61 | - SER( | |
| 80 | + { | |
| 81 | + "success": true, | |
| 82 | + "errorCode": null, | |
| 83 | + "message": null, | |
| 84 | + "values": { | |
| 85 | + "CHAIN_TYPE":"MISSION", | |
| 86 | + "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 87 | + "ID":"0001", | |
| 88 | + "content": "SER( | |
| 62 | 89 | VERIFY001, |
| 63 | 90 | AND( |
| 64 | 91 | SER(SERIAL_ID, IN).TAG(["1", "2"]), |
| 65 | 92 | ), |
| 66 | 93 | VOUCHER.DATA'{"sub_id": '004', 'value': null}' |
| 67 | 94 | ) |
| 68 | - ) | |
| 95 | + )" | |
| 96 | +} | |
| 97 | + | |
| 98 | + |