董宏凯 df408831e5 feat(maf): unified safe display + decision lock for approvals
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).
2026-08-02 22:55:27 +08:00
2026-06-12 18:09:07 +08:00
2026-06-08 22:52:18 +08:00
2026-06-01 14:16:13 +08:00
2026-05-22 20:40:36 +08:00
2026-07-27 19:16:12 +08:00
2026-07-15 16:13:03 +08:00
2026-07-31 21:09:54 +08:00
2026-07-15 16:13:03 +08:00
2026-07-02 13:56:46 +08:00
2026-07-02 13:56:46 +08:00
2026-05-28 17:14:01 +08:00
2026-05-28 17:14:01 +08:00
2026-06-29 16:59:23 +08:00
2026-06-29 16:59:23 +08:00
2026-06-29 16:59:23 +08:00
2026-06-29 16:59:23 +08:00
2026-06-29 18:08:09 +08:00
2026-06-29 18:08:09 +08:00
2026-06-29 16:59:23 +08:00
2026-06-29 16:59:23 +08:00
2026-05-22 20:40:36 +08:00
S
Description
deerflow-code
238 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 39.2%
TypeScript 35.9%
HTML 22.2%
CSS 1.5%
JavaScript 0.9%
Other 0.2%