Files
solution-erp/.claude/workflows/runs/2026-07-29-S161-khkk-w6-duongong/cicd-verify-761d818.md
2026-07-29 23:39:33 +07:00

4.5 KiB
Raw Blame History

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 trong paths-ignoreCI 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): 761d8183Run #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 761d818VERDICT=PASS (Stage 1-2 cicd [CI success · gate 587 delta +7 · restart chứng đến-giây] + Stage 3-6 lead 2-nguồn)