wal: flush 20260801T1702
This commit is contained in:
@ -236,3 +236,5 @@
|
||||
## @S168-curate — verbatim moved from L1 (reviewer MEMORY.md)
|
||||
|
||||
- **S168 gate GĐ3-D cắm cây vào Panel-3 ×3 trang — PASS-WITH-FLAGS 10, 0 blocker (digest):** **khuôn dùng-lại phải đo LẠI theo HOST**, vì `max-h`/`sticky` của khuôn được hiệu-chỉnh cho host CŨ: `lg:max-h-[calc(100vh-16rem)]` cộng header+search = 100vh−158, còn Panel-3 chỉ có 100vh−184 ở InboxPage (dải "Vai trò" +29px) ⇒ **2 thanh cuộn lồng**; 2 trang kia thừa 5px/13px = **khít đến mức mong manh** (đổi 1 Button `h-8`→`h-10` là lật). **Class chết ÂM THẦM khi đổi kiểu cha**: `self-start` (cha `lg:block` không phải flex) + `lg:sticky` (cây là con DUY NHẤT của chính scroll-container ⇒ quãng dính ≈0) — tsc/build KHÔNG bắt được loại này, chỉ đọc CSS-chain mới thấy. **`aside` lồng `aside` CÓ `aria-label` vẫn giữ `role=complementary`** (chỉ tụt `generic` khi KHÔNG tên) ⇒ 2 landmark lồng. Prod-probe biến 1 lo-ngại thành 1 con số: `canPe` false → panel đổi câu chỉ-dẫn thành than-phiền-quyền, nhưng `/permissions/by-role` ×13 vai cho `PurchaseEvaluations.canRead`=**13/13 True** ⇒ ca chưa xảy ra (control-âm: `Permissions`/`Users` False 12/13, chỉ Admin True ⇒ phép đo có phân biệt). **`{!selectedId && <X/>}` = unmount ⇒ mất state thuần** (`search`) mà `localStorage` (`expandedSet`) vẫn sống ⇒ trade-off spec khai THIẾU. Thước hỏng gặp lại: python Windows đọc JSON UTF-8 phải khai `encoding` (cp1252 nổ) · `while read` bỏ dòng CUỐI khi file thiếu newline (mất 1/13 vai) · python `'\n'.join` ghi text-mode Windows đẻ CRLF vào tên file. Tag `[s168, khuon-do-lai-theo-host, class-chet-am-tham, probe-bien-lo-ngai-thanh-so, unmount-mat-state]` **Evidence:** `.claude/workflows/runs/2026-07-31-S164-4gd-khkk-fanout/sub-reviewer-gate-gd3d.md`
|
||||
|
||||
- **S168 gate K8-blocker Lines-editor KHKK — PASS-WITH-FLAGS 8, 0 blocker (verbatim):** vá 5 file (command+validator+handler · route PUT `{id}/lines/{lineId}` policy `KeHoachKyKet.Update` · +3 `[Fact]` · FE ×2 app SHA-pair `21e0ca05` khớp byte). **(1) Con số 642 đóng 2 câu hỏi**: baseline S167 = 639, +3 Fact ⇒ 642 khớp chằn chặn ⇒ chứng CẢ "test mới chạy thật" LẪN "0 test cũ vỡ" bằng MỘT phép đo. **(2) Quy-ước-của-chính-file là thước rẻ nhất**: mọi write changelog sub-entity trong module điền `EntityId` (`:1069`, `:1107`, `:1215`, `:1295`, `Service:550`) — chỗ mới là chỗ DUY NHẤT bỏ trống ⇒ MAJOR F-1 tìm được bằng 1 lệnh grep, không cần suy luận. **(3) `<select>` controlled NUỐT giá trị đã lưu**: `value={l.catalogEntryId}` + option-list từ query khác ⇒ khi option vắng (đang tải · query lỗi KHÔNG toast · entry `IsActive=false` sau khi gán) trình duyệt rơi về `<option value="">` placeholder ⇒ **dòng đã gán trông như chưa gán**, mà trước vá luôn hiện `tenHangMuc` ⇒ regression hiển thị do ĐỔI KIỂU Ô (text→select), tsc+build+test 0 bắt. Lớp "vắng-mặt trông giống ổn". **(4) Bình luận trong config TỰ HẸN mắt xích tương lai** (`LineConfiguration:35` hẹn "validator K4b khi Lines-editor ra đời") — Lines-editor land mà lời hẹn KHÔNG trả ⇒ trùng UNIQUE sẽ ra 500 + rò message SQL; nhưng **đo khả-chạm trước khi hô hoán**: PE có UNIQUE `(PeId, SupplierId)` ⇒ winners khác NCC ⇒ đường tạo dòng DUY NHẤT (`Lines.Add` 1 chỗ) không sinh nổi ca trùng ⇒ hạ xuống MINOR "lời hẹn chưa trả", KHÔNG phải lỗ đang chảy. **(5) Khe RỖNG phải khai là rỗng** ×2: đổi `ApprovalGroup` sau khi gán = bất khả (chỉ set lúc tạo, Update-draft không nhận field) · BE thiếu rào `line.ContractId` nhưng `DaDuyet` terminal ⇒ dòng đã bắc cầu luôn nằm ngoài phase sửa được. **(6) Test mới phủ NỬA vế `if`**: guard là `!IsActive || sai-nhóm`, helper `AddCatalogAsync` luôn `IsActive=true` ⇒ **một nửa vế chưa từng chạy lần nào**; ca "gán đè" (chính câu spec hỏi) đúng hành-vi nhưng 0 test ghim. **(7) Thước hỏng tự bắt**: `echo "ADMIN_EXIT=$?"` sau `tsc | tail` đo exit của `tail` ⇒ vô nghĩa; đo lại bằng `tsc -b --force` (chống cả incremental-skip) ⇒ tín hiệu hợp lệ = 0 dòng lỗi. **(8) Bẫy KHÔNG dính (ghi để khỏi soi lại)**: FE gửi `?approvalGroup=` khớp `[FromQuery] int? approvalGroup` của ContractCatalogController — KHÔNG lẫn với `[FromQuery(Name="group")]` của list KHKK; payload `List<T>` trần khớp type FE; `Summary` ~550 < maxlength 1000 (SQLite nuốt maxlength, prod mới nổ — kiểm chứ không đoán). Tag `[s168, mot-so-dong-2-cau-hoi, quy-uoc-file-la-thuoc, select-nuot-gia-tri-da-luu, loi-hen-trong-comment, khe-rong-khai-rong]` **Evidence:** `.claude/workflows/runs/2026-07-31-S164-4gd-khkk-fanout/sub-reviewer-gate-lineeditor.md`
|
||||
|
||||
Reference in New Issue
Block a user