df408831e5d9f2010003f498030f564a936785e8
Stage-6 MAF frontend foundation plus P1 approval safety hardening: - Add lib/safe-display.ts: single-source safeDisplayJson that deletes sensitive keys (never renders as ***), recurses with depth/array/field/ string caps, returns hiddenCount + truncated. - MafApprovalCard & MafActionAuditPanel both use safeDisplayJson; remove private sanitize duplicates. Panels hide entirely when nothing is left. - Lock the card on both approve AND reject (resuming state) since the backend advances the workflow on either decision; add a decisionLockRef sync guard so a double-click before React re-render cannot fire a second mutate. Status text becomes '正在同步工作流…'. - Stage-6 base shipped here as prerequisite: self-contained maf-flow-graph (no roundtable-planning dep), MafFlowGraphDialog/MafFactLedgerPanel/ MafActionAuditPanel, shared risk-theme/action-audit/approval-state/ run-resume libs, mergeBySeq export, canResume wiring, TButton icon fixes. - Tests import real functions only; 48 pass (adds 8 safeDisplayJson cases).
Languages
Python
39.2%
TypeScript
35.9%
HTML
22.2%
CSS
1.5%
JavaScript
0.9%
Other
0.2%