ADMIN(或租戶自訂角色)
建立與維護簽核流程、指派流程給單據類型、檢視全租戶簽核紀錄。
- 建立與維護簽核流程
- 指派流程給單據類型
- 檢視全租戶簽核紀錄
spec / workflow / 階段 A
Outline v0(大綱待裁示,尚未展開細節):全站通用的簽核流程定義、送簽、簽核與紀錄;本文件只描述需求,不涉及技術實作、介面設計與測試。
要做什麼與明確不做什麼,左右對照。
✅ 通用架構:首要供人事出缺勤模組使用,但必須讓其他模組未來也能串接。(人類裁示 2026-08-02)
✅ 自定義流程:管理者可自訂簽核流程,由流程決定關卡。(人類裁示 2026-08-02)
⚪ 單據的內容與表單欄位:由來源模組定義(見職責邊界)。
⚪ 核准後的業務動作(扣額度、開立單據):由來源模組執行。
⚪ 送簽前的業務資格檢查:由來源模組執行。
⚪ 租戶自訂單據類型與自訂表單:裁示 A(D-7):單據類型由模組在系統建置時登記,租戶不可增刪;本版不做。
(已推翻)裁示 C=b(D-4):完整流程圖編輯器納入本版,不再列為 non-goal。
⚪ 加簽、轉簽:裁示 H(D-8):本版都不做,列入下一版。
⚪ 通用狀態機(非簽核用途的狀態流轉):本模組只做簽核;工單狀態流轉等需求另立規格。
⚪ 簽核時限與自動核准:裁示 F(D-8):逾時採催辦;自動核准本版不做。
⚪ 簽核者指定方式「申請人自選」:裁示 E(D-5),本版不做。
⚪ Email 通知:裁示 L(D-6),本版只做站內待辦清單。
⚪ 全站稽核機制:裁示 AG-REF/AG-REF-2(D-11),本版不做;簽核紀錄依 §8 由本模組自行保存。
⚪ 電子簽章、法律效力憑證:本版不做。
規格用語的唯一定義,後續條文皆以此為準。
可做的在左、不可做的在右;右欄是承諾邊界。
建立與維護簽核流程、指派流程給單據類型、檢視全租戶簽核紀錄。
送簽、撤回自己的單據、查詢自己的單據進度。
對指派到自己的單據執行簽核動作、檢視待簽清單。
依 specs/auth/spec.md 裁示,不新增預設角色;流程管理權限一律由 ADMIN 或自訂角色承擔。
本頁主角。20 條,每條與同編號的驗收標準左右並排——需求說「要什麼」,驗收說「怎麼算做到」。
🟡 來源模組向簽核模組登記單據類型,登記內容包含:類型名稱、摘要呈現方式、核准後的回呼對象。
來源模組完成登記後,管理者在簽核模組看得到該單據類型的名稱,待簽清單以來源模組提供的摘要呈現。
🟡 一個單據類型可指派一條生效中的流程。
管理者對同一單據類型指派流程時,同一時間只有一條流程處於生效狀態。
🟡 未指派流程的單據類型不可送簽(阻擋,並提示管理者先設定流程)。
申請人對未指派流程的單據類型送簽時,送簽被阻擋,畫面提示管理者先設定流程。
🟡 流程為關卡的有序序列:送出 → 關卡 1 → 關卡 2 → … → 完成。🟡 管理者可自由增減關卡、調整順序。🟡 流程須有名稱、啟用狀態。
✅ 裁示 C=b(D-4,2026-08-29):流程以完整流程圖(節點 + 連線)定義。
管理者可新增、刪除關卡並調整順序;儲存後流程顯示名稱與啟用狀態;單據依關卡順序逐站送達。管理者可在流程圖編輯器以節點與連線畫出分支、匯合、平行;含循環、死路或不可達節點的流程無法儲存。
每個關卡包含:名稱(顯示用)、簽核者指定方式(見 §5)、需幾人同意(任一人/全部/指定人數)、條件(符合條件才需經過此關,不符合則自動跳過)、逾時處理(見待裁示 F)。✅ 裁示 E(D-5):簽核者指定方式為角色 + 特定訂閱者兩種,逐關卡選擇。✅ 裁示 F(D-8):逾時處理採催辦。
關卡設定「需幾人同意」為任一人/全部/指定人數時,單據依設定的人數同意後才進入下一關;關卡條件不符合的單據自動跳過該關。管理者設定每個關卡的簽核者時,可選「綁角色」或「指定特定訂閱者」;畫面不提供「申請人自選」。
🟡 條件比對的對象是來源模組提供的可比對欄位(例:請假天數、加班時數)。🟡 來源模組登記單據類型時一併登記哪些欄位可用於條件。
✅ 裁示 D=b(D-7):多條件 AND/OR 組合。
管理者設定關卡條件時,只能從來源模組登記的可比對欄位中選擇。管理者可將多個條件以 AND/OR 組合成一個關卡條件。
🟡 流程被修改時,在途單據一律沿用送簽當下的流程版本,不受影響。🟡 已完成的單據永久保留其當時的流程內容,供日後追溯。
這是必要需求,不是選配:簽核紀錄若無法還原「當時規則是什麼」,就失去舉證價值。
流程修改後,修改前已送簽的在途單據仍依原關卡序列走完;已完成單據的簽核歷程可查看當時的流程內容。
🟡 草稿 → 待簽核 → 已核准/已駁回/已撤回。狀態轉移圖於細節版補上。
單據送簽後狀態顯示為待簽核;最後一關核准後顯示已核准;駁回後顯示已駁回;撤回後顯示已撤回。
核准:進入下一關;已是最後一關則單據核准。不需填原因。
簽核者核准後,單據進入下一關;若已是最後一關,單據狀態變為已核准;核准不要求填寫原因。
駁回:單據直接終止。須填原因。
簽核者駁回時未填原因則無法送出;駁回後單據狀態變為已駁回,不再進入後續關卡。
🟡 申請人可在單據尚未完成簽核前撤回。
✅ 裁示 I(D-8):不准撤回已有人核准的單據。
單據處於待簽核時,申請人可撤回,撤回後狀態變為已撤回;已核准或已駁回的單據不提供撤回。已有任一關卡核准過的單據,申請人撤回被阻擋。
🟡 所有關卡條件與簽核者權限一律由後端強制檢核,不得只靠前端把關。
舊專案 ~/develop/volu/vops 的流程關卡多數只在前端評估,後端只擋部分轉換,直接呼叫介面即可跳過流程設定的所有條件;本模組不重蹈此覆轍。
繞過畫面直接對單據執行簽核動作時,關卡條件與簽核者權限仍被檢核,不符者被阻擋。
🟡 非該關卡簽核者的簽核動作一律阻擋。
不是當前關卡簽核者的訂閱者對單據執行簽核動作時被阻擋。
🟡 已完成或已終止的單據不接受任何簽核動作。
對已核准、已駁回或已撤回的單據執行任何簽核動作皆被阻擋。
🟡 每一次簽核動作都留下紀錄:誰、何時、什麼動作、什麼意見、當時是第幾關。
每筆簽核紀錄顯示簽核者、時間、動作、意見與關卡序號。
✅ 簽核紀錄以資料池承載,該池不開放封存與刪除(2026-08-02 人類裁示,承 specs/hr/hr.md 裁示 J);紀錄不可修改、不可刪除。
任何角色皆無法修改或刪除既有簽核紀錄;承載簽核紀錄的資料池不提供封存與刪除。
🟡 申請人與有權者可完整檢視單據的簽核歷程。
申請人與有權者開啟單據時看得到完整的簽核歷程。
🟡 單據送到自己這關時通知簽核者。🟡 單據核准或駁回時通知申請人。
✅ 裁示 K(D-6):通知做在流程視覺化編輯器裡,且為 auth FR-37 明示例外;✅ 裁示 L=a(D-6):只做站內待辦清單。
單據送達某關卡時,該關簽核者收到通知;單據核准或駁回時,申請人收到通知。通知以站內待辦清單呈現,不寄 Email;通知設定在流程圖編輯器內完成。
✅ 裁示 G(D-8,2026-08-29):退回納入本版。退回申請人或前一關修改後重送。須填原因。
✅ 裁示 G-2=c(D-10):兩者皆支援,由簽核者於退回時選擇。
簽核者退回時未填原因則無法送出;退回後單據可修改並重送。簽核者退回時必須選擇「退回申請人」或「退回前一關」之一;選退回申請人則單據回到草稿,由申請人修改後重送;選退回前一關則單據回到前一關等待該關簽核者重簽。
✅ 裁示 F(D-8,2026-08-29):關卡逾時處理採催辦。
關卡逾時後,該關簽核者收到催辦;單據不自動核准、不自動跳關。
39 條。規則與「違反時 →」成對讀。
§0 本大綱的用途與標記說明狀態:Outline v0(大綱待裁示,尚未展開細節)。範圍:全站通用的簽核流程定義、送簽、簽核與紀錄。本文件只描述需求,不涉及技術實作、介面設計與測試。上游依賴:specs/auth/spec.md(租戶、訂閱者、角色、自訂角色)、specs/dataset/(資料池,未建立)。下游使用者:specs/hr/hr.md(首要)、未來其他模組。本檔目前只有章節骨架與範圍主張,供人類裁示。確認後才逐節展開為完整需求規格。標記說明:✅ 人類已裁示/🟡 主張納入本版,等人類確認/⚪ 主張不納入本版(列入 nonGoals)/🟠 待人類裁示,AI 不自行決定。
§0.2 通用性的核心:職責邊界通用性不是靠「支援很多欄位」達成,是靠把單據內容與簽核流程徹底分離。
§0.2 職責邊界:單據內容(請假的假別與起訖、採購的品項與金額)歸屬來源模組。簽核模組完全不理解,也不儲存。
§0.2 職責邊界:單據摘要(顯示在待簽清單上的幾行字)由來源模組提供;簽核模組只負責呈現。
§0.2 職責邊界:流程定義、關卡、簽核者、送簽、簽核動作、簽核紀錄歸屬簽核模組;所有模組共用同一套。
§0.2 職責邊界:核准後要做什麼(扣假別額度、開立採購)歸屬來源模組。簽核模組只通知結果,不執行業務動作。
§0.2 職責邊界:送簽前的資格檢查(額度是否足夠)歸屬來源模組。簽核模組不做業務驗證。
§0.2 判準🟡 簽核模組若需要知道「這是請假單還是採購單」才能運作,通用性就失敗了。
§3 單據類型與模組串接🟡 來源模組向簽核模組登記單據類型,登記內容包含:類型名稱、摘要呈現方式、核准後的回呼對象。✅ 裁示 A(D-7,2026-08-29):單據類型由模組在系統建置時登記,租戶不可增刪。
§3 單據類型與模組串接🟡 一個單據類型可指派一條生效中的流程。✅ 裁示 B(D-7,2026-08-29):一類型一流程,差異用流程內的分流條件表達。
§3 單據類型與模組串接🟡 未指派流程的單據類型不可送簽(阻擋,並提示管理者先設定流程)。
§4.1 簽核流程定義:基本結構🟡 流程為關卡的有序序列:送出 → 關卡 1 → 關卡 2 → … → 完成。✅ 裁示 C=b(D-4,2026-08-29):流程以完整流程圖(節點 + 連線)定義,可畫分支、匯合、平行;流程圖編輯器須阻擋循環、死路、不可達節點。
§4.1 簽核流程定義:基本結構🟡 管理者可自由增減關卡、調整順序。
§4.1 簽核流程定義:基本結構🟡 流程須有名稱、啟用狀態。
§4.2 關卡定義(每個關卡預計包含)名稱:顯示用。簽核者指定方式:見 §5(✅ 裁示 E,D-5:角色 + 特定訂閱者兩種,逐關卡選擇)。需幾人同意:任一人/全部/指定人數。條件:符合條件才需經過此關(不符合則自動跳過)。逾時處理:✅ 裁示 F(D-8):催辦。
§4.3 分流條件🟡 條件比對的對象是來源模組提供的可比對欄位(例:請假天數、加班時數)。
§4.3 分流條件🟡 來源模組登記單據類型時一併登記哪些欄位可用於條件。✅ 裁示 D=b(D-7,2026-08-29):分流條件支援多條件 AND/OR 組合。
§4.4 流程版本🟡 流程被修改時,在途單據一律沿用送簽當下的流程版本,不受影響。
§4.4 流程版本🟡 已完成的單據永久保留其當時的流程內容,供日後追溯。這是必要需求,不是選配:簽核紀錄若無法還原「當時規則是什麼」,就失去舉證價值。
§5 簽核者的指定方式(承 specs/hr/hr.md 待裁示 AH;本版支援哪些方式為待裁示 E)綁角色:該角色任一訂閱者皆可簽(舊專案 workflow 走這條)。指定特定訂閱者:逐人指定。申請人自選:送簽時由申請人從清單挑。上層主管:不支援。specs/hr/hr.md 裁示採扁平結構,系統無組織階層。
§5 簽核者的指定方式:AI 建議(非裁示)角色 + 特定訂閱者兩種,逐關卡選擇。申請人自選容易被濫用(挑好說話的人簽),除非有明確需求否則不做。✅ 裁示 E(D-5,2026-08-29):採角色 + 特定訂閱者兩種,逐關卡選擇;申請人自選本版不做。
§6.1 單據狀態🟡 草稿 → 待簽核 → 已核准/已駁回/已撤回。🟡 狀態轉移圖於細節版補上。
§6.2 簽核動作:核准進入下一關;已是最後一關則單據核准。不需填原因。
§6.2 簽核動作:駁回單據直接終止。須填原因。
§6.2 簽核動作:退回(是否納入為待裁示 G)退回申請人或前一關修改後重送。須填原因。✅ 裁示 G(D-8,2026-08-29):「先做」,退回納入本版;退回給申請人或前一關未定,見待裁示 G-2。✅ 裁示 G-2=c(D-10,2026-08-29):退回申請人與退回前一關兩者皆支援,由簽核者於退回時選擇。
§6.2 簽核動作:加簽、轉簽(待裁示 H)AI 建議:本版都不做,列入下一版。✅ 裁示 H(D-8,2026-08-29):本版都不做,列入下一版。
§6.3 撤回🟡 申請人可在單據尚未完成簽核前撤回。✅ 裁示 I(D-8,2026-08-29):已有人核准過的單據不准撤回。
§7 關卡的強制執行🟡 所有關卡條件與簽核者權限一律由後端強制檢核,不得只靠前端把關。這一條寫進規格是有原因的:舊專案 ~/develop/volu/vops 的流程關卡多數只在前端評估,後端只擋部分轉換,直接呼叫介面即可跳過流程設定的所有條件(見其 .ai/tasks/schedule-flow-backend-enforcement.md)。本模組不重蹈此覆轍。
§7 關卡的強制執行🟡 非該關卡簽核者的簽核動作一律阻擋。
§7 關卡的強制執行🟡 已完成或已終止的單據不接受任何簽核動作。
§8 簽核紀錄🟡 每一次簽核動作都留下紀錄:誰、何時、什麼動作、什麼意見、當時是第幾關。
§8 簽核紀錄✅ 簽核紀錄以資料池承載,該池不開放封存與刪除(2026-08-02 人類裁示,承 specs/hr/hr.md 裁示 J);紀錄不可修改、不可刪除。
§8 簽核紀錄🟡 申請人與有權者可完整檢視單據的簽核歷程。
§8 簽核紀錄:保存期限✅ 裁示 J(D-9,2026-08-29):簽核紀錄的保存期限由簽核模組統一決定,各來源模組不各自宣告。✅ 裁示 AG-REF-2(D-11):簽核紀錄依 §8 由本模組自行保存,不依賴全站稽核。
§8 簽核紀錄:與 auth 的關係與 specs/auth/spec.md §12「操作稽核紀錄:本版不做」的關係,同 specs/hr/hr.md 待裁示 AG,需一併裁示。人類 2026-08-29 裁示 AG-REF(D-9):「先不做」。解讀(全站稽核機制不做,簽核紀錄依 §8 自行保存)待人類確認,見待裁示 AG-REF-2。✅ 裁示 AG-REF-2=a(D-11,2026-08-29):解讀正確——全站稽核機制本版不做;簽核紀錄依 §8 由本模組自行保存,不依賴全站稽核。
§9 通知🟡 單據送到自己這關時通知簽核者。
§9 通知🟡 單據核准或駁回時通知申請人。
§9 通知:與 auth FR-37 的衝突specs/auth/spec.md FR-37 明訂「審核結果不通知當事人」。簽核模組若不通知,申請人無從得知結果,實務不可行。✅ 裁示 K(D-6,2026-08-29):「通知做在流程視覺化編輯器裡」——簽核模組要通知,通知設定屬流程圖編輯器的一部分;此為 auth FR-37 的明示例外。
§9 通知:管道✅ 裁示 L=a(D-6,2026-08-29):只做站內待辦清單,不做 Email。
5 條轉移、5 個狀態。點圖上任一狀態,下表只留與它相關的轉移。
點圖上任一狀態,下表只留與它相關的轉移。虛線代表「任一狀態」皆可觸發。
| 現況 | 事件 | 新狀態 |
|---|---|---|
| 送簽 | ||
| 核准(已是最後一關) | ||
| 駁回(須填原因) | ||
| 申請人撤回(尚未完成簽核前) | ||
| 退回(簽核者選擇退回申請人或前一關;退回前一關時狀態維持待簽核,僅關卡回退) |
10 條。條件 → 行為,一條一行。
關卡的簽核者一個都不存在(角色底下沒人、指定訂閱者已離職)細節版預計涵蓋,處置待展開
簽核者在單據送到自己這關後被停權或封存細節版預計涵蓋,處置待展開
申請人本身就是該關卡的簽核者細節版預計涵蓋,處置待展開
申請人在簽核途中離職細節版預計涵蓋,處置待展開
流程被停用時,在途單據如何處置細節版預計涵蓋,處置待展開
單據類型被來源模組移除時,在途單據如何處置細節版預計涵蓋,處置待展開
所有關卡條件都不符合,導致整條流程無關卡可走細節版預計涵蓋,處置待展開
同一關卡的多位簽核者同時操作細節版預計涵蓋,處置待展開
租戶被停用或封存時的在途單據細節版預計涵蓋,處置待展開
訂閱者離職(訂閱關係封存)後其既有簽核紀錄仍須完整保存與可查(承 hr 裁示 L)。
4 項未解除。每項風險配當下處置與觸發時的回滾手段。
簽核紀錄與流程設定以資料池承載(裁示承 hr G/J);資料池規格未完成前,本規格可寫、無法進入切版與實作。撰寫順序依 hr 裁示 I:資料池 → 簽核 → HR。
現況:specs/dataset/ 尚未建立
所有關卡條件與簽核者權限一律由後端強制檢核(§7);舊專案 ~/develop/volu/vops 曾發生此問題。
現況:規格層已列為 🟡 主張,待人類確認
在途單據沿用送簽當下的流程版本;已完成單據永久保留當時流程內容(§4.4)。
現況:規格層已列為 🟡 主張,待人類確認
待裁示 K 明示簽核通知為 FR-37 例外;簽核紀錄與 auth §12 的關係同 hr 待裁示 AG,需一併裁示。K 已裁示(D-6):簽核通知為 FR-37 明示例外。AG-REF 人類裁示「先不做」(D-9),解讀待 AG-REF-2 確認。AG-REF-2=a(D-11):解讀確認,全站稽核不做,簽核紀錄由本模組自行保存。
現況:K、AG-REF 皆已裁示
15 項待裁示。前往 待裁示問答 作答。
C§4.1,最優先流程是線性 + 條件跳關,還是完整流程圖?
AI 建議:a。簽核的本質是序列,分支需求用「條件跳關」就能滿足。b 的成本主要花在圖形編輯器,不在簽核本身。
已裁示:D-4
E§5,最優先;承 specs/hr/hr.md 待裁示 AH簽核者的指定方式支援哪些?候選:綁角色/指定特定訂閱者/申請人自選;上層主管不支援(hr 裁示扁平結構)。
AI 建議:角色 + 特定訂閱者兩種,逐關卡選擇;申請人自選除非有明確需求否則不做。
已裁示:D-5
K§9,最優先確認簽核模組要通知,且此為 auth FR-37「審核結果不通知當事人」的明示例外。
已裁示:D-6
A§3單據類型由誰建立?
AI 建議:a。租戶要自訂表單是另一個大題目,不該綁進本版。
已裁示:D-7
B§3同一單據類型可否依條件套用不同流程(例:3 天以下走 A 流程、3 天以上走 B 流程)?
AI 建議:a。
已裁示:D-7
D§4.3分流條件的複雜度?
AI 建議:a 起步,b 列為下一版。
已裁示:D-7
F§4.2關卡逾時處理(催辦/自動核准/不處理)?
已裁示:D-8
G§6.2「退回」要不要做?做的話退回給申請人或前一關?
已裁示:D-8
G-2§6.2承裁示 G「先做」:退回的目標是申請人,或前一關?
已裁示:D-10
H§6.2加簽(臨時多找一人簽)、轉簽(把自己這關丟給別人)要不要做?
AI 建議:本版都不做,列入下一版。
已裁示:D-8
I§6.3已有人核准過的單據可否撤回?
已裁示:D-8
J§8簽核紀錄的保存期限?註:供 HR 使用時,勞基法要求出勤相關紀錄保存 5 年。若簽核紀錄由本模組統一保存,保存期限應由誰決定(模組統一/各來源模組各自宣告)?
已裁示:D-9
L§9通知管道?
AI 建議:a。
已裁示:D-6
AG-REF§8§8 簽核紀錄與 specs/auth/spec.md §12「操作稽核紀錄:本版不做」的關係,同 specs/hr/hr.md 待裁示 AG,需一併裁示。
已裁示:D-9
AG-REF-2§8承裁示 AG-REF「先不做」:確認解讀為「全站稽核機制不做;簽核紀錄依 §8 由簽核模組自行保存(與 hr 裁示 AG「HR 模組自帶留痕」一致)」?
已裁示:D-11