#d08f5
Back
2026/03/11
11 min read

任務紀錄 - 列表

任務紀錄 - 列表.md
416 additions, 34 deletions
... ... @@ -1,15 +1,28 @@
1 +# 任務紀錄
2 +
1 -任務紀錄首頁的列表
2 -### REFERENCE TABLE
3 - * `DBMT.MISSION_SUMMARY_RECORD`
3 + 查詢任務看板任務紀錄列表,支援多種條件篩選,包含任務主設定、任務子設定及會員資訊。支援未完成、可領取、已領取等顯示狀態查詢。
4 - ### ATTRIBUTES
4 + ## REFERENCE TABLE
5 +
6 +### 任務相關
7 +* MISSION_SUMMARY_RECORD: 任務統計紀錄表
8 +* MISSION_MASTER_SETTING: 任務主設定表
9 +* MISSION_SUB_SETTING: 任務子設定表
10 +* AWARD_MISSION_SETTING: 任務獎勵設定表
11 +* MISSION_AWARD_RECORD: 任務派獎紀錄表
12 +
13 +### 會員相關
14 +* ACCOUNT: 會員帳號表
15 +
16 +## ATTRIBUTES
17 +
5 - * PATH: `/api/features/mission-board/record`
18 + * PATH: `/api/features/mission-board/record/summary`
6 - * PERMISSION: GET
19 + * PERMISSION: `READ`
7 - | Authorization | String | | JWT Token |
20 + | Authorization | String | * | JWT Token |
8 21 "Content-Type": "application/json",
9 22 "Authorization": "Bearer jwt-token",
10 -```
11 -
12 -```json
13 23 "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb"
14 - #### Query String
24 + #### QUERY STRING PARAMETER
15 -| Level | Name | Type/Len | Required(*) | Nullable(*) | Desc |
16 -| ---| ---| ---| ---| ---| --- |
17 -| 1 | page | Integer | | * | 頁籤 DEFAULT = 1 |
18 -| 1 | per_page | Integer | | * | 筆數/頁 DEFAULT = 20 |
19 -| 1 | summary_record__id | Integer | | | 任務紀錄 ID |
20 -| 1 | summary_record__user_id | String | | | 身份證字號 |
21 -| 1 | invite_code | String | | | 會員編號 |
22 -| 1 | summary_record___master_id | Integer | | | 任務 ID |
23 -| 1 | mission_master__name | String | | | 任務名稱 |
24 -| 1 | mission_master__visible_start_time | Datetime | | | 上架時間(起) |
25 - | 1 | mission_master__visible_end_time | Datetime | | | 上架時間(訖) |
25 + | Name | Type/Len | Required(*) | Desc | Default |
26 +| ---| ---| ---| ---| --- |
27 +| page | Integer | | 頁碼 | 1 |
28 +| per_page | Integer | | 每頁筆數 (可選: 20, 50, 100, 500) | 20 |
29 +| id | Integer | | 統計紀錄 ID (精準查詢) | |
30 +| status | Enum | | 顯示狀態 (NOT_FINISHED=未完成, CLAIMABLE=可領取, CLAIMED=已領取) | |
31 +| user__user_id | String | | 身份證字號 (精準查詢) | |
32 +| user__invite_code | String | | 會員編號 (精準查詢) | |
33 +| mission_master__id | Integer | | 主任務 ID (精準查詢) | |
34 +| mission_master__name | String | | 主任務名稱 (模糊搜尋) | |
35 +| mission_master__visible_start_time | Datetime | | 主任務可見開始時間 (可見開始時間 <= 此時間) | |
36 +| mission_master__visible_end_time | Datetime | | 主任務可見結束時間 (可見結束時間 >= 此時間) | |
37 +| mission_sub__id | Integer | | 子任務 ID (精準查詢) | |
38 +| mission_sub__name | String | | 子任務名稱 (模糊搜尋) | |
39 +```dpr
40 +// Example - 查詢可領取狀態的任務紀錄
41 +GET /api/features/mission-board/record/summary?page=1&per_page=20&status=CLAIMABLE
42 +
43 +// Example - 查詢特定主任務的紀錄
44 +GET /api/features/mission-board/record/summary?mission_master__id=1&mission_master__name=每日簽到
45 +
46 +// Example - 查詢特定會員的任務紀錄
47 +GET /api/features/mission-board/record/summary?user__user_id=A123456789&user__invite_code=ABC123456
48 +
49 +// Example - 依時間範圍查詢
50 +GET /api/features/mission-board/record/summary?mission_master__visible_start_time=2024/12/01 00:00:00&mission_master__visible_end_time=2024/12/31 23:59:59
51 +```
52 +
26 - * 201
53 + * 200
54 +
27 - #### DATA
55 + #### Data
28 -| 2 | id | Integer | | 條件樣板 ID |
29 -| 2 | name | String | | 條件樣板名稱 |
30 -| 2 | category | Enum | | 條件樣板類型 |
31 -| 2 | criteria | List(Dict) | | 條件限制 |
32 -| 2 | create_id | Integer | | 建立 ID |
33 -| 2 | update_id | Integer |  * | 更新 ID |
34 -| 2 | create_time | Datetime | | 建立時間 |
35 - | 2 | update_time | Datetime | * | 更新時間 |
56 + | 2 | pagination | Dict | | 分頁資訊 |
57 +| 2 | items | List | | 任務紀錄列表 |
36 - ####
58 + #### pagination
59 +| Level | Name | Type/Len | Nullable(*) | Desc |
60 +| ---| ---| ---| ---| --- |
61 +| 3 | page | Integer | | 當前頁碼 |
62 +| 3 | per_page | Integer | | 每頁筆數 |
63 +| 3 | pages | Integer | | 總頁數 |
64 +| 3 | total | Integer | | 總筆數 |
65 +| 3 | first | String | | 第一頁 URL |
66 +| 3 | last | String | | 最後一頁 URL |
67 +| 3 | prev | String | * | 上一頁 URL |
68 +| 3 | next | String | * | 下一頁 URL |
69 +
70 +#### items
71 +
72 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
73 +| ---| ---| ---| ---| ---| --- |
74 +| 3 | id | Integer | | 統計紀錄 ID | `MISSION_SUMMARY_RECORD.ID` |
75 +| 3 | user_id | String | | 用戶身份證字號 | `MISSION_SUMMARY_RECORD.USER_ID` |
76 +| 3 | sum_count | Integer | * | 總累計次數/分數 | `MISSION_SUMMARY_RECORD.SUM_COUNT` |
77 +| 3 | master_id | Integer | | 主任務 ID | `MISSION_SUMMARY_RECORD.MASTER_ID` |
78 +| 3 | sub_id | Integer | * | 子任務 ID | `MISSION_SUMMARY_RECORD.SUB_ID` |
79 +| 3 | sub_target | Integer | * | 子任務目標數 | `MISSION_SUMMARY_RECORD.SUB_TARGET` |
80 +| 3 | category | Enum | | 任務類別 (ASSIGNED=指定型, MILESTONE=多門檻型, SEQUENTIAL=關聯型) | `MISSION_SUMMARY_RECORD.CATEGORY` |
81 +| 3 | status | Enum | * | 任務狀態 (INCOMPLETE=未完成, COMPLETED=已完成) | `MISSION_SUMMARY_RECORD.STATUS` |
82 +| 3 | display_status | Enum | * | 顯示狀態 (NOT_FINISHED=未完成, CLAIMABLE=可領取, CLAIMED=已領取) | Computed |
83 +| 3 | create_time | Datetime | | 建立時間 | `MISSION_SUMMARY_RECORD.CREATE_TIME` |
84 +| 3 | update_time | Datetime | * | 更新時間 | `MISSION_SUMMARY_RECORD.UPDATE_TIME` |
85 +| 3 | mission_master | Dict | * | 主任務資訊 | - |
86 +| 3 | mission_sub | Dict | * | 子任務資訊 | - |
87 +| 3 | award_mission_setting | Dict | * | 獎勵設定資訊 | - |
88 +| 3 | member | Dict | * | 會員資訊 | - |
89 +
90 +#### mission_master
91 +
92 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
93 +| ---| ---| ---| ---| ---| --- |
94 +| 4 | id | Integer | | 主任務 ID | `MISSION_MASTER_SETTING.ID` |
95 +| 4 | name | String | | 主任務名稱 | `MISSION_MASTER_SETTING.NAME` |
96 +| 4 | status | Enum | | 主任務狀態 (ACTIVE=啟用, INACTIVE=停用) | `MISSION_MASTER_SETTING.STATUS` |
97 +| 4 | category | Enum | | 任務類別 (ASSIGNED=指定型, MILESTONE=多門檻型, SEQUENTIAL=關聯型) | `MISSION_MASTER_SETTING.CATEGORY` |
98 +| 4 | description | String | | 主任務描述 | `MISSION_MASTER_SETTING.DESCRIPTION` |
99 +| 4 | summary | String | | 主任務摘要 | `MISSION_MASTER_SETTING.SUMMARY` |
100 +| 4 | visible_start_time | Datetime | * | 可見開始時間 | `MISSION_MASTER_SETTING.VISIBLE_START_TIME` |
101 +| 4 | visible_end_time | Datetime | * | 可見結束時間 | `MISSION_MASTER_SETTING.VISIBLE_END_TIME` |
102 +| 4 | activity_start_time | Datetime | * | 活動開始時間 | `MISSION_MASTER_SETTING.ACTIVITY_START_TIME` |
103 +| 4 | activity_end_time | Datetime | * | 活動結束時間 | `MISSION_MASTER_SETTING.ACTIVITY_END_TIME` |
104 +| 4 | award_end_time | Datetime | * | 獎勵結束時間 | `MISSION_MASTER_SETTING.AWARD_END_TIME` |
105 +| 4 | rule_id | Integer | * | 規則 ID | `MISSION_MASTER_SETTING.RULE_ID` |
106 +
107 +#### mission_sub
108 +
109 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
110 +| ---| ---| ---| ---| ---| --- |
111 +| 4 | id | Integer | | 子任務 ID | `MISSION_SUB_SETTING.ID` |
112 +| 4 | name | String | | 子任務名稱 | `MISSION_SUB_SETTING.NAME` |
113 +| 4 | activity_type | Enum | | 活動類型 (LOGIN=登入, TRADE=交易, REFERRAL=推薦等) | `MISSION_SUB_SETTING.ACTIVITY_TYPE` |
114 +| 4 | category | Enum | | 任務類別 (ASSIGNED=指定型, MILESTONE=多門檻型, SEQUENTIAL=關聯型) | `MISSION_SUB_SETTING.CATEGORY` |
115 +| 4 | master_id | Integer | | 主任務 ID | `MISSION_SUB_SETTING.MASTER_ID` |
116 +
117 +#### award_mission_setting
118 +
119 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
120 +| ---| ---| ---| ---| ---| --- |
121 +| 4 | id | Integer | | 獎勵設定 ID | `AWARD_MISSION_SETTING.ID` |
122 +| 4 | sub_id | Integer | * | 子任務 ID | `AWARD_MISSION_SETTING.SUB_ID` |
123 +| 4 | master_id | Integer | | 主任務 ID | `AWARD_MISSION_SETTING.MASTER_ID` |
124 +| 4 | award_type | Enum | * | 獎勵類型 (POINT=點數, VOUCHER=票券) | `AWARD_MISSION_SETTING.AWARD_TYPE` |
125 +| 4 | award_content | String | * | 獎勵內容 | `AWARD_MISSION_SETTING.AWARD_CONTENT` |
126 +| 4 | award_code | String | * | 獎勵代碼 | `AWARD_MISSION_SETTING.AWARD_CODE` |
127 +| 4 | award_group_id | String | * | 獎項群組 ID | `AWARD_MISSION_SETTING.AWARD_GROUP_ID` |
128 +| 4 | category | Enum | | 任務類別 (ASSIGNED=指定型, MILESTONE=多門檻型, SEQUENTIAL=關聯型) | `AWARD_MISSION_SETTING.CATEGORY` |
129 +| 4 | quota | Integer | * | 配額限制 | `AWARD_MISSION_SETTING.QUOTA` |
130 +| 4 | create_time | Datetime | | 建立時間 | `AWARD_MISSION_SETTING.CREATE_TIME` |
131 +| 4 | update_time | Datetime | * | 更新時間 | `AWARD_MISSION_SETTING.UPDATE_TIME` |
132 +
133 +#### member
134 +
135 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
136 +| ---| ---| ---| ---| ---| --- |
137 +| 4 | id | String | | 會員身份證字號 | `ACCOUNT.ID` |
138 +| 4 | invite_code | String | * | 推薦碼/會員編號 | `ACCOUNT.INVITE_CODE` |
139 +
140 +```json
141 +// Example:
142 +{
143 + "status": "SUCCESS",
144 + "data": {
145 + "pagination": {
146 + "page": 1,
147 + "per_page": 20,
148 + "pages": 1,
149 + "total": 5,
150 + "first": "/api/features/mission-board/record/summary?page=1&per_page=20",
151 + "last": "/api/features/mission-board/record/summary?page=1&per_page=20",
152 + "prev": null,
153 + "next": null
154 + },
155 + "items": [
156 + {
157 + "id": 5,
158 + "user_id": "E123456789",
159 + "sum_count": 1,
160 + "master_id": 1,
161 + "sub_id": 1,
162 + "sub_target": 1,
163 + "category": "ASSIGNED",
164 + "status": "COMPLETED",
165 + "display_status": "CLAIMABLE",
166 + "create_time": "2026/03/10 10:00:00",
167 + "update_time": "2026/03/10 10:05:00",
168 + "mission_master": {
169 + "id": 1,
170 + "name": "每日簽到任務",
171 + "status": "ACTIVE",
172 + "category": "ASSIGNED",
173 + "description": "每天登入即可完成任務",
174 + "summary": "連續簽到獲得更多獎勵",
175 + "visible_start_time": "2026/03/01 00:00:00",
176 + "visible_end_time": "2026/03/31 23:59:59",
177 + "activity_start_time": "2026/03/01 00:00:00",
178 + "activity_end_time": "2026/03/31 23:59:59",
179 + "award_end_time": "2026/04/07 23:59:59",
180 + "rule_id": 1
181 + },
182 + "mission_sub": {
183 + "id": 1,
184 + "name": "每日登入",
185 + "activity_type": "LOGIN",
186 + "category": "ASSIGNED",
187 + "master_id": 1
188 + },
189 + "award_mission_setting": {
190 + "id": 1,
191 + "sub_id": 1,
192 + "master_id": 1,
193 + "award_type": "POINT",
194 + "award_content": "100點",
195 + "award_code": "DAILY_LOGIN_100",
196 + "award_group_id": "1",
197 + "category": "ASSIGNED",
198 + "quota": 1,
199 + "create_time": "2026/03/01 00:00:00",
200 + "update_time": null
201 + },
202 + "member": {
203 + "id": "E123456789",
204 + "invite_code": "MEM12345"
205 + }
206 + },
207 + {
208 + "id": 4,
209 + "user_id": "D987654321",
210 + "sum_count": 1,
211 + "master_id": 1,
212 + "sub_id": 1,
213 + "sub_target": 1,
214 + "category": "ASSIGNED",
215 + "status": "COMPLETED",
216 + "display_status": "CLAIMED",
217 + "create_time": "2026/03/10 09:30:00",
218 + "update_time": "2026/03/10 09:40:00",
219 + "mission_master": {
220 + "id": 1,
221 + "name": "每日簽到任務",
222 + "status": "ACTIVE",
223 + "category": "ASSIGNED",
224 + "description": "每天登入即可完成任務",
225 + "summary": "連續簽到獲得更多獎勵",
226 + "visible_start_time": "2026/03/01 00:00:00",
227 + "visible_end_time": "2026/03/31 23:59:59",
228 + "activity_start_time": "2026/03/01 00:00:00",
229 + "activity_end_time": "2026/03/31 23:59:59",
230 + "award_end_time": "2026/04/07 23:59:59",
231 + "rule_id": 1
232 + },
233 + "mission_sub": {
234 + "id": 1,
235 + "name": "每日登入",
236 + "activity_type": "LOGIN",
237 + "category": "ASSIGNED",
238 + "master_id": 1
239 + },
240 + "award_mission_setting": {
241 + "id": 1,
242 + "sub_id": 1,
243 + "master_id": 1,
244 + "award_type": "POINT",
245 + "award_content": "100點",
246 + "award_code": "DAILY_LOGIN_100",
247 + "award_group_id": "1",
248 + "category": "ASSIGNED",
249 + "quota": 1,
250 + "create_time": "2026/03/01 00:00:00",
251 + "update_time": null
252 + },
253 + "member": {
254 + "id": "D987654321",
255 + "invite_code": "MEM67890"
256 + }
257 + },
258 + {
259 + "id": 3,
260 + "user_id": "C555666777",
261 + "sum_count": 1,
262 + "master_id": 1,
263 + "sub_id": 1,
264 + "sub_target": 1,
265 + "category": "ASSIGNED",
266 + "status": "COMPLETED",
267 + "display_status": "CLAIMABLE",
268 + "create_time": "2026/03/10 09:00:00",
269 + "update_time": "2026/03/10 09:15:00",
270 + "mission_master": {
271 + "id": 1,
272 + "name": "每日簽到任務",
273 + "status": "ACTIVE",
274 + "category": "ASSIGNED",
275 + "description": "每天登入即可完成任務",
276 + "summary": "連續簽到獲得更多獎勵",
277 + "visible_start_time": "2026/03/01 00:00:00",
278 + "visible_end_time": "2026/03/31 23:59:59",
279 + "activity_start_time": "2026/03/01 00:00:00",
280 + "activity_end_time": "2026/03/31 23:59:59",
281 + "award_end_time": "2026/04/07 23:59:59",
282 + "rule_id": 1
283 + },
284 + "mission_sub": {
285 + "id": 1,
286 + "name": "每日登入",
287 + "activity_type": "LOGIN",
288 + "category": "ASSIGNED",
289 + "master_id": 1
290 + },
291 + "award_mission_setting": {
292 + "id": 1,
293 + "sub_id": 1,
294 + "master_id": 1,
295 + "award_type": "POINT",
296 + "award_content": "100點",
297 + "award_code": "DAILY_LOGIN_100",
298 + "award_group_id": "1",
299 + "category": "ASSIGNED",
300 + "quota": 1,
301 + "create_time": "2026/03/01 00:00:00",
302 + "update_time": null
303 + },
304 + "member": {
305 + "id": "C555666777",
306 + "invite_code": "MEM55566"
307 + }
308 + },
309 + {
310 + "id": 2,
311 + "user_id": "B222333444",
312 + "sum_count": 0,
313 + "master_id": 1,
314 + "sub_id": 1,
315 + "sub_target": 1,
316 + "category": "ASSIGNED",
317 + "status": "INCOMPLETE",
318 + "display_status": "NOT_FINISHED",
319 + "create_time": "2026/03/10 08:30:00",
320 + "update_time": "2026/03/10 08:45:00",
321 + "mission_master": {
322 + "id": 1,
323 + "name": "每日簽到任務",
324 + "status": "ACTIVE",
325 + "category": "ASSIGNED",
326 + "description": "每天登入即可完成任務",
327 + "summary": "連續簽到獲得更多獎勵",
328 + "visible_start_time": "2026/03/01 00:00:00",
329 + "visible_end_time": "2026/03/31 23:59:59",
330 + "activity_start_time": "2026/03/01 00:00:00",
331 + "activity_end_time": "2026/03/31 23:59:59",
332 + "award_end_time": "2026/04/07 23:59:59",
333 + "rule_id": 1
334 + },
335 + "mission_sub": {
336 + "id": 1,
337 + "name": "每日登入",
338 + "activity_type": "LOGIN",
339 + "category": "ASSIGNED",
340 + "master_id": 1
341 + },
342 + "award_mission_setting": {
343 + "id": 1,
344 + "sub_id": 1,
345 + "master_id": 1,
346 + "award_type": "POINT",
347 + "award_content": "100點",
348 + "award_code": "DAILY_LOGIN_100",
349 + "award_group_id": "1",
350 + "category": "ASSIGNED",
351 + "quota": 1,
352 + "create_time": "2026/03/01 00:00:00",
353 + "update_time": null
354 + },
355 + "member": {
356 + "id": "B222333444",
357 + "invite_code": "MEM22233"
358 + }
359 + },
360 + {
361 + "id": 1,
362 + "user_id": "A123456789",
363 + "sum_count": 0,
364 + "master_id": 1,
365 + "sub_id": 1,
366 + "sub_target": 1,
367 + "category": "ASSIGNED",
368 + "status": "INCOMPLETE",
369 + "display_status": "NOT_FINISHED",
370 + "create_time": "2026/03/10 08:00:00",
371 + "update_time": "2026/03/10 08:30:00",
372 + "mission_master": {
373 + "id": 1,
374 + "name": "每日簽到任務",
375 + "status": "ACTIVE",
376 + "category": "ASSIGNED",
377 + "description": "每天登入即可完成任務",
378 + "summary": "連續簽到獲得更多獎勵",
379 + "visible_start_time": "2026/03/01 00:00:00",
380 + "visible_end_time": "2026/03/31 23:59:59",
381 + "activity_start_time": "2026/03/01 00:00:00",
382 + "activity_end_time": "2026/03/31 23:59:59",
383 + "award_end_time": "2026/04/07 23:59:59",
384 + "rule_id": 1
385 + },
386 + "mission_sub": {
387 + "id": 1,
388 + "name": "每日登入",
389 + "activity_type": "LOGIN",
390 + "category": "ASSIGNED",
391 + "master_id": 1
392 + },
393 + "award_mission_setting": {
394 + "id": 1,
395 + "sub_id": 1,
396 + "master_id": 1,
397 + "award_type": "POINT",
398 + "award_content": "100點",
399 + "award_code": "DAILY_LOGIN_100",
400 + "award_group_id": "1",
401 + "category": "ASSIGNED",
402 + "quota": 1,
403 + "create_time": "2026/03/01 00:00:00",
404 + "update_time": null
405 + },
406 + "member": {
407 + "id": "A123456789",
408 + "invite_code": "MEM123"
409 + }
410 + }
411 + ]
412 + }
413 +}
414 +```
415 +
37 - | 400 | ValidationError | Product serial_id not exists | 商品 serial_id 不存在 |
416 + | 400 | INVALID_PARAMETER | Invalid parameter | 參數格式錯誤 |
417 +| 401 | UNAUTHORIZED | Unauthorized | 未授權存取 |
418 +| 403 | FORBIDDEN | Forbidden | 無權限存取 |
419 +| 500 | INTERNAL_SERVER_ERROR | Internal server error | 伺服器內部錯誤 |