任務牆 - 建立審核新增.md
154 additions, 0 deletions
| ... | ... | @@ -1 +1,155 @@ |
| 1 | +## SUMMARY | |
| 2 | +建立任務牆主任務及設定子任務 | |
| 3 | +### REFERENCE TABLE | |
| 4 | +* `DBMT.CMS_MISSION_RULE_PATTERN` | |
| 5 | +* `DBMT.CMS_AUDIT` | |
| 6 | +* `DBMT.CMS_AUDIT_ENTRY` | |
| 7 | + | |
| 8 | +### ATTRIBUTES | |
| 9 | +* METHOD: **POST** | |
| 10 | +* PATH: `/api/features/mission-board/mission/create` | |
| 11 | +* LOGIN REQUIRED: **TRUE** | |
| 12 | +* FEATURE: `MISSION_BOARD` | |
| 13 | +* PERMISSION: `CREATE` | |
| 14 | +* CRYPTO: **None** | |
| 15 | + | |
| 16 | +### REQUEST | |
| 17 | +#### HEADERS | |
| 18 | + | |
| 19 | +| Name | Type/Len | Required(*) | Desc | | |
| 20 | +| ---| ---| ---| --- | | |
| 21 | +| Content-Type | String | * | `"application/json"` | | |
| 22 | +| Authorization | String | | JWT Token | | |
| 23 | +| X-Request-Id | String | | X-Request-Id for api flow tracing | | |
| 24 | + | |
| 25 | +```json | |
| 26 | +// Example: | |
| 27 | +{ | |
| 28 | + "Content-Type": "application/json", | |
| 29 | + "Authorization": "Bearer jwt-token", | |
| 30 | + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb" | |
| 31 | +} | |
| 32 | +``` | |
| 33 | + | |
| 34 | +#### PAYLOAD | |
| 35 | + | |
| 36 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 37 | +| ---| ---| ---| ---| ---| --- | | |
| 38 | +| 1 | progress | String | * | | 審核進度 | | |
| 39 | +| 1 | data | Dict | * | | 任務牆設定資料 | | |
| 40 | + | |
| 41 | +### DATA | |
| 42 | + | |
| 43 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 44 | +| ---| ---| ---| ---| ---| --- | | |
| 45 | +| 2 | misssion_board | Dict | * | | 主任務設定 | | |
| 46 | +| 2 | sub_mission_rules | List(Dict) | * | | 子任務條件設定 | | |
| 47 | +| 2 | mission_awards | List(Dict) | * | | 獎項設定 | | |
| 48 | + | |
| 49 | +#### | |
| 50 | + | |
| 51 | +#### mission_board | |
| 52 | + | |
| 53 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 54 | +| ---| ---| ---| ---| ---| --- | | |
| 55 | +| 3 | id | Integer | | * | 任務牆 ID (新增時為 Null) | | |
| 56 | +| 3 | name | String(50) | * | | 任務名稱 | | |
| 57 | +| 3 | status | Enum | * | | 狀態:<br>PUBLISHED: 上架<br>UNLISTED: 下架<br>BETA: 封測<br>(新增時固定為封測) | | |
| 58 | +| 3 | category | Enum | * | | 任務類別:<br>ASSINGED: 指定型<br>MILESTONE: 多門檻型<br>SEQUENTIAL: 關聯型 | | |
| 59 | +| 3 | summary | String | * | | 任務簡述 | | |
| 60 | +| 3 | description | String | * | | 任務指南 | | |
| 61 | +| 3 | visible_start_time | Datetime | * | | 上架時間 | | |
| 62 | +| 3 | visible_end_time | Datetime | * | | 下架時間 | | |
| 63 | +| 3 | activity_start_time | Datetime | * | | 任務開始時間 | | |
| 64 | +| 3 | activity_end_time | Datetime | * | | 任務結束時間 | | |
| 65 | +| 3 | award_end_time | Datetime | * | | 領獎結束時間 | | |
| 66 | +| 3 | dispaly_share_button | Boolean | * | | 是否顯示任務分享按鈕 | | |
| 67 | +| 3 | term | String | * | | 活動條款 | | |
| 68 | + | |
| 69 | +#### sub_mission_rules | |
| 70 | + | |
| 71 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 72 | +| ---| ---| ---| ---| ---| --- | | |
| 73 | +| 3 | id | Integer | | * | 子任務 ID (新增時為 Null) | | |
| 74 | +| 3 | name | String(50) | * | | 子任務名稱 | | |
| 75 | +| 3 | activity_type | Enum | * | | 子任務類型:<br>REDEEM_POINTS: 兌換點數 REDEEM_VOUCHER: 兌換票券 WRITE_OFF: 核銷票券<br>LOGIN: 登入<br>MGM: 會員推薦 MGM THIRD_PARTY: 第三方 | | |
| 76 | +| 3 | category | Enum | * | | 任務類別:<br>ASSINGED: 指定型<br>MILESTONE: 多門檻型<br>SEQUENTIAL: 關聯型 | | |
| 77 | +| 3 | target_count | Integer | * | | 完成目標數 | | |
| 78 | +| 3 | duplicate | Boolean | * | | 是否可重覆計算同種票券 | | |
| 79 | +| 3 | cta_visible | Boolean | * | | 是否設定 CTA | | |
| 80 | +| 3 | cta_link | String | | | CTA 連結 | | |
| 81 | +| 3 | cta_content | String | | | CTA 按鈕文字 | | |
| 82 | +| 3 | tier | Integer | * | | 排序 (任務順序) | | |
| 83 | +| 3 | | | | | | | |
| 84 | +| | | | | | | | |
| 85 | + | |
| 86 | +### | |
| 87 | + | |
| 88 | +### 條件設定 | |
| 89 | +範例: | |
| 90 | + | |
| 91 | +```scheme | |
| 92 | +[ | |
| 93 | + { | |
| 94 | + "field": "product_name", | |
| 95 | + "operator": "like", | |
| 96 | + "values": ["現金券", "抵用券"] | |
| 97 | + }, | |
| 98 | + { | |
| 99 | + "field": "point_limit", | |
| 100 | + "operator": "gt", | |
| 101 | + "values": [500] | |
| 102 | + } | |
| 103 | +] | |
| 104 | +``` | |
| 105 | + | |
| 106 | +* 請參考 Table Schema ([https://app.clickup.com/3626232/docs/3en7r-19300/3en7r-123898](https://app.clickup.com/3626232/docs/3en7r-19300/3en7r-123898))下方說明 | |
| 107 | +* **欄位說明** | |
| 108 | + * **field:** | |
| 109 | + * serial_id 指定票券 | |
| 110 | + * brand_id 指定品牌 | |
| 111 | + * brand_name 品牌關鍵字 | |
| 112 | + * product_name 品名關鍵字 | |
| 113 | + * point_limit 點數限制 | |
| 114 | + * member_identity 會員身份 (第一階段不實作) | |
| 115 | + * **operator:** | |
| 116 | + * in 完全相符 | |
| 117 | + * like 包含 | |
| 118 | + * not_like (品牌關鍵字、品名關鍵字),not_in (指定票券、指定品牌) 不包含 | |
| 119 | + * gt 大於 | |
| 120 | + * lt 小於 | |
| 121 | + * eq 等於 | |
| 122 | + * **value:**不論一或多個值,皆以陣列形式表示 | |
| 123 | + | |
| 124 | +### RESPONSE | |
| 125 | +#### STATUS CODE | |
| 126 | +* 201 | |
| 127 | +#### HEADERS | |
| 128 | + | |
| 129 | +| Name | Type/Len | Desc | | |
| 130 | +| ---| ---| --- | | |
| 131 | +| Authorization | String | JWT Token | | |
| 132 | +| X-Request-Id | String | Returning Request-Id | | |
| 133 | + | |
| 134 | +```json | |
| 135 | +// Example: | |
| 136 | +{ | |
| 137 | + "Authorization": "Bearer jwt-token", | |
| 138 | + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb" | |
| 139 | +} | |
| 140 | +``` | |
| 141 | + | |
| 142 | +#### BODY | |
| 143 | + | |
| 144 | +| Level | Name | Type/Len | Nullable(*) | Desc | | |
| 145 | +| ---| ---| ---| ---| --- | | |
| 146 | +| 1 | status | String | | 回應狀態 (SUCCESS, FAILURE) | | |
| 147 | +| 1 | data | Dict | | 通用資料包裝 | | |
| 148 | +| 2 | id | Integer | | `CMS_MISSION_RULE_PATTERN`<br>`.id` | | |
| 149 | + | |
| 150 | +#### ERROR CODE | |
| 151 | + | |
| 152 | +| HTTP Status | ErrorCode | Message | Desc | | |
| 153 | +| ---| ---| ---| --- | | |
| 154 | +| 400 | ValidationError | Product serial_id not exists | 商品 serial_id 不存在 | |