5.0 KiB
5.0 KiB
K3-BE: IN-PROGRESS — bước-0 XONG (lead), §1-8 p2 đang chạy
sub-implbe-k3 — K3 BACKEND (S165, wave 3/8: 8 workflow nhóm + finalize + sweep)
🔴 KHAI VẾT: p1 wf_a04124a7-0fe = class engine-process-exit (35 tool-use/458s nhưng **0 delta đĩa
- 0 artifact + return rỗng** — lượt chạy coi như chưa từng tồn tại; #53 tally cả wave). Bước-0 dưới đây = LEAD tự chạy (ssh + sqlcmd trực tiếp), p2 seed từ bảng ĐÃ VERIFY này, không cần ssh lại.
§0 [LEAD] FAIL-CLOSED verify đội-hình QT-DN-V2-001 LIVE — PASS
- Instance prod =
localhost\SQLEXPRESS(named instance —-S localhost/tcp:1433đều fail; ghi lại cho mọi lane sau đỡ dò). Windows-auth-Equassh vietreport-vpschạy được. ApprovalWorkflows WHERE Code='QT-DN-V2-001'= 3 row: 2 archived (IsActive=0) + 1 LIVE (IsActive=1), ApplicableType=1 (Duyệt NCC/PE — nguồn đội-hình, đúng OG-2 + note owner slot-54 "lấy đúng bộ người duyệt đang cấu hình ở workflow Duyệt NCC prod"). TotalWf active toàn hệ = 7.- ROSTER bản LIVE (nguyên văn sqlcmd, mojibake console đã chuẩn hoá dấu theo email đã biết):
| Bước | Dept | Cấp | Tên | |
|---|---|---|---|---|
| 1 «Phòng 1» | Phòng Cung Ứng (PRO) | 1 (OR-4) | phuong.nguyen@solutions.com.vn | Nguyễn Thị Bích Phượng |
| 1 | Phòng Cung Ứng | 1 | long.chau@solutions.com.vn | Châu Tạ Kim Long |
| 1 | Phòng Cung Ứng | 1 | duy.nguyen@solutions.com.vn | Nguyễn Văn Duy |
| 1 | Phòng Cung Ứng | 1 | binh.lethanh@solutions.com.vn | Bình Lê Thanh |
| 1 | Phòng Cung Ứng | 2 | tra.bui@solutions.com.vn | Bùi Lê Thủy Trà |
| 2 «Phòng 2» | P. Kiểm soát Chi phí (CCM) | 1 (OR-4) | luu.tran@solutions.com.vn | Trần Xuân Lưu |
| 2 | P. Kiểm soát Chi phí | 1 | truong.letrandang@solutions.com.vn | Lê Trần Đăng Trường |
| 2 | P. Kiểm soát Chi phí | 1 | binh.le@solutions.com.vn | Lê Văn Bình |
| 2 | P. Kiểm soát Chi phí | 1 | nguyen.ho@solutions.com.vn | Hồ Thị Nữ Nguyên |
| 2 | P. Kiểm soát Chi phí | 2 | chuong.phan@solutions.com.vn | Phan Văn Chương (TP.CCM — giữ cờ finalize OG-3/OG-9) |
| 3 «Phòng 3» | Ban Giám đốc (CEO) | 1 | truong.nguyen@solutions.com.vn | Nguyễn Văn Trường |
- Vá-11 danh-tính (phân giải bằng dept trên bản LIVE):
truong.letrandang(CCM C1) ⟂truong.nguyen(BGĐ C1 = CEO) — 2 người khác dept, không nhầm;binh.lethanh(PRO C1) ⟂binh.le(CCM C1) — khác dept, không nhầm. Cặp "tring.le"/"thanh.lethanh" trong câu-đố spec KHÔNG xuất hiện trên roster LIVE ⇒ là bẫy chính-tả từ ảnh, roster email là chân lý. - ⇒ Mô-hình 3 trạm PRO → CCM → CEO với OR-of-N cấp 1 mỗi trạm + cấp 2 = trưởng phòng. Seed 8 workflow 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)
- A —
DbInitializer.cs: thêmSeedKhkkGroupWorkflowsAsync(db, userManager, logger)(UNGATED, đặt sau cụm 4 seeder WorkflowApps V2 ởInitializeAsync), mirror khuônSeedSampleContractWorkflowV2Async; resolve 11 email → dict 1 lượt, rồi loop N=1..8 tạoKHKK-N{n}(type-10) 3 Steps × Levels theo roster §0. - B —
MenuKeys.cs: +8 constAwV2_KhkkN1..N8+ vàoAll(ràng buộc T6: key ∈ All BẮT BUỘC có menu-row) ⇒DbInitializer.SeedMenuTreeAsync: +8 row con dướiApprovalWorkflowsV2(order 3..10), idempotent per-Key. - C —
dotnet build SolutionErp.slnx(0W/0E) +dotnet test SolutionErp.slnxfull (baseline 609/0) + đếmMenuKeys.Allbằ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ựngApprovalWorkflow + Steps + Levels. - L2 —
AllowApproverFinalizebị ÉPfalseserver-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 settruetheo 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.