CostDesk

CostDesk đang được xây dựng liên tục.

Mỗi sprint chúng tôi cải thiện sản phẩm dựa trên phản hồi từ người dùng thực tế.

v0.10

Cải thiện hiệu suất, UI & Tabs mới

### Tính năng mới - **Tab Lãi Lỗ (PnL)** — Báo cáo Lãi/Lỗ với cột MTD/YTD/LTD và bộ chọn tháng (dữ liệu giả, chờ backend) - **Tab Giao dịch** — Hiển thị gộp tất cả giao dịch dự án (Doanh thu + PO), có lọc loại và tìm kiếm - **Trạng thái Đã Hủy PO** — Timeline hiện nhánh rẽ đỏ khi PO bị hủy ### Hiệu suất - **Lazy Load Tabs** — Tab Chi phí và Ngân sách chỉ tải dữ liệu khi mở (`?include=cost`), không tải mỗi lần mở dự án - **Cache 5 phút** — Chuyển qua lại tab Chi phí/Ngân sách dùng cache, không gọi API lại - **Bỏ gọi API trùng** — `getProjectCost()` trước đây gọi 2 lần, giờ chỉ 1 lần ### Cải thiện UI - **Table gọn hơn** — Font 14px, chiều cao dòng 48px cho tất cả screens - **Kéo cột dễ hơn** — Vùng click tăng từ 3px lên 12px, chế độ resize mượt hơn - **Chip trạng thái** — Nhỏ gọn hơn (font 12px, cao 22px) cho tất cả screens - **Header bảng** — Canh giữa toàn hệ thống - **PO line items** — Expand row thay popover để xem chi tiết ngay tại chỗ - **Tab Chi phí** — 4 cards chuyển từ header vào tab, tổng dòng cha đệ quy, popover purchase gọn - **Danh sách nhân viên** — Đổi tên cột "Mã", ẩn email cá nhân mặc định ### Locale & Định dạng - **Một nguồn duy nhất** — Toàn bộ cấu hình locale (số, ngày, tiền tệ, điện thoại) đọc từ `countries.json` (25 quốc gia) - **Định dạng điện thoại dynamic** — `formatPhone(phone, countryCode)` thay thế `formatPhoneVN` hardcode - **Swagger docs** — Thêm cho API hủy PO, tham số `include` project detail, sửa lỗi Controller schema ### Sửa lỗi - **Phân trang** — Sửa hook `useStoredLimit` reset trang về 1 mỗi lần render (inline arrow function trong useEffect dependency) - **Vercel build** — Sửa lỗi ESLint `lines-around-comment`, biến không sử dụng - **Testing** — Setup Vitest + React Testing Library (chỉ local, không lên git) - **BE Testing** — Setup database `testing` PostgreSQL, 5 PHPUnit tests pass

v0.9

Sức khoẻ dự án & Pricing page

Ra mắt chỉ số sức khoẻ dự án với 4 trạng thái: Dương, Rủi ro, Thấu chi, Âm. Thêm trang Bảng giá với calculator tính chi phí theo đội ngũ.

v0.8

Doanh thu & Thực thu

Module doanh thu phân biệt earned revenue và collected cash. Theo dõi công nợ phải thu theo từng dự án.

v0.7

Báo cáo Lãi Lỗ tự động

PnL tự động từ chi phí thực tế và doanh thu. Xem theo tháng (MTD) hoặc toàn bộ vòng đời dự án (LTD).