No description
Find a file
2026-11-02 17:16:57 +07:00
agent Handover 02-11-2026 2026-11-02 11:32:44 +07:00
docs Handover 02-11-2026 2026-11-02 11:32:44 +07:00
erp Sync with purchase_v2 main (0e53799) 2026-11-02 17:16:57 +07:00
mock Sync with purchase_v2 main (0e53799) 2026-11-02 17:16:57 +07:00
runbook Sync with purchase_v2 main (0e53799) 2026-11-02 17:16:57 +07:00
ui Sync with purchase_v2 main (0e53799) 2026-11-02 17:16:57 +07:00
.gitignore Handover 02-11-2026 2026-11-02 11:32:44 +07:00
HANDOVER.docx Handover 02-11-2026 2026-11-02 11:32:44 +07:00
README.md Handover 02-11-2026 2026-11-02 11:32:44 +07:00

Mecsu - Quản lý mua hàng (UI)

Giao diện nội bộ cho bộ phận mua hàng. Dữ liệu ERP (đơn hàng, PO, part, SO, nhà cung cấp) lấy qua API /erp/*, hợp đồng ghi trong erp/README.md. Mã ERP nằm trong erp/ (app Next.js riêng gồm mock API đọc CSV ở mock/ và giao diện ERP, chạy npm run dev trong erp/, cổng 4000); app chuyển tiếp /erp/* tới đó, đặt ERP_PROXY_TARGET để chuyển sang ERP thật. Phần còn lại (lô nhập khẩu, nguồn tiền, nhận hàng, leadtime) vẫn đọc CSV mock. Chưa có database. Mã nguồn giao diện nằm trong ui/.

Yêu cầu

  • Node.js 20.9 trở lên
  • npm

Chạy dự án

Chạy trong thư mục ui/:

cd ui
npm install
npm run dev

Mở http://localhost:3000.

npm run dev và npm run build tự chạy sync:mock trước, chép mock/*.csv vào ui/public/mock. Thư mục ui/public/mock do script sinh ra và bị git bỏ qua. Muốn đổi dữ liệu thì sửa file trong mock/, rồi chạy lại npm run dev (hoặc npm run sync:mock).

Các lệnh

Lệnh Tác dụng
npm run dev Chạy dev server
npm run build Build production
npm run start Chạy bản đã build (cần npm run build trước)
npm run sync:mock Chép mock/*.csv vào ui/public/mock
npm run typecheck Kiểm tra kiểu TypeScript
npm run lint ESLint
npm test Vitest (kiểm thử nghiệm thu Nhận hàng và phí)

Lưu ý khi chạy

  • Các thao tác chỉnh sửa (bảng nguồn tiền, lô nhập khẩu, sự cố PO, leadtime, chọn NCC) chỉ lưu trong localStorage của trình duyệt. Xóa dữ liệu trình duyệt thì mất.
  • Nếu đổi tên hoặc thứ tự cột trong CSV, ứng dụng báo lỗi rõ ràng thay vì đọc lệch cột.
  • sync:mock báo lỗi nếu mock/ không có file .csv nào.