#ede33
Back
2026/04/08
1 min read

審核列表

審核列表.md
270 additions, 0 deletions
... ... @@ -1 +1,271 @@
1 +# 任務牆紀錄 - 審核列表
2 +### SUMMARY
3 +取得任務牆紀錄審核列表,支援多欄位篩選與分頁,包含審核基本資訊及對應的任務紀錄資料。
4 +
5 +### REFERENCE TABLE
6 +
7 +**Read**
8 +* `DBMT.CMS_AUDIT`
9 +* `DBMT.CMS_AUDIT_ENTRY`
10 +* `DBMT.USER_MISSION_LOG`
11 +* `DBMT.MISSION_MASTER_SETTING`
12 +* `DBMT.MISSION_SUB_SETTING`
13 +
14 +### ATTRIBUTES
15 +* METHOD: **GET**
16 +* PATH: `/api/features/mission-board/record/audit`
17 +* LOGIN REQUIRED: **TRUE**
18 +* FEATURE: `MISSION_BOARD_RECORD`
19 +* PERMISSION: `READ`, `APPLY`, `REVIEW`
20 +* CRYPTO: **None**
21 +
22 +### REQUEST
23 +#### HEADERS
24 +
25 +| Name | Type/Len | Required(*) | Desc |
26 +| ---| ---| ---| --- |
27 +| Content-Type | String | * | `"application/json"` |
28 +| Authorization | String | * | JWT Token |
29 +| X-Request-Id | String | | X-Request-Id for api flow tracing |
30 +
31 +```json
32 +// Example:
33 +{
34 + "Content-Type": "application/json",
35 + "Authorization": "Bearer jwt-token",
36 + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb"
37 +}
38 +```
39 +
40 +#### QUERY PARAMETERS
41 +
42 +| Name | Type/Len | Required(*) | Desc |
43 +| ---| ---| ---| --- |
44 +| page | Integer | | 頁碼(預設: 1) |
45 +| per_page | Integer | | 每頁筆數(預設: 20) |
46 +| audit__id | Integer | | 審核 ID |
47 +| audit__progress | List(Enum) | | 審核進度: `pending` / `approved` / `rejected` / `error` |
48 +| audit__requester_id | Integer | | 申請人 ID |
49 +| audit__auditor_id | Integer | | 審核人 ID |
50 +| requester__id | Integer | | 申請人使用者 ID |
51 +| requester__name | String | | 申請人姓名 |
52 +| requester__username | String | | 申請人帳號 |
53 +| auditor__id | Integer | | 審核人使用者 ID |
54 +| auditor__name | String | | 審核人姓名 |
55 +| auditor__username | String | | 審核人帳號 |
56 +| user_mission_log__id | Integer | | 任務紀錄 ID |
57 +| user_mission_log__user_id | String | | 使用者 ID |
58 +| user_mission_log__master_id | Integer | | 主任務 ID |
59 +| user_mission_log__sub_id | Integer | | 子任務 ID |
60 +| user_mission_log__source | String | | 來源 |
61 +
62 +```dpr
63 +// Example
64 +GET /api/features/mission-board/record/audit?page=1&per_page=20&audit__progress=pending&user_mission_log__user_id=U123456
65 +```
66 +
67 +### RESPONSE
68 +#### STATUS CODE
69 +* 200
70 +
71 +#### HEADERS
72 +
73 +| Name | Type/Len | Desc |
74 +| ---| ---| --- |
75 +| Authorization | String | JWT Token |
76 +| X-Request-Id | String | Returning Request-Id |
77 +
78 +```json
79 +// Example:
80 +{
81 + "Authorization": "Bearer jwt-token",
82 + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb"
83 +}
84 +```
85 +
86 +#### BODY
87 +
88 +| Level | Name | Type/Len | Nullable(*) | Desc |
89 +| ---| ---| ---| ---| --- |
90 +| 1 | status | String | | 回應狀態 (SUCCESS, FAILURE) |
91 +| 1 | data | Dict | | 通用資料包裝 |
92 +| 2 | items | List | | 審核列表 |
93 +| 2 | pagination | Dict | | 分頁資訊 |
94 +
95 +#### pagination
96 +
97 +| Level | Name | Type/Len | Nullable(*) | Desc |
98 +| ---| ---| ---| ---| --- |
99 +| 3 | page | Integer | | 當前頁碼 |
100 +| 3 | per_page | Integer | | 每頁筆數 |
101 +| 3 | total | Integer | | 總筆數 |
102 +
103 +#### items (List Item)
104 +
105 +| Level | Name | Type/Len | Nullable(*) | Desc |
106 +| ---| ---| ---| ---| --- |
107 +| 3 | id | Integer | | 審核 ID (`CMS_AUDIT.ID`) |
108 +| 3 | feature | Enum | | 功能模組 (`MISSION_BOARD_RECORD`) |
109 +| 3 | function | String | | 功能名稱 (`primary`) |
110 +| 3 | progress | Enum | | 審核進度: `pending` / `approved` / `rejected` / `error` |
111 +| 3 | comment | String | * | 審核備註 |
112 +| 3 | requester_id | Integer | | 申請人 ID |
113 +| 3 | auditor_id | Integer | * | 審核人 ID |
114 +| 3 | action | Enum | | 審核動作: `create` / `update` / `delete` |
115 +| 3 | create_time | Datetime | | 建立時間 |
116 +| 3 | update_time | Datetime | | 更新時間 |
117 +| 3 | requester | Dict | | 申請人資訊 |
118 +| 3 | auditor | Dict | * | 審核人資訊 |
119 +| 3 | data | Dict | | 任務紀錄資料 |
120 +
121 +#### requester / auditor
122 +
123 +| Level | Name | Type/Len | Nullable(*) | Desc |
124 +| ---| ---| ---| ---| --- |
125 +| 4 | id | Integer | | 使用者 ID |
126 +| 4 | username | String | | 使用者帳號 |
127 +| 4 | name | String | | 使用者姓名 |
128 +
129 +#### data
130 +
131 +| Level | Name | Type/Len | Nullable(*) | Desc |
132 +| ---| ---| ---| ---| --- |
133 +| 4 | mission_master | Dict | * | 主任務資訊 |
134 +| 4 | mission_subs | List(Dict) | * | 子任務資訊列表 |
135 +| 4 | user_mission_logs | List(Dict) | * | 任務紀錄列表 |
136 +
137 +#### mission_master
138 +
139 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
140 +| ---| ---| ---| ---| ---| --- |
141 +| 5 | id | Integer | | 主任務 ID | `MISSION_MASTER_SETTING.ID` |
142 +| 5 | name | String | | 主任務名稱 | `MISSION_MASTER_SETTING.NAME` |
143 +| 5 | status | Enum | | 狀態 | `MISSION_MASTER_SETTING.STATUS` |
144 +| 5 | category | Enum | | 任務分類 | `MISSION_MASTER_SETTING.CATEGORY` |
145 +| 5 | description | String | | 說明 | `MISSION_MASTER_SETTING.DESCRIPTION` |
146 +| 5 | summary | String | | 摘要 | `MISSION_MASTER_SETTING.SUMMARY` |
147 +| 5 | visible_start_time | Datetime | * | 顯示開始時間 | `MISSION_MASTER_SETTING.VISIBLE_START_TIME` |
148 +| 5 | visible_end_time | Datetime | * | 顯示結束時間 | `MISSION_MASTER_SETTING.VISIBLE_END_TIME` |
149 +| 5 | activity_start_time | Datetime | * | 活動開始時間 | `MISSION_MASTER_SETTING.ACTIVITY_START_TIME` |
150 +| 5 | activity_end_time | Datetime | * | 活動結束時間 | `MISSION_MASTER_SETTING.ACTIVITY_END_TIME` |
151 +| 5 | award_end_time | Datetime | * | 派獎截止時間 | `MISSION_MASTER_SETTING.AWARD_END_TIME` |
152 +
153 +#### mission_subs (List Item)
154 +
155 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
156 +| ---| ---| ---| ---| ---| --- |
157 +| 5 | id | Integer | | 子任務 ID | `MISSION_SUB_SETTING.ID` |
158 +| 5 | name | String | | 子任務名稱 | `MISSION_SUB_SETTING.NAME` |
159 +| 5 | activity_type | Enum | | 活動類型 | `MISSION_SUB_SETTING.ACTIVITY_TYPE` |
160 +| 5 | category | Enum | | 任務分類 | `MISSION_SUB_SETTING.CATEGORY` |
161 +| 5 | master_id | Integer | | 所屬主任務 ID | `MISSION_SUB_SETTING.MASTER_ID` |
162 +| 5 | tier | Integer | * | 層級 | `MISSION_SUB_SETTING.TIER` |
163 +| 5 | mission_content | Dict | * | 任務內容設定 | `MISSION_SUB_SETTING.MISSION_CONTENT` |
164 +| 5 | target_count | Integer | * | 目標次數 | `MISSION_SUB_SETTING.TARGET_COUNT` |
165 +| 5 | duplicate | Integer | * | 允許重複次數 | `MISSION_SUB_SETTING.DUPLICATE` |
166 +| 5 | cta_visible | Integer | * | CTA 顯示設定 | `MISSION_SUB_SETTING.CTA_VISIBLE` |
167 +| 5 | cta_link | String | * | CTA 連結 | `MISSION_SUB_SETTING.CTA_LINK` |
168 +| 5 | cta_content | String | * | CTA 文字 | `MISSION_SUB_SETTING.CTA_CONTENT` |
169 +| 5 | rule_id | Integer | * | 規則 ID | `MISSION_SUB_SETTING.RULE_ID` |
170 +| 5 | create_time | Datetime | | 建立時間 | `MISSION_SUB_SETTING.CREATE_TIME` |
171 +| 5 | update_time | Datetime | * | 更新時間 | `MISSION_SUB_SETTING.UPDATE_TIME` |
172 +
173 +#### user_mission_logs (List Item)
174 +
175 +| Level | Name | Type/Len | Nullable(*) | Desc | Source |
176 +| ---| ---| ---| ---| ---| --- |
177 +| 5 | id | Integer | | 任務紀錄 ID | `USER_MISSION_LOG.ID` |
178 +| 5 | user_id | String | | 使用者 ID | `USER_MISSION_LOG.USER_ID` |
179 +| 5 | master_id | Integer | | 主任務 ID | `USER_MISSION_LOG.MASTER_ID` |
180 +| 5 | sub_id | Integer | | 子任務 ID | `USER_MISSION_LOG.SUB_ID` |
181 +| 5 | count | Integer | | 次數(可為負數) | `USER_MISSION_LOG.COUNT` |
182 +| 5 | source | String | | 來源 | `USER_MISSION_LOG.SOURCE` |
183 +| 5 | create_time | Datetime | * | 建立時間 | `USER_MISSION_LOG.CREATE_TIME` |
184 +
185 +```json
186 +// Example:
187 +{
188 + "status": "SUCCESS",
189 + "data": {
190 + "items": [
191 + {
192 + "id": 42,
193 + "feature": "MISSION_BOARD_RECORD",
194 + "function": "primary",
195 + "progress": "pending",
196 + "comment": null,
197 + "requester_id": 1,
198 + "auditor_id": null,
199 + "action": "create",
200 + "create_time": "2026-04-08T10:00:00",
201 + "update_time": "2026-04-08T10:00:00",
202 + "requester": {
203 + "id": 1,
204 + "username": "admin",
205 + "name": "Admin User"
206 + },
207 + "auditor": null,
208 + "data": {
209 + "mission_master": {
210 + "id": 1,
211 + "name": "每日登入任務",
212 + "status": "ACTIVE",
213 + "category": "ASSIGNED",
214 + "description": "每日登入任務說明",
215 + "summary": "登入任務",
216 + "visible_start_time": "2026-01-01 00:00:00",
217 + "visible_end_time": "2026-12-31 23:59:59",
218 + "activity_start_time": "2026-01-01 00:00:00",
219 + "activity_end_time": "2026-12-31 23:59:59",
220 + "award_end_time": null
221 + },
222 + "mission_subs": [
223 + {
224 + "id": 10,
225 + "name": "登入一次",
226 + "activity_type": "LOGIN",
227 + "category": "ASSIGNED",
228 + "master_id": 1,
229 + "tier": 1,
230 + "mission_content": {},
231 + "target_count": 1,
232 + "duplicate": 0,
233 + "cta_visible": 1,
234 + "cta_link": null,
235 + "cta_content": null,
236 + "rule_id": null,
237 + "create_time": "2026-01-01 00:00:00",
238 + "update_time": null
239 + }
240 + ],
241 + "user_mission_logs": [
242 + {
243 + "id": 101,
244 + "user_id": "U123456",
245 + "master_id": 1,
246 + "sub_id": 10,
247 + "count": 5,
248 + "source": "CMS",
249 + "create_time": null
250 + }
251 + ]
252 + }
253 + }
254 + ],
255 + "pagination": {
256 + "page": 1,
257 + "per_page": 20,
258 + "total": 1
259 + }
260 + }
261 +}
262 +```
263 +
264 +#### ERROR CODE
265 +
266 +| HTTP Status | ErrorCode | Message | Desc |
267 +| ---| ---| ---| --- |
268 +| 401 | Unauthorized | Unauthorized | 未授權 |
269 +| 403 | Forbidden | Forbidden | 無權限存取 |
270 +| 422 | ValidationError | Validation error | Schema 驗證失敗 |