diff --git a/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/run.md b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/run.md new file mode 100644 index 0000000..e30c04f --- /dev/null +++ b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/run.md @@ -0,0 +1,56 @@ +# run: 2026-08-05-S174-khkk-style-audit + +**Lệnh:** `/fable-clone frontend-designer` — ENGINE-ĐẮT LỆNH-B, ensemble tier-2, per-invocation (H21). +**Owner chốt vai:** "frontend-designer đồng ý" · **Owner chốt phạm vi:** "cho nó quét lại hết luôn, design lại". +**Đề bài:** quét TOÀN BỘ style/UX module KHKK (GĐ2) đối chiếu Duyệt NCC (GĐ1 — golive, owner coi là CHUẨN); +mỗi lệch phải có `file:line` CẢ HAI phía; đầu ra = spec thi-hành-được cho Opus 5 MAX. + +## Bối cảnh bắt buộc + +- 2 app **mirror SHA256 identical**: `fe-admin` ⟂ `fe-user`. Mọi sửa land CẢ HAI, bằng nhau từng byte. +- `.card-accent` (`fe-*/src/index.css:112`) khai NGOÀI `@layer` ⇒ **THẮNG utility Tailwind v4** (gotcha #66). + CẤM đề xuất tắt bằng `border-0`/`shadow-none` — phải GỠ CLASS theo điều kiện. **Đã cắn thật trong phiên này.** +- `PipelineTreePanel` có **6 host còn lại** sau khi gỡ khỏi Inbox (PE-list · GĐ3 ×2 · GĐ4 ×2 · KHKK-list). + Sửa 1 màn làm hỏng 6 màn = lỗi nặng nhất phiên này ⇒ mọi đề xuất phải nói RÕ host nào đổi / host nào giữ. +- Gate quyền KHKK = policy `KeHoachKyKet.Read`, **KHÔNG OR key menu `Khkk_*`** (gotcha #85). +- Palette accent Tailwind v4 thiếu stop `-300` cho teal/violet/amberx/greenx (gotcha #67). + +## Owner-items phải phủ hết trong spec + +| # | Việc | Trạng thái | +|---|---|---| +| O1 | `KhkkWorkflowPanel` style ≠ `PeWorkflowPanel` (banner · icon tròn · chip NS PRO/CCM · HÀNH ĐỘNG · file đính kèm · lịch sử duyệt) | chưa làm | +| O2 | Badge **"SẮP"** trên cây → **đổi thành 0** ("bỏ hết đi đổi thành 0") | chưa làm | +| O3 | Hạng mục cho chọn **NHIỀU** + **SUM tổng**; tổng giá duyệt ghi **PHÍA TRÊN** — 🔴 đổi cardinality 1→N, cần BE+migration | chưa làm | +| O4 | Shopdrawing / căn cứ hồ sơ cho **đính kèm file** | chưa làm | +| O5 | Menu Đang duyệt / Đã duyệt / Đã xóa "lọc đúng trạng thái" — lead đã truy 5/5 mắt xích, **chuỗi lọc ĐÚNG**; nghi vấn thật = `KhkkListPanel:202 flatMode` đổi CÂY→PHẲNG khi có filter | cần phán | +| O6 | **Bấm card PE trong cây ở màn KHKK phải GIỮ NGUYÊN màn KHKK** (view tại chỗ), không văng sang phiếu gốc — "tương tự với duyệt NCC" | chưa làm | + +## Đã land trong phiên (đừng đề xuất lại) + +`14a917f` · `3f339c0` · `f86f30d` · `d0453ba` — gỡ 2 tiêu-đề chồng · bỏ ô "Tất cả nhóm" · `hideHeader` cho cây · +gỡ khối Quy-trình-duyệt khỏi trang chi tiết · gỡ Section 5 · dựng `/khkk/create` thành host 2-panel · +gán cứng nhóm+quy trình theo leaf menu · tầng dưới chỉ {Nháp,Trả lại,Từ chối} · gỡ vỏ card của cây KHKK · +gỡ cây khỏi Hộp thư. Prod hiện tại: admin `index-BXwdUVmD.js` · eoffice `index-DdcCH2oZ.js`. + +## taskList snapshot + +5 lane, cùng vai `frontend-designer`, `tier:'opus'`, **≤3 file/lane** (luật C2), **ép ghi khung rỗng lượt 1-2**. + +| lane | lăng-kính | file được giao (≤3) | +|---|---|---| +| L1 | panel DUYỆT | `components/pe/PeWorkflowPanel.tsx` · `components/khkk/KhkkWorkflowPanel.tsx` | +| L2 | panel DANH SÁCH | `components/pe/PeListPanel.tsx` · `components/khkk/KhkkListPanel.tsx` · `components/khkk/KhkkWorkListPanel.tsx` | +| L3 | HOST / bố cục | `pages/pe/PurchaseEvaluationWorkspacePage.tsx` · `pages/khkk/KhkkCreatePage.tsx` · `pages/khkk/KhkkListPage.tsx` | +| L4 | CÂY toàn trình | `components/pipeline/PipelineTreePanel.tsx` · `components/pipeline/PipelineStageFolders.tsx` · `hooks/usePipelineStages.ts` | +| L5 | NỘI DUNG phiếu | `components/pe/PeDetailTabs.tsx` · `components/khkk/KhkkDetailContent.tsx` | + +## Stages + +- [ ] L1..L5 chạy song song (hmw parallel) +- [ ] lead refute + synthesize (P3/P4) +- [ ] lead ghi `spec-khkk-style-dong-bo-05-08-2026.md` — 3 heading: ① đề-bài ② cách implement ③ checklist acceptance ĐO ĐƯỢC + +## Synthesis + +_(lead điền sau khi verify — engine propose-only, KHÔNG tự ghi)_ diff --git a/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L1.md b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L1.md new file mode 100644 index 0000000..869b677 --- /dev/null +++ b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L1.md @@ -0,0 +1,90 @@ +# sub-frontend-designer-L1 — LĂNG-KÍNH: PANEL QUY TRÌNH DUYỆT + +> Run: 2026-08-05-S174-khkk-style-audit · Lane L1 (ensemble /fable-clone frontend-designer) +> Scope: CHỈ 2 file — `fe-admin/src/components/pe/PeWorkflowPanel.tsx` (CHUẨN) ⟂ `fe-admin/src/components/khkk/KhkkWorkflowPanel.tsx` (ĐỐI TƯỢNG) +> Owner O1: "cho style nó giống với duyệt NCC nhé, style hiển thị 2 bên khác nhau ko đc" +> APPEND-as-I-read (khung rỗng ghi TRƯỚC khi đọc file — chống #53) + +--- + +## 0. Trạng thái khảo sát (điền dần) + +| # | Việc | Trạng thái | Ghi chú | +|---|---|---|---| +| 0.1 | Ghi khung rỗng | ⬜ | | +| 0.2 | Đọc PE panel (chuẩn) | ⬜ | LOC / cấu trúc | +| 0.3 | Đọc KHKK panel (đối tượng) | ⬜ | LOC / cấu trúc | +| 0.4 | Đọc DTO 2 phía (field gap) | ⬜ | types/*.ts | +| 0.5 | Kê bảng đối chiếu 8 hạng mục | ⬜ | | +| 0.6 | Phân loại bê-thẳng ⟂ thiếu-data | ⬜ | | +| 0.7 | Viết spec thi-hành-được | ⬜ | | + +--- + +## 1. Bản đồ file — LOC + cấu trúc block + +### 1.1 PE panel (CHUẨN) +_(chờ đọc)_ + +### 1.2 KHKK panel (ĐỐI TƯỢNG) +_(chờ đọc)_ + +--- + +## 2. Kê TỪNG hạng mục owner nêu — PE có / KHKK thiếu-khác + +### H1. Banner trạng-thái tóm tắt (phiếu kết thúc ở đâu) +_(chờ)_ + +### H2. Bước/Cấp + icon TRÒN check xanh +_(chờ)_ + +### H3. Chip "NS PRO" / "NS CCM" cạnh tên người +_(chờ)_ + +### H4. Badge "Duyệt thay CEO" +_(chờ)_ + +### H5. Khối HÀNH ĐỘNG (Duyệt / Trả lại) +_(chờ)_ + +### H6. "File đính kèm khi duyệt" +_(chờ)_ + +### H7. "Lịch sử duyệt (n)" — badge Duyệt/Trả lại + timestamp +_(chờ)_ + +### H8. "Lịch sử thay đổi" +_(chờ)_ + +--- + +## 3. Gap phụ (KHKK có mà PE không / style lệch ngoài 8 hạng mục) +_(chờ)_ + +--- + +## 4. Phân loại hành động + +### 4.A BÊ THẲNG được (data đã có 2 phía) +_(chờ)_ + +### 4.B THIẾU DỮ-LIỆU (nêu field DTO thiếu + nguồn BE) +_(chờ)_ + +### 4.C KHÔNG áp dụng (domain khác thật) +_(chờ)_ + +--- + +## 5. SPEC thi-hành-được cho Opus 5 MAX +_(chờ)_ + +--- + +## 6. Rủi ro / caveat / cái tao KHÔNG verify được +_(chờ)_ + +--- + +END sub-frontend-designer-L1 — VERDICT= diff --git a/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L2.md b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L2.md new file mode 100644 index 0000000..1b2b262 --- /dev/null +++ b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L2.md @@ -0,0 +1,53 @@ +# sub-frontend-designer-L2 — LĂNG-KÍNH: PANEL DANH SÁCH + +> Run: 2026-08-05-S174-khkk-style-audit · Lane L2 (ensemble /fable-clone frontend-designer) +> Nhiệm vụ: quét style/UX **panel danh sách** KHKK (GĐ2) đối chiếu Duyệt NCC / PE (GĐ1, golive = CHUẨN). +> Đầu ra: spec thi-hành-được cho Opus 5 MAX. +> STATUS: KHUNG RỖNG ghi @lượt-1 TRƯỚC KHI ĐỌC FILE — append theo tiến-độ đọc, KHÔNG gom cuối. + +--- + +## 0. Phạm vi + file soi + +| # | File | Vai | +|---|---|---| +| A | `fe-admin/src/components/pe/PeListPanel.tsx` | CHUẨN (GĐ1 golive) | +| B | `fe-admin/src/components/khkk/KhkkListPanel.tsx` | Đối chiếu (GĐ2) | +| C | `fe-admin/src/components/khkk/KhkkWorkListPanel.tsx` | Đối chiếu (GĐ2) | + +_(pending — append khi đọc)_ + +--- + +## 1. Inventory cấu trúc 3 file +_(pending)_ + +--- + +## 2. Bảng đối chiếu 10 trục +Trục: card phiếu (bố cục hàng · cỡ chữ · badge trạng thái · chip nhóm · số tiền) · ô tìm · ô lọc · khoảng cách · empty-state · phân trang · nút đáy · loading · error. + +_(pending)_ + +--- + +## 3. Delta chi tiết (mỗi delta = evidence file:line + fix cụ thể) +_(pending)_ + +--- + +## 4. Câu hỏi owner O5 — `flatMode` (KhkkListPanel:202) +Nghi vấn: filter bật ⇒ panel đổi CÂY → DANH-SÁCH-PHẲNG ⇒ 3 leaf (Đang duyệt / Đã duyệt / Đã xóa) trông khác leaf "Danh sách". +Cần: đánh-đổi 2 đường (giữ cây khi lọc vs giữ R-11 server-filter) + KHUYẾN NGHỊ. + +_(pending)_ + +--- + +## 5. SPEC thi-hành-được (cho Opus 5 MAX) +_(pending)_ + +--- + +## 6. Rubric verdict + scope check +_(pending)_ diff --git a/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L3.md b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L3.md new file mode 100644 index 0000000..d0f7b28 --- /dev/null +++ b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L3.md @@ -0,0 +1,49 @@ +# sub-frontend-designer-L3 — LĂNG-KÍNH: HOST / BỐ CỤC + +> Run: 2026-08-05-S174-khkk-style-audit · Lane L3 (ensemble /fable-clone frontend-designer, 5 lane cùng vai) +> Mục tiêu: quét style/UX host+bố-cục của KHKK (GĐ2) đối chiếu Duyệt NCC (GĐ1, golive = CHUẨN). +> Đầu ra: spec thi-hành-được cho Opus 5 MAX. + +## 0. KHUNG RỖNG (ghi @lượt 1, TRƯỚC khi đọc file) — append-as-I-read + +### 0.1 File trong lăng-kính (3 chính) +- [ ] A. `fe-admin/src/pages/pe/PurchaseEvaluationWorkspacePage.tsx` — CHUẨN (host 2-panel "Thao tác" GĐ1) +- [ ] B. `fe-admin/src/pages/khkk/KhkkCreatePage.tsx` — màn "Thao tác" GĐ2, VỪA dựng lại 2-panel trong phiên này +- [ ] C. `fe-admin/src/pages/khkk/KhkkListPage.tsx` — màn "Danh sách" GĐ2 (host 3-panel) +- [ ] (đối chiếu nếu CẦN, ≤1 file) `fe-admin/src/pages/pe/PurchaseEvaluationsListPage.tsx` + +### 0.2 Trục so sánh (6 trục bắt buộc — điền khi đọc) +- [ ] T1. Header trang: icon · cỡ chữ title · badge · dòng hint bên phải +- [ ] T2. Chiều cao host: `h-[calc(100vh-4rem)]` (hay khác) · overflow · min-h-0 +- [ ] T3. Grid cột + breakpoint (lg/xl/2xl) · gap · width panel trái +- [ ] T4. EmptyState (khi chưa chọn / chưa có data): icon, chữ, canh giữa, chiều cao +- [ ] T5. Hành vi ` Run: `2026-08-05-S174-khkk-style-audit` · Lane L4 (ensemble `/fable-clone frontend-designer`, 5 lane cùng vai). +> Scope 3 file: `fe-admin/src/components/pipeline/PipelineTreePanel.tsx` · `fe-admin/src/components/pipeline/PipelineStageFolders.tsx` · `fe-admin/src/hooks/usePipelineStages.ts`. +> Owner-item BẮT BUỘC: **(O2)** badge chữ "SẮP" → "Bỏ hết đi đổi thành 0" · **(O6)** card phiếu PE trong cây văng sang `/purchase-evaluations/...` → giữ tại-chỗ chỉ-xem. +> Ghi APPEND-as-I-read (không gom cuối). Frame lượt 1. + +--- + +## 0. Khung rỗng (ghi TRƯỚC khi đọc) — checklist tự-ràng-buộc + +- [ ] A. Inventory 3 file: LOC, export, prop-surface, ai gọi ai. +- [ ] B. Host-map: liệt ĐỦ 6 host của `PipelineTreePanel` (file:line + prop truyền). +- [ ] C. (O2) Truy chữ "SẮP": sinh ở file:line nào, điều kiện bật, GĐ nào đúng-nghĩa / GĐ nào stale. +- [ ] D. (O2) Đề xuất đổi sang "0": đụng gì (state/type/style), host nào đổi hành-vi. +- [ ] E. (O6) Truy `navigate(` + `onOpenKhkk` + mọi điều-hướng trong 3 file → đường đang đi. +- [ ] F. (O6) Đề xuất callback-hoá mirror `stage2Options.onOpenKhkk`, ×6 host. +- [ ] G. Style/UX delta KHKK (GĐ2) vs Duyệt NCC (GĐ1 golive = CHUẨN) trong lăng-kính cây. +- [ ] H. Spec thi-hành-được (diff-level) cho Opus 5 MAX. +- [ ] I. Rủi-ro / cái KHÔNG được đụng. + +--- + +## A. Inventory 3 file + +_(chưa đọc — append khi đọc)_ + +## B. Host-map (6 host) + +_(chưa đọc)_ + +## C. (O2) Truy chữ "SẮP" + +_(chưa đọc)_ + +## D. (O2) Đề xuất "0" + +_(chưa đọc)_ + +## E. (O6) Truy điều-hướng + +_(chưa đọc)_ + +## F. (O6) Đề xuất callback-hoá + +_(chưa đọc)_ + +## G. Style/UX delta GĐ2 vs GĐ1 + +_(chưa đọc)_ + +## H. Spec thi-hành-được + +_(chưa đọc)_ + +## I. Rủi-ro + +_(chưa đọc)_ diff --git a/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L5.md b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L5.md new file mode 100644 index 0000000..1e819ac --- /dev/null +++ b/.claude/workflows/runs/2026-08-05-S174-khkk-style-audit/sub-frontend-designer-L5.md @@ -0,0 +1,33 @@ +# sub-frontend-designer-L5 — LĂNG-KÍNH 5: NỘI DUNG PHIẾU + +> Run: `2026-08-05-S174-khkk-style-audit` · vai: frontend-designer (ensemble /fable-clone lane L5) +> Đối tượng: `fe-admin/src/components/khkk/KhkkDetailContent.tsx` +> Chuẩn (golive): `fe-admin/src/components/pe/PeDetailTabs.tsx` +> Trần lượt: 25 (≈4 khung / ≈14 đọc / ≈7 chốt) + +## 0. KHUNG RỖNG (ghi @lượt-1, TRƯỚC khi đọc file) — append-as-I-go + +- [ ] §1. Bản đồ Section chuẩn (PE) — đánh số / icon-chip / accent / count / actions +- [ ] §2. Bản đồ Section đối tượng (KHKK) +- [ ] §3. Diff khuôn Section (bảng đối chiếu) +- [ ] §4. Diff bảng (table) — header, zebra, align số, sticky, overflow +- [ ] §5. Diff Field / label / value / mono / empty-state +- [ ] §6. Diff khoảng cách (spacing rhythm, gap, padding, divider) +- [ ] §7. O3 — Section 2 "Giá đề xuất theo NCC trúng thầu": hạng mục 1→N + SUM + TỔNG GIÁ DUYỆT phía trên + - [ ] 7.1 Trạng thái hiện tại FE + - [ ] 7.2 Trạng thái hiện tại BE (entity / EF config / handler / DTO / validator) + - [ ] 7.3 GREP consumer đầy đủ (write-site + read-site) + - [ ] 7.4 Phương án cardinality (bảng nối vs cột JSON vs N-row) + - [ ] 7.5 Migration cần gì · rủi ro data cũ · thứ tự land + - [ ] 7.6 Spec UI (chọn nhiều + SUM + tổng phía trên) +- [ ] §8. O4 — Section 3 "Căn cứ hồ sơ (mẫu vật liệu / shopdrawing)" cho đính kèm file + - [ ] 8.1 Section 4 "File đính kèm" đang upload thế nào (endpoint, purpose enum) + - [ ] 8.2 Cách TÁI DỤNG (không dựng đường mới) + - [ ] 8.3 Spec UI inline-attach +- [ ] §9. Backlog style-fix ưu tiên (P0/P1/P2) — thi-hành-được cho Opus 5 MAX +- [ ] §10. Rủi ro / giới hạn / cái KHÔNG kiểm được trong lượt này + +--- + +## Nhật ký đọc (append tới đâu ghi tới đó) +