88 lines
4.5 KiB
Markdown
88 lines
4.5 KiB
Markdown
# 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)
|