手冊首頁 / 專案與任務 / 我的任務

我的任務(My Tasks,受稽方執行)

功能群:稽核執行|輪次狀態機與 AP→AR→POA&M 資料模型先讀 功能群總覽

事實基準:2026-07-05 從 FE / BE code 掃出(FR-038 v2 + 證據蒐集任務執行);API schema 逐條對照 api/grc/serializers/job.pyapi/grc/serializers/job_batch_complete.pyapp/participant/service/task_assignee_service.py

1. 功能描述

我的任務是受稽方執行人員的跨專案任務收件匣:列出當前使用者被指派的證據蒐集任務(prep-job,由專案規劃頁的任務指派 + 開始執行任務產生),提供上傳證據 / 填問卷 / 留言 / 完成任務的執行面。與 AP/AR/POA&M 頁不同,本頁不綁單一輪次階段,而是以任務狀態(TODO / PROCESSING / COMPLETED)為 gate,跨所有專案彙整當前使用者的待辦。

主要使用者:任務被指派人(assignee,受稽方);覆核人(reviewer / is_approver)另有退回權。

角色速覽(本頁角色是任務層,不是專案層的 manager/auditor/viewer):

角色 一句話
assignee 任務被指派人 — 受稽方,執行任務、上傳證據、完成
reviewer 覆核人(is_approver)— 可退回任務要求補件

任務的來源與文案真相在專案規劃頁的 prep-job(BPMN userTask 衍生,見 專案規劃頁);本頁是其執行下游。PM 在規劃頁「開始執行任務」把任務 TODO→PROCESSING 後,任務才出現在受稽方的收件匣可執行。

1.1 功能總覽(本頁全部功能)

# 功能 說明 位置 詳述
1 任務清單(分頁 / 排序) 跨專案彙整當前使用者被指派任務;欄:專案 / 群組·控制項 / AO / 任務名 / 類型 / 狀態 左清單面板(55%) §6.2
2 關鍵字搜尋 任務名關鍵字 清單工具列 §6.2
3 狀態篩選 全部 / TODO / PROCESSING / COMPLETED(預設 PROCESSING) 清單工具列 §4
4 專案篩選 依專案下拉過濾 清單工具列 §6.1
5 批次完成 多選可完成任務一鍵批次完成(逐專案分送) 清單工具列(選取後出現) UC-MT-02
6 任務明細抽屜 點列開右抽屜(45%):描述 / 指南 / 指派 / 部門 / 設備 / 問卷 / 證據 / 連結 / 留言 右抽屜 JobExecutionDrawer UC-MT-01
7 上傳檔案證據 拖放 / 瀏覽上傳檔案(FILE 證據),可預覽 / 刪除 抽屜證據區 UC-MT-01
8 新增 / 編輯連結證據 標題 + URL(LINK 證據)增改刪 抽屜連結區 UC-MT-03
9 填問卷 開問卷填寫頁(survey-v2-fill,新分頁);狀態顯示(0 TODO…9 完成) 抽屜問卷區 §11
10 留言 任務留言增改刪(作者本人可改刪) 抽屜留言區 UC-MT-04
11 完成任務 就緒後完成(general 需 ≥1 證據;survey 需全問卷完成) 抽屜底部按鈕 UC-MT-01
12 退回任務 覆核人(reviewer)退回任務(需理由) 抽屜底部按鈕(reviewer 模式) UC-MT-05

UC(§2)展開本頁所有具實質後端寫入邏輯的功能:單任務執行完成(含上傳 FILE 證據,1/7/11)、批次完成(5)、連結證據增改刪(8)、任務留言(10)、覆核人退回(12)。純顯示 / 導覽類(1 清單、2 搜尋、3/4 篩選)見 §5 / §6.2;填問卷(9)另有所屬頁面(開 survey-v2-fill 新分頁填寫,本頁只顯示狀態並作為完成 gate,見 §11),於此只交叉連結不重複。

2. Use Case

角色速覽(本頁角色是任務層,不是專案層的 manager/auditor/viewer):

角色 一句話
assignee 任務被指派人 — 受稽方,執行任務、上傳證據、完成
reviewer 覆核人(is_approver)— 可退回任務要求補件

流程圖視覺慣例:菱形 = 判斷、橘底 = 例外/擋下、紅框 = 錯誤(標 error code)、綠框 = 成功終點、虛線 = 可選路徑。

UC-MT-01 執行並完成單一任務

項目 內容
角色 assignee
前置條件 任務狀態 = PROCESSING(PM 已在規劃頁「開始執行任務」);為任務指派人
產出 / 後置條件 證據寫 compliance.job_evidences;就緒後 complete → job_executions.status COMPLETED(走 flow-engine)
mytasks_uc_01 start gate 任務狀態 = PROCESSING 且為指派人? start->gate ro TODO 未顯示 / COMPLETED 唯讀 gate->ro open 開任務明細抽屜 gate->open ev 上傳證據(FILE / LINK) 或填問卷(survey-v2-fill) open->ev ready 就緒? general:≥1 證據 survey:全問卷完成 ev->ready dis 完成按鈕 disabled (帶原因) ready->dis done 完成任務 POST /flow-engine/task/complete/{templateJobId} ready->done ok job_executions.status → COMPLETED BPMN userTask 前進 done->ok
UC-MT-01 流程:開抽屜 → 上傳證據 / 填問卷 → 就緒檢查(general 需證據 / survey 需全完成)→ 完成走 flow-engine complete

UC-MT-02 批次完成任務

項目 內容
角色 assignee
前置條件 多個 PROCESSING 任務皆就緒(可完成才可勾選)
產出 / 後置條件 逐專案分送批次完成;per-job 成功 / 失敗回報(NO_EVIDENCE / SURVEY_INCOMPLETE);統一批次通知
mytasks_uc_02 start sel 勾選就緒任務(可完成才可勾) 「批次完成」→ dialog(可加留言) start->sel grp FE 依專案分組 逐專案 POST /jobs/batch-complete sel->grp loop BE per-job 就緒複驗 general 無證據 → NO_EVIDENCE survey 未完成 → SURVEY_INCOMPLETE grp->loop ok 就緒者 flow-engine complete(suppress_notify) loop->ok res 結果摘要:total / completed / failed per-job success/error(逐筆,不整批 rollback) ok->res notify 統一批次摘要通知 res->notify
UC-MT-02 流程:勾選就緒任務 → 批次完成 dialog → 逐專案分送 → per-job 就緒複驗 → 結果摘要
項目 內容
角色 assignee
前置條件 任務狀態 = PROCESSING 且為指派人(COMPLETED 唯讀)
產出 / 後置條件 compliance.job_evidences 新增 / 更新 / 刪除 LINK 型(標題 + URL);attachment_count 反映(general 就緒判定)
mytasks_uc_03 start gate 任務狀態 = PROCESSING 且為指派人? start->gate ro COMPLETED 唯讀 (可看不可增改) gate->ro open 開抽屜證據連結區 填標題 + URL gate->open act 新增 / 編輯 / 刪除? open->act add 新增連結證據 POST /job-evidence(LINK) act->add 新增 edit 編輯連結證據 PUT /job-evidence/{uid} act->edit 編輯 del 刪除連結證據 DELETE /job-evidence/{uid} act->del 刪除 ok job_evidences 更新 attachment_count 反映(就緒判定用) add->ok edit->ok del->ok
UC-MT-03 流程:抽屜連結區填標題+URL → 新增 POST /job-evidence(LINK)/ 編輯 PUT / 刪除 DELETE /job-evidence/{uid} → job_evidences 更新

UC-MT-04 任務留言增改刪

項目 內容
角色 assignee(新增);留言作者本人(修改 / 刪除)
前置條件 開任務明細抽屜留言區
產出 / 後置條件 compliance.job_execution_comments 新增 / 更新 / 刪除;修改與刪除限作者本人
mytasks_uc_04 start open 開抽屜留言區 start->open act 新增 / 修改 / 刪除? open->act add 新增留言 POST /grc/job-executions/{jobUid}/comments act->add 新增 own 是留言作者本人? (修改 / 刪除限本人) act->own 修改/刪除 ok job_execution_comments 更新 add->ok deny 非作者:不提供改/刪 own->deny edit 修改留言 PUT /grc/job/comment/{uid} own->edit 是·修改 del 刪除留言 DELETE /grc/job/comment/{uid} own->del 是·刪除 edit->ok del->ok
UC-MT-04 流程:抽屜留言區 → 新增 POST comments / 本人可修改 PUT / 刪除 DELETE comment → job_execution_comments 更新

UC-MT-05 覆核人退回任務

項目 內容
角色 reviewer(覆核人,isReviewer 由專案 participant role=reviewer 決定,FE 判定顯示退回鈕)
前置條件 覆核模式;填退回理由
產出 / 後置條件 job_executions.status 回退 PROCESSING(走 flow-engine revert,BPMN userTask 回退)
mytasks_uc_05 start role 是覆核人(reviewer)? (FE 依專案 participant role 顯示退回鈕) start->role hide 非 reviewer:不顯示退回鈕 role->hide open 抽屜覆核模式 按「退回任務」 role->open reason 填退回理由? open->reason block 未填理由:擋下 (退回需理由) reason->block revert 退回任務 POST /flow-engine/task/revert/{templateJobId} reason->revert ok job_executions.status → PROCESSING BPMN userTask 回退 revert->ok
UC-MT-05 流程:reviewer 覆核模式 → 填退回理由 → POST /flow-engine/task/revert/{templateJobId} → BPMN 回退、任務回 PROCESSING

3. 權限矩陣

本頁以「任務指派關係」為權限基礎(非專案層角色):

操作 FE 判定 BE 強制 BE 檢查位置
讀我的任務清單 登入即可(清單本身即過濾成當前使用者) user_id 查使用者任務佇列(僅回自己被指派的) app/participant/service/task_assignee_service.py::list_my_grc_jobs
上傳證據 / 留言 / 完成 任務在 PROCESSING 且為指派人 走 job / flow-engine service(任務層) app/grc/service/job_*
退回任務 isReviewer(專案 participant role=reviewer,FE 判定) flow-engine revert flow-engine
批次完成 只勾選 canComplete() 的任務 per-job 就緒複驗(NO_EVIDENCE / SURVEY_INCOMPLETE) app/grc/service/job_batch_complete_service.py:30

本頁清單天然過濾成「當前使用者被指派」,故無專案角色守門;權限邊界在「任務是否指派給你」+「任務狀態是否 PROCESSING」。退回權(reviewer)是 FE 依專案 participant role 顯示。

4. 狀態機與前置條件

本頁 gate 是任務狀態(不是輪次階段):

TODO ──(PM 於規劃頁「開始執行任務」)──▶ PROCESSING ──(assignee 完成 / 批次完成)──▶ COMPLETED
                                              ▲                        │
                                              └────(reviewer 退回)────┘
條件 效果 出處
預設狀態篩選 = PROCESSING 進頁先看進行中任務(TODO 尚未啟動不顯示) MyTasksView.vue(mount 設 statusFilter)
status === 'PROCESSING' 可上傳 / 留言 / 完成 FE canComplete/canEdit
status === 'COMPLETED' 抽屜唯讀(可看不可改) FE
general 任務就緒 attachment_count > 0(≥1 檔案 / 連結) FE canComplete
survey 任務就緒 所有 task_surveys.status === 9(全完成) FE canComplete

輪次階段與本頁的關係:prep-job 在規劃期(planning)建立、PM「開始執行任務」啟動;受稽方在此執行。任務完成度回饋規劃頁的「證據蒐集執行進度卡」(見 專案規劃頁 §10)。

5. UI 設計

版面骨架與區塊職責(左清單 + 右分割抽屜;body 加 page-fullscreen 讓抽屜獨立捲動;彩色區塊可點跳對應小節錨點,API 僅標代表性):

我的任務(跨專案收件匣,body 加 page-fullscreen) URL ?job=<uid> / ?execution=<uid> 可深鏈自動開任務 左清單面板(55%)+ 右 JobExecutionDrawer(45%)分割捲動 左清單面板(55%) 🔍 搜尋 | 狀態 pills:全部/TODO/PROCESSING/COMPLETED 專案下拉 | 重設(預設 PROCESSING) DataTable:勾選|專案|群組·控制項|AO|任務名|類型|狀態 (不可完成的列 checkbox disabled 帶原因) POST /grc/jobs/my/list 跳至 §2 Use Case(UC-MT-02 批次完成任務) 選取後 →「已選 N 項|批次完成」(逐專案分送) POST /grc/project/{project_uid}/jobs/batch-complete → §2 UC-MT-02 跳至 §2 Use Case(UC-MT-01 執行完成/03 連結證據/04 留言/05 覆核退回) 右抽屜 JobExecutionDrawer(45%) Header:任務名/麵包屑/狀態 描述+指南(唯讀)|指派/部門/設備 問卷(開 survey-v2-fill 新分頁) 證據(FILE 拖放上傳/預覽/刪) 連結證據(LINK 增改刪)|留言(作者可改刪) GET /grc/project/{project_uid}/job/{job_uid} POST /flow-engine/task/complete/{template_job_id} POST /flow-engine/task/revert/{template_job_id} 底部:完成任務 | 退回(reviewer 模式) → §2 UC-MT-01/03/04/05 彩色=可點跳本頁小節錨點(框內標錨點+代表性 API)|灰=本頁描述|虛線框=點列才開的抽屜/條件顯示層 API 僅列代表性 2~3 條,完整規格見 §6
我的任務頁版面 wireframe:Header 收件匣、左清單面板(搜尋/狀態 pills/專案篩選/批次完成)+ 右 JobExecutionDrawer(描述·證據·連結·留言·完成/退回)

實機截圖(STG,亮色模式,2026-07-05,帳號 blsadmin):

整頁:左清單(我的待辦任務表)

任務明細抽屜:描述 / 任務指南 / 指派人員 / 證據拖放上傳區 / 證據連結 / 評論

批次完成 dialog 截圖從缺:勾選框僅在任務已上傳至少 1 份證據(attachment_count > 0)時才會啟用(見 MyTasksView.vue::canComplete),2026-07-05 盤點 STG 目前所有任務證據數皆為 0,暫無可勾選資料;上傳證據屬寫入動作,不在本次唯讀截圖範圍內。

狀態呈現:任務狀態徽章(TODO/PROCESSING/COMPLETED);可完成任務才可勾選(否則 checkbox disabled 帶原因 tooltip);無 socket,動作後重取清單 / 明細。URL ?job=<uid> / ?execution=<uid> 可深鏈自動開任務(進頁後清 URL)。

6. API 規格

Envelope:成功 {"code": 1, "data": …}、失敗 {"code": 0, "msg": "…"}。分頁列表回 PageDataDto(meta + data)。

6.1 總清單(本頁呼叫的全部 endpoint)

分類 Method + Path 說明 完整規格
載入 POST /grc/jobs/my/list 我的任務分頁清單(filters 7 欄,見 §6.2) §6.2
載入 GET /grc/jobs/my/projects/menu 專案篩選下拉 GAI-SD-02
明細 GET /grc/project/{project_uid}/job/{job_uid} 任務明細(指派 / 部門 / 設備 / 問卷 / can_revert_job) §6.3
證據 GET /job-evidences?job_execution_uid={job_uid} 任務證據(FILE / LINK) GAI-SD-02
證據 POST /job-evidences(FILE)・POST /job-evidence(LINK)・PUT/DELETE /job-evidence/{uid} 證據增改刪 GAI-SD-02
留言 GET/POST /grc/job-executions/{job_uid}/comments、PUT/DELETE /grc/job/comment/{uid} 任務留言 GAI-SD-02
完成 POST /flow-engine/task/complete/{template_job_id} 單任務完成(走 BPMN) GAI-SD-02
退回 POST /flow-engine/task/revert/{template_job_id} 覆核人退回任務 GAI-SD-02
批次 POST /grc/project/{project_uid}/jobs/batch-complete 批次完成(逐專案分送) §6.4
問卷 GET /task-survey/{task_survey_uid}、POST /task-assignees 問卷角色檢查 GAI-SD-02

以下 §6.2~6.4 為核心 endpoint 完整規格(欄位逐條對照 serializer / service 組裝碼,出處標在各段末)。

6.2 我的任務清單

[POST] /grc/jobs/my/list

Request(MyJobListRequestSchema,繼承 RequestMetaSchema):

欄位 型別 必填 說明
pager object {page, page_size, with_total}
sort array 排序條件
filters object MyJobFiltersSchema 共 7 欄皆選填:keyword / status / exclude_status / project_uid / group_keyword / control_code / ao_keywordapi/grc/serializers/job.py:192-202;UI 常用前三項,其餘供跨群 / 控制項篩選)

Response dataMyJobResponseSchema,每項):

欄位 型別 說明
id string 任務 uid
name / job_type / status string 任務名 / general·survey / TODO·PROCESSING·COMPLETED
project_uid / project_name string 所屬專案
control_group_* / control_* / ao_* string 群組 / 控制項 / AO 定位
workflow_execution_uid string BPMN 執行實體
attachment_count int 證據數(general 就緒判定)
survey_completed bool 問卷全完成(survey 就緒判定)

出處:serializer api/grc/serializers/job.py:205(Request)/ :210(Response);service app/participant/service/task_assignee_service.py:269list_my_grc_jobs:查使用者任務佇列 → 補 attachment_count / survey_completed)

6.3 任務明細

[GET] /grc/project/{project_uid}/job/{job_uid}

Response dataJobDetailResponseSchema):

欄位 型別 說明
id string 任務 uid
name string 任務名
description string 任務描述
guide string 任務指南
job_type string general / survey
status string TODO / PROCESSING / COMPLETED
template_job_id string BPMN 範本 userTask id
can_revert_job bool 是否可退回
workflow_execution_uid string BPMN 執行實體
assignees array 每項 {id, name, avatar, is_approver}
departments array 部門關聯
devices array 設備關聯
surveys array 每項 {id, name, question_count, source_survey_uid, snapshot_uid, approval_required, task_surveys[{task_survey_uid, device_uid, device_name, status, approval_required}]}

出處:api/grc/serializers/job.py:160

6.4 批次完成

[POST] /grc/project/{project_uid}/jobs/batch-complete

Request(BatchCompleteRequestSchema):

欄位 型別 必填 說明
job_uids string[] 要批次完成的任務 uid 陣列
comment string 選填,預設 ""

Response(BatchCompleteResponseSchema):

欄位 型別 說明
total int 送出任務總數
completed_count int 成功完成數
failed_count int 失敗數
results array 每項 {job_uid, success, error}errorNO_EVIDENCE / SURVEY_INCOMPLETE / 任務不存在 / 例外訊息

逐專案分送(FE 依 project 分組多次呼叫);per-job suppress_notify,最後統一批次通知。出處:serializer api/grc/serializers/job_batch_complete.py:5(Request)/ :16(Response);service app/grc/service/job_batch_complete_service.py:30

7. 前端檔案地圖(compliance-manager-fe/)

檔案 角色
src/views/project/MyTasksView.vue 主檢視(左清單 55% + 右抽屜 45%;搜尋 / 篩選 / 批次完成)
src/components/grc/JobExecutionDrawer.vue 任務明細抽屜(證據 / 連結 / 留言 CRUD、完成 / 退回)
src/config/router/index.js:876-880 route project-my-tasks(path /project/task-manage
(留言輸入無獨立元件) 留言 UI 內嵌於 JobExecutionDrawer.vue(約 :151-330),非 CommentInput.vue(該檔不存在)
src/config/api/api.js 端點常數
src/config/locales/i18n/{zh-tw,en}/my-tasks.json 頁面 i18n(namespace lang.my_tasks.*

導覽入口:DashboardView「我的任務」區塊 / 「查看全部」→ router.push({name:'project-my-tasks', query:{job}});問卷開新分頁到 survey-v2-fill。本頁不連 workflow-setup / workflow-view(那是 BPMN 範本編輯,屬另一群)。

8. 後端檔案地圖(本頁核心鏈路)

鏈路 Route App Service 底層
我的任務清單 api/grc/routes/job_route.py:212::MyJobListResource app/participant/service/task_assignee_service.py:269::list_my_grc_jobs(查佇列 + 補 attachment_count / survey_completed) 使用者任務佇列 view(依 task_assignees × job_executions)+ job_evidences count + task_surveys 完成集
任務明細 api/grc/routes/job_route.py:72::ProjectJobDetailResource app/grc/service/job_service.py::get_job job_executions + 關聯表
批次完成 api/grc/routes/job_batch_complete_route.py:19::JobBatchCompleteRoute app/grc/service/job_batch_complete_service.py:30::batch_complete(per-job 就緒複驗 → flow-engine complete → 留言 → 統一通知) infra/grc/repository/job_batch_complete_query.py + workflow service
證據 / 留言 job evidence / comment route job_evidence_service / job_comment_service job_evidences / job_execution_comments

DDD 提醒:清單走 app service(不在 route 查 DB);批次完成的就緒複驗在 service 層、每筆獨立成敗回報(不因一筆失敗整批 rollback)。

9. DB

9.1 資料表總清單(本頁讀寫的全部表)

讀/寫 說明 欄位詳述
compliance.job_executions 讀/(狀態) 任務本體(prep-job):PROCESSING→COMPLETED 見 project-planning §9.3
compliance.task_assignees 任務指派人員(過濾成當前使用者) 見 project-planning §9.3
compliance.job_evidences 任務證據(FILE / LINK) §9.3
compliance.job_execution_comments 任務留言 §9.3
compliance.job_execution_devices / _org_units / _surveys 任務的設備 / 部門 / 問卷關聯(明細顯示) GAI-SD-03
survey.task_surveys 問卷執行狀態(就緒判定 status=9) GAI-SD-03
compliance.projects / project_participants 專案名 / reviewer 角色判定 GAI-SD-03

清單讀取走「使用者任務佇列」查詢(task_assignees join job_executions 過濾 user_id),批次補 job_evidences 計數與 task_surveys 完成集。

9.3 核心表欄位(取自 DEV DB dump,含 DB comment)

compliance.job_evidences — 任務執行佐證資料

欄位 型別 說明
uid 證據識別
job_execution_id → job_executions(任務本體)
evidence_type FILE(檔案)/ LINK(連結)
reference_url LINK 型 URL
(檔案中繼) 名稱 / 大小 / drive 參照等

compliance.job_execution_comments — 任務執行留言表

欄位 型別 說明
job_execution_id → job_executions
content 留言內容
(作者審計欄) 作者 / 建立時間;作者本人可改刪

job_executions / task_assignees 欄位卡見 專案規劃頁 §9.3(本頁不重複;那裡以寫入者視角、本頁以執行者視角讀寫同組表)。

10. 頁面邏輯與資料對應

載入時序

mytasks_load_sequence cluster_par 並行 mounted onMounted url 取 URL 參數 job / execution / project → 立即清 URL(避免連鎖導航) mounted->url list POST /grc/jobs/my/list 預設 status=PROCESSING url->list menu GET /grc/jobs/my/projects/menu 專案篩選 url->menu open tryOpenPendingJob 有 job/execution 參數 → 自動開抽屜 list->open menu->open detail (開抽屜)GET job 明細 + /job-evidences + comments open->detail 有 pending ready 頁面就緒 open->ready detail->ready
頁面載入時序:mount 取 URL 參數 → 並行 my/list + projects/menu → 自動開 pending 任務

關鍵欄位對應(畫面 ↔︎ API):

畫面元素 FE state API 欄位
任務狀態徽章 job.status my/list status
可完成(勾選) canComplete(job) general: attachment_count>0;survey: task_surveys 全 status=9
證據清單 抽屜 evidence /job-evidences
完成按鈕 canCompleteJob flow-engine complete {workflow_execution_uid, comment}
批次結果 兩步 dialog batch-complete results[{job_uid, success, error}]

儲存流程:證據上傳 / 留言後重取明細;完成 / 退回走 flow-engine(BPMN 前進);批次完成逐專案分送、per-job 成敗獨立、最後統一通知。

錯誤對應:BE error envelope → toast;GRC_JOB_NOT_FOUND(404)、GRC_PROJECT_PARTICIPANT_NOT_FOUND(404);批次錯誤碼 NO_EVIDENCE / SURVEY_INCOMPLETE(在 results[].error,非 GRC 碼,FE 對 i18n 顯示)。

11. 背景行為與外部依賴

類型 內容
通知 批次完成 per-job suppress_notify、最後送一則批次摘要通知(threading)
BPMN 完成 / 退回走 flow-engine/task/complete|revert(BPMN userTask 前進 / 回退);prep-job 的 workflow_execution 由規劃期綁定
問卷 survey 型任務開 survey-v2-fill(新分頁);task_surveys.status 追蹤(9=完成)
Socket 本頁 socket / 輪詢;動作後重取
jedi-* 套件 jedi-flow-engine(complete / revert)、jedi-survey(問卷)、jedi-auth(JWT)
系統參數 無 feature flag

12. 邊界情況與已知坑

  1. 本頁 gate 是任務狀態不是輪次階段:TODO 未啟動不顯示;PROCESSING 才可執行;跨專案彙整,非單輪次頁
  2. 就緒條件按任務類型:general 需 ≥1 證據;survey 需全 task_surveys status=9;不就緒 checkbox disabled 帶原因
  3. 批次完成逐專案分送、per-job 獨立成敗:一筆失敗(NO_EVIDENCE / SURVEY_INCOMPLETE)不影響其他;結果摘要逐筆回報,非整批 rollback
  4. 全選只選當前分頁的可完成任務:不跨頁全選(防誤選未見任務)
  5. 退回權是 reviewer(FE 判定)isReviewer 由專案 participant role=reviewer 決定,只在覆核模式顯示退回
  6. 深鏈自動開任務?job= / ?execution= 進頁自動選任務後清 URL(避免連鎖導航)
  7. 證據自成 FILE / LINK 兩型:FILE 走 /job-evidences(multipart)、LINK 走 /job-evidence(FormData json);端點路徑單複數不同,改動注意
  8. 不連 workflow-setup / workflow-view:那是 BPMN 範本編輯頁(另一群),本頁任務執行走抽屜、非全頁導航

13. 開發與驗證

  • 跑起來:BE python main_socketio.py(port 8000,log 在 log/app.log);FE 在 compliance-manager-fe/ 起 Vite dev server。BE 改 service code 後必須重啟(無 hot reload)
  • 測試帳號:dev 環境被指派任務的受稽方帳號(密碼見 .env / 部署文件)
  • 導航路徑:登入 → 儀表板「我的任務」或直接 /project/task-manage
  • 前置資料:需有專案在規劃頁指派任務給該帳號且 PM 已「開始執行任務」(任務 PROCESSING)
  • E2Ecompliance-manager-test/ repo(Cucumber + Playwright);以 我的任務 / my-tasks 搜尋
  • 相關文件:任務來源見 專案規劃頁;稽核員視角的清單見 我的稽核;DB / API 全量見 GAI-SD-02/03