fix: tailwind v4 postcss, auth-server session, eslint cleanups
This commit is contained in:
236
README.md
236
README.md
@@ -1,6 +1,103 @@
|
||||
# Document Management Sysytem (dms)
|
||||
|
||||
## บทบาท; คุณคือ Programmer และ Document Engineer ที่เชี่ยวชาญ
|
||||
# 📝 Project Title: ocument Management System (DMS) Web Application
|
||||
|
||||
## Des
|
||||
|
||||
### 📌 1. Project Overview / Description
|
||||
|
||||
- ระบบ Document Management System (DMS)
|
||||
- เป็นเว็บแอปพลิเคชันที่ออกแบบมาเพื่อจัดการเอกสารภายในองค์กรอย่างมีประสิทธิภาพ
|
||||
- โดยมีฟังก์ชันหลักในการอัปโหลด จัดเก็บ ค้นหา แชร์ และควบคุมสิทธิ์การเข้าถึงเอกสาร
|
||||
- ระบบนี้จะช่วยลดการใช้เอกสารกระดาษ เพิ่มความปลอดภัยในการจัดเก็บข้อมูล
|
||||
- และเพิ่มความสะดวกในการทำงานร่วมกันระหว่างทีม
|
||||
|
||||
### 🎯 2. Objectives
|
||||
|
||||
- พัฒนาระบบที่สามารถจัดการเอกสารได้อย่างเป็นระบบ
|
||||
- ลดความซ้ำซ้อนในการจัดเก็บเอกสาร
|
||||
- เพิ่มความปลอดภัยในการเข้าถึงและจัดการเอกสาร
|
||||
- รองรับการทำงานร่วมกันแบบออนไลน์
|
||||
|
||||
### 📦 3. Scope of Work
|
||||
|
||||
ระบบจะครอบคลุมฟีเจอร์หลักดังนี้:
|
||||
|
||||
- การลงทะเบียนและเข้าสู่ระบบผู้ใช้งาน
|
||||
- การอัปโหลดและจัดเก็บเอกสารในรูปแบบต่าง ๆ (PDF, DOCX, XLSX ฯลฯ)
|
||||
- การจัดหมวดหมู่และแท็กเอกสาร
|
||||
- การค้นหาเอกสารด้วยคำสำคัญหรือฟิลเตอร์
|
||||
- การกำหนดสิทธิ์การเข้าถึงเอกสาร (เช่น อ่านอย่างเดียว, แก้ไข, ลบ)
|
||||
- การบันทึกประวัติการใช้งานเอกสาร (Audit Trail)
|
||||
- การแจ้งเตือนเมื่อมีการเปลี่ยนแปลงเอกสาร
|
||||
|
||||
### 🛠️ 4. DMS Architecture Deep Dive (Backend + Frontend)
|
||||
|
||||
#### 4.0)Executive Summary
|
||||
|
||||
- Reverse proxy (Nginx/NPM) เผยแพร่ Frontend (Next.js) และ Backend (Node.js/Express) ผ่าน HTTPS (HSTS)
|
||||
- Backend เชื่อม MariaDB 10.11 (ข้อมูลหลัก DMS) และแยก n8n + Postgres 16 สำหรับ workflow
|
||||
- RBAC/ABAC ถูกบังคับใช้งานใน middleware + มีชุด SQL (tables → triggers → procedures → views → seed)
|
||||
- ไฟล์จริง (PDF/DWG) เก็บนอก webroot ที่ **/share/dms‑data** พร้อมมาตรฐานการตั้งชื่อ+โฟลเดอร์
|
||||
- Dev/Prod แยกชัดเจนผ่าน Docker multi‑stage + docker‑compose + โฟลเดอร์ persist logs/config/certs
|
||||
|
||||
#### 4.1) Runtime Topology & Trust Boundaries
|
||||
|
||||
```
|
||||
Internet Clients (Browser)
|
||||
│ HTTPS 443 (HSTS) [QNAP mgmt = 8443]
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ Reverse Proxy Layer │
|
||||
│ ├─ Nginx (Alpine) or Nginx Proxy Manager (NPM) │
|
||||
│ ├─ TLS (LE cert; SAN multi‑subdomain) │
|
||||
│ └─ Routes: │
|
||||
│ • /, /_next/* → Frontend (Next.js :3000) │
|
||||
│ • /api/* → Backend (Express :3001) │
|
||||
│ • /pma/* → phpMyAdmin │
|
||||
│ • /n8n/* → n8n (Workflows) │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
│ │
|
||||
│ └──────────┐
|
||||
▼ │
|
||||
Frontend (Next.js) │
|
||||
│ Cookie-based Auth (HttpOnly) │
|
||||
▼ ▼
|
||||
Backend (Node/Express ESM) ─────────► MariaDB 10.11
|
||||
│ │
|
||||
└────────────────────────────────────┘
|
||||
Project data (.pdf/.dwg) @ /share/dms-data
|
||||
|
||||
n8n (workflows) ──► Postgres 16 (separate DB for automations)
|
||||
```
|
||||
|
||||
**Trust Boundaries**
|
||||
|
||||
* Public zone: Internet ↔ Reverse proxy
|
||||
* App zone: Reverse proxy ↔ FE/BE containers (internal Docker network)
|
||||
* Data zone: Backend ↔ Databases (MariaDB, Postgres) + `/share/dms-data`
|
||||
|
||||
---
|
||||
- Frontend: Next.js (ESM) / React.js
|
||||
- Backend: Node.js / Laravel
|
||||
- Database: Mariadb / PostgreSQL
|
||||
- Authentication: JWT
|
||||
- xx
|
||||
- Cloud Storage: QNAP
|
||||
|
||||
### 👥 Target Users
|
||||
|
||||
- พนักงานภายในองค์กร
|
||||
- ผู้จัดการฝ่ายเอกสาร
|
||||
- ผู้ดูแลระบบ IT
|
||||
|
||||
### 📈 Expected Outcomes
|
||||
|
||||
- ลดเวลาในการค้นหาเอกสารลงอย่างน้อย 50%
|
||||
- ลดการใช้เอกสารกระดาษในองค์กร
|
||||
- เพิ่มความปลอดภัยในการจัดเก็บข้อมูล
|
||||
- รองรับการทำงานแบบ Remote Work
|
||||
|
||||
## บทบาท: คุณคือ Programmer และ Document Engineer ที่เชี่ยวชาญ
|
||||
|
||||
1. การพัฒนาเว็บแอป (Web Application Development)
|
||||
2. Configuration of Container Station on QNAP
|
||||
@@ -19,7 +116,7 @@
|
||||
15. ภาษา SQL
|
||||
16. RBAC
|
||||
|
||||
## 2. ระบบที่ใช้;
|
||||
## 2. ระบบที่ใช้
|
||||
|
||||
## Server
|
||||
|
||||
@@ -134,3 +231,136 @@ git checkout -b feature/dashboard-update-251004
|
||||
git add frontend/app/dashboard
|
||||
git commit -m "feat(dashboard): เพิ่มส่วนจัดการ user"
|
||||
git push -u origin feature/dashboard-update-251004
|
||||
|
||||
📘 Use Case: Upload Document
|
||||
|
||||
Actor: ผู้ใช้งานทั่วไป (Employee)
|
||||
Description: ผู้ใช้งานสามารถอัปโหลดเอกสารเข้าสู่ระบบเพื่อจัดเก็บและใช้งานในภายหลัง
|
||||
Preconditions: ผู้ใช้งานต้องเข้าสู่ระบบก่อน
|
||||
Main Flow:
|
||||
|
||||
ผู้ใช้งานเลือกเมนู “อัปโหลดเอกสาร”
|
||||
เลือกไฟล์จากเครื่องคอมพิวเตอร์
|
||||
กรอกข้อมูลประกอบ เช่น ชื่อเอกสาร หมวดหมู่ แท็ก
|
||||
กดปุ่ม “อัปโหลด”
|
||||
ระบบบันทึกเอกสารและแสดงผลการอัปโหลดสำเร็จ
|
||||
|
||||
|
||||
Postconditions: เอกสารถูกจัดเก็บในระบบและสามารถค้นหาได้
|
||||
|
||||
## 📘 Use Case:
|
||||
|
||||
### Search Document
|
||||
|
||||
Actor: ผู้ใช้งานทั่วไป
|
||||
Description: ผู้ใช้งานสามารถค้นหาเอกสารจากระบบด้วยคำสำคัญหรือฟิลเตอร์
|
||||
Preconditions: ผู้ใช้งานต้องเข้าสู่ระบบ
|
||||
Main Flow:
|
||||
|
||||
ผู้ใช้งานกรอกคำค้นหรือเลือกฟิลเตอร์ (หมวดหมู่, วันที่, ผู้สร้าง)
|
||||
กดปุ่ม “ค้นหา”
|
||||
ระบบแสดงรายการเอกสารที่ตรงกับเงื่อนไข
|
||||
|
||||
|
||||
Postconditions: ผู้ใช้งานสามารถเปิดดูหรือดาวน์โหลดเอกสารที่ค้นพบได้
|
||||
|
||||
### Share Document
|
||||
|
||||
Actor: ผู้ใช้งานทั่วไป
|
||||
Description: ผู้ใช้งานสามารถแชร์เอกสารให้กับผู้ใช้งานอื่นในระบบ
|
||||
Preconditions: ผู้ใช้งานต้องมีสิทธิ์ในการแชร์เอกสาร
|
||||
Main Flow:
|
||||
|
||||
ผู้ใช้งานเลือกเอกสารที่ต้องการแชร์
|
||||
กดปุ่ม “แชร์”
|
||||
ระบุผู้รับและสิทธิ์การเข้าถึง (อ่าน/แก้ไข)
|
||||
กด “ยืนยัน”
|
||||
ระบบส่งการแจ้งเตือนไปยังผู้รับ
|
||||
|
||||
|
||||
Postconditions: ผู้รับสามารถเข้าถึงเอกสารตามสิทธิ์ที่กำหนด
|
||||
|
||||
### Manage Access Rights
|
||||
|
||||
Actor: ผู้ดูแลระบบ (Admin)
|
||||
Description: ผู้ดูแลระบบสามารถกำหนดสิทธิ์การเข้าถึงเอกสารให้กับผู้ใช้งาน
|
||||
Preconditions: ผู้ดูแลระบบต้องเข้าสู่ระบบ
|
||||
Main Flow:
|
||||
|
||||
ผู้ดูแลระบบเลือกเอกสาร
|
||||
กด “จัดการสิทธิ์”
|
||||
เลือกผู้ใช้งานและกำหนดสิทธิ์ (อ่าน, แก้ไข, ลบ)
|
||||
กด “บันทึก”
|
||||
|
||||
|
||||
Postconditions: สิทธิ์การเข้าถึงเอกสารถูกปรับตามที่กำหนด
|
||||
|
||||
### View Document History
|
||||
|
||||
Actor: ผู้ใช้งานทั่วไป / ผู้ดูแลระบบ
|
||||
Description: ผู้ใช้งานสามารถดูประวัติการใช้งานเอกสาร เช่น การแก้ไข การดาวน์โหลด
|
||||
Preconditions: ผู้ใช้งานต้องมีสิทธิ์เข้าถึงเอกสาร
|
||||
Main Flow:
|
||||
|
||||
ผู้ใช้งานเปิดเอกสาร
|
||||
เลือก “ดูประวัติ”
|
||||
ระบบแสดงรายการกิจกรรมที่เกี่ยวข้องกับเอกสาร
|
||||
|
||||
|
||||
Postconditions: ผู้ใช้งานสามารถตรวจสอบการเปลี่ยนแปลงย้อนหลังได้
|
||||
|
||||
## 🔄Workflow อัตโนมัติในระบบ DMS
|
||||
|
||||
### ✅ ประโยชน์ของ Workflow อัตโนมัติใน DMS
|
||||
|
||||
ลดภาระงานซ้ำ ๆ ของผู้ใช้งาน
|
||||
เพิ่มความปลอดภัยและการควบคุมเอกสาร
|
||||
เพิ่มความเร็วในการดำเนินงาน
|
||||
ลดข้อผิดพลาดจากการทำงานด้วยมือ
|
||||
|
||||
### 🧩 1.Document Approval Workflow
|
||||
|
||||
กรณี: เมื่อมีการอัปโหลดเอกสารที่ต้องได้รับการอนุมัติจากหัวหน้า
|
||||
ขั้นตอนอัตโนมัติ:
|
||||
|
||||
1. ผู้ใช้งานอัปโหลดเอกสารและเลือก “ต้องการอนุมัติ”
|
||||
2. ระบบส่งแจ้งเตือนไปยังผู้อนุมัติ (เช่น หัวหน้าแผนก)
|
||||
3. ผู้อนุมัติสามารถตรวจสอบและกด “อนุมัติ” หรือ “ปฏิเสธ”
|
||||
4. ระบบบันทึกสถานะเอกสารและแจ้งผลกลับไปยังผู้ส่ง
|
||||
|
||||
### 📥 2. Auto Tagging & Categorization
|
||||
|
||||
กรณี: เอกสารที่อัปโหลดมีชื่อหรือเนื้อหาที่ตรงกับหมวดหมู่ที่กำหนดไว้
|
||||
ขั้นตอนอัตโนมัติ:
|
||||
|
||||
เมื่ออัปโหลดเอกสาร ระบบวิเคราะห์ชื่อไฟล์หรือเนื้อหา
|
||||
ระบบกำหนดหมวดหมู่และแท็กให้โดยอัตโนมัติ เช่น “ใบเสนอราคา” → หมวด “การเงิน”
|
||||
ผู้ใช้งานสามารถแก้ไขได้หากต้องการ
|
||||
|
||||
### 🔐 3. Access Control Workflow
|
||||
|
||||
กรณี: เอกสารที่มีความลับสูงต้องจำกัดการเข้าถึง
|
||||
ขั้นตอนอัตโนมัติ:
|
||||
|
||||
เมื่ออัปโหลดเอกสารที่มีคำว่า “ลับ” หรือ “Confidential”
|
||||
ระบบกำหนดสิทธิ์เริ่มต้นให้เฉพาะผู้ใช้งานระดับผู้จัดการขึ้นไป
|
||||
ระบบแจ้งเตือนผู้ดูแลระบบให้ตรวจสอบสิทธิ์เพิ่มเติม
|
||||
|
||||
### 📤 4. Expiry & Archiving Workflow
|
||||
|
||||
กรณี: เอกสารที่มีอายุการใช้งาน เช่น สัญญา หรือใบอนุญาต
|
||||
ขั้นตอนอัตโนมัติ:
|
||||
|
||||
เมื่ออัปโหลดเอกสาร ผู้ใช้งานระบุวันหมดอายุ
|
||||
ระบบแจ้งเตือนก่อนหมดอายุล่วงหน้า เช่น 30 วัน
|
||||
เมื่อถึงวันหมดอายุ ระบบย้ายเอกสารไปยังหมวด “Archive” โดยอัตโนมัติ
|
||||
|
||||
|
||||
### 📊 5. Audit Trail & Notification Workflow
|
||||
|
||||
กรณี: มีการแก้ไขหรือดาวน์โหลดเอกสารสำคัญ
|
||||
ขั้นตอนอัตโนมัติ:
|
||||
|
||||
ทุกการกระทำกับเอกสาร (เปิด, แก้ไข, ลบ) จะถูกบันทึกใน Audit Log
|
||||
หากเอกสารถูกแก้ไขโดยผู้ใช้งานที่ไม่ใช่เจ้าของ ระบบแจ้งเตือนเจ้าของเอกสารทันที
|
||||
|
||||
|
||||
Reference in New Issue
Block a user