wal: flush 20260727T1408
This commit is contained in:
@ -67,7 +67,11 @@ chain:
|
||||
[x] **A-owner chốt (14)**: phương án **(b) BỎ policy theo vai, giữ 3 rào nghiệp vụ**. Lý: cờ F6 = admin tick ĐÍCH DANH từng người ⇒ chặt hơn quyền theo vai; handler có `ICurrentUser` + ném Forbidden ⇒ đúng khuôn controller ("class any-auth, handler fine-grained")
|
||||
[x] A-lead land 3 sửa (2 ĐẦU, chống sót read-site): (1) gỡ `[Authorize(Policy)]` khỏi `DeleteByApprover` + chú thích dài · (2) gỡ `can(...,'Delete')` khỏi FE gate + dọn 3 khai thừa, **re-mirror md5 `7cd6bbfe…` ×2** · (3) T25 viết lại ĐẢO CHIỀU (`Should().BeNull()`) + **đổi tên** `RequiresDeletePolicy`→`MustStayPolicyFree` (tên cũ nói dối sau khi đổi spec). Đo: **561 PASS/0 FAIL** · tsc 0 lỗi ×2
|
||||
[x] A-lead vá chú-thích LOW-1 reviewer bắt đúng: bản đầu viết "thêm changelog SAU khi state đã đổi" — SAI một nhịp (lúc `Add()` phiếu VẪN `Deleted`); cơ-chế thật = **cascade tức thời đã xong tại `Remove()` khi chưa có con nào để gỡ**
|
||||
[!] wf: A-ĐỢT-2 reviewer RESUME lần 2 — đã báo nó 3 thay đổi giữa lượt (mục-tiêu-di-động), xin verdict trên trạng-thái HIỆN TẠI
|
||||
[x] A-ĐỢT-2 reviewer XONG TRỌN — 51.970B · **12 FLAG (2H/4M/6L)** · verdict ban đầu **ĐỪNG-DEPLOY**. H2 (gỡ policy) nó **tự truy 7 chặng** rồi ĐÓNG: chốt chính `PeSoftDeleteFeatures.cs:104` `FirstOrDefault(...) ?? throw Forbidden` — **KHÔNG** có `.First()` fallback (khác `WorkflowService:744-745`), `grep Admin` = 1 hit ở handler LIST không phải handler xóa ⇒ 0 đường ghi mở. R2 FE khớp 1-1, R3 T25 = đổi-spec hợp-lệ (`=="X"` ⟂ `==null` loại-trừ nhau, không phải nới), R4 nó tự chạy test ra 561 khớp lead
|
||||
[x] 🔴🔴 **H1 = LẦN 4 cùng lớp lỗi, và là ca ĐAU NHẤT**: `ApprovalWorkflowOptionsDto` **THIẾU field `AllowApproverDelete`** ⇒ `grep -c` trong `PurchaseEvaluationFeatures.cs` = **0** ⇒ FE gate `levelOptions?.allowApproverDelete === true` **LUÔN SAI** ⇒ **nút KHÔNG BAO GIỜ hiện với bất kỳ ai**. BE build sạch · FE build sạch · 561 test xanh · **grep hợp-đồng của lead cũng khớp** — vì lead chỉ kiểm tên **ROUTE**, hợp-đồng còn tầng **tên FIELD trong DTO** mà lead không đặt vào lưới
|
||||
[x] A-lead vá H1 (2 dòng: DTO + site dựng) + **thêm T27 khoá CẢ LỚP** (reflection: mọi cờ `Allow*` trên `ApprovalWorkflowLevel` phải có mặt trên DTO) — 🧪 **FAULT-INJECT xác nhận có RĂNG**: tiêm lại đúng bug ⇒ **T27 ĐỎ**, khôi phục ⇒ xanh
|
||||
[x] 🚀 **A-ĐỢT-2 DEPLOY XONG** — commit `4464a46`, push `b1bae77..4464a46 → main` exit 0. **562 PASS/0 FAIL** (45+517) · npm build ×2 PASS · md5 mirror `7cd6bbfe…` · **F8 gate qua**: `git check-ignore` sạch, staging 0 `??` ở src/tests/fe, `git show --stat` có ĐỦ 2 file mới (269 + 822 dòng)
|
||||
[!] wf: A-cicd-verify-dot2 `a66f...` — 🔴 trọng-tâm KHÁC đợt 1: **KHÔNG có migration** (đừng tìm row mới) nhưng **CÓ seed menu** ⇒ phải restart API. Kiểm gắt nhất: **nhãn `Pe_*_Pending` đã đổi "Duyệt"→"Đang duyệt" chưa** (đi qua `labelBackfill` RIÊNG, upsert thường KHÔNG đụng Label ⇒ dễ trượt nhất)
|
||||
[~] wf: A-ĐỢT-2 reviewer — spawn TRỰC TIẾP `a64f...`; ưu tiên: vá-đảo-thứ-tự của lead (chưa ai soi, hỏi có đúng trên SQL Server không chứ không chỉ SQLite) · 3 bẫy `IgnoreQueryFilters`/IDOR/D3 · guard per-NGƯỜI · labelBackfill
|
||||
[~] A-ĐỢT-2 test cũ: 516 total, 1 FAIL = `T26_Delete_WritesChangelogWithDeleteAction_AndCarriesReasonWhenProvided`. Handler CÓ ghi `ChangelogAction.Delete` (`PeSoftDeleteFeatures.cs:126-131`) ⇒ đỏ ở chi-tiết khác (nghi phần mang LÝ DO). `test-specialist` còn chạy (testhost lock ⇒ build báo MSB3027 = **KHÔNG phải lỗi mã**), chờ nó khai
|
||||
[~] wf: A-ĐỢT-2 W1-bis — 2 spawn TRỰC TIẾP song song (KHÔNG qua hmw): `implementer-frontend` làm phần chính FE (`sub-d2-fe-3.md`) · `test-specialist` viết 10 test T21-T26 (`sub-d2-test-4.md`)
|
||||
|
||||
Reference in New Issue
Block a user