From d0453bad7b9cb01289b00bb4370a540fe0df69e2 Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Wed, 5 Aug 2026 15:53:25 +0700 Subject: [PATCH] =?UTF-8?q?[CLAUDE]=20Contract:=20UAT=20S174=20vong-4=20?= =?UTF-8?q?=E2=80=94=20Thao=20tac=20chi=203=20trang-thai=20mo=20+=20go=20v?= =?UTF-8?q?ien=20card=20cua=20cay=20KHKK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Tang duoi man Thao tac: DANH-SACH-TRANG 3 trang-thai — anh: "cho thao tac chi hien tra lai va nhap, tu choi thoi nhe" => {DangSoanThao, TraLai, TuChoi}. `ChoDuyet` CUNG bi loai (khac vong-3 chi bo `DaDuyet`): phieu dang trinh duyet thi nguoi soan khong thao tac gi duoc nua. 🔴 Doi tu LOAI-TRU sang DANH-SACH-TRANG la CO CHU DICH: loai-tru (`!== DaDuyet`) se tu dong NHAN moi phase them ve sau; danh-sach-trang thi phase moi phai khai TUONG MINH moi hien. O man chi nen chua viec CON SUA DUOC, im lang nhan them la hong => chon ve chat. Tieu-de doi thanh "KHKK · nhap / tra lai / tu choi" — noi DUNG tap dang hien, de nguoi dung biet ngay vi sao phieu vua gui duyet "bien mat". 2. Cay toan trinh trong man Danh sach KHKK: GO vo card — anh: "style cho no giong nhau dong bo nhe, style ben KHKK co cai vien ben ngoai". 🔴 GOC RE + BAI HOC: truoc do da truyen `className="border-0 shadow-none"` voi Y DINH tat vo card, nhung `.card-accent` khai o `index.css:112` NAM NGOAI `@layer` nen THANG utility cua Tailwind v4 => lenh tat bi VO HIEU IM LANG. Day dung la gotcha #66 cua chinh repo (rule tho ngoai @layer thang utility). Fix = GO CLASS theo dieu kien (`!hideHeader && 'card-accent lg:sticky lg:top-4'`), KHONG de bang utility. `hideHeader` nay mang dung nghia "dang NHUNG trong panel khac" => bo ca vo card lan sticky cho lien mach voi host, y nhu cay ben Duyet NCC. 6 host con lai khong truyen => nguyen ven. Verify: build 2 app PASS; mirror SHA256 3/3 cap KHOP; grep xac nhan `card-accent` nay nam sau dieu kien `!hideHeader`. Co-Authored-By: Claude Opus 5 --- .../src/components/khkk/KhkkListPanel.tsx | 1 - .../src/components/khkk/KhkkWorkListPanel.tsx | 25 ++++++++++++------- .../components/pipeline/PipelineTreePanel.tsx | 12 ++++++++- fe-user/src/components/khkk/KhkkListPanel.tsx | 1 - .../src/components/khkk/KhkkWorkListPanel.tsx | 25 ++++++++++++------- .../components/pipeline/PipelineTreePanel.tsx | 12 ++++++++- 6 files changed, 54 insertions(+), 22 deletions(-) diff --git a/fe-admin/src/components/khkk/KhkkListPanel.tsx b/fe-admin/src/components/khkk/KhkkListPanel.tsx index a01cdb7..7088dbd 100644 --- a/fe-admin/src/components/khkk/KhkkListPanel.tsx +++ b/fe-admin/src/components/khkk/KhkkListPanel.tsx @@ -291,7 +291,6 @@ export function KhkkListPanel({ {!flatMode && ( k.phase !== KhkkPhase.DaDuyet) + // [S174 owner] "chỗ thao tác chỉ hiển trả lại và nháp, từ chối thôi nhé" ⇒ DANH-SÁCH-TRẮNG + // 3 trạng thái, KHÔNG phải loại-trừ. 🔴 Đổi từ loại-trừ sang danh-sách-trắng là CÓ CHỦ ĐÍCH: + // loại-trừ (`!== DaDuyet`) sẽ tự động NHẬN mọi phase mới thêm về sau; danh-sách-trắng thì + // phase mới phải được khai TƯỜNG MINH mới hiện. Ở màn Thao tác — nơi chỉ nên có việc CÒN + // SỬA ĐƯỢC — im lặng nhận thêm là hỏng, nên chọn vế chặt. + // 🔸 `ChoDuyet` CŨNG bị loại (khác lượt trước chỉ bỏ `DaDuyet`): phiếu đang trình duyệt thì + // người soạn không thao tác gì được nữa. + // 🔴 KHAI GIỚI-HẠN (lọc ở FE): endpoint chỉ nhận `phase` ĐƠN, không nhận nhiều ⇒ (1) KHÔNG + // dùng `plans.data.total` làm số hiển thị (nó đếm MỌI phase) — đếm từ mảng đã lọc; + // (2) cửa-sổ 30 phiếu mới nhất có thể toàn phiếu đã duyệt ⇒ tầng dưới rỗng dù còn nháp + // cũ hơn. Chấp nhận ở UAT; muốn chuẩn thì BE nhận `phases[]` rồi lọc SERVER-SIDE. + const OPEN_PHASES: number[] = [KhkkPhase.DangSoanThao, KhkkPhase.TraLai, KhkkPhase.TuChoi] + const planItems = (plans.data?.items ?? []).filter((k) => OPEN_PHASES.includes(k.phase)) return (