4.8 KiB
🚀 MONAI MLOps Console Frontend (DDO Console)
Frontend Console สำหรับการจัดการ AI Model Registry, MLOps Pipeline, และการเรียกใช้งาน AI Inference Service
รองรับงาน Medical Imaging โดยเชื่อมต่อกับ Backend หลักที่เป็น Django DRF (Lightweight Gateway/Security)
และระบบ AI inference บน FastAPI/MONAI
💡 สถาปัตยกรรมและเทคโนโลยีหลัก
| องค์ประกอบ | เทคโนโลยี | บทบาท / เหตุผล |
|---|---|---|
| Framework | 🧩 React (Vite) | ความเร็วสูง, Hot Reload, โครงสร้าง Component-Based |
| Styling | 🎨 Tailwind CSS + DaisyUI | Utility-first CSS พร้อมชุด Component ที่สวยงาม |
| Server State / Data Fetching | ⚙️ TanStack Query (React Query) | จัดการ Cache, Loading, Error, และ Data Synchronization |
| Form Handling | 🧠 React Hook Form + Yup | Validation ที่มีประสิทธิภาพ, ลดการ re-render |
| Security Flow | 🔐 JWT (Bearer/Interceptor) | ใช้ axiosClient จัดการ Token, Refresh Token, และ Force Logout |
🧱 โครงสร้างโปรเจกต์ (Clean Architecture)
โปรเจกต์นี้ใช้แนวทาง Clean Architecture + Modularization
เพื่อให้ดูแลและขยายระบบได้ง่ายในระยะยาว
| โฟลเดอร์ | หน้าที่ |
|---|---|
src/routes/ |
กำหนด Routing เช่น AuthRoutes, PrivateRoutes, และ ProtectedRoute |
src/services/ |
เก็บ Hooks สำหรับเรียก API (useModelList, useRunInferenceMutation) และ axiosClient |
src/schemas/ |
เก็บ Yup Schemas สำหรับตรวจสอบข้อมูลจากฟอร์ม |
src/features/ |
เก็บ Redux Slice เช่น authSlice สำหรับจัดการ state ระดับ global |
src/pages/ |
เก็บ Component หลักของแต่ละหน้า เช่น Dashboard, Model Registry |
src/components/ |
Component ที่ใช้ซ้ำได้ เช่น Modal, Table, Input (RHF Adapter) |
🧩 Role-Based Access Control (RBAC)
ระบบมีการควบคุมสิทธิ์ทั้งฝั่ง Backend และ Frontend:
- Backend (Django DRF):
ใช้ Custom Permission Class (IsAdminOrManager) เพื่อจำกัดการเข้าถึง API - Frontend (React):
ใช้ Role จาก JWT เพื่อกรองเมนูในsidebarRoutes.jsx
และควบคุมการเข้าถึงหน้าในMainLayout.jsx
| Role | สิทธิ์ |
|---|---|
admin |
เข้าถึงทุกเมนู และสามารถจัดการผู้ใช้งานได้ |
manager |
เข้าถึงหน้า Model Registry และ Pipeline Management |
viewer |
อ่านข้อมูลเท่านั้น |
⚙️ การติดตั้งและเริ่มต้นใช้งาน
🔧 Prerequisites
- Node.js
v18+ - npm หรือ yarn
🧰 1. ติดตั้ง Dependencies
npm install
⚙️ 2. ตั้งค่า Environment Variables
สร้างไฟล์ .env.local ใน Root Directory และกำหนด Base URL ของ Django DRF API Gateway:
.env.local
VITE_API_BASE_URL=http://localhost:8000
หรือ URL จริงของ API Gateway
🧠 3. รัน Development Server
npm run dev
🌐 แอปจะรันที่ http://localhost:5173
และจะ Redirect ไปที่หน้า Login ทันที เพื่อบังคับยืนยันตัวตนก่อนเข้า Console
🧩 Best Practices & Design Principles
ใช้ Atomic Design Pattern สำหรับการออกแบบ Component
ใช้ TanStack Query DevTools เพื่อ Debug API Cache ได้ง่าย
รองรับการเพิ่ม Theme (ผ่าน DaisyUI Theme Config)
แยก Business Logic ออกจาก UI เพื่อให้ทดสอบได้ง่าย
📘 License
Distributed under the MIT License. See LICENSE for more information.
👨💻 Authors
FlookSP — DDD Project
“Building Trustworthy AI Infrastructure for Medical Data Operations.”