wal: flush 20260810 S188 dot-1 run-trace + governance state

This commit is contained in:
pqhuy1987
2026-08-10 18:20:40 +07:00
parent bc309c559c
commit 5a77f4f127
65 changed files with 3352 additions and 96 deletions

View File

@ -63,3 +63,5 @@ Prod: `ssh vietreport-vps` powershell-wrapper — ⚠️ **SSH session DIES khi
- **S182 (08-08) ×Fable KHKK AWF mirror NCC — **lens DB + lens FE** `[LEAD SEED ON-BEHALF — nguồn `runs/2026-08-08-S182-khkk-awf-mirror-ncc/sub-invest-db-fable.md` 18.097 B + `sub-invest-fe-fable.md` 13.916 B; entry S182 sẵn có chỉ phủ lens **BE**]`:** 🔴 **2 quả bom cùng một gốc `per-TYPE`:** panel `ContractSigningPlan` **GIẤU 7/8 workflow nhóm** vì BE `Active = FirstOrDefault(IsActive)` per-type (`ApprovalWorkflowV2AdminFeatures.cs:210`, tie-break Version DESC **không xác định** giữa 8 bản v1) · và bấm "Tạo quy trình mới"/"Lưu + kích hoạt" cho BẤT KỲ mã type-10 ⇒ `IsActive=false` **CẢ 8 nhóm** (`:339-343`; seeder idempotent per-Code `:610` **skip**, không re-set). 🔴 **committed-but-unapplied-local:** Mig 72 trên đĩa từ 08-06 mà **cả Dev lẫn Design local dừng ở Mig 71**. **Vắng dữ liệu ≠ bug:** seeder KHKK resolve người duyệt **theo EMAIL cứng** (11 email prod `DbInitializer.cs:556-584`) ⇒ DB thiếu user thì workflow RỖNG 0 bước vẫn tạo + log warning — designer local thấy 8 workflow trống người là **ĐÚNG**. Memory cũ S155 *"WF-V2 KHÔNG có lệnh Update"* đã **STALE** (`UpdateAwDefinitionCommand` đã land). 2 bộ luật song song cùng file (`HaveSequentialOrders` chỉ chạy path Create ⟂ Update dùng guard riêng) = drift-risk. Route `/system/approval-workflows-v2` **KHÔNG PermissionGuard** (`App.tsx:79-80`) — gotcha #82 2 tầng. Tag `[s182, lens-db-fe, bom-per-type, giau-7-tren-8, committed-but-unapplied-local, vang-du-lieu-khong-phai-bug]`
- **S185 (08-09) lane5 measure run YC-017 `[LEAD PLACEMENT (a) @S185 — nguồn `.claude/workflows/runs/2026-08-09-S185-email-adap-pipeline/sub-opus-lane5-measure.md` 27.979 B]`:** 4/4 đo có số kèm lệnh tái-lập (Lớp 2·4·9 thư 08-05 · tier-qua-resume 4.2 · master-checklist ô1/ô2 + sàn-2 · completeness-pass ~10 report). 🔴 Bắt **tiền-đề C-17 STALE ngay trong lúc đo** (`vocab-alias-map.md` tồn tại 8.020 B mtime 07-22 ⟂ checklist ghi "chưa tồn tại") — độc-lập với lane3, 2 lane cùng bắt 1 lỗi = corroborate. Luật mới: khi **2 tệp đang bị sửa song song lúc đo** (lane khác cùng wave) ⇒ mọi số-dòng PHẢI kèm mốc giờ đo, không thì số chết ngay khi lane kia land. Tag `[s185, do-kem-lenh, corroborate-2-lane, so-dong-kem-moc-gio]`
- **S187 (08-10) ×Fable YC-023 invest BE "Duyệt HĐ" GĐ3 `[LEAD SEED ON-BEHALF — return garble #53 (mẩu ý-định "append §4-§7"), đĩa TRỌN 26.119 B == HẾT ==; nguồn `runs/2026-08-10-S187-duyet-hd-tu-khkk/sub-invest-be-fable.md`]`:** Contract V2 tái dùng 100% approve-side (`ContractWorkflowService:111-116`→ApproveV2 mirror PE, LevelOpinions Mig 33, 5-state); thiếu ĐÚNG TÂM = `ApplicableType=3` "any ContractType" không phân loại (`ApprovalWorkflow.cs:57`, bridge tự khai `:23-25`) — per-type là khái niệm V1 (`WorkflowDefinition.ContractType`) V2 làm rơi; Dev đo SQL: type-3 đúng 1 workflow `QT-HD-V2-001`. 🔴 2 bom nếu mirror họ-Code KHKK: deactivate per-TYPE hard-wire `==ContractSigningPlan` (`ApprovalWorkflowV2AdminFeatures:370-376` — version mới 1 loại tắt cả 7) + overview Active-đơn `:205-215` giấu 6/7. Phiếu GĐ3 = CHÍNH `Contract` (đủ ruột Approvals/LevelOpinions/Changelogs — "GIỐNG NHAU ĐỪNG CHẾ THÊM"); pipeline nối 0 phase mới. Kế thừa bridge K7 chảy đủ tiền/NCC/SLA/changelog 2 phía; gap: ContractType chọn TAY (catalog SP-002 không map 7 type) · ApprovalGroup N1-N8 không chảy · line-level không vào ruột. Đường mặc định **0-MIG** (PA-A họ-Code + guard mirror `EnsureWorkflowGroupMatchAsync` 3+1 cửa: Create thiếu 2 vế IsActive∧Selectable vs bridge đã bịt = drift 1-luật-2-site; UpdateDraft KHÔNG có re-pin — pin nhầm là kẹt). ĐÍNH CHÍNH S156 STALE: inbox/list/detail V2-aware từ W6 S161 (`ResolveV2InboxIdsAsync ContractFeatures:559-593`). Authz Đ1-trọn/Đ2-mặt-tấn-công/Đ3-2-tầng = CHỜ-ANH (menu public 13/13 chủ-đích). Wave W0-chốt-trục→W1-gỡ-bom→W2-seed-họ→W3-wire-4-cửa→W4-dry-run-K8→W5-authz. Mốc thật Mig 72 (brief lead ghi 71 — đề bài nên trỏ canonical, đừng chép số). Tag `[s187, fable-real, applicable-type-khong-phan-loai, 2-bom-per-type, phieu-gd3-la-contract, 0-mig-mac-dinh, s156-stale-da-va]`
- **S187 (08-10) ×Fable YC-023 invest FE "Duyệt HĐ" GĐ3 [`runs/2026-08-10-S187-duyet-hd-tu-khkk/sub-invest-fe-fable.md`]:** 🔴 fe-admin ẨN TRỌN 4 root pipeline (`ADMIN_HIDDEN_KEYS` Layout.tsx:227-240) ⇒ mirror-sang-admin = trang sống-không-menu (tiền lệ KHKK admin); 42 leaf `Ct_*` ×7 loại ĐÃ route vào trang CŨ qua `?type=N` (fe-user Layout:143-154, admin regex :117 thiếu WfView/Approved/Deleted); màn duyệt HĐ hiện = `ContractDetailContent` 2-nút model 9-PHASE CŨ chọn-targetPhase, V2 opinions READ-ONLY (:185-224), FE type THIẾU `currentApproval`+`approvalFlow` (PE có 2 DTO) ⇒ wave màn-duyệt chặn bởi BE DTO chứ không phải endpoint (ApproveV2 HĐ wire từ S29); chiều ngược HĐ→KHKK = 0 data (`Line.ContractId` một chiều, `Contract.cs` 0 con trỏ — BE reverse-join mới hiển thị nguồn được); khuôn màn duyệt MỚI NHẤT = `KhkkWorkflowPanel` sau owner-trim S174/S175 (GỠ nút Từ chối + chỉ Duyệt/Trả-lại — đừng mirror PeWorkflowPanel nguyên bản); per-type = query-param DANH-TÍNH (bài `view=approved`/`group` TRANSIENT_QUERY_KEYS), KHÔNG `:kind`. #53 cắt return giữa phiên lần nữa — file đổ-ruột-từng-mục cứu trọn, coordinator resume 0 mất. Tag `[s187, admin-hidden-roots, duyet-hd-9phase-cu, dto-chan-wave, khuon-khkk-sau-trim]`