Hệ thống Quản lý Thiết bị - Vật tư - Lịch Dạy Y Khoa
Dự án đang được triển khai theo lộ trình 8 bước. Đến thời điểm hiện tại, hệ thống đã hoàn thiện các module chính.
| STEP | Nội dung | Trạng thái |
|---|---|---|
| 1 | App Shell & Auth | Hoàn thành |
| 2 | Master Data (Bộ môn, Phòng, Môn học, Khung giờ) | Hoàn thành |
| 3 | Thiết bị & QR Code | Hoàn thành |
| 4 | Vật tư & Tồn kho | Hoàn thành |
| 5 | Lịch giảng dạy & Đăng ký thiết bị/vật tư | Hoàn thành |
| 6 | Giao - Nhận | Hoàn thành |
| 7 | Đề xuất mua sắm | Hoàn thành |
| 8 | Báo cáo & Dashboard | Chưa triển khai |
- Dashboard: Tổng quan hệ thống với các thống kê
- Quản lý Thiết bị: CRUD, QR Code, Log bảo trì/sửa chữa
- Quản lý Vật tư: Tồn kho theo lô, cảnh báo HSD, nhập/xuất kho
- Lịch giảng dạy: View theo tuần, tạo buổi học
- Đăng ký thiết bị/vật tư: Flow đăng ký, kiểm tra xung đột, duyệt/từ chối
- Giao - Nhận: Quản lý giao nhận thiết bị cho buổi học
- Đề xuất mua sắm: Tạo đề xuất, duyệt, theo dõi trạng thái
- Danh mục cơ sở: Bộ môn, Phòng học, Môn học, Khung giờ
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: TailwindCSS + shadcn/ui
- Database: Supabase (PostgreSQL)
- Font: Be Vietnam Pro
- Icons: Lucide React
git clone <repo-url>
cd mededu-equipment
npm installTạo file .env.local:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-keyLưu ý: Nếu chưa có Supabase, có thể dùng placeholder URL để chạy demo mode:
NEXT_PUBLIC_SUPABASE_URL=https://placeholder.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=placeholder-keysupabase db pushHoặc chạy từng file trong thư mục supabase/migrations/:
001_master_data.sql002_devices.sql003_supplies.sql004_schedules_requests.sql
npm run devTruy cập: http://localhost:3000
src/
├── app/
│ ├── dashboard/
│ │ ├── devices/ # Quản lý thiết bị
│ │ ├── supplies/ # Quản lý vật tư
│ │ ├── schedules/ # Lịch giảng dạy
│ │ ├── requests/ # Đăng ký thiết bị/vật tư
│ │ ├── handovers/ # Giao - Nhận
│ │ ├── purchases/ # Đề xuất mua sắm
│ │ └── master/ # Danh mục cơ sở
│ └── login/
├── components/
│ ├── layout/ # Sidebar, Header
│ └── ui/ # shadcn/ui components
├── data/
│ ├── mock-master.ts # Mock data danh mục
│ ├── mock-devices.ts # Mock data thiết bị
│ ├── mock-supplies.ts # Mock data vật tư
│ └── mock-schedules.ts # Mock data lịch & đăng ký
├── lib/
│ ├── supabase/ # Supabase client
│ ├── devices/ # QR utilities
│ └── schedules/ # Queries, mutations, conflict-checker
└── types/
├── master.ts
├── devices.ts
├── supplies.ts
└── schedules.ts
| Trang | URL | Mô tả |
|---|---|---|
| Dashboard | /dashboard |
Tổng quan hệ thống |
| Thiết bị | /dashboard/devices |
Danh sách & CRUD thiết bị |
| Chi tiết thiết bị | /dashboard/devices/[id] |
QR Code, logs |
| Vật tư | /dashboard/supplies |
Tồn kho, nhập/xuất |
| Lịch giảng dạy | /dashboard/schedules |
View tuần, tạo buổi học |
| Đăng ký | /dashboard/requests |
Đăng ký & duyệt TB/VT |
| Giao - Nhận | /dashboard/handovers |
Giao nhận thiết bị |
| Đề xuất mua sắm | /dashboard/purchases |
Tạo & duyệt đề xuất |
| Phòng học | /dashboard/master/rooms |
CRUD phòng |
| Môn học | /dashboard/master/courses |
CRUD môn học |
| Khung giờ | /dashboard/master/time-slots |
CRUD slot giờ |
Khi chưa cấu hình Supabase thực, hệ thống tự động chạy ở Demo Mode:
- Sử dụng mock data có sẵn
- Đầy đủ tính năng UI để preview
- Các thao tác CRUD hoạt động trong session (không lưu DB)
npm run dev # Chạy development server
npm run build # Build production
npm run start # Chạy production server
npm run lint # Kiểm tra linting- STEP 8: Dashboard báo cáo tổng hợp
- Multi-role & phân quyền nâng cao
- Xuất báo cáo PDF/Excel
- Quy trình kiểm kê theo đợt
- Tích hợp Supabase Auth với Google OAuth
Private - Medical Education Equipment Management System