#3dbbc
Back
2025/12/05
7 min read

派獎 - 更新審核編輯

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