Files
solution-erp/fe-user/src/components
pqhuy1987 f212f04365
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Failing after 48s
[CLAUDE] FE-Admin FE-User: Chunk L3 — Fix Trả lại dialog default mode = first available F1 (mode đang gửi duyệt)
Bro UAT S23 t2 catch screenshot: tick AllowReturnToAssignee + untick AllowReturnToDrafter
cho slot Approver → user click "Trả lại" → dialog mở với default state `returnMode=Drafter`
(S17 backward compat fallback). Radio Drafter HIDDEN vì allowReturnToDrafter=false
→ user thấy radio Assignee đã pick + Bùi Lê Thủy Trà từ dropdown → click Xác nhận →
BE receive `returnMode: 4` (Drafter từ initial state) → throw "Cấp Approver hiện tại
không bật mode 'Drafter'. Liên hệ Admin Designer".

Bro intent: "cho duyệt trong muốn cho trả lại trong mode đang gửi duyệt chứ ko phải
draft, draft chỉ khi trả lại cho người soạn thôi" — 3 F1 modes (OneLevel/OneStep/
Assignee) là "trả lại trong mode đang gửi duyệt" (Phase=ChoDuyet lùi pointer);
Drafter mode = trả về Người soạn (Phase=TraLai), CHỈ default khi không có F1 nào.

Fix FE × 2 app PeWorkflowPanel.tsx (mirror rule §3.9):
- Import useEffect
- useEffect khi target=TraLai → compute first available F1 mode:
  - allowReturnOneLevel ? OneLevel
  - : allowReturnOneStep ? OneStep
  - : allowReturnToAssignee ? Assignee
  - : Drafter (fallback)
- setReturnMode(firstAvailable)

→ Dialog mở với mode đúng selected → user click Xác nhận → BE receive correct
mode → ApplyReturnModeAsync check correct flag → PASS.

Pattern lesson saved: dialog initial state phải compute từ permission flags
KHÔNG hardcode default — admin có thể disable mọi mode khác Drafter, hoặc
ngược lại enable F1 only.

Verify:
- npm run build × 2 app pass (0 TS err)
- Bundle hash rotate × 2 app

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 01:44:05 +07:00
..