[CLAUDE] Docs: S97 part-2 closeout — endsBeforeCeo config→RUNTIME (Mig 60) + gotcha #78 + memory harvest
- STATUS/HANDOFF S97 mega-line: +fix-3 endsBeforeCeo; State → Mig 60 / 89 tables / gotcha 78 / bundle DR9q2VUy+Bgz8u4E5 (Run #482) - gotcha #78: display-flag CONFIG-vs-RUNTIME (nói dối khi instance lệch config; nặng sau opt-in flip) - session-log Part 2: endsBeforeCeo root-cause + fix + verify (test 440 + reviewer PASS 0-issue + cicd #482 bug-fixed-LIVE) - Memory harvest: test-specialist + reviewer + cicd-monitor (#482 verdict recover từ diary — #53 return-garble lần-5, root-cause structural noted) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -1314,6 +1314,14 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
|
||||
|
||||
**References:** `$env:TEMP\guideshots\capture.ps1` (session-scratch) · `docs/Huong-dan-Duyet-NCC.docx`. Pattern reusable → user-memory `pattern_prod_screenshot_to_docx`.
|
||||
|
||||
### 78. Display flag suy từ CONFIG thay RUNTIME → nói dối khi instance lệch config (nặng hơn sau opt-in/opt-out flip) (Session 97)
|
||||
|
||||
**Triệu chứng:** Phiếu PE/2026/A/010 CEO (Bước 3) đã duyệt thật (Lịch sử duyệt 16:47) nhưng sơ đồ báo "Phiếu đã kết thúc tại CCM Cấp 2 — không qua CEO" + làm mờ Bước 3 CEO. Anh Kiệt: "CEO duyệt mà ko thấy gì?".
|
||||
|
||||
**Cơ chế:** `endsBeforeCeo` (banner "không qua CEO" + làm-mờ bước-sau) tính theo CONFIG workflow (`steps.Any(l => l.AllowApproverFinalize)` = workflow CÓ cấp finalize) → luôn true nếu workflow có cấp "Duyệt thay CEO", BẤT KỂ phiếu NÀY thực sự finalize hay đã lên CEO. Phiếu opt-out finalize (approver trình tiếp) → lên CEO thật nhưng display suy từ config → nói dối. `ComputeLevelStatus` cũng blanket "Done" mọi cấp khi DaDuyet. **Nặng lên sau S97 đảo default checkbox opt-out→opt-in**: mặc định giờ TRÌNH TIẾP CEO → nhiều phiếu lên CEO → bug hiện thường xuyên (fix = follow-up trực-tiếp của chính S97 default-flip).
|
||||
|
||||
**Fix (root-cause, Mig 60 `8037fa0`):** thêm field RUNTIME `EndedByLevelFinalize` (set true CHỈ ở nhánh level-finalize service) → `EndsBeforeCeo` cho phiếu DaDuyet đọc runtime thay config (ChoDuyet giữ heads-up config); FE gate làm-mờ theo `endsBeforeCeo`; backfill dò marker "Duyệt KẾT THÚC tại". prod-verified Run #482 (PE-detail endsBeforeCeo=False live). **Quy tắc:** flag hiển-thị/trạng-thái = "instance NÀY ĐÃ làm-gì" (RUNTIME) — KHÔNG "workflow CÓ THỂ làm-gì" (CONFIG); config-flag chỉ đúng khi instance không-bao-giờ-lệch-config → đổi default opt-in/opt-out làm lệch phổ-biến → soi lại mọi display suy-từ-config. Liên-quan `feedback_cardinality_change_grep_consumers` · `feedback_root_cause_over_symptom`.
|
||||
|
||||
---
|
||||
|
||||
## Checklist debug bug mới
|
||||
|
||||
Reference in New Issue
Block a user