25 lines
2.6 KiB
Markdown
25 lines
2.6 KiB
Markdown
# 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 น่าจะเพียงพอ อาจจะ[ปรับเพิ่มเรื่องความปลอดภัย](https://vorapoap.medium.com/%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%97%E0%B8%B5%E0%B9%88-3-%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-security-%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%81%E0%B8%B1%E0%B8%9A-elasticsearch-aa26a71b87ff)ในอนาคน
|
|
|