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

88 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-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)