4.5 KiB
CI/CD verify — 761d818 (W6 KHKK — đường ống HĐ V2, BE-only 0-mig)
Agent: cicd-monitor · Session S161 W6 · Bắt đầu: 2026-07-29 (giờ VN) Ghi TỪNG MỤC ngay khi có bằng chứng (chống #53 garble — file này là SẢN PHẨM CHÍNH, return chỉ là tóm tắt).
STAGE 1 — Push + path-filter (DONE)
- Commit:
761d8183f365c68d2fca13ab27f2ee810fdbc30e - Ngày giờ commit:
2026-07-29 23:27:19 +0700 - Subject:
[CLAUDE] App+Infra+Tests: W6 KHKK — duong ong HD V2 (view per-HD 3-site + inbox V2+ADMIN + guard trinh +PMH) - Unpushed (
git log origin/main..HEAD): RỖNG ⇒ đã push xong. - Diff stat: 3 file, +811 / −6
| File | +/− |
|---|---|
src/Backend/SolutionErp.Application/Contracts/ContractFeatures.cs |
+142/−… |
src/Backend/SolutionErp.Infrastructure/Services/ContractWorkflowService.cs |
+15/−… |
tests/SolutionErp.Infrastructure.Tests/Application/ContractV2PipelineTests.cs |
+660 (file MỚI) |
- Path-filter (gotcha #41, 7-glob): cả 3 file nằm dưới
src/Backend/**+tests/**⇒ KHÔNG khớp glob nào trongpaths-ignore⇒ CI PHẢI chạy. (soi TỪNG file, không suy từ tổng) - 0-mig proof (lớp 1/3 — repo):
git diff 761d818~1 761d818 -- '*Migrations*'→ RỖNG ⇒ commit không đụng migration. - 0-FE proof (lớp 1/2 — repo):
git diff 761d818~1 761d818 -- 'fe-admin/*' 'fe-user/*'→ RỖNG ⇒ 0 file FE đổi ⇒ theo #69 TWO-MODE, bundle rotate-or-frozen đều hợp lệ; ship-proof = Last-Modified in-window.
STAGE 1 = PASS.
STAGE 2 — Gitea Actions poll
- Run matched theo
head_sha(KHÔNG theo run_number):761d8183→ Run #430, id=543 - created_at:
2026-07-29T23:27:28+07:00(t+9s sau commit-time 23:27:19 ⇒ đúng run của push này) - Poll iter 1-5:
running(updated_at bò 23:28:17 → 23:30:48)
(chờ completed — ghi tiếp)
PRE-DEPLOY BASELINE (đo TRƯỚC khi pool recycle — dùng làm vế so delta)
P-A. FE bundle snapshot (PRE)
| App | JS | CSS |
|---|---|---|
| admin.solutions.com.vn | index-BPWQQe4q.js |
index-KS0kL7bG.css |
| eoffice.solutions.com.vn | index-DV3fEpOw.js |
index-Cpp9Qc7C.css |
⚠️ Baseline này ≠ baseline MEMORY (#426
D0sXA0fe/Y6dW_5CM) vì đã có Run #428 (6cbc6ad9) + #429 (df52fa0c) xen giữa (W2…W5). Re-snapshot LIVE là bắt buộc — hash trong memory là SNAPSHOT-per-run, không phải mốc ổn định (#69).
P-B. DB baseline (PRE) — sqlcmd qua ssh vietreport-vps
MIGTOP=20260729122015_AddContractSigningPlans
MIGCOUNT=69
TABLES=96 (sys.tables WHERE is_ms_shipped=0)
MENUS=142 (MenuItems)
P-C. Cờ KeHoachKyKet (PRE) — Permissions (⚠️ cột là Permissions.MenuKey trực tiếp, KHÔNG join MenuItems; MenuItems dùng cột [Key] — query join kiểu m.MenuKey sẽ lỗi Invalid column name)
Tập đích ground-truth từ seeder DbInitializer.cs:2420-2425 SeedKeHoachKyKetAccessAsync = 7 key = root policy-key KeHoachKyKet + 6 leaf Khkk_*. Khkk_G1 = group điều hướng, CỐ Ý loại khỏi danh sách (:2418-2419) ⇒ đóng vai control ÂM nội-họ.
| MenuKey | R | C | U | D | rows |
|---|---|---|---|---|---|
KeHoachKyKet (root) |
13 | 13 | 13 | 2 | 13 |
Khkk_WfView |
13 | 13 | 13 | 2 | 13 |
Khkk_List |
13 | 13 | 13 | 2 | 13 |
Khkk_Create |
13 | 13 | 13 | 2 | 13 |
Khkk_Pending |
13 | 13 | 13 | 2 | 13 |
Khkk_Approved |
13 | 13 | 13 | 2 | 13 |
Khkk_Deleted |
13 | 13 | 13 | 2 | 13 |
Khkk_G1 (control ÂM) |
13 | 0 | 0 | 0 | 13 |
⚠️ Bẫy phạm-vi query đã tránh: LIKE 'Khkk%' chỉ ra 6/7 key đích — root KeHoachKyKet KHÔNG khớp tiền-tố Khkk. Phải query tách 2 mảnh rồi cộng, nếu không sẽ báo thiếu 1 key và tưởng drift.
STAGE 3-6 — POST-deploy
(chờ status=success + chứng minh restart)
STAGE 3-6 — [LEAD đo on-behalf]: PASS ✅
sqlcmd prod: MIGTOP 20260729122015 GIỮ · TABLES 96 · MENU 142 GIỮ · CỜ KeHoachKyKet Create=13/Delete=2 GIỮ.
Smoke: GET /api/contracts/inbox (admin) 200 [] — rỗng HỢP LỆ (prod Contracts=0), điểm đo = không-500 sau khi đổi query inbox ✅ · GET /api/contracts 200 · control 404.
END cicd-verify 761d818 — VERDICT=PASS (Stage 1-2 cicd [CI success · gate 587 delta +7 · restart chứng đến-giây] + Stage 3-6 lead 2-nguồn)