派獎 - 建立審核編輯.md
213 additions, 0 deletions
| ... | ... | @@ -1 +1,214 @@ |
| 1 | +### SUMMARY | |
| 2 | +更新待審核的派獎設定申請內容。 | |
| 3 | +* 只能編輯狀態為 PENDING 的審核 | |
| 4 | +* 只能編輯自己申請的審核 | |
| 5 | +* 需檢查派獎時間合理性 (start_time < end_time) | |
| 6 | +* 需檢查 ETA 發放類型是否提供發放時間 | |
| 7 | + | |
| 8 | +### REFERENCE TABLE | |
| 9 | +* `DBMT.CMS_AUDIT` | |
| 10 | +* `DBMT.CMS_AUDIT_ENTRY` | |
| 11 | +* `DBMT.AWARD_GROUP` | |
| 12 | +* `DBMT.AWARD` | |
| 13 | +* `DBMT.AWARD_GP` | |
| 14 | +* `DBMT.PUSHNOTIFY_RELATION` | |
| 15 | +* `DBMT.PUSHNOTIFY_NOTIFICATION_ENTRY` | |
| 16 | +* `DBMT.PUSHNOTIFY_MESSAGE_ENTRY` | |
| 17 | + | |
| 18 | +### ATTRIBUTES | |
| 19 | +* METHOD: **POST** | |
| 20 | +* PATH: `/api/features/award/groups/audit/update/{data_id: int}` | |
| 21 | +* LOGIN REQUIRED: **TRUE** | |
| 22 | +* FEATURE: `AWARD_GROUP` | |
| 23 | +* PERMISSION: `UPDATE`, `APPLY` | |
| 24 | +* CRYPTO: **None** | |
| 25 | + | |
| 26 | +### REQUEST | |
| 27 | +#### HEADERS | |
| 28 | + | |
| 29 | +| Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 30 | +| ---| ---| ---| ---| --- | | |
| 31 | +| Content-Type | String | * | | `"application/json"` | | |
| 32 | +| Authorization | String | * | | JWT Token | | |
| 33 | +| X-Request-Id | String | | | X-Request-Id for api flow tracing | | |
| 34 | + | |
| 35 | +```json | |
| 36 | +// Example: | |
| 37 | +{ | |
| 38 | + "Content-Type": "application/json", | |
| 39 | + "Authorization": "Bearer jwt-token", | |
| 40 | + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb" | |
| 41 | +} | |
| 42 | +``` | |
| 43 | + | |
| 44 | +#### PATH PARAMETERS | |
| 45 | + | |
| 46 | +| Name | Type/Len | Required(*) | Desc | | |
| 47 | +| ---| ---| ---| --- | | |
| 48 | +| audit_id | Integer | * | 審核 ID | | |
| 49 | + | |
| 50 | +#### PAYLOAD | |
| 51 | + | |
| 52 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 53 | +| ---| ---| ---| ---| ---| --- | | |
| 54 | +| 1 | progress | String | * | | 審核進度 | | |
| 55 | +| 1 | data | Dict | * | | 派獎設定資料 | | |
| 56 | + | |
| 57 | +### DATA | |
| 58 | + | |
| 59 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 60 | +| ---| ---| ---| ---| ---| --- | | |
| 61 | +| 2 | award_group | Dict | * | | 派獎群組設定 | | |
| 62 | +| 2 | create_awards | List(Dict) | | * | 新增獎項設定列表 | | |
| 63 | +| 2 | update_awards | List(Dict) | * | | 更新獎項設定列表 | | |
| 64 | + | |
| 65 | +### award_group | |
| 66 | + | |
| 67 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 68 | +| ---| ---| ---| ---| ---| --- | | |
| 69 | +| 3 | id | Integer | | * | 派獎群組 ID (新增時不提供) | | |
| 70 | +| 3 | name | String(50) | * | | 派獎群組名稱 | | |
| 71 | +| 3 | status | Enum | * | | 狀態:<br>ACTIVE: 上架<br>INACTIVE: 下架<br>RETIRED: 永久下架 | | |
| 72 | +| 3 | start_time | Datetime | * | | 派獎開始時間 | | |
| 73 | +| 3 | end_time | Datetime | * | | 派獎結束時間 | | |
| 74 | + | |
| 75 | +### create_awards (List Item) | |
| 76 | + | |
| 77 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 78 | +| ---| ---| ---| ---| ---| --- | | |
| 79 | +| 3 | award | Dict | * | | 獎項設定 | | |
| 80 | +| 3 | prize_gp | Dict | * | | 小樹點獎項設定 | | |
| 81 | +| 3 | notify | Dict | * | | 推播通知設定 | | |
| 82 | + | |
| 83 | +### create_awards.award | |
| 84 | + | |
| 85 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 86 | +| ---| ---| ---| ---| ---| --- | | |
| 87 | +| 4 | id | Integer | | * | 獎項 ID (新增時不提供) | | |
| 88 | +| 4 | code | String(50) | * | | 獎項代碼 | | |
| 89 | +| 4 | name | String(50) | * | | 獎項名稱 | | |
| 90 | +| 4 | active_status | Enum | * | | 啟用狀態:<br>ACTIVE: 啟用<br>INACTIVE: 停用 | | |
| 91 | +| 4 | award_type | Enum | * | | 獎項類型:<br>ORCA_POINT: 小樹點<br>QWARE: Qware 點數<br>SELFGEN_VOUCHER: 自建票券<br>EDENRED: Edenred<br>SYSTEX: Systex | | |
| 92 | +| 4 | deliver_type | Enum | * | | 發放類型:<br>IMMEDIATE: 立即發放<br>ETA: 預定時間發放 | | |
| 93 | +| 4 | deliver_amount | Integer | * | | 發放數量 | | |
| 94 | +| 4 | deliver_limit | Integer | * | | 發放上限 | | |
| 95 | +| 4 | deliver_time | Datetime | | * | 預定發放時間 (deliver_type=ETA 時必填) | | |
| 96 | + | |
| 97 | +### create_awards.prize_gp | |
| 98 | + | |
| 99 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 100 | +| ---| ---| ---| ---| ---| --- | | |
| 101 | +| 4 | id | Integer | | * | 小樹點獎項 ID (新增時不提供) | | |
| 102 | +| 4 | note | String(64) | | * | 備註 | | |
| 103 | + | |
| 104 | +### create_awards.notify | |
| 105 | + | |
| 106 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 107 | +| ---| ---| ---| ---| ---| --- | | |
| 108 | +| 4 | id | Integer | | * | 推播關聯 ID (新增時不提供) | | |
| 109 | +| 4 | notification | Dict | | * | 外部推播設定 | | |
| 110 | +| 4 | message | Dict | | * | 訊息夾設定 | | |
| 111 | + | |
| 112 | +### create_awards.notification | |
| 113 | + | |
| 114 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 115 | +| ---| ---| ---| ---| ---| --- | | |
| 116 | +| 5 | id | Integer | | * | 推播 ID (新增時不提供) | | |
| 117 | +| 5 | title | String(300) | * | | 推播標題 | | |
| 118 | +| 5 | content | String(200) | * | | 推播內文 | | |
| 119 | +| 5 | notification_behavior | Enum | * | | 推播點擊行為:<br>OPEN_URL: 開啟連結<br>OPEN_INBOX: 開啟訊息夾 | | |
| 120 | +| 5 | url | String(200) | | * | DeepLink 網址 (notification_behavior=OPEN_URL 時必填) | | |
| 121 | + | |
| 122 | +### create_awards.message | |
| 123 | + | |
| 124 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 125 | +| ---| ---| ---| ---| ---| --- | | |
| 126 | +| 5 | id | Integer | | * | 訊息夾 ID (新增時不提供) | | |
| 127 | +| 5 | title | String(100) | * | | 訊息夾標題 | | |
| 128 | +| 5 | content | String(4000) | * | | 訊息夾內文 | | |
| 129 | +| 5 | btn_wording | String(50) | | * | 按鈕文字 | | |
| 130 | +| 5 | url | String(4000) | | * | 網址 (btn_wording 有值時必填) | | |
| 131 | + | |
| 132 | +### update_awards (List Item) | |
| 133 | + | |
| 134 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 135 | +| ---| ---| ---| ---| ---| --- | | |
| 136 | +| 3 | award | Dict | * | | 獎項設定 | | |
| 137 | +| 3 | prize_gp | Dict | | * | 小樹點獎項設定 | | |
| 138 | +| 3 | notify | Dict | * | * | 推播通知設定 | | |
| 139 | + | |
| 140 | +### update_awards.award | |
| 141 | + | |
| 142 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 143 | +| ---| ---| ---| ---| ---| --- | | |
| 144 | +| 4 | id | Integer | * | | 獎項 ID | | |
| 145 | +| 4 | code | String(50) | * | | 獎項代碼 | | |
| 146 | +| 4 | name | String(50) | * | | 獎項名稱 | | |
| 147 | +| 4 | active_status | Enum | * | | 啟用狀態:<br>ACTIVE: 啟用<br>INACTIVE: 停用 | | |
| 148 | +| 4 | award_type | Enum | * | | 獎項類型:<br>ORCA_POINT: 小樹點<br>QWARE: Qware 點數<br>SELFGEN_VOUCHER: 自建票券<br>EDENRED: Edenred<br>SYSTEX: Systex | | |
| 149 | +| 4 | deliver_limit | Integer | * | | 發放上限 | | |
| 150 | +| 4 | deliver_time | Datetime | | * | 預定發放時間 (deliver_type=ETA 時必填) | | |
| 151 | + | |
| 152 | +### update_awards.prize_gp | |
| 153 | + | |
| 154 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 155 | +| ---| ---| ---| ---| ---| --- | | |
| 156 | +| 4 | id | Integer | * | | 小樹點獎項 ID | | |
| 157 | +| 4 | note | String(64) | | * | 備註 | | |
| 158 | + | |
| 159 | +### update_awards.notify | |
| 160 | + | |
| 161 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 162 | +| ---| ---| ---| ---| ---| --- | | |
| 163 | +| 4 | id | Integer | * | | 推播關聯 ID | | |
| 164 | +| 4 | notification | Dict | | * | 外部推播設定 | | |
| 165 | +| 4 | message | Dict | | * | 訊息夾設定 | | |
| 166 | + | |
| 167 | +### update_awards.notification | |
| 168 | + | |
| 169 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 170 | +| ---| ---| ---| ---| ---| --- | | |
| 171 | +| 5 | id | Integer | * | | 推播 ID | | |
| 172 | +| 5 | title | String(50) | | | 推播標題 | | |
| 173 | +| 5 | content | String(150) | | | 推播內文 | | |
| 174 | +| 5 | notification_behavior | Enum | | | 推播點擊行為:<br>OPEN_URL: 開啟連結<br>OPEN_INBOX: 開啟訊息夾 | | |
| 175 | +| 5 | url | String(135) | | * | DeepLink 網址 (notification_behavior=OPEN_URL 時必填) | | |
| 176 | + | |
| 177 | +### update_awards.message | |
| 178 | + | |
| 179 | +| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc | | |
| 180 | +| ---| ---| ---| ---| ---| --- | | |
| 181 | +| 5 | id | Integer | * | | 訊息夾 ID | | |
| 182 | +| 5 | title | String(100) | | | 訊息夾標題 | | |
| 183 | +| 5 | content | String(4000) | | | 訊息夾內文 | | |
| 184 | +| 5 | btn_wording | String(50) | | * | 按鈕文字 | | |
| 185 | +| 5 | url | String(4000) | | * | 網址 (btn_wording 有值時必填) | | |
| 186 | + | |
| 187 | +### RESPONSE | |
| 188 | +#### STATUS CODE | |
| 189 | +* 200 | |
| 190 | + | |
| 191 | +#### BODY | |
| 192 | + | |
| 193 | +| Level | Name | Type/Len | Nullable(*) | Desc | | |
| 194 | +| ---| ---| ---| ---| --- | | |
| 195 | +| 1 | status | String | | 回應狀態 (SUCCESS, FAILURE) | | |
| 196 | +| 1 | data | Dict | | 通用資料包裝 | | |
| 197 | +| 2 | id | Integer | | `CMS_AUDIT`.id | | |
| 198 | + | |
| 199 | +#### ERROR CODE | |
| 200 | + | |
| 201 | +| HTTP Status | ErrorCode | Message | Desc | | |
| 202 | +| ---| ---| ---| --- | | |
| 203 | +| 400 | ValidationError | Start time must be before end time | 開始時間必須早於結束時間 | | |
| 204 | +| 400 | ValidationError | Deliver time must be provided for ETA delivery | ETA 發放類型必須提供發放時間 | | |
| 205 | +| 400 | ValidationError | Deliver time must not be in the past | 發放時間不可為過去時間 | | |
| 206 | +| 400 | ValidationError | URL must be provided for OPEN_URL notification behavior | OPEN_URL 行為必須提供 URL | | |
| 207 | +| 400 | ValidationError | URL must be provided for button action | 按鈕文字有值時必須提供 URL | | |
| 208 | +| 401 | Unauthorized | Unauthorized | 未授權 | | |
| 209 | +| 403 | Forbidden | Forbidden | 無權限存取 | | |
| 210 | +| 400 | AwardGroupAuditError.DELIVER_TIME_BAD_REQUEST | Deliver time must greater than end_time and system now. | 發放時間必須大於結束時間且晚於系統目前時間 | | |
| 211 | +| 400 | AwardGroupAuditError.AWARD_GROUP_STATUS_BAD_REQUEST | Award group status not allowed to changed. | 派獎群組狀態不允許變更 | | |
| 212 | +| 400 | AwardGroupAuditError.AWARD_GROUP_START_TIME_BAD_REQUEST | Award group start time must greater than every awards. | 派獎開始時間必須早於所有獎項時間 | | |
| 213 | +| 400 | AwardGroupAuditError.AWARD_MISSING_BAD_REQUEST | At lease one award setting. | 至少需要一個獎項設定 | |