IS207: Bản chụp từ NT106_QuanLyKho tại commit 7499d98, đã bỏ dữ liệu upload và thông tin admin mẫu khỏi bản công khai. Backend hiện vẫn là FastAPI; kế hoạch chuyển sang PHP chưa được triển khai.
Mục tiêu: Ứng dụng quản lý tồn kho hiệu quả với nhập/xuất hàng, tính toán COGS theo FIFO, báo cáo lợi nhuận chính xác và trợ lý AI tích hợp.
- Hệ thống 2 thành phần: Backend FastAPI + Frontend React/Tauri (Desktop + Web Dev Server)
- Xác thực: JWT + OTP email, Passkey cho thao tác nguy hiểm, RBAC (Admin/Manager/Staff)
- Quản lý kho: Sản phẩm, nhà cung cấp, nhiều kho; phiếu nhập/xuất, hủy phiếu, cập nhật tồn
- Báo cáo & FIFO: COGS tự động bằng FIFO, lợi nhuận chính xác, Excel/PDF export
- Tính năng AI: Chatbot Gemini, Chat realtime WebSocket, Upload tệp
- Tìm kiếm: Global search, gợi ý nhanh, tĩnh phục vụ uploads
| STT | Họ và tên | MSSV | Vai trò |
|---|---|---|---|
| 1 | Hoàng Xuân Minh Trí | 24521829 | Fullstack / Leader |
| 2 | Trương Minh Thái | 24521599 | Frontend Dev |
| 3 | Nguyễn Võ Minh Trí | 24521840 | Backend Dev |
| 4 | Nguyễn Văn Nam | 24521120 | Fullstack |
| STT | Họ và tên | MSSV | Vai trò |
|---|---|---|---|
| 1 | Hoàng Xuân Minh Trí | 24521829 | Fullstack / Leader |
| 2 | Lê Hoàng Việt | 23521778 | Backend Dev |
| 3 | Nguyễn Văn Nam | 24521120 | Fullstack |
- Sản phẩm với danh mục, giá mua/bán, hình ảnh
- Nhà cung cấp liên kết với sản phẩm
- Nhiều kho với tồn riêng biệt
- Cảnh báo tồn thấp, tìm kiếm nâng cao
- Phiếu nhập hàng (Purchase Orders)
- Phiếu xuất hàng (Sales Orders)
- Hủy phiếu với log chi tiết
- Cập nhật tồn kho tức thời
- Lịch sử giao dịch đầy đủ
- FIFO Inventory Valuation: Tính COGS tự động bằng FIFO
- Lợi nhuận = Doanh số - COGS (chính xác)
- Export báo cáo Excel/PDF
- Phân tích lợi nhuận theo sản phẩm/kho
- Giá trị tồn kho tính toán FIFO
- JWT token với OTP email
- Passkey cho xóa/hủy
- RBAC 3 cấp: Admin/Manager/Staff
- Lịch sử đăng nhập, hoạt động
- Chatbot Gemini hỗ trợ hướng dẫn sử dụng
- Chat realtime qua WebSocket
- Upload tệp trong chat
- Thông báo tức thời
- Global search toàn hệ thống
- Gợi ý nhanh, autocomplete
- Dark/Light theme, customize chat wallpaper
- Responsive Desktop/Web
NT106_QuanLyKho/
├─ KhoHang_API/ # Backend FastAPI, SQLite/Postgres, AI client
│ ├─ app/ # Mã nguồn chính (auth, inventory, export, chat...)
│ ├─ data/ # Thư mục dữ liệu, uploads (tự tạo nếu chưa có)
│ └─ .env.example # Cấu hình backend mẫu
├─ UI_Desktop/ # Frontend React + Tauri (desktop), Vite + Tailwind
│ ├─ src/ # UI, features, hooks, services
│ ├─ src-tauri/ # Cấu hình Tauri/Rust
│ └─ .env.example # Cấu hình frontend mẫu
├─ start_app.bat # Chạy backend + frontend cùng lúc (Windows)
├─ start_backend.bat # Chạy FastAPI dev server
├─ start_frontend.bat # Chạy Tauri dev
├─ start_client1.bat # Chạy web dev tại port 5173
├─ start_client2.bat # Chạy web dev tại port 5174
└─ README.md
- Python 3.10+ (khuyến nghị 3.11), pip, venv
- Node.js 18+ và npm
- Rust + Cargo (bắt buộc nếu chạy Tauri desktop)
- SMTP (Gmail) cho OTP email; khóa Gemini API cho chatbot (tùy chọn)
- SQLite mặc định; có thể chuyển Postgres qua
DATABASE_URL
Backend: sao chép KhoHang_API/.env.example thành .env và chỉnh:
JWT_SECRET,JWT_ALGORITHM,JWT_EXP_DAYSSMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASS,FROM_EMAILDATABASE_URL(bỏ trống để dùng SQLitedata.dbmặc định)GEMINI_API_KEY(tùy chọn, bật chatbot)
Frontend: sao chép UI_Desktop/.env.example thành .env và chỉnh:
VITE_API_BASE_URL=http://localhost:8000(hoặc URL deployment)
start_app.bat- Tự cài đặt dependencies
- Khởi động Backend FastAPI (port 8000)
- Khởi động Frontend Tauri Desktop
# Terminal 1: Backend
start_backend.bat
# Terminal 2: Frontend
start_frontend.bat# Terminal 1: Backend
start_backend.bat
# Terminal 2: Web Client (port 5173)
start_client1.bat
# Hoặc second client (port 5174)
start_client2.batcd KhoHang_API
# Setup environment
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/Mac
# Install & run
pip install -r requirements.txt
uvicorn app.main:app --reload- API docs: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
cd UI_Desktop
# Install dependencies
npm install
# Desktop (Tauri)
npm run tauri dev
# Hoặc Web Dev Server
npm run dev -- --port 5173 --hostcd KhoHang_API
cp .env.example .env
# Chỉnh sửa:
# - JWT_SECRET, JWT_ALGORITHM, JWT_EXP_DAYS
# - SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, FROM_EMAIL (OTP)
# - DATABASE_URL (SQLite mặc định, hoặc Postgres)
# - GEMINI_API_KEY (AI chatbot - optional)cd UI_Desktop
cp .env.example .env
# Chỉnh sửa:
# - VITE_API_BASE_URL=http://localhost:8000- SQLite (mặc định):
KhoHang_API/data/data.db - PostgreSQL: Đặt
DATABASE_URLtrong.env - Migration tự động khi chạy app
- Đường dẫn:
KhoHang_API/data/uploads/ - Loại: avatars, chat_files, chatbot, logos, rt_files
- Phục vụ tĩnh qua
/uploads/* - Thư mục tạo tự động lần đầu chạy
main: Production readydev: Development branchfeat/<tên-tính-năng>: Feature branches- Tạo PR để merge vào
devtrước
seed_admin.py: Tạo tài khoản Admin thử nghiệm bằng thông tin nhập tương tác; không có mật khẩu mặc địnhreset_database.py: Reset DB (development only)test_inventory_valuation.py: Test FIFO logictest_export.py: Test export Excel/PDFcheck_db_schema.py: Kiểm tra schema DB- Các script migrate schema nếu cần
npm run build: Build productionnpm run preview: Preview buildnpm run lint: Code linting
| Vấn đề | Giải pháp |
|---|---|
ModuleNotFoundError: No module named 'app' |
Chạy từ thư mục KhoHang_API |
CORS error |
Kiểm tra VITE_API_BASE_URL trong .env frontend |
SQLite database is locked |
Đóng terminal khác chạy backend, restart |
Port 8000/5173 already in use |
Đổi port hoặc kill process đang dùng |
Missing .env file |
Copy .env.example → .env |
- Models: Database schemas (Product, Warehouse, StockIn/Out, User, etc)
- Routes: Auth, User, Inventory, Export, Chatbot, Chat realtime
- Services: Inventory valuation (FIFO), Export, Search, AI client
- RBAC: Role-based access control middleware
- Security: JWT, OTP, Passkey validation
- Features: Auth, Dashboard, Items, Stock, Warehouses, Suppliers, Reports
- Components: Layout, Chat, Theme, UI utilities
- State: Zustand stores (auth, chat, notifications, theme)
- Services: API client, WebSocket chat, Authentication
- Themes: Customizable chat wallpapers, dark/light modes
Hệ thống tính COGS (Cost of Goods Sold) theo FIFO:
Nhập 10x @ 100k, nhập 10x @ 150k
Xuất 15x @ 200k
→ COGS = 10×100k + 5×150k = 1,750k
→ Lợi nhuận = (15×200k) - 1,750k = 1,250k ✓
Tất cả báo cáo lợi nhuận đều dựa trên FIFO COGS chính xác.
- Fork dự án
- Tạo nhánh
feat/<tên-tính-năng> - Commit changes với message rõ ràng
- Push & tạo Pull Request
- Chờ review & merge
MIT License - Tự do sử dụng và phân phối
Dự án môn học NT106 - UIT
Ứng dụng Quản lý Nhập Xuất Kho
2025
Ứng dụng Quản lý Nhập Xuất Kho
2025