- STATUS/HANDOFF S73: Mig 54 · test 334 · bundle Bv3jUCNo/BWlMBQz6 (Run #313 feature + #314 fix) - session log 2026-06-18-S73-pe-gia-de-xuat-ccm-done.md - run-trace runs/2026-06-18-mig54-pe-review (custom-inline review, bu post-hoc) + _ledger 2 row (R1 schema 1/4 + R2 free-text 2/3) - agent-memory flush 5 sub + reconcile implementer-frontend cwd-misland stray -> canonical Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
S73 (2026-06-18) — Mig 54 PE giá đề xuất PRO/CCM + CEO chọn giá chốt + CCM duyệt-done ô-tích
anh Kiệt FDC spec (Zalo) — go-live so-sánh-giá thứ Hai 22/06. em main + 6 sub + 2 review-workflow. State đầy đủ ở
STATUS.md/HANDOFF.mdS73; file này = arc + lessons.
Yêu cầu (3 nhóm — anh Kiệt FDC)
- ① "Giá chào thầu" thêm giá đề xuất NGOÀI giá NCC: PRO nhập Min/Max + CCM nhập 1 giá → CEO duyệt theo. anh chốt (AskUserQuestion): CEO CHỌN 1 giá chốt khi duyệt (bind + lưu trên phiếu).
- ② Cờ gấp PRO đỏ / CCM xanh — ĐÃ có từ S69 (Mig 53), chỉ verify lại.
- ③ CCM duyệt-done khi gói < ngưỡng CEO-uỷ-quyền. anh chốt: ĐỔI auto-threshold (S69) → Ô-TÍCH-TAY (CCM chủ động tích).
Done (2 commit prod-verified)
1d86abc(feature, cicd Run #313 PASS) +6aa4dcb(FE empty-candidates fix, Run #314 PASS). Bundle final adminBv3jUCNo/ userBWlMBQz6.- BE: Mig 54
AddPeSuggestedAndApprovedPrice5-cột additive-nullable · 2 setter role-gate PRO/CCM (Forbidden fail-closed mirror budget) · ApproveV2 ③ opt-in (finalizeByCcmDelegation, gỡ auto S69) + ① bind giá chốt mọi nhánh DaDuyet (human bắt-buộc-chọn, isSystem-miễn) · DTO +7. Threading 7-layer (né bẫy F1+F2 wire-fail). - FE 2 app SHA-mirror: PeWorkflowPanel (bộ chọn giá + ô tích CCM, FE derive
currentIsFinalApprovertừ approvalFlow) + PeDetailTabsSuggestedPriceRows+ types +7. - Test 306→334 (+28: opt-in spec 6→11 + 10
PeApprovedPriceFinalizeTests+ 13PeSuggestedPriceSetterAuthzTests).
Lessons (đáng nhớ)
- Workflow schema-force unreliable: R1 custom-inline
agent({schema})CHỈ 1/4 lane trả (3/4 fail no-StructuredOutput). R2 free-text 2/3 PASS (cùng harness/task). → review/verify fan-out dùng free-text / hmw RUN-TRACE, KHÔNG ép-schema. (feedback_workflow_fanout_reliabilityupdated.) - Governance honesty arc: anh hỏi "sao ultra-on task lớn ko chạy workflow?" → em nhận lệch mandate auto-Workflow (spawn-lẻ + em-main BE solo) + chỉ khai khi bị hỏi → cam kết surface-before-deviate (báo trước khi đi khác chuẩn).
- Rủi ro #1 FE empty-candidates = UNREACHABLE: double-check phát hiện submit-guard
PurchaseEvaluationWorkflowService.cs:194chặn gửi-duyệt khiwinnerQuoteTotal≤0→ phiếu ChoDuyet luôn có ≥1 giá NCC. Fixlength===0= phòng-thủ thuần + sửa mâu thuẫn UX cũ. - Custom-inline workflow KHÔNG tự-scaffold run-trace → bù post-hoc
runs/2026-06-18-mig54-pe-review/(anh chốt "custom OK, miễn ghi MD"). - cwd-misland tái diễn: implementer-frontend (cd fe-user) → MEMORY rơi
fe-user/.claude/→ em reconcile → canonical + xóa stray. Optional.gitignoreguard defer.
NEXT (anh/anh Kiệt UAT — go-live thứ Hai)
- Cấu hình "Ngưỡng giá trị gói CEO" Workflow Designer (③ ô-tích chỉ hiện khi gói < ngưỡng).
- Test 3 luồng: ① PRO/CCM nhập giá → duyệt cuối chọn giá chốt · ③ phiếu < ngưỡng → CCM tích duyệt-done.
- Xác nhận: CCM (CostControl) NGAY TRƯỚC CEO (logic tự-done giả định vậy).
- "C" (sau duyệt → chuyển phiếu đến dự án) chờ anh Kiệt spec form. E-Office update sau.