Unreleased · Web Dashboard
Các thay đổi dưới đây chưa được gán phiên bản hoặc ngày phát hành.
Added
- Mẫu quy trình Job cho Hire: Thêm workflow BTL Promoter và lắp đặt camera, lưu Job hiện có thành mẫu workspace, tìm kiếm theo nội dung/category/tag, gắn metadata cho mẫu hệ thống và điền sẵn metadata khi tạo Job mới. Form yêu cầu kiểm tra lịch, chi phí và tài nguyên của workspace trước khi lưu.
Changed
-
JobFormModal (Tạo việc từ mẫu): Loại bỏ checkbox xác nhận (“Tôi đã kiểm tra lịch làm việc, số nhân sự và chi phí cho job này”) cùng ràng buộc validation tương ứng ở bước Định phí & Lịch trình khi tạo công việc từ mẫu.
-
Xác nhận đã thanh toán bảng lương nhận path biên lai
mediatương đối và kiểm tra biên lai thuộc đúng phiếu lương; lỗi chuyển trạng thái trả về thông báo phù hợp. -
Form bán hàng kiểm tra request và response
verify-contact-otpbằng contract chung với Worker Zalo, gồm trạng thái xác thực và các alias contact ID. -
Form bán hàng kiểm tra request và response
send-contact-otpbằng contract chung với Worker Zalo, gồm trạng thái và các alias whitelist OTP. -
Form bán hàng kiểm tra request và response
apply-promotionbằng contract chung với Worker Zalo; tiếp tục nhận hai dạng response cũ trước khi hiển thị khuyến mãi. -
Danh sách, chi tiết và lịch sử đơn kiểm tra join khách hàng bốn cột và join sản phẩm năm cột bằng contract chung với Worker Zalo; tra cứu contact trực tiếp cũng kiểm tra dữ liệu trước khi ánh xạ.
-
Chi tiết và lịch sử đơn hàng kiểm tra đủ bảy cột
sale_itemstheo contract chung với Worker Zalo, giữ dữ liệu sản phẩm đã join để hiển thị. -
Danh sách, chi tiết và lịch sử đơn hàng kiểm tra đầy đủ 16 cột
salestheo contract chung với Worker Zalo trước khi ánh xạ các quan hệ cho Dashboard. -
Cấu hình bán hàng JSONB được kiểm tra khi đọc, lưu và áp dụng theo contract chung với Worker Zalo; các khóa mở rộng và whitelist cũ vẫn được giữ.
-
Chỉ định worker trực tiếp và duyệt ứng tuyển kiểm tra payload ghi
job_applicationscùng enum trạng thái theo contract chung với Worker Zalo. -
Danh sách và chi tiết bảng lương kiểm tra đầy đủ hàng
payrollsbằng contract chung với Worker Zalo trước khi xử lý worker và các khoản lương đã join. -
Danh bạ đọc được tài khoản ngân hàng lưu theo khóa cũ
bank_name/account_holder; tên ngân hàng vẫn hiển thị khi chưa có trong danh mục chọn hiện tại. -
Bằng chứng task bán hàng kiểm tra danh sách
salestheo ca bằng contract chung với Worker Zalo, gồm khách hàng, ảnh hóa đơn và ghi chú. -
Metadata task validator từ
system_configurationsđược kiểm tra bằng contract bốn cột dùng chung với Worker Zalo trước khi hiển thị trong Job Builder. -
Đồng bộ projection
stock_assetscủa bộ chọn sản phẩm bán hàng với Worker Zalo, gồm giá lốc và giá thùng; kiểm tra 16 cột bằng contract chung. -
Bộ lọc sản phẩm bán hàng kiểm tra projection
stock_balancesba cột bằng contract chung với Worker Zalo trước khi tính tồn khả dụng. -
Tìm kiếm địa điểm ở form, picker và thanh tìm kiếm toàn cục kiểm tra tham số và hàng
search_locationsbằng contract chung với Worker Zalo; hàng hành chính không có ID được phân biệt với địa điểm canonical. -
Tạo đơn bán hàng kiểm tra request và toàn bộ hàng
salestrả về từcreate_sale_with_validationbằng contract chung với Worker Zalo; SQL tự xác định người tạo từ phiên đăng nhập. -
Cấu hình bán hàng kiểm tra tham số và kết quả
resolve_sale_stock_contextbằng contract chung với Worker Zalo trước khi chọn kho và kiểm tra tồn. -
Tìm kiếm Job toàn cục kiểm tra tham số và hàng
search_jobsbằng contract chung với Worker Zalo; lời gọi Supabase được chuyển xuống datasource. -
Kiểm tra contract request, response và dữ liệu đánh giá ca (
submit_execution_review,execution_reviews) cùng Worker Zalo. -
Đồng bộ contract RPC thông báo, cài đặt và theo dõi người dùng với Zalo; kiểm tra cả phần bao danh sách, số lượng, payload JSONB và kết quả thao tác.
-
Kiểm tra payload Contact, Membership và Invitation tại Supabase datasource bằng contract chia sẻ; mọi luồng nhận lời mời kiểm tra kết quả RPC là membership UUID.
-
Chuẩn Hóa Hệ Thống Typography Đẳng Cấp Quốc Tế (Inter + JetBrains Mono) (
layout.tsx,index.css,brand-vision.md):- Đồng Nhất Toàn Bộ Giao Diện Bằng Inter: Thay thế
Space Grotesk(tiêu đề) vàManrope(nội dung) bằng Inter, mang lại sự liền mạch và tinh tế chuẩn mực B2B SaaS (Stripe, Linear, GitHub, Vercel). - Khắc Phục Triệt Để Lỗi Dấu Tiếng Việt: Loại bỏ hoàn toàn hiện tượng dính dấu mũ
ấ, ầ, ẩ, ặcủa font cũ nhờ khả năng hỗ trợ native diacritics hoàn hảo của Inter. - Tối Ưu Hóa Tải Font với
next/font/google: Tự động self-host tại build time, triệt tiêu 100% hiện tượng giật nhảy layout (CLS = 0) và không phụ thuộc vào font cục bộ máy người dùng. - Dữ Liệu & Số Liệu Chính Xác: Duy trì
JetBrains Monokết hợptabular-numscho số tiền, mã ca và tọa độ GPS.
- Đồng Nhất Toàn Bộ Giao Diện Bằng Inter: Thay thế
-
Khử Màu Cyan Dạ Quang Trong Blue Theme & Chuẩn Hóa 3 Schemes Màu (
layout.tsx,index.css,palettes.ts,ThemeContext.tsx,ThemeCustomizerDrawer.tsx):- Thay thế Cyan Dạ Quang bằng Royal Sapphire (
#2563EB): Loại bỏ hoàn toàn token neon cyan (#11C7E8/hsl(190 86% 49%)) trong Blue Theme vốn gây chói mắt và vi phạm độ tương phản (chỉ 2.22:1). Nâng cấp--accentcho hover/focus các nút bấm và menu dropdown sang nền xanh băng mát dịu (#EBF3FF) đạt chuẩn WCAG AAA (7.5:1). - Cung Cấp 3 Schemes Chủ Lực Mới:
blue(GIGEE Signal Sapphire - Mặc định): Chuẩn mực doanh nghiệp uy quyền (#1265F4+#2563EB).indigo(GIGEE Signal Indigo): Phong cách công nghệ sâu, AI & FinTech (#4F46E5+#7C3AED).sky(GIGEE Signal Sky): Xanh da trời Cerulean thanh thoát (#0284C7+#3B82F6) phục vụ giám sát thực địa.
- Đồng bộ hóa
layout.tsx: Chuyển fallback củathemeBootScriptsang'blue'thay vì'indigo', giải quyết triệt để hiện tượng lệch state giữa server render và client.
- Thay thế Cyan Dạ Quang bằng Royal Sapphire (
-
Web Dashboard (Navigation & Workspace Management): Tái cấu trúc menu điều hướng và phân quyền khởi tạo Workspace:
- Dời menu
Workspace(/workspaces) vào nhómSUPER ADMINtrong thanh điều hướng sidebar và chỉ hiển thị cho Super Admin. - Phân quyền nút “Thêm Workspace”: cho phép tài khoản Admin/Super Admin khởi tạo Workspace, đồng thời vô hiệu hóa nút đối với các tài khoản không có quyền Admin (
!isAdmin). - Dời menu
Configurationsvề nhómWORKSPACE, đổi tên hiển thị thànhCấu hình. - Loại bỏ hoàn toàn nhóm menu
ADMIN.
- Dời menu
-
Hỗ Trợ Hirer Từ Chối / Duyệt Nhiều Nhiệm Vụ Liên Tiếp Khi Ca Làm Việc Ở Trạng Thái Cần Bổ Sung (
apps/hire_workspace/src/features/execution):- Khắc phục lỗi ẩn mất các nút “Duyệt” / “Từ chối” của những nhiệm vụ còn lại sau khi Hirer từ chối nhiệm vụ đầu tiên khiến phiên làm việc chuyển trạng thái sang
needs_revision. - Mở rộng điều kiện duyệt
canReviewtại ExecutionDetailPage.tsx cho phép tiếp tục duyệt/từ chối từng taskpendingkhi phiên ở cả 2 trạng tháisubmittedhoặcneeds_revision. - Cập nhật các nút tác vụ tổng thể ở Header (
Bác bỏ phiên,Phê duyệt Nghiệm thu) hiển thị liên tục khi phiên ở trạng tháisubmittedhoặcneeds_revision. - Tinh chỉnh giao diện Modal từ chối với nút “Lưu & Gửi Worker” và hướng dẫn chi tiết lý do gửi phản hồi đến Worker.
- Khắc phục lỗi ẩn mất các nút “Duyệt” / “Từ chối” của những nhiệm vụ còn lại sau khi Hirer từ chối nhiệm vụ đầu tiên khiến phiên làm việc chuyển trạng thái sang
-
Web Dashboard (Payroll): Fixed
Invalid payroll mutationerror inApprovedJobsPayrollTabwhen saving draft payroll batch by aligning client payload structure with backend Zod schema. -
Hiển Thị Chi Tiết & Lịch Sử Nộp FormX Trên Màn Hình Giám Sát Ca Thực Thi (
apps/hire_workspace/src/features/execution):- Cập nhật ExecutionDetailPage.tsx truyền cờ
taskType(formx) choExecutionProofRenderer, giúpTaskRegistrynhận diện đúngFormxModulevà render đầy đủ thông tin phản hồi FormX (FormxProofView) thay vì JSON thô. - Bổ sung cơ chế fallback trong
ExecutionRemoteDataSource.ts: Truy vấn trực tiếp từ bảngformx_submissionstheo(task_execution_step_id, task_id, task_attempt_number)nếu liên kếttask_proof_formxchưa được tạo, đảm bảo Hire/Manager luôn thấy đầy đủ dữ liệu FormX và lịch sử nộp lại tại/monitoring/executions/:id.
- Cập nhật ExecutionDetailPage.tsx truyền cờ
-
Unified Folder & Module Tab Layout (
FolderTabLayoutinapps/hire_workspace/src/shared/components/patterns/):- Component Layout Chuẩn hóa 5 tầng (
FolderTabLayout.tsx): Tạo component dùng chung định nghĩa cấu trúc tầng đồng nhất cho toàn bộ các tab tính năng:- Dòng 1 (Tab Header): Tiêu đề (
title-text-base font-semibold), mô tả phụ (subtitle-text-xs text-muted-foreground), huy hiệu đếm (count/badge) và các nút hành động chính (actions). - Dòng 2 (Metrics / Stats Summary): Vùng hiển thị thẻ chỉ số (KPIs, tổng số ca làm việc, vị trí trống, trạng thái thực địa).
- Dòng 3 (Subtabs / Navigation): Hỗ trợ thanh điều hướng tab con hoặc phân nhóm tính năng phụ (
ManagedTabs). - Dòng 4 (Toolbar / Filters & Search): Tích hợp
DataTableToolbarđồng bộ ô tìm kiếm, dropdown lọc trạng thái/vai trò/thời gian và view mode switcher. - Dòng 5 (Main Content): Vùng chứa nội dung dữ liệu bảng (
ResponsiveTable), danh sách thẻ, Gantt chart, Calendar view.
- Dòng 1 (Tab Header): Tiêu đề (
- Đồng bộ hóa 100% các Tab trong
FolderExplorerPage: Áp dụngFolderTabLayoutđồng nhất trên toàn bộ 11 tab:DashboardPage(Tổng quan hoạt động)FolderJobsTab(Quản lý công việc, chế độ xem Danh sách / Lịch / Gantt)SharedSourcingTabs/FolderSourcingTab(Tuyển dụng & Tìm kiếm ứng viên)FolderExecutionTab(Giám sát ca làm việc thực địa)PayrollLedgerPage(Bảng lương & Đối soát khiembedded)MembersTab/FolderMembersView(Danh sách thành viên)FolderLocationsTab(Địa điểm thực địa & Check-in GPS)StockListPage(Kho hàng & Quản lý vật tư khiembedded)IssueListPage(Sự cố & Vấn đề thực địa khiembedded)FormxListSubTab(Mẫu biểu khảo sát FormX)MetadataListPage(Phân loại & Thuộc tính Metadata khiembedded)
- Component Layout Chuẩn hóa 5 tầng (
-
Folder Discovery & ManagedTabs Sub-Sidebar Menu, Resizable & Collapsible (
apps/hire_workspace/src/shared/components/patterns/,apps/hire_workspace/src/features/folders/):- Chuyển đổi Bố cục linh hoạt (Layout Toggle): Bổ sung nút chuyển đổi giữa Tabs ngang (Horizontal Tabs) và Sub-sidebar menu bên trái (Vertical Sub-sidebar) trong component dùng chung
ManagedTabsvà áp dụng trực tiếp tại trang Khám phá Thư mục (FolderExplorerPage). - Kéo thả điều chỉnh độ rộng (Resizable Width): Cho phép điều chỉnh độ rộng của menu dọc mượt mà từ
180pxđến480px(mặc định:240px), hỗ trợ nhấp đúp chuột vào thanh phân cách để đặt lại độ rộng mặc định. - Thu gọn / Mở rộng (Collapse / Expand Mode): Bổ sung nút thu gọn (
PanelLeftClose) đưa sub-sidebar về dạng icon-only thu nhỏ (w-14/56px) có Tooltip hiển thị nhãn và badge khi rê chuột, cùng nút mở rộng (PanelLeftOpen) để khôi phục độ rộng; tự động lưusidebarCollapsedvàolocalStorage. - Tối giản Nhãn tiêu đề: Đổi tiêu đề menu thành
"Menu"(thay cho"Phân hệ Thư mục"). - Ghi nhớ Cấu hình (LocalStorage Persistence): Tự động lưu và khôi phục tuỳ chọn bố cục (
layout), độ rộng (sidebarWidth) và trạng thái thu gọn (sidebarCollapsed) vàolocalStoragetheostorageKey(gigee_tabs_${storageKey}). - Modal Cấu hình & Unit Tests: Tích hợp tuỳ chọn vào dialog
ManagedTabsDialogvà bổ sung test suite 8 tests (ManagedTabs.test.tsx).
- Chuyển đổi Bố cục linh hoạt (Layout Toggle): Bổ sung nút chuyển đổi giữa Tabs ngang (Horizontal Tabs) và Sub-sidebar menu bên trái (Vertical Sub-sidebar) trong component dùng chung
-
Adaptive Layout for Verification Page (
apps/hire_workspace/src/app/(public)/verify/page.tsx):- Tự động nhận diện Trạng thái Xác thực (Adaptive Auth Layout): Trang xác thực bằng chứng số (
/verify) tự động nhận diện phiên đăng nhập của người dùng (session):- Khi đã đăng nhập (Authenticated): Tự động nhúng trang xác thực vào giao diện Dashboard hoàn chỉnh (
AppShell) với thanh Sidebar điều hướng, Topbar thông tin tài khoản, chuyển đổi workspace và menu phân hệ “Xác thực bằng chứng”. - Khi chưa đăng nhập (Unauthenticated / Public): Hiển thị giao diện công khai độc lập (
PublicVerifyLayout) với thanh header thương hiệu Gigee, nút chuyển đổi giao diện sáng/tối và nút “Đăng nhập”, cho phép khách hàng hoặc kiểm định viên bên ngoài tra cứu chữ ký số và mã QR thuận tiện.
- Khi đã đăng nhập (Authenticated): Tự động nhúng trang xác thực vào giao diện Dashboard hoàn chỉnh (
- Tự động nhận diện Trạng thái Xác thực (Adaptive Auth Layout): Trang xác thực bằng chứng số (
-
Theme Active Color Synchronization across Main Sidebar & Folder Trees (
apps/hire_workspace/src/index.css,apps/hire_workspace/src/router/,apps/hire_workspace/src/features/folders/):- Cập nhật biến CSS
--sidebar-primaryvà--sidebar-primary-foregroundtrongindex.cssliên kết trực tiếp với theme primary token (hsl(var(--primary))vàhsl(var(--primary-foreground))). - Chuẩn hóa các mục menu trên Left Sidebar chính (
AppRouter.tsx) và Cây Thư mục (FolderTreeNavigation.tsx) sangbg-primary text-primary-foreground font-semibold shadow-xs, đồng bộ 100% với màu của theme (Indigo, Emerald, Amber, Rose, Violet, Slate…) và sub-sidebar menu.
- Cập nhật biến CSS
-
Clean Left Sidebar & Workspace Duplicate Menu Cleanup (
apps/hire_workspace/src/router/AppRouter.tsx,apps/hire_workspace/src/shared/components/layout/):- Tạm thời ẩn các menu trùng lặp với Folder Discovery: Ẩn các menu thuộc nhóm
WORKSPACE(Công việc, Tuyển dụng, Giám sát, Bảng lương, Kho hàng, Sự cố, Biểu mẫu, Địa điểm, Phân loại) do các tính năng này đã có đầy đủ tại các tab của Thư mục gốc / Folder Discovery. - Đổi tên menu Thành viên: Cập nhật nhãn menu
/memberstừ"Thành viên"thành"Vai trò & Quyền"trên Left Sidebar và Command Palette.
- Tạm thời ẩn các menu trùng lặp với Folder Discovery: Ẩn các menu thuộc nhóm
-
Web Dashboard Header Layout (
apps/hire_workspace/src/shared/components/layout/AppHeader.tsx):-
Bổ sung truy vấn profile người dùng qua
useUser(session.uid)và hiển thị Tên đầy đủ (Full Name) bên cạnh Avatar trên màn hình Desktop. -
Hiển thị Tên đầy đủ ở dòng đầu tiên của Menu Dropdown Profile cá nhân, chữ cái đại diện Avatar được tính toán từ Họ và Tên thay vì Email.
-
-
Web Dashboard User Form (
apps/hire_workspace/src/features/user/presentation/components/UserFormModal.tsx):- Vô hiệu hóa ô nhập Email (
disabled) khi cập nhật hồ sơ người dùng, ngăn ngừa thay đổi địa chỉ email định danh.
- Vô hiệu hóa ô nhập Email (
-
Web Dashboard Topbar Layout (
apps/hire_workspace/src/router/AppRouter.tsx):- Khắc phục lỗi tên người dùng chưa hiển thị trên thanh Topbar thực tế (
AppTopbar) của ứng dụng Next.js. - Tích hợp hook
useUser(userId)để tải dữ liệufirstName+lastNametừpublic.profiles, hiển thị tên người dùng đầy đủ bên cạnh Avatar và dòng đầu tiên trong Dropdown Menu.
- Khắc phục lỗi tên người dùng chưa hiển thị trên thanh Topbar thực tế (
-
Web Dashboard Auth Error Handling (
apps/hire_workspace/src/features/authentication/utils/authErrorMapper.ts):- Tách mã lỗi
manual_linking_disabledra khỏi điều kiện kiểm tra lỗi hủy phương thức duy nhất (single_identity). - Sửa lỗi khi người dùng bấm nút “Liên kết ngay” bị thông báo nhầm sang câu lỗi hủy phương thức duy nhất.
- Bổ sung kịch bản unit test
authErrorMapper.test.tsđảm bảo tính chính xác của việc phân loại lỗi.
- Tách mã lỗi
-
Router Auth Redirection (
apps/hire_workspace/src/router/AppRouter.tsx):- Fix issue where signing out did not redirect to
/login. EnforceProtectedRouteguard wrapper insideAppShelland eliminate condition bypass whensessionbecomesnull.
- Fix issue where signing out did not redirect to
-
Updated
apps/hire_workspacedev server port to3030inpackage.json. -
Migrated
apps/hire_workspacefrom Vite/React Router to Next.js 16 App Router with preserved feature architecture and URLs. -
Revised & upgraded
apps/hire_workspace/docs/design-system.mdto version 2.5.0, taking inspiration fromarhamkhnz/next-shadcn-admin-dashboard(Next.js 16, Tailwind CSS v4, Shadcn UI), establishing 2-tier color architecture, Dashboard Shell layouts, data-dense UI component recipes, and accessibility guidelines.
Added
-
Avatar mặc định dùng chung: Bổ sung API công khai
GET /api/avatar?seed=<profile-id>tạo SVG DiceBear Critters với preset Bare. Dashboard hiển thị avatar ổn định theo profile ID khi người dùng chưa có ảnh, vẫn ưu tiên ảnh đã lưu và dùng chữ viết tắt nếu ảnh không tải được. -
Mở Rộng Hệ Thống Theme Blue & Tinh Chỉnh Bảng Màu GIGEE (
index.css,ThemeContext.tsx,palettes.ts,ThemeCustomizerDrawer.tsx,CommandPalette.tsx,UserDetailPage.tsx):- 3 Biến Thể Màu Mới Từ Tone Blue:
azure(GIGEE Azure Stream - Sky & Cyber Cyan#0BA5EC/#06B6D4): Tươi sáng, trẻ trung, trực quan hóa cao cho các chiến dịch tương tác thực địa và kích hoạt sự kiện.cobalt(GIGEE Deep Cobalt - Corporate Navy & Royal Blue#1E40AF/#2563EB): Đậm nét doanh nghiệp, vững chãi, bảo chứng uy quyền cho khối tài chính, đối soát và cấp quản trị.slate(GIGEE Steel Slate - Precision Minimalist Slate#3B82F6/#64748B): Tối giản kỹ thuật, màu xanh thép trung tính tối ưu hóa cho màn hình xử lý dữ liệu và BI Dashboard.
- Loại bỏ hoàn toàn theme
mint: Dọn dẹp token cũ, thay thế bằng hệ thống 4 biến thể Blue + 1 biến thể Classic Indigo. - Đồng bộ Theme Selectors: Cập nhật toàn diện
ThemeCustomizerDrawer,CommandPalette(phím tắtCmd+K) và trang Quản lý tài khoản cá nhânUserDetailPagevới lưới 5 schemes sắc nét. - Hệ Thống Logo Vector SVG Mới: Tích hợp
BrandLogo.tsxinline vector tương thích 100% Next.js SSR/Client, không bị 404, loại bỏ đường viền đen thừa trên SVG.
- 3 Biến Thể Màu Mới Từ Tone Blue:
-
Quy Đổi Đơn Vị Đóng Gói (Thùng / Lốc / Lẻ) Trong Form Giao Dịch Kho (
StockTransactionFormModal.tsx,StockUnitQuantityModal.tsx,ConvertStockUnitQuantityUseCase.ts):- Tạo mới domain usecase
ConvertStockUnitQuantityUseCase.tshỗ trợ trích xuất quy cách đóng gói (getSpecs), tính tổng số lượng cơ sở (calculateBaseQuantity), phân rã (breakdownFromBaseQuantity) và tạo chuỗi diễn giải trực quan (formatBreakdownText, vd:2 thùng + 1 lốc + 3 lon). - Tạo mới component
StockUnitQuantityModal.tsxhiển thị chi tiết các cấp đơn vị (Thùngpack, Lốcbundle, Lẻunit), bộ đếm tăng/giảm (+/-) và xem trước tổng số lượng quy đổi tức thì. - Tích hợp nút “Quy đổi” và hiển thị diễn giải quy đổi đa cấp trực tiếp trên từng dòng sản phẩm trong
StockTransactionFormModal.tsx, đồng bộ hai chiều giữa số lượng lẻ và quy cách đóng gói tương tự như form bán hàng.
- Tạo mới domain usecase
-
Cột Thông Tin Sản Phẩm & Drawer Chi Tiết Giao Dịch Kho Hàng (
StockTransactionsSubTab.tsx,StockListPage.tsx,StockTransactionDetailDrawer.tsx):- Bổ sung cột Sản phẩm trong bảng lịch sử giao dịch hiển thị tên sản phẩm, số lượng và đơn vị tính (kèm tooltip xem toàn bộ danh sách khi có trên 2 sản phẩm).
- Bổ sung Drawer chi tiết giao dịch
StockTransactionDetailDrawer.tsx: mở khi người dùng click vào bất kỳ dòng nào trong bảng giao dịch, hiển thị toàn diện thuộc tính giao dịch, liên kết kho xuất / kho nhập, bảng danh sách sản phẩm (số lượng chuyển, đã xác nhận, hao hụt), thư viện hình ảnh / chứng từ biên bản kèm xem phóng to ảnh và nút chỉnh sửa nhanh. - Chuẩn hóa bộ enum nhãn và màu sắc hiển thị tiếng Việt cho Loại sản phẩm (
ASSET_TYPE_LABELS), Loại giao dịch (TRANSACTION_TYPE_LABELS), và Trạng thái giao dịch (TRANSACTION_STATUS_LABELS) trongStockEntity.ts. - Tối ưu hóa truy vấn tải hàng loạt chi tiết sản phẩm giao dịch (
useBatchTransactionItems/listAllTransactionItems) theo phạm vi workspace và danh sách ID giao dịch.
-
Trang Chi Tiết Tồn Kho Sản Phẩm Theo Từng Kho Hàng (
/stock/[id]):- Khi người dùng nhấn vào bất kỳ dòng sản phẩm nào trong tab Tồn kho (Balances) trên trang
StockListPage.tsxhoặcStockBalancesSubTab.tsx, hệ thống điều hướng đến trang chi tiếtStockAssetDetailPagetại/stock/:id. - Hiển thị đầy đủ thông số sản phẩm, quy cách đóng gói, bảng giá 3 cấp, hạn sử dụng cùng lưới thống kê tổng hợp số lượng (Tổng tồn, Đang giữ, Đang nhập, Đang xuất, Hao hụt, Số kho).
- Cung cấp bảng chi tiết tồn kho phân bổ theo từng địa điểm kho hàng kèm đầy đủ tính năng sắp xếp trên từng cột.
- Khi người dùng nhấn vào bất kỳ dòng sản phẩm nào trong tab Tồn kho (Balances) trên trang
-
Hỗ Trợ Sắp Xếp (Sorting) Các Cột Bảng Dữ Liệu Kho Hàng:
- Bổ sung cấu hình
sortercho tất cả các cột dữ liệu trong 3 sub-tab (Sản phẩm, Tồn kho, Giao dịch) trên trangStockListPage.tsxvà các component sub-tab tương ứng (StockAssetsSubTab.tsx,StockBalancesSubTab.tsx,StockTransactionsSubTab.tsx). - Hỗ trợ sắp xếp chuỗi theo chuẩn tiếng Việt (
localeCompare), sắp xếp số lượng/giá và sắp xếp theo mốc thời gian / ngày tháng.
- Bổ sung cấu hình
-
Cột Thư mục Cho Bảng Dữ Liệu Các Sub-tab Kho Hàng (
StockListPage.tsx):- Bổ sung cột Thư mục vào bảng dữ liệu của cả 3 sub-tab: Sản phẩm (
assets), Tồn kho (balances) và Giao dịch (transactions) trên trang danh sách kho hàngStockListPage.tsx. - Tự động map
folderIdsang tên thư mục trực quan giúp người dùng dễ dàng nhận biết ngữ cảnh thư mục khi đang xem dữ liệu tổng hợp toàn workspace.
- Bổ sung cột Thư mục vào bảng dữ liệu của cả 3 sub-tab: Sản phẩm (
-
Bộ Lọc Tìm Kiếm & Thời Gian (Hôm nay, Tuần này, Tuỳ chọn) Cho Danh Sách Công Việc:
- Bổ sung thanh công cụ tìm kiếm và lọc thời gian nhanh đặt cùng dòng (canh phải) trong bảng danh sách công việc
JobTable.tsx. - Hỗ trợ lọc theo từ khóa tìm kiếm (
title,description,location), bộ lọc nhanh Hôm nay, Tuần này và Tuỳ chọn (với Date Range Picker Calendar).
- Bổ sung thanh công cụ tìm kiếm và lọc thời gian nhanh đặt cùng dòng (canh phải) trong bảng danh sách công việc
-
Bộ Dữ liệu Mẫu và Kịch bản Seed Toàn diện (
stock->promotion->sale,contact):apps/hire_workspace/seeds/datas/:contacts.ts: Dữ liệu khách hàng mẫu có thông tin định danh, tài khoản ngân hàng và cờ xác thực OTP.stocks.ts: Dữ liệu tài sản kho gồm sản phẩm (PRD-COLA-330,PRD-COFFEE-240,PRD-SNACK-SEAWEED), quà tặng khuyến mãi (PRM-CUP-500ML,PRM-RAINCOAT-01), hàng dùng thử (SMP-CEREAL-15G) kèm số lượng tồn kho ban đầu.promotions.ts: Các chương trình khuyến mãi mẫu (Tặng ly giữ nhiệt, Vòng quay may mắn mùa hè, Quà tặng VIP chọn lọc) liên kết trực tiếp với quà tặng kho hàng.sales.ts: Dữ liệu đơn bán hàng POS (HD-20260909-001,HD-20260909-002,HD-20260909-003) kèm danh sách sản phẩm bán, quà tặng đính kèm, ảnh chứng từ hóa đơn, và khuyến mãi đã áp dụng.
apps/hire_workspace/seeds/scripts/:seedContacts.ts: Script nạp dữ liệu danh bạ khách hàng vàopublic.contacts.seedStocks.ts: Script nạp danh mục tài sản kho vàopublic.stock_assetsvà khởi tạo số dư tồn kho ban đầu trongpublic.stock_balances.seedPromotions.ts: Script nạp chương trình khuyến mãi vàopublic.promotion_schemesvới khả năng tự động ánh xạ SKU quà tặng sangasset_id.seedSales.ts: Script nạp đơn bán hàng vàopublic.salesvàpublic.sale_items, tự động liên kếtcontact_id,product_id,scheme_id,job_id, vàexecution_id.
- Tích hợp liền mạch vào
apps/hire_workspace/seeds/seed_all.tstheo đúng thứ tự phụ thuộc topological và bổ sung bộ kiểm thử tự độngseeds/tests/seedSalesAndStocks.test.ts.
-
Web Dashboard (Configuration & Payroll): Integrated workspace configuration
payroll_custom_items, allowing Hirers/Managers to define custom template items for allowances, surcharges, and deductions, and quickly select them inPayrollAdjustmentModalandApprovedJobsPayrollTab(“Xem trước bảng lương theo worker”). -
Web Dashboard Job & Metadata (
apps/hire_workspace/src/features/job/presentation/components/JobFormModal.tsx&apps/hire_workspace/src/shared/components/ResponsiveModal.tsx):- Bổ sung nút Bung toàn màn hình (Fullscreen) cho
ResponsiveModalvàJobFormModal:- Nâng cấp
ResponsiveModalhỗ trợ các propsallowFullScreen,isFullScreen,onFullScreenChangekèm nút toggle Phóng to / Thu nhỏ (Maximize2/Minimize2) ở góc trên bên phải. - Khi ở chế độ Fullscreen: modal bung rộng 98vw x 96vh với cấu trúc layout co giãn chiếm 100% chiều cao màn hình.
- Tại Bước 4 (Task Builder): canvas ReactFlow tự động co giãn lên đến
calc(100vh - 230px), tạo không gian rộng lớn và trực quan để thiết kế quy trình nhiệm vụ DAG, sắp xếp Layout và xem MiniMap.
- Nâng cấp
- Tách riêng 2 trường Danh mục (Category) và Thẻ (Tags) trong form tạo/chỉnh sửa công việc
JobFormModal. - Bổ sung logic kiểm tra hợp lệ dữ liệu (Step Validation) khi điều hướng giữa các bước trong
JobFormModal:- Khi click chọn bước tiếp theo trên sidebar hoặc bấm nút “Tiếp tục”: validate tuần tự dữ liệu các bước trước, hiển thị thông báo lỗi và giữ lại bước chưa hợp lệ.
- Khi click chọn các bước trước đó trên sidebar hoặc bấm “Quay lại”: cho phép chuyển bước tức thì mà không validate.
- Khi bấm “Lưu Nháp” hoặc “Lưu & Đăng việc”: tự động kiểm tra hợp lệ toàn bộ các bước trước khi gửi dữ liệu.
- Bổ sung Visual Error Highlighting: Khi có lỗi validate, ngoài thông báo bằng snackbar/toast, hệ thống sẽ highlight viền đỏ (
border-destructive focus-visible:ring-destructive) trên các trường lỗi và hiển thị thông báo lỗi trực tiếp ngay dưới ô nhập liệu (tên công việc, ngày bắt đầu, giờ ca làm việc, đơn giá, số lượng worker, ngày kết thúc lặp lại, chọn thứ trong tuần), đồng thời tự động xóa lỗi khi người dùng chỉnh sửa.
- Nâng cấp component
MetadataSelectthành Combobox dùng chung đa năng:- Tìm kiếm tức thì theo từ khóa.
- Hỗ trợ tạo mới inline (
+ Tạo mới "<name>") ngay trong dropdown khi chưa tồn tại. - Hỗ trợ cả 2 chế độ chọn: Single Selection và Multiple Selection (hiển thị danh sách Badges kèm nút xoá).
- Hỗ trợ linh hoạt chế độ cố định loại (
fixed typeMode) hoặc cho phép người dùng tự chọn loại metadata (selectable typeMode).
- Tự động phân loại
jobMetadatacũ khi tải thông tin công việc và gộp lưu đồng bộ khi submit form. - Bổ sung bộ unit test toàn diện cho
MetadataSelect.test.tsx.
- Bổ sung nút Bung toàn màn hình (Fullscreen) cho
-
Web Dashboard ManagedTabs Pattern (
apps/hire_workspace/src/shared/components/patterns/ManagedTabs.tsx):- Nâng cấp
ManagedTabshỗ trợ đa dạng cấu hình:icon(nhận cảReact.ElementTypelẫn JSX node),disabled,size,tabsListClassName,contentClassName,showSettings,showScrollArrowsvà đồng bộ tabs động. - Chuẩn hóa và áp dụng
ManagedTabstoàn diện trên 100% các tab và subtab trong toàn bộ ứng dụngapps/hire_workspace:MemberListPage.tsx(Thành viên, Lời mời, Vai trò, Quyền hạn)StockListPage.tsx(Sản phẩm, Tồn kho, Giao dịch)MetadataListPage.tsx(Các types phân loại metadata động)FolderMetadataTab.tsx(Subtab metadata trong Folder Explorer)UserDetailPage.tsx(Workspace, Worker/Hirer profile, Liên kết tài khoản, Quyền hạn, Giao diện)FormxDetailPage.tsx(Trường dữ liệu, Phản hồi biểu mẫu)SourcingTabs.tsx(Danh sách công việc, Hồ sơ ứng viên)WorkerSourcingBoard.tsx(Ứng tuyển, Gợi ý hệ thống)ConfigurationFormModal.tsx&FormxConfigTab.tsx(Giao diện UI / JSON raw)
- Mang lại khả năng kéo thả sắp xếp (Drag & Drop), ghim tab (Pin), cuộn mượt (Scroll buttons) và lưu trữ cấu hình theo người dùng (LocalStorage persistence).
- Nâng cấp
-
Bổ sung modal nhắc nhở liên kết số điện thoại (
PhoneReminderModal) xuất hiện 1 lần mỗi phiên làm việc đối với các tài khoản chưa có số điện thoại. -
Bổ sung phương thức
linkPhoneNumbertrong Auth Remote DataSource, Repository vàuseAuthhook giúp chủ động liên kết SĐT sau khi đăng nhập. -
Cấu hình Sắp xếp (Sorting) & Bộ lọc (Filtering) cho các bảng Sourcing, Giám sát (Monitoring) & Bảng lương (Payroll) (
apps/hire_workspace):- Sourcing (
SourcingTable,CandidateProfilesTable,WorkerSourcingBoard): Bổ sung sắp xếp theo tên công việc, địa điểm, số lượng slots, số lượng ứng tuyển, số lượng đã duyệt, ngày tạo, ngày ứng tuyển và điểm đánh giá worker; bổ sung bộ lọc trạng thái duyệt và trạng thái tuyển dụng. - Giám sát (
SharedExecutionTable): Bổ sung sắp xếp theo folder/chiến dịch, nhiệm vụ, tên worker thực địa, thời gian bắt đầu, thời điểm nộp; bổ sung bộ lọc theo trạng thái thực thi (started,in_progress,submitted,approved,rejected). - Bảng lương (
PayrollLedgerPage): Bổ sung sắp xếp theo tên worker, lương cơ bản, phụ cấp/phí, khấu trừ/phạt, số tiền thực nhận; bổ sung bộ lọc theo trạng thái phiếu lương (draft,pending,approved,paid,cancelled).
- Sourcing (
-
Cấu hình Sắp xếp (Sorting), Bộ lọc (Filtering) & Tách cột Lương & Loại hình trong
JobTable(apps/hire_workspace):- Tách cột “Lương & Loại” thành 2 cột riêng biệt: Cột Lương (
payoutRate) với định dạng số căn phải và sắp xếp tăng/giảm dần theo số tiền, và Cột Loại hình (billingType) với huy hiệu (Badge) căn giữa kèm bộ lọc đa lựa chọn theo hình thức tính lương (hourly,fixed,shift,monthly). - Bổ sung hàm sắp xếp chuẩn tiếng Việt cho các cột Tên công việc (
title), Thư mục (folder), Địa điểm (location), Hiển thị (visibility), Trạng thái (status), Slots (slotsAvailable) và Ngày tạo (createdAt). - Bổ sung bộ lọc Popover cho các cột Thư mục (
folder), Hiển thị (visibility) và Trạng thái (status).
- Tách cột “Lương & Loại” thành 2 cột riêng biệt: Cột Lương (
-
Triển khai tính năng Lọc theo Cột (Column Filtering) trong
AppTable(apps/hire_workspace):- Hỗ trợ đầy đủ các thuộc tính
filters,onFilter,filteredValue,defaultFilteredValue,filterMultiple,filterSearch,filterDropdown,filterIcontrongAppColumnType. - Xây dựng component
ColumnFilterDropdownhiển thị nút phễu lọc ngay trên Header cột với Popover danh sách checkbox, ô tìm kiếm nhanh và nút “Đặt lại” / “OK”. - Tích hợp liền mạch cơ chế lọc
filteredDatakết hợp sắp xếpsortedDatavà phân trang mà không gây xung đột sự kiện click sắp xếp trên header.
- Hỗ trợ đầy đủ các thuộc tính
-
Chuyển
ColSettingsvào Header của Cột đầu tiên & Ràng buộc tối thiểu 1 cột hiển thị (apps/hire_workspace):- Di chuyển nút cấu hình cột (
ColSettings) từ thanh Toolbar phía trên bảng dữ liệu trực tiếp vào thẻ Header (<TableHead />) của cột đầu tiên đang hiển thị (orderedVisible[0]). - Thêm ràng buộc ngăn chặn ẩn toàn bộ cột: Bảng luôn đảm bảo hiển thị tối thiểu 1 cột; khi chỉ còn 1 cột hiển thị, checkbox của cột đó sẽ tự động chuyển sang trạng thái
disabledvà vô hiệu hóa thao tác bỏ chọn. - Ngăn ngừa kích hoạt tính năng sắp xếp (sorting) trên thẻ header khi người dùng nhấp vào nút tùy chỉnh cột (
stopPropagation). - Nút trigger của
ColSettingsđược tinh chỉnh compact (size-6,variant="ghost") tạo sự liền mạch và gọn gàng trong Header.
- Di chuyển nút cấu hình cột (
-
Cải tiến Table Header cùng dòng với nút ‘Tuỳ chỉnh cột’ & Tối ưu Margin trong Card (
apps/hire_workspace):- Hỗ trợ các props
title,subtitle,count,header,extra,variant,inCardtrongAppTablevàResponsiveTable. - Tích hợp tiêu đề bảng, badge đếm bản ghi và các nút thao tác bên trái nằm trên cùng một hàng ngang với nút “Tuỳ chỉnh cột” (
ColSettings) và các action bổ sung bên phải. - Hỗ trợ chế độ
inCard/variant="card"giúp loại bỏ viền/shadow lồng nhau (double border), điều chỉnh padding Header (border-b) và Pagination (border-t) liền mạch sát viềnCard. - Bổ sung
containerClassNametrongui/table.tsxvàaria-labelcho nút tuỳ chỉnh cột để tăng cường khả năng truy cập (a11y). - Đồng bộ cập nhật trên tất cả 8 tab Folder Explorer (
FolderJobsTab,FolderExecutionTab,FolderMemberListSubTab,FolderInvitationsSubTab,FolderLocationsTab,FolderMetadataTab,FolderMetadataAdoptionContent,PayrollLedgerPage) và các trang quản lý chính (WorkspaceListPage,UserListPage,UserDetailPage,ConfigurationListPage,IssueListPage,LiveMonitorPage,FormxListPage,StockListPage,MembersTab,RolesTab,PermissionsTab,InvitationsTab,WorkerSourcingBoard,ValidatorListPage).
- Hỗ trợ các props
-
Nâng cấp Hệ thống Tabs & Chuẩn hoá Layout UX/UI (
apps/hire_workspace):- Nâng cấp
tabs.tsxhỗ trợ đầy đủ các visual variants hiện đại:line(Underline cho Page-level Navigation),default/segmented(Pill switcher),pills,contained. - Hỗ trợ các kích cỡ
size(sm,default,lg), tự động cuộn ngang mượt mà (overflow-x-auto no-scrollbar scroll-smooth) chống nhảy dòng (wrap) vỡ giao diện trên mobile và màn hình hẹp. - Tích hợp
TabsBadgevàicontrực tiếp trên từng tab trigger, hiển thị số lượng và icon trực quan, tự động đồng bộ trạng thái active. - Xây dựng component chuẩn hoá Layout
DataTableToolbar(src/shared/components/patterns/DataTableToolbar.tsx) thống nhất thanh công cụ phía trên bảng dữ liệu: Tiêu đề nhóm, Subtitle, Badge đếm số lượng, ô Tìm kiếm nhanh, Bộ lọc danh mục/folder/status và Action buttons. - Chuẩn hoá toàn diện cấu trúc Layout, phân cấp tiêu đề (
PageHeader), khoảng cách và loại bỏ triệt để các class cũspace-y-*/space-x-*trên các màn hình:StockListPage.tsx(Kho hàng & Sản phẩm / Cân đối tồn kho / Lịch sử giao dịch).MemberListPage.tsx&MembersTab.tsx(Thành viên & Phân quyền RBAC).MetadataListPage.tsx&MetadataTabContent.tsx(Phân loại & Thuộc tính tham chiếu).FolderExplorerPage.tsx& 8 phân hệ tabs:overview(DashboardPage.tsx): Tinh gọn toolbar “Tổng quan vận hành”, loại bỏh2thô khi nhúng.jobs(FolderJobsTab.tsx): Đồng bộDataTableToolbar, stats cards và view switcher.sourcing(FolderSourcingTab.tsx): Loại bỏh3lặp đè lên subtabs.monitoring(FolderExecutionTab.tsx): Chuẩn hoáDataTableToolbarvới badge đếm số lượng ca làm việc thực địa.payroll(PayrollLedgerPage.tsx): Bổ sungembeddedmode tự động ẩnPageHeaderlặp và dropdown folder thừa.members(FolderMembersView.tsx&MembersTab.tsx): Tối ưu toolbar lọc vai trò và quản lý thành viên.locations(FolderLocationsTab.tsx): Chuẩn hoáDataTableToolbarvới tìm kiếm và nút thêm địa điểm.metadata(FolderMetadataTab.tsx): Sử dụng pills tabs hiện đại.
UserDetailPage.tsx(Hồ sơ người dùng, Hồ sơ tuyển dụng/ứng viên, Quyền hạn).FormxDetailPage.tsx(Chi tiết Biểu mẫu FormX).SourcingTabs.tsx(Quản lý nguồn tuyển dụng & Hồ sơ ứng viên).
- Nâng cấp
-
Job Gantt View / Editor với Native React & Tailwind CSS v4 (
apps/hire_workspace):- Xây dựng component biểu đồ đường găng Native React Gantt Chart hoàn toàn miễn phí (100% MIT License, 0 chi phí bản quyền thương mại).
- Hỗ trợ View switcher 3 chế độ đồng bộ: Danh sách (Table View) | Lịch tháng (Calendar View) | Gantt Chart (Gantt View).
- Hỗ trợ độ phân giải linh hoạt: Giờ (24h Timeline trong ngày) | Ngày | Tuần | Tháng, cùng nút chuyển ngày/tuần/tháng và phím tắt quay về Hôm nay.
- Gom nhóm theo Người thực hiện (Group by Worker) & Tìm kiếm phân cấp 3 tầng:
- Bổ sung tùy chọn gom nhóm Theo Người thực hiện (
worker) trên biểu đồ Gantt. - Tìm kiếm và tổng hợp nhân sự thông minh theo 3 cấp độ ưu tiên:
Đã phân công / Ứng viên (Assigned & Approved Applications): Bao gồm cả worker tự do/công khai đăng ký vào job.Thành viên Thư mục (Folder Members).Thành viên Không gian làm việc (Workspace Members).
- Tích hợp ô tìm kiếm nhân sự theo Tên, Email, ID trực tiếp trên toolbar của Gantt chart.
- Gom riêng nhóm “Chưa phân công (Chờ ứng viên)” để theo dõi các job chưa có người phụ trách.
- Bổ sung tùy chọn gom nhóm Theo Người thực hiện (
- Tạo Công việc Mới Trực tiếp từ Gantt Chart (Create Job from Gantt):
- Hỗ trợ click vào bất kỳ vùng trống nào trên timeline canvas để mở modal tạo việc nhanh với
startDatevàendDateđược tính toán tự động dựa trên vị trí click. - Bổ sung nút
+ Thêm việctrực tiếp trên thanh tiêu đề của từng Thư mục khi hover, tự động điền trướcfolderIdmục tiêu. - Áp dụng đồng bộ cho cả trang Danh sách công việc tổng quan (
JobListPage) và phân hệ Thư mục (FolderJobsTab).
- Hỗ trợ click vào bất kỳ vùng trống nào trên timeline canvas để mở modal tạo việc nhanh với
- Tích hợp JobGanttView vào Phân hệ Thư mục (
FolderJobsTab.tsx):- Bổ sung View Switcher 3 chế độ (
Danh sách|Lịch|Gantt) vào tab Công việc trong màn hình Chi tiết Thư mục (FolderExplorerPage). - Đồng bộ toàn bộ các tính năng Gantt nâng cao: Zoom Giờ/Ngày/Tuần/Tháng, Gom nhóm Worker/Status/Folder con, Drag & Resize timeline và đổi thư mục.
- Bổ sung View Switcher 3 chế độ (
- Tùy chỉnh Kích thước Cột Đầu tiên (Resizable Left Column):
- Bổ sung thanh phân cách kéo thả (Column Resizer Divider) ở mép phải của cột Tiêu đề công việc / Thư mục / Nhân sự.
- Cho phép kéo mở rộng (tối đa
600px) hoặc thu hẹp (tối thiểu160px) trực tiếp trên biểu đồ Gantt. - Tự động ghi nhớ và lưu trữ kích thước tùy chỉnh vào
localStorage(gigee_gantt_left_col_width).
- Tương tác Kéo thả & Co giãn thời gian (Drag & Resize Editor):
- Kéo di chuyển toàn bộ thanh công việc để dời mốc thời gian
startDate&endDate. - Kéo tay nắm mép trái / mép phải để co giãn (kéo dài hoặc thu ngắn) thời lượng công việc với realtime preview và snap theo giờ/ngày.
- Kéo thả tên công việc sang nhóm Thư mục khác (
Drag & Drop to Folder) để cập nhậtfolderIdtự động.
- Kéo di chuyển toàn bộ thanh công việc để dời mốc thời gian
- Xử lý chuyên sâu cho Recurrent Jobs (Công việc định kỳ lặp lại): tự động phân tách chu kỳ theo
frequency,weekdaysvà loại trừexceptionDates, hiển thị các ca lặp con (#1,#2, …) trên cùng một hàng. - Hỗ trợ phân nhóm linh hoạt (Group by Folder, Group by Status, Danh sách phẳng).
- Tích hợp
JobGanttTooltiphiển thị đầy đủ thông tin: Folder, Địa điểm, Payout, Tỷ lệ duyệt ứng viên/slots và ca lặp cụ thể. - Tối ưu giảm hơn 800KB kích thước bundle JS, loại bỏ hoàn toàn cảnh báo bản quyền.
Fixed
-
Khắc Phục Lỗi Cú Pháp Truy Vấn
selectLấy Dữ Liệu Bằng Chứng Giao Dịch Kho Trên Web Dashboard (ExecutionRemoteDataSource.ts):- Sửa lỗi thiếu dấu đóng ngoặc
)trong chuỗiselect(...)liên kết giữatask_stock_transactions,stock_transactions,locationsvàstock_transaction_items. - Hoàn thiện trích xuất thông tin kho xuất/kho nhập (
fromWarehouseName,toWarehouseName), ảnh chứng từ và phân loại hàng hoá cho componentStockTransactionProofView.tsx.
- Sửa lỗi thiếu dấu đóng ngoặc
-
Khắc Phục Tràn Khung & Ẩn Ô Số Lượng Trong Danh Sách Sản Phẩm Giao Dịch Kho (
StockTransactionFormModal.tsx):- Bổ sung
min-w-0vàoverflow-hiddentrên componentStockAssetSelect.tsxvà các container dòng sản phẩm, giúp cắt ngắn tên sản phẩm dài mượt mà (...) và hiển thị huy hiệu tồn kho thích ứng (hidden sm:inline-flex). - Thiết lập thuộc tính
shrink-0cho khối ô nhập số lượng và nút xóa dòng, đảm bảo ô số lượng và nút hành động luôn luôn hiển thị trọn vẹn, không bị đẩy tràn ra khỏi màn hình.
- Bổ sung
-
Sửa Lỗi Bộ Lọc Khoảng Ngày (Date-Range Picker) Trong Bảng Công Việc (
JobTable.tsx):- Khắc phục logic lọc ngày theo khoảng thời gian giao nhau (
interval overlap) cho các tùy chọn Hôm nay, Tuần này và Tuỳ chọn, đảm bảo các công việc diễn ra trong nhiều ngày (multi-day jobs) nằm trong khoảng lọc đều hiển thị chính xác. - Sửa lỗi xử lý trạng thái chọn/bỏ chọn khoảng ngày trong Popover Calendar (
react-day-picker), tự động đóng Popover khi chọn đủ ngày bắt đầu và kết thúc. - Bổ sung nút xóa nhanh bộ lọc ngày 1-chạm (
X) trực tiếp trên nút tùy chọn và nút Đặt lại trong Popover.
- Khắc phục logic lọc ngày theo khoảng thời gian giao nhau (
-
Khắc Phục Lỗi
invalid input value for enum proof_status_enum: "submitted"Khi Yêu Cầu Nộp Lại / Duyệt Bằng Chứng Task:- Sửa lỗi trong trigger function
handle_execution_submission_notification()khi so sánh trạng tháiNEW.status = 'submitted'trên bảngpublic.task_execution_proofs(bảng này dùng kiểuproof_status_enumgồm'pending','approved','rejected', không có giá trị'submitted'). - Cập nhật điều kiện trigger sang
NEW.status = 'pending'và mở rộng triggertr_execution_submission_notificationlắng nghe cảINSERTlẫnUPDATE OF status, cho phép Quản lý / Hirer phê duyệt hoặc yêu cầu nộp lại (request_resubmit) thành công mà không bị crash transaction.
- Sửa lỗi trong trigger function
-
Khắc Phục Lỗi 403 (Forbidden) Khi Nghiệm Thu Ca Làm Việc
/api/executions/review(Web Dashboard):- Ánh Xạ Mã Lỗi Chi Tiết & Phản Hồi Tiếng Việt: Cập nhật Route Handler
/api/executions/review/route.tsloại bỏ việc nuốt toàn bộ lỗi vào mã 403 tĩnh; phân loại chính xác các mã trạng thái HTTP (401 Unauthorized, 403 Forbidden, 400 Bad Request, 404 Not Found) và ánh xạ thông báo lỗi tiếng Việt thân thiện, rõ ràng cho người dùng khi vi phạm phân quyền hoặc trạng thái không hợp lệ. - Kiểm Soát Quyền IAM & Trạng Thái Nút Nghiệm Thu: Cập nhật
ExecutionDetailPage.tsxkiểm tra quyềnfolders:*/jobs:editthông quauseFolderIam/useIamvà ngăn chặn Worker tự duyệt ca của chính mình; đồng thời bổ sung trạng thái vô hiệu hoá nút khi đang gửi request (isPending) để chống spam thao tác.
- Ánh Xạ Mã Lỗi Chi Tiết & Phản Hồi Tiếng Việt: Cập nhật Route Handler
-
Split Verify Routes for Seamless Dashboard Navigation (
apps/hire_workspace/src/app/):- Tách biệt 2 route
/verify(Protected) và/public/verify(Public): Chuyển trang dashboard/verifyvàosrc/app/(protected)/verify/page.tsxvà tạo trang công khai độc lập tạisrc/app/(public)/public/verify/page.tsx. Cả 2 trang đều tái sử dụng chung componentPublicVerificationPage. - Loại bỏ hiện tượng nhấp nháy / reload layout: Khi người dùng đã đăng nhập di chuyển qua lại giữa Thư mục gốc (
/), các thư mục con và Xác thực Ảnh (/verify), toàn bộAppShell,AppSidebar,FolderTreeNavigationđược giữ nguyên trong DOM, chuyển trang mượt mà 100%.
- Tách biệt 2 route
-
Sidebar Collapsed State Reset on Route Group Transition (
apps/hire_workspace/src/router/AppRouter.tsx,apps/hire_workspace/src/shared/components/layout/AppLayout.tsx):- Lưu trữ trạng thái thu gọn Sidebar vào LocalStorage: Bổ sung cơ chế tự động đồng bộ và lưu trữ
sidebarCollapsedvàolocalStorage, khắc phục lỗi sidebar bị bung mở (reset về trạng thái mặc định) khi chuyển hướng giữa Route Groups (như khi click vào menu Xác thực Ảnh/verifyhoặc tải lại trang).
- Lưu trữ trạng thái thu gọn Sidebar vào LocalStorage: Bổ sung cơ chế tự động đồng bộ và lưu trữ
-
Sidebar Root Folder & Workspace Menu Dual Highlight Bug (
apps/hire_workspace/src/features/folders/presentation/components/FolderTreeNavigation.tsx):- Khắc phục lỗi highlight đồng thời: Bổ sung hook reactive
useLocation()trongFolderTreeNavigationđể đồng bộ URL tức thời khi chuyển hướng giữa Thư mục gốc (/) và các menu chức năng (/members,/verify…), đồng thời chuẩn hóa điều kiệnisRootSelected(pathname === '/' || pathname === '/folders'), ngăn chặn hoàn toàn hiện tượng cả “Thư mục gốc” và menu chức năng cùng bị highlight.
- Khắc phục lỗi highlight đồng thời: Bổ sung hook reactive
-
Tooltip Positioning & Sub-Sidebar Top Flush Alignment (
apps/hire_workspace/src/shared/components/ui/tooltip.tsx,apps/hire_workspace/src/shared/components/patterns/ManagedTabs.tsx):- Bổ sung
<TooltipPrimitive.Portal>bọc quanhTooltipContenttrongsrc/shared/components/ui/tooltip.tsxtheo chuẩn Radix/Shadcn UI, khắc phục hoàn toàn lỗi lệch toạ độ (Popper offset calculation) khi Tooltip nằm trong các phần tử có stacking context (sticky,backdrop-blur,transition). - Xoá khoảng cách lề đỉnh (
sticky top-4➔sticky top-0) của sub-sidebar menu trongManagedTabs, giúp mép trên của menu canh đều tuyệt đối với phần nội dung tab (Content Area).
- Bổ sung
-
IAM Sub-resource & Prefix Hierarchy Matching (
apps/hire_workspace/src/core/iam/IamService.ts):- Nâng cấp thuật toán
matchResourcetrongIamServicehỗ trợ so khớp phân cấp tiền tố (Prefix Hierarchy): quy tắcprefix:*(ví dụstocks:*,folders:*) tự động khớp và trao quyền trên toàn bộ các sub-resource con dạng slash (stocks/assets,stocks/transactions,stocks/balances…). - Bổ sung bộ unit test xác minh Workspace Owner và người dùng có quyền
stocks:*có đầy đủ quyền hạn trênstocks/assets:managevàstocks/transactions:create.
- Nâng cấp thuật toán
-
Responsive Modal (
apps/hire_workspace/src/shared/components/ResponsiveModal.tsx&JobAssignMemberModal.tsx):- Khắc phục lỗi hiển thị khung nút Cancel rỗng không có chữ khi truyền
cancelText=""bằng cách chỉ render nút Cancel khicancelTextcó giá trị chuỗi thực tế. - Chuẩn hóa footer modal “Chỉ định thành viên” và “Tạo mã QR & Link mời” chỉ hiển thị 1 nút “Đóng” duy nhất, sạch đẹp.
- Khắc phục lỗi hiển thị khung nút Cancel rỗng không có chữ khi truyền
-
Location Picker & Select (
apps/hire_workspace/src/features/location/presentation/components/LocationSelect.tsx):- Khắc phục triệt để lỗi click nút “Tạo địa điểm mới” làm reload/re-open dropdown thay vì mở form location bằng cách bổ sung
onCloseAutoFocusvà chuẩn hóa thành<CommandItem>.
- Khắc phục triệt để lỗi click nút “Tạo địa điểm mới” làm reload/re-open dropdown thay vì mở form location bằng cách bổ sung
-
Sửa lỗi tính năng Sắp xếp (Sorting) trong
AppTable(apps/hire_workspace):- Khắc phục lỗi logic đảo ngược điều kiện
canSort = !col.sorterthànhcanSort = Boolean(col.sorter), cho phép kích hoạt sắp xếp đúng trên các cột có khai báosorter. - Nâng cấp thuật toán so sánh chuỗi mặc định trong
sortedDatasử dụnglocaleComparevới tiếng Việt chuẩn (vi).
- Khắc phục lỗi logic đảo ngược điều kiện
-
Sửa lỗi tính năng Ghim / Bỏ ghim cột đầu (
pinFirst) & Ghim / Bỏ ghim cột cuối (pinLast) trongAppTable&ColSettings(apps/hire_workspace):- Khắc phục xung đột sự kiện double-toggle trong popup
ColSettingsbằng cách gỡ bỏonClickthừa trên các thẻ wrapper, để<Checkbox>và<label htmlFor>xử lý sự kiện toggle mượt mà. - Khởi tạo giá trị mặc định cho
pinFirstvàpinLastdựa trên cấu hìnhcol.fixed, đồng thời ưu tiên trạng thái do người dùng tùy chọn (pinFirst/pinLast) khi bảng cótableId, cho phép người dùng chủ động bỏ ghim cột cuối ngay cả khi cột có khai báofixed: "right". - Áp dụng các class CSS sticky (
sticky left-0,sticky left-10,sticky right-0,z-20/z-10,shadow-[1px_0_0_0_hsl(var(--border))],shadow-[-1px_0_0_0_hsl(var(--border))]) trực tiếp vào<TableHead>,<TableCell>và Skeleton rows khi bật tùy chọn ghim cột trongColSettings. - Hỗ trợ ghim đồng bộ cả cột chọn hàng Checkbox (
rowSelection) và cột dữ liệu đầu tiên khipinFirst = true. - Thêm
groupvào<TableRow>để đảm bảo các ô sticky cell giữ nguyên màu nền và phản hồi đúng trạng thái hover (group-hover:bg-muted/40) và selection (group-data-[state=selected]:bg-muted) khi cuộn ngang.
- Khắc phục xung đột sự kiện double-toggle trong popup
-
Sửa lỗi
ReferenceError: cn is not definedtrongPayrollLedgerPage.tsx(apps/hire_workspace):- Bổ sung import hàm
cntừsrc/shared/lib/utils, khắc phục hoàn toàn lỗi runtime làm trắng trang khi truy cập tab Bảng lương (?tab=payroll). - Đồng bộ truyền
embedded={true}từFolderExplorerPage.tsxđảm bảo ẩnPageHeaderlặp và dropdown lọc thư mục khi ở trang chủ hoặc thư mục con.
- Bổ sung import hàm
-
Sửa lỗi
TypeError: applications.forEach is not a functionkhi gom nhóm theo Worker (apps/hire_workspace):- Chuẩn hóa việc truyền
applications?.data || []từJobListPage.tsxvàoJobGanttView.tsx, đồng thời bổ sung cơ chế kiểm tra kiểuArray.isArrayphòng thủ nhằm đảm bảo tính an toàn dữ liệu khi tổng hợp danh bạ nhân sự 3 tầng.
- Chuẩn hóa việc truyền
-
Sửa lỗi cập nhật thời gian Gantt Chart & Ngăn chặn mở form edit sau khi drag (
apps/hire_workspace):- Chuẩn hóa payload gọi
updateMutation.mutateAsync({ id, data: { startDate, endDate } })vàupdateMutation.mutateAsync({ id, data: { folderId } })khắc phục hoàn toàn lỗiundefined is not an object (evaluating 'input.title'). - Tích hợp cờ theo dõi thao tác kéo thả (
hasDraggedRef&dragEndTimeRef) trongJobGanttView.tsxnhằm ngăn chặn triệt để sự kiệnonClickmở modal chỉnh sửa công việc khi người dùng vừa hoàn tất thao tác kéo thả hoặc co giãn thanh thời gian.
- Chuẩn hóa payload gọi
-
Fixed
ColSettingsprop signature &colMap.getruntime error (apps/hire_workspace):- Đồng bộ hóa cấu trúc Props giữa
AppTablevàColSettings(columns,hiddenCols,colOrder,onToggleVisibility,onReorder,onReset). - Khắc phục hoàn toàn lỗi trang trắng do
colMapundefined khi truy cập các bảng dữ liệu cótableId.
- Đồng bộ hóa cấu trúc Props giữa
-
Public Verification Portal & Evidence Scanner (
apps/hire_workspace):- Tích hợp trang “Xác thực bằng chứng” (
/verify) trực tiếp vào mục WORKSPACE trên Sidebar của Dashboard. - Tích hợp công cụ tải ảnh (Drag & Drop upload), sử dụng thư viện
jsqrchạy ngầm trên canvas phía Client để tự động quét / trích xuất mã QR bảo chứng trên ảnh và tra cứu Chứng Thư Số tức thì mà không cần gõ mã. - Tích hợp cơ chế Client-side SHA-256 Tamper Detection: Tự động tính mã băm SHA-256 của file tải lên và đối soát với
stamped_sha256trên máy chủ; phát hiện và kích hoạt banner đỏ cảnh báo ngay lập tức nếu ảnh bị can thiệp điểm ảnh (Photoshop, AI, sửa ngày giờ). - Xây dựng Chứng Thư Số (Certificate of Authenticity), định vị GPS vệ tinh, đối chiếu ảnh gốc/ảnh đóng dấu và kết quả kiểm định chống chụp màn hình AI.
- Tạo
PhotoEvidenceEntity,PhotoEvidenceRemoteDataSource,PhotoEvidenceRepositorychoapps/hire_workspace.
- Tích hợp trang “Xác thực bằng chứng” (
-
Clean Rebuild of
apps/hire_workspacewith Shadcn UI & Tailwind CSS:- Rebuilt the entire Web Dashboard frontend from scratch using modern Tailwind CSS v4 and Shadcn UI / Radix primitives, completely removing legacy Ant Design (
antd,@ant-design/icons) dependencies. - Standardized modern UI component system:
ResponsiveTable,ResponsiveModal,ResponsiveDrawer,Dialog,DropdownMenu,Select,Input,Textarea,Tabs,Button,Badge,Card,Switch,Checkbox,Avatar,Progress,Tooltip,Separator, andSonnertoasts. - Reconstructed feature slices cleanly:
- Auth & Onboarding:
LoginPage,RegisterPage,ForgotPasswordPage,ResetPasswordPage,OnboardingPage. - Layout & Navigation:
AppLayout,Header,Sidebar,AppRouter,PermissionGate,AclButton,ThemeToggle(Default single theme with dark mode support). - Workspace & Folders:
WorkspaceListPage,WorkspaceSettingsPage,FolderListPage,FolderDetailPage,FolderSettingsTab,FolderMembersTab,FolderJobsTab,FolderFormxTab,FolderLocationsTab,FolderSourcingTab,FolderExecutionsTab. - FormX Builder & Runner:
FormxListPage,FormxDetailPage,FormxFieldDataPage,FormxBuilder,FormxRenderer. - Job & Task Management:
JobListPage,JobDetailsPage,WorkerSourcingPage,TaskBuilderPage,ValidatorListPage,JobFormModal,JobTable,JobCalendarView,JobAgendaDrawer,JobPreviewCard,JobDetailsView,JobInviteModal,JobAssignMemberModal,TaskBuilder(ReactFlow canvas with custom node cards),WorkerSourcingBoard,CandidateProfilesTable,SourcingTabs,SourcingTable. - Execution & Verification:
ExecutionListPage,ExecutionDetailsPage,SharedExecutionTable,ExecutionProofRenderer,ExecutionValidationRenderer,PublicVerificationPage. - Metadata & Location:
MetadataListPage,MetadataSelect,LocationListPage,LocationFormModal,LocationAutocompleteInput.
- Auth & Onboarding:
- Rebuilt the entire Web Dashboard frontend from scratch using modern Tailwind CSS v4 and Shadcn UI / Radix primitives, completely removing legacy Ant Design (
UI Polish
-
Tối Ưu Bố Cục 2 Dòng Cho Sản Phẩm Đã Chọn Trong Bộ Chọn Vật Tư/Sản Phẩm (
StockAssetSelect.tsx):- Tách bố cục hiển thị sản phẩm đã chọn thành 2 dòng rõ ràng: Dòng 1 dành trọn vẹn cho tên sản phẩm giúp tránh bị cắt ngắn (
truncate); Dòng 2 hiển thị mã SKU (font-mono) và số lượng tồn kho / khả dụng kèm màu sắc phân biệt trạng thái.
- Tách bố cục hiển thị sản phẩm đã chọn thành 2 dòng rõ ràng: Dòng 1 dành trọn vẹn cho tên sản phẩm giúp tránh bị cắt ngắn (
-
Sắp Xếp Lại Cột Bảng Công Việc:
- Tái cơ cấu và chuẩn hoá thứ tự các cột trong
JobTable.tsxtheo đúng quy chuẩn: Thư mục, Tên công việc, Ngày làm, Địa điểm, Loại hình, Chi phí, Trạng thái, Tuyển dụng, Cần tuyển, Phân loại, Hành động.
- Tái cơ cấu và chuẩn hoá thứ tự các cột trong
-
Tích hợp Quản Lý Theo Dõi & Tìm Kiếm / Theo Dõi Nhanh trên Web Dashboard (
/notifications):- Bổ sung các Tab cấp cao trên trang Thông báo: “Thông báo”, “Đang theo dõi” (Following), “Người theo dõi” (Followers) và “Khám phá & Tìm kiếm” (Discover / Search Users).
- Triển khai component
FollowUserListPanel.tsxvới thanh tìm kiếm tích hợpuseDebounce(350ms), bộ lọc vai trò (Tất cả / Thợ / Quản lý) và danh sách thẻ người dùng trực quan. - Hỗ trợ nút bật/tắt theo dõi nhanh 1-chạm (
+ Theo dõi/✓ Đang theo dõi) với optimistic UI update và toast phản hồi tức thì. - Bổ sung nút liên kết nhanh chuyển trực tiếp sang trang hồ sơ thợ (
/workers/:id) từ thẻ người dùng.
-
Shared Metadata Component & Icons (
apps/hire_workspace/src/features/metadata/presentation/,apps/hire_workspace/src/features/folders/):- Dùng chung trực tiếp component
MetadataListPagegiữa trang toàn cục (/metadata?tab=category) và tab Phân loại trong chi tiết thư mục (/folders/:id?tab=metadata). - Hỗ trợ chế độ nhúng
embeddedtự động ẩnPageHeaderkhi hiển thị bên trong folder explorer. - Bổ sung icon trực quan cho từng tab loại metadata (
category➔FolderTree,status➔CheckCircle2,tag➔Tag,brand➔Bookmark,customer➔Layers).
- Dùng chung trực tiếp component
-
Multi-level Folder Breadcrumb Navigation (
apps/hire_workspace/src/features/folders/presentation/pages/FolderExplorerPage.tsx):- Tự động dựng chuỗi thư mục cha (
folderAncestors) từ danh sách thư mụcallFoldersthông qua đường dẫnparentId. - Hiển thị đầy đủ đường dẫn breadcrumb nhiều cấp (ví dụ:
Workspace ➔ Thư mục gốc ➔ Thư mục con cấp 1 ➔ Thư mục con cấp 2 ➔ Thư mục hiện tại) kèm đường dẫn liên kết đến từng thư mục trung gian.
- Tự động dựng chuỗi thư mục cha (
-
Folder Tree Navigation Indentation, Drag Handle & Bulk Actions (
apps/hire_workspace/src/features/folders/):- Thu gọn Thụt lề (Indentation Optimization): Tối ưu khoảng cách thụt lề cấp bậc thư mục (
level = 1bắt đầu từ 4px, mỗi cấp con chỉ tăng thêm 10px thay vì 14px + 10px ban đầu) và giảm khoảng cách icon/chevron vềgap-1, giúp tiết kiệm hơn 30px không gian chiều ngang cho tên thư mục trong sidebar. - Nút Kéo thả Gọn gàng (Drag Handle Polish): Tinh chỉnh nút kéo thả (
GripVertical) sang kích thước nhỏ gọn (size-3.5với iconsize-3), chỉ hiển thị khi rê chuột (hover) hoặc focus, không chiếm chỗ cố định khi không hover. - Nhận diện Vùng Thả (Drop Boundary Highlight): Mở rộng khung viền nhận diện khi kéo thả vào thư mục mục tiêu (
zone === 'inside') bao trọn 100% kích thước menu item vớiring-2 ring-inset ring-primary. - Mở rộng / Thu gọn Tất cả (Expand/Collapse All): Bổ sung nút hành động
ChevronsUpDown/ChevronsDownUpngay trên dòng “Thư mục gốc”, đồng bộ quản lý trạng thái mở rộng (expandedIds) tập trung.
- Thu gọn Thụt lề (Indentation Optimization): Tối ưu khoảng cách thụt lề cấp bậc thư mục (
-
Folder Tree Navigation Drag Handler & Indentation Optimization (
apps/hire_workspace/src/features/folders/):- Tinh chỉnh nút kéo thả (
GripVertical) sang kích thước nhỏ gọn (size-3.5với iconsize-3), chỉ hiển thị khi rê chuột (hover) hoặc focus, loại bỏ hoàn toàn khoảng trống chiếm chỗ khi không hover/disabled. - Thu gọn khoảng cách thụt lề (indent) của các cấp thư mục (
level = 1bắt đầu từ 4px, mỗi cấp con chỉ tăng thêm 10px thay vì 14px + 10px ban đầu) và giảm khoảng cách icon/chevron vềgap-1, giúp tiết kiệm hơn 30px không gian chiều ngang cho tên thư mục trong sidebar. - Mở rộng khung viền nhận diện (drop boundary highlight) khi kéo thả vào thư mục mục tiêu (
zone === 'inside') bao trọn 100% kích thước menu item vớiring-2 ring-primaryvà nềnbg-primary/15. - Bổ sung nút hành động Mở rộng / Thu gọn tất cả (
ChevronsUpDown/ChevronsDownUp) ngay trên dòng “Thư mục gốc”, đồng bộ quản lý trạng thái mở rộng (expandedIds) tập trung.
- Tinh chỉnh nút kéo thả (
-
Stock, Issue, FormX & Membership Tables Toolbar Right-Alignment Polish (
apps/hire_workspace/src/features/):- Stock Assets Table Toolbar (
StockListPage.tsx,StockAssetsSubTab.tsx): Bổ sung ô Tìm kiếm nhanh (theo Tên sản phẩm & mã SKU), Dropdown lọc theo loại sản phẩm (Tất cả loại, Sản phẩm, Quà tặng, Sampling, Khác) và nút “Thêm sản phẩm” cùng nằm trên một hàng canh phải trong propextracủaResponsiveTable. Nút tạo mới luôn hiển thị (không ẩn), tự động disable kèm Tooltip giải thích lý do khi người dùng chưa chọn folder hoặc không đủ quyền IAMstocks/assets:manage. - Issue List Table Toolbar (
IssueListPage.tsx): Tích hợp các Dropdown bộ lọc (Trạng thái, Mức ưu tiên) và nút “Báo cáo sự cố mới” vào cùng một hàng ở góc trên bên phải bảng (propextracủaResponsiveTable), loại bỏ khối Card bộ lọc và nút tạo mới rời rạc (áp dụng cho cả/issuesvà/folders/[id]?tab=issues). - FormX Table Toolbar (
FormxListPage.tsx,FormxListSubTab.tsx): Tích hợp ô Tìm kiếm (Search), Dropdown lọc Folder và nút “Tạo mẫu biểu” cùng nằm trên một hàng ở góc trên bên phải bảng (propextracủaResponsiveTable), loại bỏ khối thanh tìm kiếm rời rạc phía trên bảng. - Membership Tables CTAs & Filters (
MembersTab.tsx,InvitationsTab.tsx,RolesTab.tsx,PermissionsTab.tsx): Canh phải toàn bộ các nút tạo mới (Tạo quyền mới, Tạo vai trò mới, Tạo lời mời) và các dropdown bộ lọc thành viên vào góc trên bên phải màn hình.
- Stock Assets Table Toolbar (
-
Web Dashboard Workspace Selector Header Integration (
apps/hire_workspace/src/shared/components/layout/AppSidebar.tsx,AppHeader.tsx):- Tái cấu trúc bộ chọn Workspace tích hợp trực tiếp vào khối Brand Header của
AppSidebartheo layout: Logo | GIGEE / Workspace Name (Subtitle) | Nút chuyển đổi (ChevronsUpDown). - Hỗ trợ
DropdownMenuchuyển đổi workspace trực tiếp cả ở chế độ expanded lẫn collapsed trên Sidebar. - Loại bỏ dropdown
<Select>workspace cũ khỏiAppHeader, giúp thanh điều hướng trên cùng gọn gàng, thông thoáng và tập trung vào thanh tìm kiếm toàn cục cùng các thao tác hệ thống.
- Tái cấu trúc bộ chọn Workspace tích hợp trực tiếp vào khối Brand Header của
-
Đồng bộ Layout Shell & Theme Customizer theo
next-shadcn-admin-dashboard(apps/hire_workspace):ThemeCustomizerDrawer: Tạo mới component Sheet cho phép người dùng tùy chỉnh trực quan chế độ Sáng/Tối (Light/Dark Mode) và 3 Bảng màu Theme Schemes (Electric Indigo,Emerald Precision,Titan Amber) theo thời gian thực.AppHeader: Tái cấu trúc thanh điều hướng đỉnh trang: Mobile Menu ➔ Workspace Selector ➔ Search Bar Pill (⌘K) ➔ Notification Bell ➔ Theme Customizer Trigger (PaletteIcon) ➔ Light/Dark Switcher ➔ User Avatar Dropdown Menu.AppSidebar: Chuyển nút Thu gọn/Mở rộng Sidebar (ChevronLeft/ChevronRight) lên đỉnh Sidebar Header đặt cạnh Logo thương hiệu GIGEE; chuẩn hóa khốiNavUserở footer hiển thị Avatar, Email và Active Workspace.CommandPalette: Tích hợp danh mục lối tắt điều hướng thực địa, các phím tắt chọn nhanh Theme Color Scheme và chuyển đổi Workspace tức thì bằng bàn phím.MetricCard: Phát triển component hiển thị chỉ số KPI chuẩn v2.5.0 với Trend Delta Badges (tăng/giảm %), icon containersize-9 rounded-lg bg-primary/10, phôngJetBrains Monocho con số.StatusBadge: Cập nhật opacity borders (border-emerald-200/50,border-amber-200/50, v.v.) chuẩn hóa 5 trạng thái nghiệp vụ.DashboardPage: Refine toàn bộ trang tổng quan sử dụngMetricCardvà Recharts semantic colors.