From 9b5a65ce02b6462e6fe4ca094672dac85a3c2b5a Mon Sep 17 00:00:00 2001 From: chamomind Date: Mon, 27 Nov 2023 09:04:47 +0700 Subject: [PATCH] Update Document --- Document/EDM.drawio | 334 ++++++++++++++++++++++++++++++++++++++++++++ Document/Readme.md | 15 +- README.md | 48 ++++--- 3 files changed, 364 insertions(+), 33 deletions(-) create mode 100644 Document/EDM.drawio diff --git a/Document/EDM.drawio b/Document/EDM.drawio new file mode 100644 index 0000000..456b9d3 --- /dev/null +++ b/Document/EDM.drawio @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Document/Readme.md b/Document/Readme.md index f4c5254..b0f1793 100644 --- a/Document/Readme.md +++ b/Document/Readme.md @@ -1,18 +1,5 @@ # Document -เอกสารของโครงการ - -## Requirement - -### ข้อกำหนดเบื้องต้น -- เป็น Stand alone Product ไม่ขึ้นกับโปรเจ็กอื่น -- มี Backend Frontend Document ใน repo เดียว -- Integrate กับโปรเจ็กอื่นๆได้ด้วย Single Sign On -- ถึงจะทำเพื่อลูกค้ารายเดียวแต่ให้ออกแบบให้ใช้ซ้ำได้ Backend คอนฟิกตามลูกค้าแต่ละรายได้ Frontend อาจจะมองเรื่องการเปลี่ยน Theme ไว้ด้วย (เป็นเรื่องรองไว้ทำทีหลังได้) -- ผู้ใช้งานมีสอง Roles - - dm_admin : เป็น role สำหรับจัดการ เพิ่ม ลบ แก้ไขจัดระเบียบ เอกสาร - - login user: บุคคลเข้าระบบได้ไม่ต้องมี role พิเศษใดๆ ค้นหาและดาว์นโหลดเอกสาร - -อ่านเพิ่มเติมที่ไฟล์ [ระบบจัดเก็บข้อมูลผลการประเมินบุคคล (EV3)](./ระบบจัดเก็บข้อมูลผลการประเมินบุคคล%20(EV3).pdf), [db.png](./db.png) +เอกสารของโครงการอ่านเพิ่มเติมที่ไฟล์ [ระบบจัดเก็บข้อมูลผลการประเมินบุคคล (EV3)](./ระบบจัดเก็บข้อมูลผลการประเมินบุคคล%20(EV3).pdf), [db.png](./db.png) ## UI [ดูใน Figma](https://www.figma.com/file/PilhhtvH4jbwwY12WRy74f/eHR?type=design&node-id=6671-3880&mode=design) diff --git a/README.md b/README.md index 47a6916..c53f10a 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,36 @@ # EDM -enterprise document management (EDM) -- [เอกสารโครงการ](./Document/Readme.md) +Enterprise Document Management (EDM) เป็นโปรแกรมสำหรับจัดการข้อมูลเอกสารในองค์กร +การออกแบบทำสำหรับ ระบบจัดเก็บข้อมูลผลการประเมินบุคคล ซึ่งเป็นระบบย่อยของโปรเจ็ก eHR ของกทม แต่จะออกแบบให้สามารถนำกลับมาใช้ซ้ำได้ในโปรเจ็กอื่นๆ และ เป็นสินค้าตัวต่อไป EDM ถือเป็นหนึ่งในโปรแกรมสำหรับจัดการงานในองค์กร เหมือนกัน +[EHR](https://1stcraft.com/what-is-ehr/), +[ERP](https://www.qad.com/th-TH/what-is-erp), +[EAM](https://th.raceku.com/th/eam-enterprise-asset-management/) -## Third party -คิดว่าน่าจะไม่ต้องใช้ฐานข้อมูล traefik dashboard และ Kibana เพิ่มการ login ต่างหาก -- Minio -- Keycloak +## คุณลักษณะปัจจุบัน + +- เป็น Stand alone Product ไม่ขึ้นกับโปรเจ็กอื่น มีทุกอย่างใน Repository เดียวกัน +- ใช้ Object Storage(MiniO) เก็บข้อมูล ใช้ minio presigned url ทั้งอัปโหลดและดาว์นโหลด จาก client โดยตรงลดการทำงานของ Backend รองรับไฟล์ขนาดใหญ่เป็นจำนวนมาก และยังมีความปลอดภัย +- ไม่ใช้ SQL Database ข้อมูลต่างๆใช้จาก MiniO หรือ Elasticsearch เพื่อลดส่วนประกอบของระบบ ต้องการแบบเรียบง่าย +- จัดทำ index เอกสารด้วย Attachment processory ของ Elasticsearch รองรับเอกสารหลายประเภท รองรับภาษาไทยซึ่งเป็นฟีเจอร์สำคัญของระบบ +- Integrate ยูสเซอร์กับโปรเจ็กอื่นๆได้ด้วย Single Sign On ของ Keycloak +- ฟีเจอร์ต่างๆของ MiniO เช่น Version, Quota , metadata อาจจะนำมาใช้ในระบบ +- bucket notification เพื่อทำ index เอกสารภายหลัง อาจจะใช้ webhook หรือ RabbitMQ ทำให้อัปโหลดเอกสารพร้อมๆกันได้โดยไม่มีปัญหากับประสิทธิ์ภาพการทำ Index +- ควรรองรับ multi tenant แบ่งตามแผนกหรือบริษัทต่อหนึ่ง bucket สิทธิ์ในการใช้ แบ่งตาม Role + - login user ค้นหาเอกสารในระบบ อาจจะมี role dm_user เพิ่มเติมเพื่อจัดการเอกสารตัวเอง สามารถสร้างเอกสารส่วนตัวได้ แชร์โฟลเดอร์หรือเอกสาร ให้ยูสเซอร์หรือกลุ่ม ดู group ใน keycloak + - dm_management: รับผิดชอบแต่ละ tenant ผู้ดูแลระบบระดับสูงกว่านั้นไม่ต้องมีเพราะใช้การจัดการ keycloak แทน +- ตามความต้องการของ BMA จะใช้ 1 tenant(default) ผู้ใช้งานมีสอง Role + - dm_management : เป็น role สำหรับจัดการ เพิ่ม ลบ แก้ไขจัดระเบียบ เอกสาร + - login user: บุคคลเข้าระบบได้ไม่ต้องมี role พิเศษใดๆ ค้นหาและดาว์นโหลดเอกสาร + +## คุณลักษณะที่ทำเพิ่มในอนาคต + +อยู่นอกเหนือขอบเขตงานขณะนี้ แต่น่าจะเหมาะกับระบบส่วนอื่นๆ ต้องคุยกับทีมงานก่อน +- ระบบจัดการเอกสารของยูสเซอร์ สามารถใช้แชร์กันได้ +- จัดทำ Site เพื่อใช้ร่วมกันหรือเผยแพร่ +- preview เอกสาร + +## 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)ในอนาคน -- RabbitMQ (อาจจะไม่ได้ใช้) - -## Backend -- Node.js (TypeScript), Express , -- Web API Doc สร้าย Open API Spec ด้วย tsoa -- Share Library Document ใช้ TypeDoc (ถ้ามี) -- Unit test ใช้ vitest (ยังไม่ยืนยัน) - -## Frontend -- Vue (TypeScript) -- Unit test ใช้ vitest -- UI test Cypress/Playwrite/Robot framework ? -- Playbook สำหรับเอกสาร UI Component ## Team