審批

每個有分量的變更,都要等一個"同意"。

一筆超過 15% 的折扣批下來是什麼樣?流程停駐、訂單鎖定,財務在審批收件箱裡看到請求——記錄快照、誰在什麼時候做了什麼,一目瞭然;批准放行,駁回帶評論退回,超時自動升級。AI 剛提議的 schema 變更,走的也是這同一個佇列。

ObjectOS product surface connecting business data, applications, and AI agents
AI 編寫後設資料 物件、許可權、流程、工具
審閱 diff 業務許可權、資料訪問、審批
執行時 執行策略 UI、API、審計、MCP、動作
4 種路由
指定使用者、角色、團隊或管理層級
鎖定
決策未定時,記錄保持原樣
留痕
每次請求、決定與升級都被審計

籤核即後設資料

一屏就能審完的審批策略。

這就是那條折扣審批鏈:財務先審(一人響應即可),高管複核(須一致通過),全程鎖定記錄,最多兩輪退回修改。策略本身是一份任何人都讀得懂的緊湊定義。

import { defineFlow } from '@objectstack/spec';

export const DiscountApproval = defineFlow({
  name: 'sales_discount_approval',
  label: 'Discount Approval',
  type: 'autolaunched',
  nodes: [
    {
      id: 'start',
      type: 'start',
      label: 'On Large Discount',
      config: {
        objectName: 'sales_order',
        triggerType: 'record-after-update',
        condition: 'discount > 15 && discount != previous.discount',
      },
    },
    {
      id: 'finance_review',
      type: 'approval',
      label: 'Finance Review',
      config: {
        approvers: [{ type: 'role', value: 'finance' }],
        behavior: 'first_response',
        lockRecord: true,
        maxRevisions: 2,
      },
    },
    {
      id: 'exec_review',
      type: 'approval',
      label: 'Executive Review',
      config: {
        approvers: [{ type: 'role', value: 'exec' }],
        behavior: 'unanimous',
        lockRecord: true,
      },
    },
    { id: 'approved', type: 'end', label: 'Approved' },
    { id: 'rejected', type: 'end', label: 'Rejected' },
  ],
  edges: [
    { id: 'e1', source: 'start', target: 'finance_review' },
    { id: 'e2', source: 'finance_review', target: 'exec_review', label: 'approve' },
    { id: 'e3', source: 'finance_review', target: 'rejected', label: 'reject' },
    { id: 'e4', source: 'exec_review', target: 'approved', label: 'approve' },
    { id: 'e5', source: 'exec_review', target: 'rejected', label: 'reject' },
  ],
});

審批模型

跟著這筆折扣走完兩級籤核

審批人的解析走與許可權相同的身份模型,組織調整不會弄斷籤核鏈——下面每一步都寫在同一份定義裡。

兩級審批鏈

財務先審、高管複核,按序串聯在一個流程裡;財務是"一人響應即可",高管是"須一致通過"——行為按步驟單獨設定。

審批人按組織解析

路由給 finance 角色、某個團隊,或沿申請人的管理層級向上——在請求發起那一刻按即時身份解析,人事變動不用改流程。

超時就升級

財務三天沒處理?請求自動升級並提醒——流程不會卡死在某一個收件箱裡。

記錄鎖定與退回

決策期間訂單保持原樣,誰也改不了;財務也可以"退回修改"——銷售改完折扣重新提交,最多兩輪(maxRevisions: 2)。

決策全程留痕

問了誰、誰答了、看到的是什麼快照、什麼時候——每次審批留下完整且不可變的軌跡,審計隨時可查。

審批收件箱

審批人真正用的那個介面

開源控制台自帶審批收件箱——不是郵件裡的一個連結,而是一個帶上下文、能直接決策的工作臺。

三個頁籤

"我的待辦"(等我批的)、"我提交的"(我發起的走到哪了)、"全部"(分頁總覽)——每行顯示流程、記錄、提交人、狀態與時間。

側欄裡帶上下文決策

點開任何一行:記錄快照、逐步操作時間線、批准/駁回按鈕和評論框——不用跳轉到別處找資訊。

撤回與退回修改

提交人可以撤回自己的請求;審批人可以退回修改而不是一駁了之——狀態色區分待辦、通過、駁回、撤回、退回。

為高頻審批人設計

j/k 上下移動、Enter 開啟、a/r 批准或駁回——處理一隊請求不需要碰滑鼠。

AI 治理閘門

審人的佇列,同樣審 AI

這就是讓 AI 編寫的軟體可治理的機制:Agent 提出的結構性變更不會直接上線——它們排隊。

結構性變更排隊

Agent 提議新物件、欄位、流程或許可權變更時,變更以緊湊 diff 的形式落入同一個審批收件箱。

diff 就是請求本身

審閱者看到的正是將要發生的變化——schema、許可權、自動化——而不是一段轉述。

敏感動作也設閘

執行時動作同樣可以要求籤核,AI 觸發的退款或批次更新會停下來等人。

決策面

改什麼、誰來審、跑什麼

業務需求AI 編寫執行時供給
15% 以上的折扣要過財務變更上的一個審批步驟路由、收件箱、鎖定、決策記錄
大額退款需要兩級批准一條多級審批鏈按序籤核,帶升級與退回修改
不讓流程卡死在一個收件箱一個超時與升級路徑自動升級與提醒
AI 的 schema 變更必須有人審提議的 diff 本身部署之前的那道審批佇列

評審清單

審批評審應確認

  • 每個高影響動作都寫明瞭自己的審批路徑。
  • 路由基於角色與層級,而不是寫死的人名。
  • 每一步都定義了超時與升級。
  • 決策未定時記錄被鎖定。
  • AI 提議的結構性變更無法繞過佇列。

FAQ

這一頁應該回答的問題

審批是獨立於流程的另一套系統嗎?

不是——審批是流程裡的一個持久步驟。整個過程只有一個執行模型:流程暫停,人來決定,流程繼續。

審批收件箱在開源版裡嗎?

在。三頁簽收件箱、側欄時間線、評論、撤回與退回修改、鍵盤快捷鍵,連同多級審批、審批人解析、升級、記錄鎖定與審計軌跡,都是開源版的一部分。

下一步

繼續完善你的評估材料。