FR-148 · 討論稿 · 2026-10-18

一張任務卡走完「交證據 → 主管審 → 顧問審 → 結案」

關卡是任務裡面的事;BPMN 流程圖一顆方塊、一筆任務,不動圖

現在要讓一個任務經過主管、顧問兩道審核,只能在流程圖畫三個方塊,結果變成三張任務卡,證據與留言各自分家,後面的人看不到前面的東西。本案在任務身上加一條可自訂的關卡清單:公司在系統設定建好幾條審核流程,各專案在規劃頁自己決定哪些任務套哪一條(可一次套用到多個任務),任務卡上多一條關卡列與「審核歷程」按鈕(點開彈窗看),每換一關通知下一關負責人。流程圖維持一顆方塊、一筆任務;走完最後一關才叫既有的「完成任務」讓流程往下走。請先開 雛形索引 點四頁,再回來看規格。

四頁假資料雛形 不動 BPMN 引擎、不動流程圖 D1~D14 全裁(D3 作廢) 問卷審核第一期不併

狀態:討論稿(D1~D12 全裁、D3 作廢;雛形待依定案改,改完決策者看過即落 design.md) | 日期:2026-10-18 | 雛形:prototype/index.html

路徑慣例:BE 路徑相對 compliance-manager-be/;pkg/ 代表 ~/Projects/Jedicogy/module/jedi-python-package/;FE 路徑相對 compliance-manager-fe/。

§1

變更紀錄

日期 變更 對應
2026-10-18 v1:方案比較(四案)、資料模型草案、端到端流程、畫面放法、D1~D10 待裁、拆卡草案、四頁雛形 本稿
2026-10-18 決策者裁 D13(任務配置 Excel 只管第 1 關,加唯讀摘要欄)、D14(改善計畫任務不套樣板);規劃頁指派收進彈窗(零關也開彈窗) 決策者
2026-10-18 決策者補裁 D7:出廠預設=內建零關樣板「免審直通」(不可刪、不可加關),管理員自己改預設才會變 決策者
2026-10-18 決策者裁:用詞改為「任務關卡樣板」(系統設定選單叫「任務關卡樣板設定」、任務卡上叫「關卡進度」),「流程」只留給 BPMN 流程圖;設定頁改成清單+編輯 dialog,版型與專案列表統一。以下內文的「審核流程」皆指任務關卡樣板 決策者
2026-10-18 決策者裁 D4、D6、D7、D9、D10 照建議;D8 改為「批次完成=推進當下那一關」(審核關也可批次)。全部決策裁完 決策者
2026-10-18 決策者裁 D1:流程不設負責人,只是象徵性的關卡骨架;每關由誰做由 PM 在規劃頁指派,跟現在指派任務人員一樣、每關可多人。D3 作廢。資料模型拿掉 owner 欄、新增每關指派表 決策者
2026-10-18 決策者裁:審核歷程改成按鈕+彈跳視窗,不常駐在任務卡內(資訊太多) 決策者
2026-10-18 決策者裁:D2(畫面呈現「開始 → 1 → 2 → 3 → 結案」,開始/結案只是端點、中間三關照舊)、D5(任務一旦開始就不能改流程)、D11(流程建在系統層、各專案自己決定套到哪些任務)、D12(不做單一任務微調,要不同流程就套不同條)。雛形待依新定案改 決策者

§2

分工概述(30 秒版)

整案一句話:任務身上帶一條可自訂的關卡清單,同一張卡依序交給不同的人,每換一關通知下一關負責人,走完最後一關才算完成;流程圖一顆方塊一筆任務,不動。

給非工程讀者的背景:稽核任務常常不是一個人做完就算數——執行人交證據、部門主管看過、顧問確認符合法規,才算結案。現在系統的任務只有「未開始/進行中/已完成」三態,想做審核只能在流程圖畫三個方塊,就變成三件任務:證據在第一張、主管在第二張看不到證據、顧問在第三張看不到前兩張的留言。本案讓這三步變成同一張卡上的三關。

卡 做什麼 產出 決策者檢查法
① 任務卡關卡列+送審/核可/退回+歷程 任務卡標頭下多關卡列;底部按鈕跟著「目前關卡負責人是不是你」變;標題列右上角時鐘圖示,點開彈窗列出歷程;每換一關寄信 兩張新表(關卡快照、歷程)+任務新欄、推進/退回 service、通知掛點、FE 關卡列與歷程子元件 對照 雛形頁 1:用三個身分各登入一次,送審→主管核可→顧問核可並結案,歷程三筆、每步下一關的人收到信;主管退回執行人收到信且卡回第一關
② 待辦任務頁 多一欄「目前關卡」、篩選多一段「待我處理」 待辦查詢加欄位與條件、FE 表格欄與篩選段 對照 雛形頁 2:王經理登入「待我處理」只列等他審的;陳小明登入看到被退回的那筆
**③ 系統設定「任務關卡樣板設定」 清單+編輯 dialog(版型同專案列表);管理員建好幾個樣板,每個自訂關卡名稱/說明/允許退回到哪(不設負責人**);一條設公司預設 關卡組兩張表+migration、CRUD 端點、FE 新頁 對照 雛形頁 4:點一列開 dialog 加一關、新增一個樣板、設預設,重開頁面還在
④ 規劃頁套流程+每關指派人員+套用到其他任務 任務設定多一個下拉「審核流程」選系統層的哪一條(複製一份到任務);原本的「指派人員」一格變成每關一格(第 1 關=原指派人員),每格可多人;「套用到其他任務」一次勾多個;任務開始後鎖 套用端點、每關指派端點、批次套用端點、FE 任務表單區塊、啟動前置檢查加「每關都要有人」 對照 雛形頁 3:選「標準三關」,指派人員變成三格、各填人(可多人),存檔重開還在;已開始的任務是鎖的
⑤ 退回重開與結案接線 管理員退回已結案任務時關卡重設第一關;走到最後一關才呼叫既有 complete_job 讓流程往下走;專案啟動時沒套的任務自動帶公司預設組 reopen_job_execution 與 restart_from_first_station 加 hook、complete_job 前置判斷、啟動時帶預設 把已結案任務退回重開 → 關卡列回第一關、執行人收到信;沒套關卡的任務行為與現在完全一樣

依賴:①是核心、先做(決策者最早看得到畫面);②只依賴①;③④可與②平行;⑤最後做。卡的排序以「何時看得到畫面」為準。

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E2F0F1','primaryTextColor':'#14201F','primaryBorderColor':'#0E7C86','secondaryColor':'#EEF2F3','secondaryTextColor':'#14201F','tertiaryColor':'#FBFCFC','tertiaryTextColor':'#14201F','lineColor':'#4A5A5C','textColor':'#14201F','mainBkg':'#E2F0F1','nodeBorder':'#0E7C86','nodeTextColor':'#14201F','edgeLabelBackground':'#FBFCFC','titleColor':'#14201F','clusterBkg':'#FBFCFC','clusterBorder':'#E4EAEB','actorBkg':'#E2F0F1','actorTextColor':'#14201F','actorBorder':'#0E7C86','actorLineColor':'#C7D1D2','signalColor':'#4A5A5C','signalTextColor':'#14201F','labelBoxBkgColor':'#EEF2F3','labelBoxBorderColor':'#C7D1D2','labelTextColor':'#14201F','loopTextColor':'#14201F','noteBkgColor':'#F6EBD5','noteTextColor':'#14201F','noteBorderColor':'#9C6B12','activationBkgColor':'#EEF2F3','activationBorderColor':'#C7D1D2','sequenceNumberColor':'#FFFFFF'}}}%%
flowchart LR
    C1[① 任務卡關卡列<br/>送審/核可/退回/歷程] --> C2[② 待辦任務頁]
    C1 --> C3[③ 任務關卡樣板設定]
    C3 --> C4[④ 規劃頁套流程<br/>套用到其他任務]
    C1 --> C5[⑤ 退回重開與結案接線]
    C4 --> C5
圖 1 — 五張卡的依賴(實線=必須先做)

§3

為什麼不用 BPMN 做:四個方案比較

決策者的疑問是:「原版靠 BPMN 處理流程,再加一套設定是不是流程定義變兩個地方?」答案是兩層各管各的——BPMN 管「任務與任務之間」(先後、平行、分支),關卡管「一件任務裡面誰簽」。真正的癥結不是 BPMN,是這條既有鐵律:

🔴 一個方塊=一筆 job_executions,證據、留言、問卷、執行紀錄全掛在那一筆上

FR-112 定的(app/flow_control/service/flow_apply_to_tasks_service.py 檔頭、workflow_xml_sync_service.py 三向 diff 都靠 job_execution_uid 配對)。所以只要審核畫成多個方塊,資料就一定拆開;要資料不拆,換手就得放在引擎以外。

方案 做法 每間公司不一樣怎麼辦 牽連範圍 判定
一:三個方塊+「同一串」標記 圖上三方塊標成同串,引擎照跑三筆,UI 與證據池把同串當一張卡 靠畫圖 最大。所有「按任務讀」的地方改「按串讀」:稽核作業頁、AO 底稿(FR-141/142 剛做完)、證據分類、複審複製、進度與通過清單、Drive 歸檔;三向 diff 與套用到其他任務的配對規則重寫 排除
二:一個方塊,關卡塞方塊屬性 關卡清單寫進 camunda 屬性 靠畫圖時填 引擎不執行該屬性,只是當設定檔存;FR-112 才把屬性瘦到只剩名稱;範本 XML 是可翻譯欄位要雙寫 排除(重走舊路)
三:一個方塊,關卡是任務層資料 任務多「目前第幾關」,關卡清單存新表;走到最後一關才 complete_job 公司自建關卡組,PM 套、可微調 最小。14 個按 JobStatus.COMPLETED 讀的地方、三向 diff、套用到其他任務一行不改。要動:新表、推進/退回 service、通知掛點、任務卡 FE、待辦頁、設定頁 建議
四:BPMN call activity 子流程 一顆方塊展開成子流程三站 靠畫圖 子流程三站仍是三筆 job_executions,資料拆開問題與方案一相同,只多一層包裝 排除

反悔條件:若客戶要求「主管退回後走另一條路」「兩個審核並行」「審核結果決定下一個任務是誰」——這些是分支,是圖的事,線性關卡不夠,那時才把審核拉進圖;但資料共用問題仍要解,方案一的成本不會消失。


§4

現況盤點:接入點 × 現況 × 本案動作

元件 現況 本案動作
任務狀態 JobStatus pkg/jedi-flow-engine/.../job_code.py:TODO/PROCESSING/COMPLETED/CANCEL 四態 不動。關卡是另一欄,PROCESSING 期間在關卡內換手
任務表 job_executions pkg/jedi-flow-engine/jedi_flow_engine/infra/models/job_execution.py:FR-137 已加週期六欄、期限兩欄 加 review_step_no(目前第幾關,null=沒套)、review_group_id(套了哪組,只記來源)
完成任務入口 api/flow_engine/__init__.py:38 /flow-engine/task/complete/<id> → workflow_execution_service.complete_job()(:623)→ 把下一方塊實體化成 PROCESSING 並 notify_user_todo_job 有關卡的任務:FE 不直接打這支;推進 service 走到最後一關時由 BE 呼叫它。沒關卡的任務不變
批次完成 app/flow_control/service/job_batch_complete_service.py:43 有關卡且未到最後一關的任務要擋(或改成批次送審)——D8 裁
退回重開 app/flow_engine/service/job_reopen.py:10 reopen_job_execution(管理員退回結案)、job_restart_service.py:63 restart_from_first_station(週期重跑) 兩處加 hook:關卡重設第一關、寫一筆歷程、通知執行人
通知 workflow_execution_service.py:1209 notify_user_todo_job(job_id, assignees=None):寄信+Discord/Telegram,可指定收件人 換關時以該關負責人為 assignees 呼叫,不新開管線;信件文案多一種「待你審核」
指派表 task_assignees pkg/jedi-task-platform/.../task_assignee.py:is_approver(問卷審查人員專用)、role(String 50,現未用於審核) 不動 is_approver(語意是問卷)。關卡負責人另存關卡快照表,不塞指派表
專案角色 common/enum/participant_enum.py:manager/reviewer/auditor/viewer;reviewer 註解「系統送待審核通知給他」但 grep 全 app 只有一處 i18n 用到 關卡「依角色」的選項就是這四個+「任務執行人」;reviewer 當主管審預設、auditor 當顧問審預設
組織單位 pkg/jedi-iam/.../org_unit.py:name/parent_id/path/metadata,沒有主管欄 「執行人的部門主管」查不到,負責人只能是專案角色或指定人(D3)
問卷審核 pkg/jedi-survey/.../task_survey_code.py:待填寫/編輯中/待審核/待補充說明/完成;task_survey.approval_required;BE 主專案 2 檔、套件 7 檔、FE 12 檔 第一期不併(D9)。問卷任務不套關卡,維持現狀
流程圖「套用到其他任務」 app/flow_control/service/flow_apply_to_tasks_service.py:列同輪候選、只允許全 TODO 的目標 關卡的「套用到其他任務」比照同一動線:同輪候選、已開跑不可套
待辦任務頁 FE src/views/project/MyTasksView.vue(760 行):表格欄專案/輪次/控制項/AO/任務/類型/期限/狀態;篩選全部/未開始/進行中/已完成 加「目前關卡」欄、「待我處理」段;BE 待辦查詢加兩欄與一個條件
任務卡 FE src/components/grc/JobExecutionDrawer.vue(2,344 行,已超標):JobDrawerHeader+描述/指南/檢測設定/指派/部門/設備/問卷/執行紀錄/證據 關卡列、動作區、歷程各開子元件,抽屜只插三行;不往裡塞
規劃頁 FE src/views/project/ProjectPlanningView.vue(2,604 行,已超標) 「審核關卡」區塊開子元件
規劃頁「匯出/匯入任務配置」Excel app/flow_control/service/job_import_service.py(492 行):前九欄資源庫共用格式(task_guidance_workbook.py)+後四欄「任務類型/指派人員/參與部門/設備」;匯入=上傳→預覽(JobImportDialog.vue,可在表上改指派與部門)→確認,寫回 task_assignees;指派人員必填;問卷審核者「留下來的人保留、新加的人預設否」 D13:指派人員/參與部門兩欄改為「第 1 關」;加一欄唯讀「任務關卡」摘要;第 2 關以後與樣板選擇不進 Excel;填寫說明頁加一句
改善計畫 Excel poam_workbook_export.py/poam_workbook_import.py:「執行人員」欄是改善任務的執行人 D14:改善任務不套樣板,不動
資源庫任務說明、SSP 控制項現況、稽核計畫、稽核結果 Excel 只有任務名稱/描述/指南三欄,或不碰指派 不動
下拉選項政策 CLAUDE.md:選項進 system_menus 關卡名稱是自由文字不是選項;「依角色」的角色清單是程式列舉(專案角色 enum),屬例外

§5

資料模型草案

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E2F0F1','primaryTextColor':'#14201F','primaryBorderColor':'#0E7C86','secondaryColor':'#EEF2F3','secondaryTextColor':'#14201F','tertiaryColor':'#FBFCFC','tertiaryTextColor':'#14201F','lineColor':'#4A5A5C','textColor':'#14201F','mainBkg':'#E2F0F1','nodeBorder':'#0E7C86','nodeTextColor':'#14201F','edgeLabelBackground':'#FBFCFC','titleColor':'#14201F','clusterBkg':'#FBFCFC','clusterBorder':'#E4EAEB','actorBkg':'#E2F0F1','actorTextColor':'#14201F','actorBorder':'#0E7C86','actorLineColor':'#C7D1D2','signalColor':'#4A5A5C','signalTextColor':'#14201F','labelBoxBkgColor':'#EEF2F3','labelBoxBorderColor':'#C7D1D2','labelTextColor':'#14201F','loopTextColor':'#14201F','noteBkgColor':'#F6EBD5','noteTextColor':'#14201F','noteBorderColor':'#9C6B12','activationBkgColor':'#EEF2F3','activationBorderColor':'#C7D1D2','sequenceNumberColor':'#FFFFFF'}}}%%
erDiagram
    review_step_groups ||--o{ review_step_group_items : "一組多關(公司設定)"
    job_executions ||--o{ job_review_steps : "套組時複製成快照"
    job_executions ||--o{ job_review_step_logs : "每次推進/退回一筆"
    job_review_steps ||--o{ job_review_step_assignees : "PM 在規劃頁指派每關的人(可多人)"
    review_step_groups {
        int id PK
        int tenant_id "租戶"
        string name "組名稱"
        text description
        bool is_default "公司預設"
    }
    review_step_group_items {
        int group_id FK
        int seq "順序"
        string name "關卡名稱(自由文字)"
        text description
        int[] back_to_seqs "允許退回到哪幾關"
    }
    job_executions {
        int review_step_no "目前第幾關;null=沒套"
        int review_group_id "來源組,只記錄"
    }
    job_review_steps {
        int job_execution_id FK
        int seq
        string name
        text description
        int[] back_to_seqs
    }
    job_review_step_assignees {
        int job_execution_id FK
        int seq "第幾關"
        int user_id "可多人"
    }
    job_review_step_logs {
        int job_execution_id FK
        int seq "在哪一關"
        string action "submit / approve / reject / reopen"
        int to_seq "退回到哪關"
        int user_id
        text note
        timestamptz created_at
    }
圖 2 — 新表與任務表的關係

要點:

  • 快照:套組=把組的關卡複製進 job_review_steps。之後改組、刪組都不影響已套的任務;不然會出現「指標在第 3 關、清單只剩 2 關」。
  • 畫面長「開始 → 1 → 2 → 3 → 結案」:「開始」「結案」只是流程圖的兩個端點,純顯示、不存資料、沒有負責人與按鈕。中間 1~N 才是關卡,存在表裡。走完最後一關(第 N 關)核可時,系統呼叫 complete_job 進入「結案」端點。
  • 流程只是象徵性的關卡骨架:系統層的流程只有關卡名稱、說明、順序、允許退回到哪——不設負責人。
  • 零關的流程(只有開始 → 結案)=現狀,執行人按完成就結束;「免審」就是建一條零關流程讓任務套。
  • 誰做每一關=PM 在規劃頁指派,跟現在指派任務人員同一套操作,只是從「一格指派人員」變成「每一關各一格」,每格可多人(job_review_step_assignees)。第 1 關(交證據)的人就是原本的任務指派人員(task_assignees),不另存一份。
  • 任務開始前每關都要有人:有關卡沒指派人時,專案啟動前置檢查擋下(比照現在「任務沒有指派人員」的檢查)。
  • 歷程獨立一張表,不塞進既有留言——稽核時要能單獨抽出「誰在哪一關簽了什麼」。
  • 三張表都是 tenant-scoped,要帶 org_unit_id/RLS([[feedback_tenant_scoped_table_needs_org_unit_id]])。

§6

端到端流程

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E2F0F1','primaryTextColor':'#14201F','primaryBorderColor':'#0E7C86','secondaryColor':'#EEF2F3','secondaryTextColor':'#14201F','tertiaryColor':'#FBFCFC','tertiaryTextColor':'#14201F','lineColor':'#4A5A5C','textColor':'#14201F','mainBkg':'#E2F0F1','nodeBorder':'#0E7C86','nodeTextColor':'#14201F','edgeLabelBackground':'#FBFCFC','titleColor':'#14201F','clusterBkg':'#FBFCFC','clusterBorder':'#E4EAEB','actorBkg':'#E2F0F1','actorTextColor':'#14201F','actorBorder':'#0E7C86','actorLineColor':'#C7D1D2','signalColor':'#4A5A5C','signalTextColor':'#14201F','labelBoxBkgColor':'#EEF2F3','labelBoxBorderColor':'#C7D1D2','labelTextColor':'#14201F','loopTextColor':'#14201F','noteBkgColor':'#F6EBD5','noteTextColor':'#14201F','noteBorderColor':'#9C6B12','activationBkgColor':'#EEF2F3','activationBorderColor':'#C7D1D2','sequenceNumberColor':'#FFFFFF'}}}%%
sequenceDiagram
    participant PM as 專案管理者
    participant EX as 執行人
    participant MG as 主管(第 2 關)
    participant CS as 顧問(第 3 關)
    participant BE as 後端
    participant WF as BPMN 引擎
    PM->>BE: 規劃頁套「標準三關」(複製快照、cur=1)
    Note over WF: 專案啟動,方塊實體化成 PROCESSING(既有)
    BE-->>EX: 通知「待你處理」(既有 notify_user_todo_job)
    EX->>BE: 上傳證據、按「送審」
    BE->>BE: cur=2、寫歷程 submit
    BE-->>MG: 通知「待你審核」
    MG->>BE: 看同一張卡的證據與留言,按「退回 → 第 1 關」+理由
    BE->>BE: cur=1、寫歷程 reject
    BE-->>EX: 通知「被退回」+理由
    EX->>BE: 補證據、再送審
    BE-->>MG: 通知
    MG->>BE: 核可
    BE->>BE: cur=3、寫歷程 approve
    BE-->>CS: 通知
    CS->>BE: 核可並結案
    BE->>BE: cur=4(最後一關)
    BE->>WF: complete_job()(既有)
    WF->>WF: 下一方塊實體化、通知其執行人(既有)
圖 3 — 一張卡從套組到結案(含退回)

關鍵接線只有三處:

  1. FE 按鈕:有關卡的任務,「完成任務」改成「送審/核可/退回」打新的推進端點;沒關卡的任務照舊打 /flow-engine/task/complete/<id>。
  2. 推進 service 的最後一步:到最後一關時呼叫既有 complete_job,由它做 BPMN 推進與下一方塊通知——本案不重寫這段。
  3. 退回重開 hook:reopen_job_execution 與 restart_from_first_station 結束時重設關卡。

§7

畫面放法

畫面 放哪 雛形
關卡列、動作區、審核歷程 任務卡(JobExecutionDrawer):關卡列在標頭下、標題列右上角一個時鐘圖示(角標顯示筆數,放在狀態標籤右邊),點開彈窗列時間/關卡/誰/核可或退回/理由;動作區在描述上方。歷程不常駐在抽屜內,避免資訊過多 頁 1
目前關卡欄、待我處理段 待辦任務頁(MyTasksView):欄在「狀態」右邊;段插在「全部」與「未開始」之間 頁 2
選流程、套用到其他任務 規劃頁任務表單:一個下拉「審核流程」+「套用到其他任務」按鈕,位置在週期設定之後 頁 3
任務關卡樣板管理 系統設定新頁「任務關卡樣板設定」:標題列+搜尋+表格(名稱/說明/關卡數/公司預設/已套用任務/操作,不放關卡預覽),點一列或「新增」開編輯 dialog,關卡預覽只在 dialog 內顯示;版型與專案列表統一 頁 4

UI 鐵律自檢:雛形 grep border-left 只命中三處 1px 結構邊線(抽屜左邊、工具列兩側),沒有粗色強調條。


§8

決策

✅ D1 — 流程不設負責人,每關由誰做是 PM 在規劃頁指派(決策者 2026-10-18 裁)

定案:系統層流程只是象徵性的關卡骨架(名稱、說明、順序、可退回到哪),不設負責人。PM 在規劃頁替任務指派人員時,跟現在一樣的操作,只是從一格變成每關一格,每格可多人。第 1 關(交證據)就是原本的任務指派人員。

理由:流程是公司層的範本,誰做是專案的事;沿用現有指派操作,PM 不用學新東西。

被排除:流程上填專案角色、跑到那關時查角色——要先在專案參與人員設角色才會生效,多一層間接、PM 看不出某關到底是誰。

✅ D2 — 畫面呈現「開始 → 1 → 2 → 3 → 結案」(決策者 2026-10-18 裁)

定案:開始、結案是流程圖的兩個端點,讓流程看起來完整;中間三關照舊(1 執行人交證據、2 主管審核、3 顧問審核)。第 1 關負責人固定任務執行人。

理由:純顯示,不影響資料模型;零關流程畫面上就是「開始 → 結案」,一眼看得出是直通不是壞掉。

✅ D3 — 作廢

D1 定案後每關由 PM 直接指派人,不需要系統自動找「執行人的部門主管」。

✅ D4 — 一關指派多人時,任一人核可就過(決策者 2026-10-18 裁)

定案:同一關指派多人時,第一個按核可或退回的人就算數;歷程記是誰簽的。

理由:全部都要簽等於會簽,要多一層「已簽幾個」的狀態,第一版不做。

✅ D5 — 任務一旦開始就不能改流程(決策者 2026-10-18 裁)

定案:任務開始(專案啟動、任務進入進行中)後,規劃頁的流程下拉鎖住;系統層改某條流程只影響還沒開始的任務——已套用的任務拿的是複製品。

理由:避免「主管正在審、流程被改掉第 2 關」的壞狀態。

✅ D11 — 流程建在系統層,各專案自己決定套到哪些任務(決策者 2026-10-18 裁)

定案:管理員在系統設定建好幾條審核流程(一條可設公司預設);各專案在規劃頁替任務選要套哪一條,並可「套用到其他任務」一次套多個。套用時把流程複製一份到任務身上。

理由:公司建一次、所有專案都能選,不用每個新專案重建;複製一份讓系統層改流程不影響已套的任務。放系統層或專案層的工作量相同(差別只在流程表掛 tenant_id 或 project_id),選系統層是看用法。

被排除:流程建在專案層——每個新專案都要重建或從他處複製,又要處理「從哪複製」。

✅ D12 — 不做單一任務微調,要不同流程就套不同條(決策者 2026-10-18 裁)

定案:任務套上流程後不能在任務上加減關、換負責人。要讓某些任務走不同的審核,就在系統層多建一條(例如「免審直通」=零關、「含法遵四關」)讓它套。

理由:微調會讓「這個任務到底走哪條」無從追查;多建一條流程是同樣效果、而且看得見。

✅ D6 — 退回時不清證據(決策者 2026-10-18 裁)

定案:退回後執行人在原有證據上補;歷程記退回理由。

理由:證據本來就可以多筆,標記「上一輪」是另一層資料。

✅ D7 — 沒選流程的任務:有公司預設就自動帶,沒設就零關(決策者 2026-10-18 裁)

定案:系統出廠內建一筆零關樣板「免審直通」,預設就勾它(seed migration 寫入、不可刪、不可加關)。所以裝好不動任何設定時,所有任務都是零關=現狀,這個功能對沒設定的客戶等於隱形。管理員自己把公司預設改成別的樣板,之後新啟動專案的任務才自動帶那個;已在跑的舊專案不回頭套。(決策者 2026-10-18 補裁:預設用 0 關,除非使用者自己改)

理由:客戶一設預設,新專案全部任務自動有審核;不設的客戶什麼都不會變。

✅ D8 — 批次完成:多關卡任務就是完成當下那一關(決策者 2026-10-18 裁)

定案:待辦頁勾多筆按「批次完成」,有關卡的任務推進當下那一關(執行人那關=送審、審核關=核可),各自寄信給下一關的人;零關任務照現在直接完成。只有當下那關的指派人勾得到。

理由:執行人一次交十筆、主管一次核可十筆都是常見動線;批次核可時沒有逐筆理由欄,要退回仍要逐筆開卡。

被排除:審核關不能批次——決策者裁示審核關也要能批次推進。

✅ D9 — 問卷任務第一版不能套流程(決策者 2026-10-18 裁)

定案:問卷任務維持問卷自己的審核(待審核/待補充說明),規劃頁的流程下拉對問卷任務不顯示;第二期再把問卷審核對到關卡上。

理由:一起併要動 jedi-survey 套件發版+FE 12 支檔,範圍翻倍。

✅ D10 — 資源庫任務範本不預設流程(決策者 2026-10-18 裁)

定案:第一版只有「公司預設」與「規劃頁替任務選」兩層,資源庫不加。

理由:FR-147 剛把資源庫任務三欄做完,再加一層要重碰那頁;需求明確再開第二期。

✅ D13 — 任務配置 Excel 只管第 1 關(決策者 2026-10-18 裁)

定案:規劃頁「匯出/匯入任務配置」Excel 的「指派人員」「參與部門」兩欄,意思改成第 1 關(=原本的指派人員);加一欄唯讀「任務關卡」顯示摘要(例:「標準三關(3 關,2 關已指派)」);第 2 關以後的人員與樣板選擇不進 Excel,一律在規劃頁彈窗設;「填寫說明」頁加一句「多關卡任務的審核關卡人員請到規劃頁設定」。零關任務(預設)格式與行為完全不變,舊檔照樣能匯入。任務已開始時匯入改第 1 關的人照舊放行(換人不改關卡結構);問卷審核者保留邏輯照舊。

理由:每個任務關數不同,攤成「第 N 關人員/部門」欄會讓欄數照最多的樣板開、大半空格,換樣板欄位位置還會跑;要大量派人的多半是第 1 關執行人,審核關通常是固定幾位主管顧問,彈窗設就夠。

被排除:(a) 每一關攤成欄。

✅ D14 — 改善計畫(POA&M)任務不套任務關卡樣板(決策者 2026-10-18 裁)

定案:改善任務不能套樣板,改善計畫頁與其 Excel 完全不動。

理由:改善任務是稽核結束後才產生,走另一條流程;一起套會擴大到改善計畫的指派、匯入與頁面。


§9

拆卡草案(依「何時看得到畫面」排序)

順序 卡 範圍 看得到什麼
1 ① 任務卡關卡列+推進/退回+歷程 三張新表 migration、任務新欄、推進/退回 app service(含通知、最後一關呼叫 complete_job)、三支端點、FE 三個子元件插進抽屜;先用 DEV 手灌一組關卡到一個任務驗畫面 一張卡三個身分走完送審→核可→結案,含退回
2 ② 待辦任務頁 待辦查詢加「目前關卡」「負責人是我」、FE 欄與段 主管登入看「待我處理」
3 ③ 系統設定任務關卡樣板 樣板兩張表、CRUD、FE 清單頁+編輯 dialog、ui_routes 選單 管理員建樣板
4 ④ 規劃頁套流程+套用到其他任務 套用端點(複製快照)、批次套用端點、FE 下拉與按鈕、任務開始後鎖 PM 替任務選流程
5 ⑤ 退回重開+啟動帶預設+批次推進 兩處 reopen hook、啟動時帶公司預設流程(D7)、批次完成改成推進當下那一關(D8) 退回重開回第一關;待辦頁勾三筆按批次完成,三筆各前進一關
6 ⑥ 任務配置 Excel 對齊(D13) 匯出加唯讀「任務關卡」欄、指派/部門兩欄註明為第 1 關、填寫說明頁加一句;匯入預覽表加唯讀欄;job_import_service.py 與 JobImportDialog.vue 匯出一份含多關卡任務的檔,看到摘要欄;改第 1 關的人匯入,只動第 1 關、後面關卡的人不變

卡 1 動到 jedi-flow-engine 的 job_executions 加兩欄 → 走套件 path dependency、待發版;守衛測試與 RLS 形狀測試每卡 commit 前跑。


§10

不做清單

  • 關卡分支/並行/會簽(D4 選 a 後的延伸)
  • 單一任務微調關卡(D12 已裁不做)
  • 專案層自建流程(D11 已裁放系統層)
  • 任務配置 Excel 攤開每一關的人員欄(D13 已裁只管第 1 關)
  • 改善計畫任務套樣板(D14)——需要時回頭評估方案一。
  • 問卷審核併入(D9 第二期)。
  • 資源庫範本層預設組(D10 第二期)。
  • 組織單位主管欄(D3 另一 FR)。
  • 關卡層級的期限(每關幾天內要處理)——先沿用任務期限。
  • 既有專案回頭套關卡——只對新啟動的專案生效。