# 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 |
| O7 | **Nút EDIT trên card KHKK** ở tầng dưới panel Thao tác — mirror `PeListPanel` `onEditClick` (bút chì hiện khi hover, bấm = mở thẳng chế-độ sửa) | chưa làm |
| O8 | **Tầng TRÊN panel Thao tác cho ra CÂY THƯ MỤC Dự án › Hạng mục** — "cho cây thư mục dự án hạng mục ra luôn nhé". Hiện mới gom-theo-dự-án 1 cấp (`KhkkWorkListPanel` `byProject`), owner muốn cây 2 cấp như cây toàn trình | chưa làm |

> 🔴 **O7/O8 đến SAU khi 5 lane đã phóng** (`wf_016b1bed-b85`) ⇒ lane KHÔNG thấy 2 mục này.
> Lead PHẢI tự phủ chúng ở bước synthesis; đừng đọc "lane không nhắc" thành "không có việc".

## Đã 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)_
