diff --git a/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md b/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md index c520b61..2a743a3 100644 --- a/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md +++ b/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md @@ -55,3 +55,24 @@ T1b — `fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx` (sửa 4 chỗ, K - `yearGroups` KHÔNG đổi ⇒ badge count ở summary Hạng mục vẫn là số phiếu; folder GĐ1 lặp lại số đó là CỐ Ý (đọc theo hàng ngang: 1 gói có mấy phiếu / mấy KHKK / mấy HĐ). Verify: `npx tsc -b --force` trong fe-user ⇒ **TSC_EXIT=0** (build đầy đủ chạy ở MỐC 3). + +## MỐC 2 — T1c + T1d + T1e + T1f XONG + +T1c `fe-user/src/pages/khkk/KhkkListPage.tsx`: +import `PipelineTreePanel`; PageHeader giữ full-width, phần còn lại bọc lưới `lg:grid-cols-[19rem_minmax(0,1fr)] xl:[21rem_…]` với `` cột trái (folder "Kế hoạch Hợp đồng" mở sẵn); cột phải `min-w-0 space-y-5` chứa NGUYÊN KpiCard + ô tìm + bảng + phân trang. 2 sửa nhỏ chống vỡ layout: hàng KpiCard `lg:grid-cols-6` → `xl:grid-cols-6` (6 thẻ không nhồi vào cột hẹp) và `` bọc `overflow-x-auto`. Query `['khkk-list',…]`, `FILTER_TO_PHASE`, chip-lọc-không-ghi-URL: KHÔNG đụng. +T1d `fe-user/src/pages/contracts/HardCopiesPage.tsx`: cùng khuôn, `currentStage={4}` (folder "Hợp đồng cứng" mở sẵn). PageHeader + ghi chú 1-MỐC amber giữ full-width; ô tìm + bảng + `HardCopyPanel` (upload/download/ý kiến duyệt) vào cột phải; `
` bọc `overflow-x-auto`. Query `['hard-copies',…]` + `?type=` server-side + `SEALED_COPY=3`: KHÔNG đụng. + +T1e mirror fe-admin — CẢ 6 file, verify `sha256sum` SAU khi copy, KHỚP 6/6: +| file | sha256[0:16] | +|---|---| +| components/pipeline/PipelineStageFolders.tsx | 4b37bf51d5211348 | +| components/pipeline/PipelineTreePanel.tsx | 127acc85399b033c | +| hooks/usePipelineStages.ts | e762d5eb9c3a057a | +| pages/pe/PurchaseEvaluationsListPage.tsx | 1d8d8f75c7d2cc14 | +| pages/khkk/KhkkListPage.tsx | 40a650bf6964ab4b | +| pages/contracts/HardCopiesPage.tsx | d30a911e7483f96a | +`fe-admin/src/types/contracts.ts` KHÔNG đè (bản admin `ContractPhaseColor` khác — cố ý, component chỉ đọc key nên vẫn biên dịch). + +T1f build gate: +- fe-user `npm run build` → **EXIT 0**, `✓ built in 21.91s`, `dist/assets/index-CaEssrop.js 1,629.67 kB │ gzip 411.70 kB`, css 91.82 kB. +- fe-admin `npm run build` → **EXIT 0**, `✓ built in 10.15s`, `dist/assets/index-BtjKK7qJ.js 1,713.48 kB │ gzip 425.60 kB`, css 86.14 kB. +- Warning cả 2 app = PRE-EXISTING (chunk >500 kB · INEFFECTIVE_DYNAMIC_IMPORT `src/lib/realtime.ts`). 0 lỗi TS.