建立審核新增.md
128 additions, 0 deletions
| ... | ... | @@ -1 +1,129 @@ |
| 1 | +# 任務牆紀錄 - 建立審核新增 | |
| 2 | +### SUMMARY | |
| 3 | +建立審核以新增使用者任務紀錄(UserMissionLog)。每一筆 sub 任務對應一筆 AuditEntry,同一次請求可包含多筆 sub。 | |
| 4 | + | |
| 5 | +* `subs` 不可為空 | |
| 6 | +* `subs` 中的 `sub_id` 不可重複 | |
| 7 | +* `count` 不可為 0 | |
| 8 | +* `user_id` 必須存在於系統中 | |
| 9 | +* `master_id` 必須存在於系統中 | |
| 10 | +* 每個 `sub_id` 必須屬於對應的 `master_id` | |
| 11 | + | |
| 12 | +### REFERENCE TABLE | |
| 13 | + | |
| 14 | +**Write** | |
| 15 | +* `DBMT.CMS_AUDIT` | |
| 16 | +* `DBMT.CMS_AUDIT_ENTRY` | |
| 17 | + | |
| 18 | +**Read** | |
| 19 | +* `DBMT.ACCOUNT` | |
| 20 | +* `DBMT.MISSION_MASTER_SETTING` | |
| 21 | +* `DBMT.MISSION_SUB_SETTING` | |
| 22 | + | |
| 23 | +### ATTRIBUTES | |
| 24 | +* METHOD: **POST** | |
| 25 | +* PATH: `/api/features/mission-board/record/audit/create` | |
| 26 | +* LOGIN REQUIRED: **TRUE** | |
| 27 | +* FEATURE: `MISSION_BOARD_RECORD` | |
| 28 | +* PERMISSION: `UPDATE`, `APPLY` | |
| 29 | +* CRYPTO: **None** | |
| 30 | + | |
| 31 | +### REQUEST | |
| 32 | +#### HEADERS | |
| 33 | + | |
| 34 | +| Name | Type/Len | Required(*) | Desc | | |
| 35 | +| ---| ---| ---| --- | | |
| 36 | +| Content-Type | String | * | `"application/json"` | | |
| 37 | +| Authorization | String | * | JWT Token | | |
| 38 | +| X-Request-Id | String | | X-Request-Id for api flow tracing | | |
| 39 | + | |
| 40 | +```json | |
| 41 | +// Example: | |
| 42 | +{ | |
| 43 | + "Content-Type": "application/json", | |
| 44 | + "Authorization": "Bearer jwt-token", | |
| 45 | + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb" | |
| 46 | +} | |
| 47 | +``` | |
| 48 | + | |
| 49 | +#### BODY | |
| 50 | + | |
| 51 | +| Level | Name | Type/Len | Required(*) | Desc | | |
| 52 | +| ---| ---| ---| ---| --- | | |
| 53 | +| 1 | user_id | String | * | 使用者 ID (`ACCOUNT.ID`) | | |
| 54 | +| 1 | master_id | Integer | * | 主任務 ID (`MISSION_MASTER_SETTING.ID`) | | |
| 55 | +| 1 | subs | List(Dict) | * | 子任務列表 (不可為空,`sub_id` 不可重複) | | |
| 56 | + | |
| 57 | +#### subs (List Item) | |
| 58 | + | |
| 59 | +| Level | Name | Type/Len | Required(*) | Desc | | |
| 60 | +| ---| ---| ---| ---| --- | | |
| 61 | +| 2 | sub_id | Integer | * | 子任務 ID (`MISSION_SUB_SETTING.ID`),必須屬於 `master_id` | | |
| 62 | +| 2 | count | Integer | | 次數(不可為 0,負數可接受) | | |
| 63 | + | |
| 64 | +```json | |
| 65 | +// Example: | |
| 66 | +{ | |
| 67 | + "user_id": "U123456", | |
| 68 | + "master_id": 1, | |
| 69 | + "subs": [ | |
| 70 | + { | |
| 71 | + "sub_id": 10, | |
| 72 | + "count": 5 | |
| 73 | + }, | |
| 74 | + { | |
| 75 | + "sub_id": 11, | |
| 76 | + "count": 3 | |
| 77 | + } | |
| 78 | + ] | |
| 79 | +} | |
| 80 | +``` | |
| 81 | + | |
| 82 | +### RESPONSE | |
| 83 | +#### STATUS CODE | |
| 84 | +* 201 | |
| 85 | + | |
| 86 | +#### HEADERS | |
| 87 | + | |
| 88 | +| Name | Type/Len | Desc | | |
| 89 | +| ---| ---| --- | | |
| 90 | +| Authorization | String | JWT Token | | |
| 91 | +| X-Request-Id | String | Returning Request-Id | | |
| 92 | + | |
| 93 | +```json | |
| 94 | +// Example: | |
| 95 | +{ | |
| 96 | + "Authorization": "Bearer jwt-token", | |
| 97 | + "x-request-id": "78f91284-d9df-43e6-a8d2-d557273c10bb" | |
| 98 | +} | |
| 99 | +``` | |
| 100 | + | |
| 101 | +#### BODY | |
| 102 | + | |
| 103 | +| Level | Name | Type/Len | Nullable(*) | Desc | | |
| 104 | +| ---| ---| ---| ---| --- | | |
| 105 | +| 1 | status | String | | 回應狀態 (SUCCESS, FAILURE) | | |
| 106 | +| 1 | data | Dict | | 通用資料包裝 | | |
| 107 | +| 2 | id | Integer | | 審核 ID (`CMS_AUDIT.ID`) | | |
| 108 | + | |
| 109 | +```json | |
| 110 | +// Example: | |
| 111 | +{ | |
| 112 | + "status": "SUCCESS", | |
| 113 | + "data": { | |
| 114 | + "id": 42 | |
| 115 | + } | |
| 116 | +} | |
| 117 | +``` | |
| 118 | + | |
| 119 | +#### ERROR CODE | |
| 120 | + | |
| 121 | +| HTTP Status | ErrorCode | Message | Desc | | |
| 122 | +| ---| ---| ---| --- | | |
| 123 | +| 401 | Unauthorized | Unauthorized | 未授權 | | |
| 124 | +| 403 | Forbidden | Forbidden | 無權限存取 | | |
| 125 | +| 409 | MissionBoardRecordAuditError.USER_NOT_FOUND | User not found | 使用者不存在 | | |
| 126 | +| 409 | MissionBoardRecordAuditError.MISSION_MASTER_NOT_FOUND | Mission master not found | 主任務不存在 | | |
| 127 | +| 409 | MissionBoardRecordAuditError.MISSION_SUB_NOT_FOUND | Mission sub not found | 子任務不屬於此主任務 | | |
| 128 | +| 422 | ValidationError | Validation error | subs 為空、sub_id 重複、count 為 0 等 Schema 驗證失敗 | |