[CLAUDE] FE-User: YC-029 W1 — danh-tính menu 7 loại HĐ (accordion ct + view=approved + WfView slice HD-*)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -49,14 +49,34 @@ const LEVEL_PALETTE = [
|
||||
'bg-rose-100 text-rose-800 ring-rose-300',
|
||||
] as const
|
||||
|
||||
// [YC-029 W1 S190] ContractType (1..7) → MÃ quy trình duyệt HĐ của loại đó.
|
||||
// 🔴 NGUỒN CHÉP: `src/Backend/SolutionErp.Domain/Contracts/ContractApprovalWorkflowFamily.cs:33-42`
|
||||
// (nhà DUY NHẤT của họ mã ở production). Đây là BẢN SAO THỨ 3 của họ này ở FE
|
||||
// (bản 2 = `fe-admin/src/lib/contractWorkflowFamily.ts`, tự khai fe-admin-ONLY nên KHÔNG
|
||||
// import chéo app được) ⇒ chép TỪNG KÝ TỰ, chú ý token gạch-nối `HD-NT-NCC` / `HD-NT-DV`.
|
||||
// Drift-check = ô C-9 (đếm 7 mã distinct trong chính file này).
|
||||
const INT_TO_HD_CODE: Record<number, string> = {
|
||||
1: 'HD-TP', // HopDongThauPhu
|
||||
2: 'HD-GK', // HopDongGiaoKhoan
|
||||
3: 'HD-NCC', // HopDongNhaCungCap
|
||||
4: 'HD-DV', // HopDongDichVu
|
||||
5: 'HD-MB', // HopDongMuaBan
|
||||
6: 'HD-NT-NCC', // HopDongNguyenTacNCC
|
||||
7: 'HD-NT-DV', // HopDongNguyenTacDichVu
|
||||
}
|
||||
|
||||
export function WorkflowMatrixViewPage() {
|
||||
const [searchParams] = useSearchParams()
|
||||
// Trang này gắn ở 3 route (/purchase-evaluations|/contracts|/khkk + /workflow-matrix)
|
||||
// ⇒ link "xem tất cả" phải bám đường dẫn ĐANG đứng, không hardcode một cái.
|
||||
const { pathname } = useLocation()
|
||||
const rawType = Number(searchParams.get('type'))
|
||||
// [S159-đợt5] +3 = Contract (ApplicableType.Contract — HĐ dùng CHUNG 1 bộ workflow V2
|
||||
// cho mọi ContractType ⇒ 7 leaf 'Luồng duyệt' của 7 nhóm HĐ đều trỏ về matrix này).
|
||||
// [S159-đợt5] +3 = Contract (ApplicableType.Contract) — 7 leaf 'Luồng duyệt' của 7 nhóm HĐ
|
||||
// đều trỏ về matrix này vì `ApplicableType` là HẰNG của cả họ, chỉ có MỘT giá trị cho HĐ.
|
||||
// 🔴 [YC-029 W1 S190 — vá comment stale] Từ S188 mỗi loại HĐ có QUY TRÌNH RIÊNG: 7 bộ
|
||||
// per-loại `HD-TP`/`HD-GK`/`HD-NCC`/`HD-DV`/`HD-MB`/`HD-NT-NCC`/`HD-NT-DV`
|
||||
// (`ContractApprovalWorkflowFamily.cs:33-42`) ⇒ 7 leaf KHÔNG còn hiện y hệt nhau: leaf nào
|
||||
// cũng mang thêm `&ct=N` (ContractType) và trang slice đúng bộ của loại đó (nhánh `ct` bên dưới).
|
||||
// [W2 KHKK S161] +10 (ContractSigningPlan) — leaf Khkk_WfView đi alias /khkk/workflow-matrix?type=10.
|
||||
const typeInt = rawType === 1 || rawType === 2 || rawType === 3 || rawType === 10 ? rawType : 1
|
||||
|
||||
@ -93,10 +113,27 @@ export function WorkflowMatrixViewPage() {
|
||||
// `KHKK-N{n}` (`DbInitializer.cs:609`) và cũng chính `code` này là thứ BE dùng để
|
||||
// gác phiếu-pin-đúng-nhóm (`ContractSigningPlanFeatures.cs:420` regex `^KHKK-N([1-8])$`).
|
||||
// Một quy trình có thể có nhiều VERSION cùng `code` ⇒ lọc giữ đủ các version.
|
||||
// ── [YC-029 W1 S190] Lọc theo LOẠI HĐ (7 bộ quy trình per-loại từ S188) ────────────
|
||||
// Cùng bài với `group` ở trên: 7 leaf "Luồng duyệt" của 7 nhóm HĐ đều trỏ về CÙNG trang
|
||||
// này (`type=3` là ApplicableType — hằng của cả họ), chỉ khác `&ct=N`. Không lọc thì 7 leaf
|
||||
// hiện y hệt nhau — mục menu nói dối tên nó.
|
||||
// 🔴 Gate ĐỦ 3 VẾ: chỉ áp khi `typeInt === 3` (HĐ). Thiếu vế này thì `?type=1&ct=5` sẽ đem
|
||||
// mã `HD-MB` đi lọc bộ Duyệt-NCC ⇒ TRANG TRẮNG. `ct` rác/thiếu ⇒ BỎ QUA, giữ hành vi cũ.
|
||||
// Clamp bằng REGEX CHUỖI chứ không `Number()`: `Number('03')===3` lọt lưới.
|
||||
const rawCt = searchParams.get('ct')
|
||||
const hdCode =
|
||||
typeInt === 3 && rawCt !== null && /^[1-7]$/.test(rawCt) ? INT_TO_HD_CODE[Number(rawCt)] : null
|
||||
|
||||
// 🔴 LỌC CLIENT-SIDE y khuôn `group`: query đã tải TRỌN bộ quy trình của `applicableType=3`,
|
||||
// `ct` chỉ là lát cắt của đúng payload đó ⇒ KHÔNG thêm `ct` vào `queryKey` (thêm = 7 lần gọi
|
||||
// mạng cho cùng một payload + 7 ô cache trùng nội dung). Khớp bằng `code` (BE seed
|
||||
// `ContractApprovalWorkflowFamily.CodeFor`), giữ đủ mọi VERSION cùng `code`.
|
||||
const workflows =
|
||||
khkkGroup !== null
|
||||
? allWorkflows.filter(wf => wf.code === khkkGroupWorkflowCode(khkkGroup))
|
||||
: allWorkflows
|
||||
: hdCode !== null
|
||||
? allWorkflows.filter(wf => wf.code === hdCode)
|
||||
: allWorkflows
|
||||
|
||||
return (
|
||||
// [Plan AA hotfix S24 t1] Bro UAT request: dịch hết content sang trái.
|
||||
|
||||
Reference in New Issue
Block a user