wal: flush 20260731T1733
This commit is contained in:
@ -37,3 +37,28 @@ K3-BE: IN-PROGRESS — bước-0 XONG (lead), §1-8 p2 đang chạy
|
||||
KHKK-N1..N8 mirror ĐÚNG cấu trúc này (3 Steps × Levels như bảng), resolve user theo EMAIL.
|
||||
|
||||
(§1-8 p2 ghi tiếp bên dưới)
|
||||
|
||||
---
|
||||
|
||||
# §1 [p2] KẾ HOẠCH (ghi TRƯỚC khi code — 3 dòng)
|
||||
|
||||
1. **A** — `DbInitializer.cs`: thêm `SeedKhkkGroupWorkflowsAsync(db, userManager, logger)` (UNGATED, đặt sau
|
||||
cụm 4 seeder WorkflowApps V2 ở `InitializeAsync`), mirror khuôn `SeedSampleContractWorkflowV2Async`; resolve
|
||||
11 email → dict 1 lượt, rồi loop N=1..8 tạo `KHKK-N{n}` (type-10) 3 Steps × Levels theo roster §0.
|
||||
2. **B** — `MenuKeys.cs`: +8 const `AwV2_KhkkN1..N8` + vào `All` (ràng buộc T6: key ∈ All BẮT BUỘC có menu-row)
|
||||
⇒ `DbInitializer.SeedMenuTreeAsync`: +8 row con dưới `ApprovalWorkflowsV2` (order 3..10), idempotent per-Key.
|
||||
3. **C** — `dotnet build SolutionErp.slnx` (0W/0E) + `dotnet test SolutionErp.slnx` full (baseline 609/0) + đếm
|
||||
`MenuKeys.All` bằng lệnh máy → ghi DELTA.
|
||||
|
||||
**Đo TRƯỚC khi sửa (baseline, lệnh máy chạy ở §4):** `MenuKeys.All` hiện = ? (đo ở §4, không đoán).
|
||||
|
||||
🔴 **2 lệch phát hiện lúc khảo sát (khai ngay, KHÔNG tự quyết):**
|
||||
- **L1 — "vùng seed workflow type-10 hiện có (W3 S161)" KHÔNG TỒN TẠI.** `grep ContractSigningPlan
|
||||
DbInitializer.cs` = **0 hit** (chỉ có `SeedKeHoachKyKetAccessAsync` = seed *quyền*, không phải workflow).
|
||||
⇒ Không có khuôn type-10 để mirror; tôi mirror khuôn gần nhất **cùng lớp** = `SeedSampleContractWorkflowV2Async`
|
||||
(`:226`) / `SeedSampleProposalWorkflowV2Async` (`:276`) — cùng cách dựng `ApprovalWorkflow + Steps + Levels`.
|
||||
- **L2 — `AllowApproverFinalize` bị ÉP `false` server-side cho type-10 ở đường Designer.**
|
||||
`ApprovalWorkflowV2AdminFeatures.cs:380-381`: `AllowApproverFinalize = typeEnum != ...ContractSigningPlan && l.…`
|
||||
(W1 S161 F-8 containment). Seeder ghi entity TRỰC TIẾP nên **không bị chặn**, nhưng nếu admin bấm "tạo version
|
||||
mới" qua Designer thì cờ rơi về false. Tôi vẫn set `true` theo lệnh (OG-3/OG-9) + ghi comment đúng câu lead
|
||||
giao; **nhịp sau cùng wave** port nhánh service + (nếu owner chốt) gỡ ép-false ở `:381`.
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
K3-FE: IN-PROGRESS — build ×2 · SHA-pair (chưa chốt)
|
||||
|
||||
# sub-implfe-k3 — K3-FE 3 việc FE (Layout AwV2_KhkkN*, gỡ khóa duyệt-sớm KHKK, comment supersede Panel)
|
||||
|
||||
> Artifact chống #53 — đổ liên tục từng việc. Dòng-1 = verdict (cập nhật cuối).
|
||||
> Run: 2026-07-31-S164-4gd-khkk-fanout · role: implementer-frontend · lượt K3
|
||||
|
||||
## §0 — Trạng thái mở lượt (đo đĩa TRƯỚC khi gõ, bài học S164/K2)
|
||||
|
||||
- `fe-admin/src/components/Layout.tsx:170-176` — `awV2Match` whitelist hiện: `'DuyetNcc' | 'DuyetNccPhuongAn' | 'Contract'`. Chưa có nhánh KhkkN. ✔ khớp đề-bài.
|
||||
- `Khkk_*` staticMap ĐÃ CÓ SẴN 6 dòng (`:35-40`, từ W2 S161) — đề-bài "CẤM nới họ Khkk_" ⇒ đọc là **cấm THÊM dòng mới**, 6 dòng cũ giữ nguyên byte.
|
||||
- `fe-admin/src/pages/system/ApprovalWorkflowsV2Page.tsx` 1368 dòng. Lock KHKK sống ở **4 cụm**: `:151` note-const · `:242-259` `levelFlagsPayload(e, lockEarlyFinalize)` + 2 call-site `:783/:815` · `:633-638` `earlyFinalizeLocked` · `:1281-1329` render (banner + 2 checkbox `disabled`/`checked` ép false + 2 `title`). ⇒ gỡ lock = đụng CẢ 4, không phải 3.
|
||||
- `KhkkWorkflowPanel.tsx:6-9` — câu cần supersede nguyên văn: *"KHÔNG 2 đường kết-thúc-sớm (AllowApproverFinalize / CeoApprovalThreshold — anh phán «PHÁ VỠ» S155; W1 đã rào ở Designer type-10)"*.
|
||||
- Baseline SHA-pair Panel ×2 = `2B64144EF6E8567D6997C0E19B9686C083080216510A4CD8DA6157A80F584817` (khớp đề-bài `2b64144ef6e8`). ✔
|
||||
- `tsconfig.app.json:19-21` = `noUnusedLocals` + **`noUnusedParameters`** true ⇒ KHÔNG được để param `lockEarlyFinalize` mồ côi; phải xoá param + sửa 2 call-site.
|
||||
|
||||
## §1 — VIỆC 1 Layout.tsx `AwV2_KhkkN{1..8}` — DONE
|
||||
|
||||
- `fe-admin/src/components/Layout.tsx:177-182` (+8 dòng, chỉ INSERT, 0 xoá): thêm nhánh
|
||||
`if (/^KhkkN[1-8]$/.test(code)) return '/system/approval-workflows-v2/' + code` **BÊN TRONG** khối
|
||||
`awV2Match` sẵn có, đặt SAU whitelist 3 code cũ ⇒ 3 code cũ đi đường cũ, 0 đổi hành vi.
|
||||
- Regex `^KhkkN[1-8]$` neo 2 đầu ⇒ `KhkkN0`/`KhkkN9`/`KhkkN12` KHÔNG khớp (rơi về `return null`, đúng ý "n=1..8").
|
||||
- **Phép-âm (đề-bài yêu cầu) — PASS:** `git diff -U0 | grep -E "^\+ *Khkk_[A-Za-z]+: *'"` = **0 hit**.
|
||||
Kèm **control dương**: cùng regex quét cả file = **6 hit** (6 dòng `Khkk_*` cũ) ⇒ mẫu CÓ RĂNG, 0-hit là
|
||||
0-hit thật chứ không phải regex trượt. Dòng `Khkk_` duy nhất trong diff là **comment** (mention, không
|
||||
phải route) ghi rõ lý do CẤM nới.
|
||||
- `git diff --stat` = `1 file changed, 8 insertions(+)`.
|
||||
|
||||
## §2 — VIỆC 2 gỡ khoá duyệt-sớm KHKK (đang chạy)
|
||||
Reference in New Issue
Block a user