Files
solution-erp/.claude/WAL.md
2026-08-06 15:32:22 +07:00

64 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WAL — auto-generated, không sửa tay
updated: 2026-08-06 | session: S177 (phiên-LOGIC L11, window 5) | branch: main
goal: nối mạch S177 → anh CHEN việc mới ở màn duyệt KHKK (bỏ "(N dòng)" + STT/mã hạng mục) — **SHIP `530af22` + deploy VERIFIED 2-vế ×2 app + Mig 72 áp prod + backfill đo trên dữ-liệu THẬT**. Engine `SỬA-6` vẫn treo nguyên, chưa vá điểm nào.
chain:
- [x] nối mạch /tiep @S177 (window 5): Sàn-3 4/5 tín-hiệu MẠNH kêu (①=2 orphan · ② `090ab1c` · ④ · ⑤ ORPHAN-L p=5,t=3) · **8/8 `verify:` KHỚP** · tick 50→51 · `_tiep-4.md` cân sổ
- [x] §3-ter nạp lớp mềm = **lead tự chạy 4-khoản** (fallback có khai — anh chen việc, không đốt round-trip sub). `ctx-verifier` KHÔNG spawn
- [x] 🔴 lead tự bắt lỗi mình 2 phép đo: ① dò thư quét `../AI_INFRA…`**repo không nằm ở đó**`se=0 all=0` là RỖNG-VÌ-HỎI-SAI-CHỖ, số sống vẫn là `se=0 all=6` của PAUSE-5 · ② `curl` rơi `a2.js` vào repo-root, đã dọn
- [x] **[S177 việc anh giao] KHKK màn duyệt — BE+FE xong, build+test sạch, CHƯA COMMIT/SHIP**
· ① bỏ `(N dòng)` khỏi `title` Section 2 (`KhkkDetailContent.tsx`)
· ② bảng 3→**4 cột** (+STT cột riêng, anh chốt) · cột HẠNG MỤC thêm dòng mã `<mã dự án> - <mã chi tiết>` trên tên
· **Mig 72** `AddMaHangMucToContractSigningPlanLines` (anh chốt DENORM có migration) + backfill `Sql()` idempotent, CỐ Ý không lọc `IsDeleted` (cứu cả hạng mục đã xoá mềm)
· `PeWorkItemCode` **KHÔNG denorm** — nới join `WorkItems` sẵn có ở `Features.cs:929`, 0 cột mới
· 3 write-site denorm sửa ĐỦ (`:527` mồi null · `:695` gán lại · `:805` tạo mới) — sót 1 là đẻ dòng có tên không mã
· 2 app SHA **IDENTICAL** (verify identical @HEAD TRƯỚC khi copy đè) · 644/644 test · lint 42 vấn-đề = **NỢ CÓ SẴN, 0 cái ở file tôi sửa**
- [x] **SHIP `530af22` + deploy VERIFIED** (anh chốt ship): bundle đổi ×2 app (admin `B-m_oxS2` · eoffice `IsXERmML`, 360s)
· **byte-level 3/3 chuỗi KHỚP local↔prod CẢ 2 APP**`2. Hạng mục (` = **0** (dạng đếm cũ đã chết) · `2. Hạng mục` 2=2 · `STT` admin 2=2, user 1=1
· 🔴 2 dị-thường đều TRUY RA NGUỒN trước khi kết luận: `2. Hạng mục`=2 vì **PE** có section trùng tiền-tố (`PeDetailTabs:405`) · `STT` admin>user vì `AttendanceReportPage` chỉ có ở admin. Mỗi app khớp ĐÚNG dist của CHÍNH NÓ
· 🔴 bundle CŨ không dùng làm đối-chứng được (trả **900B** = SPA fallback, deploy đã dọn asset) — dùng local-dist thay
· **Mig 72 CONFIRMED prod** = dòng đầu `__EFMigrationsHistory`. Backfill đo dữ-liệu THẬT: 7 dòng · 5 có hạng mục · **5/5 đã có mã** (2 dòng chưa gán ⇒ NULL, đúng bất-biến)
· sqlcmd qua **integrated auth `-E`**, KHÔNG đụng mật khẩu prod (`$env:PROD_DB_PASSWORD` trống trong phiên ssh — không đi tìm)
· smoke: admin/eoffice **200** · api `/api/contract-signing-plans` + `/api/auth/me` **401** (pipeline auth sống, không phải IIS đứng suông)
- [x] **đợt-2 S177 `b346b41` ship + deploy VERIFIED 2-vế ×2 app** (admin `DbWf4jNk` · eoffice `BqrZMtfo`, 380s) — ảnh anh gửi = màn NHÁP KHKK/2026/008, 3 điểm → làm 2 bỏ 1:
· ① "Làm header dưới đây" — ô **Hạng mục (dự án)** dời từ mục 1 xuống header mục 2; ĐẶT NGOÀI ternary `lines.length===0` (phiếu chưa có NCC vẫn phải biết gói việc — ca *vắng-mặt trông giống ổn*)
· ② "+ thêm hạng mục ở đây" — khối "Thêm hạng mục cho:" dời TỪ DƯỚI BẢNG vào dòng cuối `tbody`, `colSpan={4}`. Panel `addFor` GIỮ ngoài bảng (form nhiều ô, nhét vào `<table>` vỡ lưới `table-fixed`). Đã đối chiếu KHÔNG nhân đôi (3 hit = 1 nút + 1 chú thích + 1 header panel)
· ③ "nút edit" — 🔴 **anh chốt BỎ** (*"à vậy thôi khỏi"*). Màn nháp đã sửa TRỰC TIẾP trên dòng; ô trống cột 4 là do dòng đến từ PE (`peReferenceAmount != 0`) nên nút xoá bị chặn CÓ CHỦ ĐÍCH từ S175 — KHÔNG phải thiếu nút
· 🔴 **GIỮ mã dự án lặp trên từng dòng** — anh: *"để sau này người ta dễ hình dung hạng mục to nó chứa các hạng mục con nào"*. Câu hỏi này em nêu 2 lượt, anh chốt 2 lần cùng hướng ⇒ ĐỪNG hỏi lại
· diff **CHỈ 2 file FE, 0 file BE** ⇒ .NET test không thể ảnh hưởng, bỏ qua vòng test đó (khai rõ). 2 app build sạch · lint 0 kêu file này · SHA IDENTICAL
· **byte-level 3/3 KHỚP local↔prod ×2 app**: `colSpan:4` admin 2=2 user 1=1 · `items-baseline` 9=9 / 8=8 · `Hạng mục (dự án)` **1**=1 (=**dời**, KHÔNG nhân đôi). Smoke 200/200/401
· 🔴 **"trước" lấy từ GIT chứ không từ mạng** (bundle cũ lại bị deploy dọn): `530af22`**0** `colSpan={4}`, `b346b41` có 2 ⇒ discriminator thật. Nút thêm: `530af22` dòng 638 > `</table>` 628 = NGOÀI · `b346b41` dòng 631 < 666 = TRONG
· 🔴 **BẪY ĐÃ SẬP 1 LẦN rồi mới thấy:** `HEAD~1` KHÔNG phải commit trước của mình Stop-hook chèn `wal: flush` turn-boundary nên `HEAD`=`6d666eb` (wal), `HEAD~1`=chính commit mình phép so đầu tiên **so bản mới với chính nó**, ra "y hệt nhau" trông như KHÔNG đổi. So bằng **SHA đích danh**, đừng dùng `HEAD~n` trong repo hook auto-commit
- [!] 🔴 `/fable-real reviewer` `wf_264fb5c2-0db` = `SETUP-REVIEW: SỬA-6` (nền ĐỨNG VỮNG) **6 điểm CHƯA vá cái nào**. Spec: `runs/2026-08-06-S176-doi-style-3-vai/spec-va-doi-style-3-vai-06-08-2026.md`
- [!] 🔴 **SỬA-1 SỐNG-CHẾT:** thước dispatch `git diff origin/main...HEAD` (**ba-chấm**) uncommitted+untracked đội gate PRE-commit **chết CÂM** (0 spawn, 0 SKIP để lộ). Sửa 4 site 2-chấm `porcelain` lọc `??`
- [!] 🔴 **SỬA-5a (rẻ nhất):** 3 vai style thiếu dir `agent-memory/<vai>/` hình trong đo/budget. Lead đo lại: **3/3 THIẾU CONFIRMED**
- [ ] SỬA-2 phạm-vi chuẩn quá rộng · SỬA-3 miễn-trừ dấu-cao-su (đòi TRÍCH NGUYÊN VĂN) · SỬA-4 thách-CLEAN nhánh DAT bẻ được (đòi cặp neo `file:line ⇄ file:line`)
- [ ] SỬA-5b vùng (seam FEBE + ngoài 3 glob) · SỬA-5c `README:67` thiếu nhãn "(hiệu-lực sau restart CLI)" + thiếu nhánh style decision-tree
- [ ] SỬA-6a claim "BE 0 máy style" chép 4 site · SỬA-6b lead chép luật vào persona (vi phạm chính B1) `db:32/34-35/61` · `be:63` · `fe:4` chép digits
- [ ] 🔴 3 vai style **CHƯA spawn-probe** registry no-hot-reload, cần restart CLI
- [ ] 🔴 2 NỢ vòng-3: khung thẻ 2 nguồn sự-thật (`index.css:112` utility hardcode ×2 app) · overclaim gotcha #66 **4 site / 2 CHUỖI KHÁC NHAU** (grep 1 chuỗi = 2/4 rồi tưởng xong)
- [ ] 🔴 đính-chính `_context-s-11.md:152` *"Lead đã flush (a)"* SAI: flush **1/7**. Append-only đính chính bằng entry PAUSE-6
- [ ] 🔴 ghi synthesis cho **2** run-folder ORPHAN: `2026-08-05-S173-bookend-open` · `2026-08-05-S175-duan-budget-column`
- [ ] E4 vế · 5 điểm governance (`STATUS:473` 8687 · 5 slot HANDOFF · `ROTATE vrapp` · Carry 14 slug · slot (70) anchor) · A1 `ring2-audit` 26.440B>25.600 · drift-audit quá hạn · 9 dir rỗng
- [ ] kéo thư `all=6` (2 `loi-do-luong` + 4 `upgrade-pack-phased` thiếu adap-report) — 🔴 đo lại bằng ĐÚNG đường, đừng lặp lỗi quét `../`
- [ ] ⚠️ roster **26** > `hmw_width.cap` **20** ⇒ full-roster-sweep LOUD-skip 6 lane cuối. Số cap = quyền anh, O-7 treo
- 🅿️ **PARK (anh @S176) — KHÔNG hỏi lại, KHÔNG tự làm:** cột DỰ ÁN 11 ô · `Project.BudgetTotal` rỗng 61/69
- 🔴 **CHƯA ai soi mắt prod** vòng-4 + 4b (375/1366/1440) — kết luận giao diện vẫn là ĐỌC MÃ (gotcha #3)
next: vá **SỬA-1** (thước dispatch — đội STYLE đang chết câm, lượt S177 sửa 6 file ĐÚNG địa phận cả 3 vai mà 0 con được gọi) → SỬA-5a → 2/3/4/5b/5c/6a/6b → re-review · song song CHỜ anh soi mắt prod vòng-4/4b + S177
verify:
- `grep -c 'MaHangMuc' src/Backend/SolutionErp.Domain/ContractSigningPlans/ContractSigningPlanLine.cs`**1** = entity đã có cột
- `ls src/Backend/SolutionErp.Infrastructure/Persistence/Migrations/*AddMaHangMuc*.cs | wc -l`**2** (Migration + Designer; +ModelSnapshot = 3-file rule)
- `grep -c 'colSpan={2}' fe-admin/src/components/khkk/KhkkDetailContent.tsx`**1** = tfoot đã nuốt cột STT
- `sha256sum fe-{admin,user}/src/components/khkk/KhkkDetailContent.tsx` → 2 hash BẰNG NHAU (mirror)
- `grep -rn 'origin/main\.\.\.HEAD' .claude/agents/ | wc -l`**4** = SỬA-1 CHƯA vá (đích: 0)
- `ls -d .claude/agent-memory/*-reviewer-style 2>/dev/null | wc -l`**0** = SỬA-5a chưa làm (đích: 3)
- `curl -s https://admin.solutions.com.vn/ | grep -oE 'index-[A-Za-z0-9_-]+\.js'` → khác `index-B-m_oxS2.js` = đợt SAU đã tới (mốc S177 = `530af22`; eoffice `index-IsXERmML.js`)
- `ssh vietreport-vps 'sqlcmd -S .\SQLEXPRESS -d SolutionErp -E -Q "..."'`**integrated auth, KHÔNG cần mật khẩu**. Mốc: Mig 72 = dòng đầu `__EFMigrationsHistory`; `ContractSigningPlanLines` 5/5 dòng-có-hạng-mục đã có `MaHangMuc`
- 🔴 LUẬT ĐO bundle: `grep -o '<chuỗi>' | wc -l`, **KHÔNG** `grep -c` (minify = 1 mega-dòng)
- `wc -c .claude/agent-memory/ring2-audit/MEMORY.md` → 26440 (>25600 = còn nợ A1)
- 🔴 chạy khối DUAL-ACCEPT `tiep.md §0 ①` → kỳ vọng **2** ORPHAN
- `ls .claude/sessions/session-11/` → _context · _mind · _pause-1..5 · _tiep-1..4