You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Quick paths — inline row approve/reject (a/r keyboard, hover buttons) and bulk approve: confirmation-only AlertDialogs calling approvalsApi.approve/reject directly with {actor_id} — no param dialog, no outputs.
For a request whose node declares decisionOutputs (surfaced on the row as decision_outputs), a quick approve is legal (outputs are optional) but silently hands the flow nothing — the next stage's expression approver resolves an empty slate and falls into onEmptyApprovers (default: admin_rescue, i.e. a stuck request only an admin can act on). The approver never learns they skipped a field the flow author expected them to fill.
Fix
Rows with a non-empty decision_outputs should not offer the quick decision paths: disable inline a/r + hover approve/reject (tooltip: "此审批需要填写决策输出 — 打开详情审批") and exclude such rows from bulk apply (surface a per-row skip reason), steering the approver to the full drawer dialog.
Related: framework#3447 (P2), #2827 (dialog outputs), framework#3538 (decision_outputs on the row).
Activity
feat(approvals): typed output pickers, quick-path guard, expression c…