| .. | ||
| src | ||
| static | ||
| tools | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| Dockerfile | ||
| nodemon.json | ||
| package-lock.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| tsconfig.json | ||
| tsoa.json | ||
| typedoc.json | ||
EDM Backend API
Enterprise Document Management (EDM) ส่วน backend
ส่วนประกอบ
- Node.js (TypeScript) และ Express เป็น Framework สำหรับการพัฒนาหลัก
- pnpm เป็น package manager
- Web API Doc สร้าง Open API Spec ด้วย tsoa
- Library Document ใช้ TypeDoc
- Minio สำหรับเก็บไฟล์ มีการใช้ presign url สำหรับ upload/download ทำให้รองรับโหลดได้มากตามความสามารถของ MiniO
- Keycloak ทำ Single Sign On เพื่อ integrate กับระบบอื่น
- Elasticsearch สำหรับการค้นหาเอกสารภาษาไทย
- Attachment Processor สำหรับดึงข้อความเพื่อทำ Index สำหรับ Elasticsearch
- RabbitMQ ใช้ Bucket Notification ของ MiniO ส่งแจ้งเตือนเมื่อมีเอกสารใหม่จะต้องทำ Index ทำงานเป็น คิวเพื่อทำให้รับโหลดเอกสารได้มากยิ่งขึ้น เอกสารที่ทำผ่าน MiniO ก็จะถูกทำ Index โดยที่ Application ไม่ต้องเขียนการจัดการพิเศษ
การเรียกใช้ผ่าน Service Account
จำเป็นต้องตั้งค่า Keycloak เพื่อให้สามารถขอ Token โดยใช้ Secret Key ที่ได้รับ ผ่านทาง https://edm-id.frappet.synology.me/realms/EDM/protocol/openid-connect/token ดังนี้
สิทธิในจัดการ
การจัดการสามารถตั้งค่าได้โดยใช้ ENV ที่มีชื่อว่า MANAGEMENT_ROLE ให้ตรงกับที่ตั้งค่าใน Keycloak อีกที
Note
- ELK (Elasticsearch+Kibana) ใช้แบบ unsecure อยู่หลัง firewall น่าจะเพียงพอ อาจจะปรับเพิ่มเรื่องความปลอดภัยในอนาคน