# 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 ไม่ต้องเขียนการจัดการพิเศษ


## 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)ในอนาคน

