37 KiB
ð Documents Management Sytem Version 1.4.0: Application Requirements Specification
ð 1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ
āļŠāļĢāđāļēāļāđāļ§āđāļāđāļāļāļāļĨāļīāđāļāļāļąāđāļāļŠāļģāļŦāļĢāļąāļāļĢāļ°āļāļāļāļĢāļīāļŦāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāđāļāļĢāļāļāļēāļĢ (Document Management System)āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāđāļĨāļ°āļāļ§āļāļāļļāļĄ āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļ§āļĒāđāļāļāļŠāļēāļĢāļāļĩāđāļāļąāļāļāđāļāļ āļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
- āļĄāļĩāļāļąāļāļāđāļāļąāļāļŦāļĨāļąāļāđāļāļāļēāļĢāļāļąāļāđāļŦāļĨāļ āļāļąāļāđāļāđāļ āļāđāļāļŦāļē āđāļāļĢāđ āđāļĨāļ°āļāļ§āļāļāļļāļĄāļŠāļīāļāļāļīāđāļāļēāļĢāđāļāđāļēāļāļķāļāđāļāļāļŠāļēāļĢ
- āļāđāļ§āļĒāļĨāļāļāļēāļĢāđāļāđāđāļāļāļŠāļēāļĢāļāļĢāļ°āļāļēāļĐ āđāļāļīāđāļĄāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļāļāļēāļĢāļāļąāļāđāļāđāļāļāđāļāļĄāļđāļĨ
- āđāļāļīāđāļĄāļāļ§āļēāļĄāļŠāļ°āļāļ§āļāđāļāļāļēāļĢāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļĢāļ°āļŦāļ§āđāļēāļāļāļāļāļĢāļāđ
ð ïļ 2. āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļĨāļ°āđāļāļāđāļāđāļĨāļĒāļĩ (System Architecture & Technology Stack)
āđāļāđāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļ Headless/API-First āļāļĩāđāļāļąāļāļŠāļĄāļąāļĒ āļāļģāļāļēāļāļāļąāđāļāļŦāļĄāļāļāļ QNAP Server āļāđāļēāļ Container Station āđāļāļ·āđāļāļāļ§āļēāļĄāļŠāļ°āļāļ§āļāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāđāļĨāļ°āļāļģāļĢāļļāļāļĢāļąāļāļĐāļē, Domain: np-dms.work, āļĄāļĩ fix ip, āļĢāļąāļ docker command āđāļ application āļāļāļ Container Station āđāļāđāđāļāļĒāļāļĢāļ, āļāļĢāļ°āļāļāļāļāđāļ§āļĒ
- 2.1. Infrastructure & Environment:
- Server: QNAP (Model: TS-473A, RAM: 32GB, CPU: AMD Ryzen V1500B)
- Containerization: Container Station (Docker & Docker Compose) āđāļāđ UI āļāļāļ Container Station āđāļāđāļāļŦāļĨāļąāļ āđāļāļāļēāļĢ configuration āđāļĨāļ°āļāļēāļĢāļĢāļąāļ docker command
- Development Environment: VS Code on Windows 11
- Domain: np-dms.work, www.np-dms.work
- ip: 159.192.126.103
- Docker Network: āļāļļāļ Service āļāļ°āđāļāļ·āđāļāļĄāļāđāļāļāđāļēāļāđāļāļĢāļ·āļāļāđāļēāļĒāļāļĨāļēāļāļāļ·āđāļ lcbp3 āđāļāļ·āđāļāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāđāļāđ
- Data Storage: /share/dms-data āļāļ QNAP
- āļāđāļāļāļģāļāļąāļ: āđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāđ .env āđāļāļāļēāļĢāļāļģāļŦāļāļāļāļąāļ§āđāļāļĢāļ āļēāļĒāļāļāļāđāļāđ āļāđāļāļāļāļģāļŦāļāļāđāļ docker-compose.yml āđāļāđāļēāļāļąāđāļ
- 2.2. Code Hosting:
- Application name: git
- Service: Gitea (Self-hosted on QNAP)
- Service name: gitea
- Domain: git.np-dms.work
- āļŦāļāđāļēāļāļĩāđ: āđāļāđāļāļĻāļđāļāļĒāđāļāļĨāļēāļāđāļāļāļēāļĢāđāļāđāļāđāļĨāļ°āļāļąāļāļāļēāļĢāđāļ§āļāļĢāđāļāļąāļāļāļāļāđāļāđāļ (Source Code) āļŠāļģāļŦāļĢāļąāļāļāļļāļāļŠāđāļ§āļ
- 2.3. Backend / Data Platform:
- Application name: lcbp3-backend
- Service: NestJS
- Service name: backend
- Domain: backend.np-dms.work
- Framework: NestJS (Node.js, TypeScript, ESM)
- āļŦāļāđāļēāļāļĩāđ: āļāļąāļāļāļēāļĢāđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨ (Data Models), āļŠāļĢāđāļēāļ API, āļāļąāļāļāļēāļĢāļŠāļīāļāļāļīāđāļāļđāđāđāļāđ (Roles & Permissions), āđāļĨāļ°āļŠāļĢāđāļēāļ Workflow āļāļąāđāļāļŦāļĄāļāļāļāļāļĢāļ°āļāļ
- 2.4. Database:
- Application name: lcbp3-db
- Service: mariadb:10.11
- Service name: mariadb
- Domain: db.np-dms.work
- āļŦāļāđāļēāļāļĩāđ: āļāļēāļāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļāļāđāļāļĄāļđāļĨāļāļąāđāļāļŦāļĄāļ
- Tooling: DBeaver (Community Edition), phpmyadmin āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāđāļĨāļ°āļāļąāļāļāļēāļĢāļāļēāļāļāđāļāļĄāļđāļĨ
- 2.5. Database management:
- Application name: lcbp3-db
- Service: phpmyadmin:5-apache
- Service name: pma
- Domain: pma.np-dms.work
- āļŦāļāđāļēāļāļĩāđ: āļāļąāļāļāļēāļĢāļāļēāļāļāđāļāļĄāļđāļĨ mariadb āļāđāļēāļ Web UI
- 2.6. Frontend:
- Application name: lcbp3-frontend
- Service: next.js
- Service name: frontend
- Domain: lcbp3.np-dms.work
- Framework: Next.js (App Router, React, TypeScript, ESM)
- Styling: Tailwind CSS + PostCSS
- Component Library: shadcn/ui
- āļŦāļāđāļēāļāļĩāđ: āļŠāļĢāđāļēāļāļŦāļāđāļēāļāļēāđāļ§āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļŠāļģāļŦāļĢāļąāļāđāļŦāđāļāļđāđāđāļāđāļāļēāļāđāļāđāļēāļĄāļēāļāļđ Dashboard, āļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢ, āđāļĨāļ°āļāļīāļāļāļēāļĄāļāļēāļ āđāļāļĒāļāļ°āļŠāļ·āđāļāļŠāļēāļĢāļāļąāļ Backend āļāđāļēāļ API
- 2.7. Workflow automation:
- Application name: lcbp3-n8n
- Service: n8nio/n8n:latest
- Service name: n8n
- Domain: n8n.np-dms.work
- āļŦāļāđāļēāļāļĩāđ: āļāļąāļāļāļēāļĢ workflow āļĢāļ°āļŦāļ§āđāļēāļ Backend āđāļĨāļ° Line
- 2.8. Reverse Proxy:
- Application name: lcbp3-npm
- Service: Nginx Proxy Manager (nginx-proxy-manage: latest)
- Service name: npm
- Domain: npm.np-dms.work
- āļŦāļāđāļēāļāļĩāđ: āđāļāđāļāļāđāļēāļāļŦāļāđāļēāđāļāļāļēāļĢāļĢāļąāļ-āļŠāđāļāļāđāļāļĄāļđāļĨ āļāļąāļāļāļēāļĢāđāļāđāļĄāļāļāļąāđāļāļŦāļĄāļ, āļāļģāļŦāļāđāļēāļāļĩāđāđāļāđāļ Proxy āļāļĩāđāđāļāļĒāļąāļ Service āļāļĩāđāļāļđāļāļāđāļāļ, āđāļĨāļ°āļāļąāļāļāļēāļĢ SSL Certificate (HTTPS) āđāļŦāđāļāļąāļāđāļāļĄāļąāļāļī
- 2.9. āļāļēāļĢāļāļąāļāļāļēāļĢāļāļĢāļĢāļāļ°āļāļēāļāļāļļāļĢāļāļīāļ (Business Logic Implementation):
- 2.9.1. āļāļĢāļĢāļāļ°āļāļēāļāļāļļāļĢāļāļīāļāļāļĩāđāļāļąāļāļāđāļāļāļāļąāđāļāļŦāļĄāļ (āđāļāđāļ āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļŠāļāļēāļāļ° Workflow [cite: 3.5.4, 3.6.5], āļāļēāļĢāļāļąāļāļāļąāļāđāļāđāļŠāļīāļāļāļīāđ [cite: 4.4], āļāļēāļĢāļāļĢāļ§āļāļŠāļāļ Deadline [cite: 3.2.5]) āļāļ°āļāļđāļāļāļąāļāļāļēāļĢāđāļāļāļąāđāļ Backend (NestJS) [cite: 2.3] āđāļāļ·āđāļāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāļĢāļļāļāļĢāļąāļāļĐāļēāđāļĨāļ°āļāļāļŠāļāļāđāļāđāļāđāļēāļĒ (Testability)
- 2.9.2. āļāļ°āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđ SQL Triggers āđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļĢāļĢāļāļ°āļāđāļāļāđāļĢāđāļ (Hidden Logic) āđāļĨāļ°āļāļ§āļēāļĄāļāļąāļāļāđāļāļāđāļāļāļēāļĢāļāļĩāļāļąāļ
- 2.9.3. āļāđāļāļĒāļāđāļ§āđāļ: āļāļĢāļĢāļāļ°āđāļāļĩāļĒāļ§āļāļĩāđāļāļ°āļāļĒāļđāđāđāļāļāļēāļāļāđāļāļĄāļđāļĨāļāļ·āļ Stored Procedure āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĨāļāļāļĩāđāđāļāļāļŠāļēāļĢ (Document Numbering) [cite: 3.10] āđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāļāđāļģāļāđāļāļāļāļāļāļāđāļāļĄāļđāļĨ (Race Condition)
ðĶ 3. āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāļģāļāļēāļ (Functional Requirements)
- 3.1. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļĢāļāļŠāļĢāđāļēāļāđāļāļĢāļāļāļēāļĢāđāļĨāļ°āļāļāļāđāļāļĢ
- 3.1.1. āđāļāļĢāļāļāļēāļĢ (Projects): āļĢāļ°āļāļāļāđāļāļāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļ āļēāļĒāđāļāļŦāļĨāļēāļĒāđāļāļĢāļāļāļēāļĢāđāļāđ (āļāļąāļāļāļļāļāļąāļāļĄāļĩ 4 āđāļāļĢāļāļāļēāļĢ āđāļĨāļ°āļāļ°āđāļāļīāđāļĄāļāļķāđāļāđāļāļāļāļēāļāļ)
- 3.1.2. āļŠāļąāļāļāļē (Contracts): āļĢāļ°āļāļāļāđāļāļāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļ āļēāļĒāđāļāđāļāđāļĨāļ°āļŠāļąāļāļāļēāđāļāđ āđāļāđāļāđāļĨāļ°āđāļāļĢāļāļāļēāļĢ āļĄāļĩāđāļāđāļŦāļĨāļēāļĒāļŠāļąāļāļāļē āļŦāļĢāļ·āļāļāļĒāđāļēāļāļāđāļāļĒ 1 āļŠāļąāļāļāļē
- 3.1.3. āļāļāļāđāļāļĢ (Organizations):
- āļĄāļĩāļŦāļĨāļēāļĒāļāļāļāđāļāļĢāđāļāđāļāļĢāļāļāļēāļĢ āļāļāļāđāļāļĢāļāđāļāļĩāđāđāļāđāļ Owner, Designer āđāļĨāļ° Consultant āļŠāļēāļĄāļēāļĢāļāļāļĒāļđāđāđāļāļŦāļĨāļēāļĒāđāļāļĢāļāļāļēāļĢāđāļĨāļ°āļŦāļĨāļēāļĒāļŠāļąāļāļāļēāđāļāđ
- Contractor āļāļ°āļāļ·āļ 1 āļŠāļąāļāļāļē āđāļĨāļ°āļāļĒāļđāđāđāļ 1 āđāļāļĢāļāļāļēāļĢāđāļāđāļēāļāļąāđāļ
- 3.2. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāđāļāđāļāļāļ (Correspondence Management)
- 3.2.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āđāļāļāļŠāļēāļĢāđāļāđāļāļāļ (correspondences) āļĢāļ°āļŦāļ§āđāļēāļāļāļāļāļĢāļāļ·-āļāļāļāļĢāļāđ āļ āļēāļĒāđāļ āđāļāļĢāļāļāļēāļĢ (Projects) āđāļĨāļ°āļĢāļ°āļŦāļ§āđāļēāļ āļāļāļāđāļāļĢ-āļāļāļāđāļāļĢ āļ āļēāļĒāļāļāļ āđāļāļĢāļāļāļēāļĢ (Projects), āļĢāļāļāļĢāļąāļ To (āļāļđāđāļĢāļąāļāļŦāļĨāļąāļ) āđāļĨāļ° CC (āļāļđāđāļĢāļąāļāļŠāļģāđāļāļē) āļŦāļĨāļēāļĒāļāļāļāđāļāļĢ
- 3.2.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: āļĢāļ°āļāļāļāđāļāļāļĢāļāļāļĢāļąāļāđāļāļāļŠāļēāļĢāļĢāļđāļāđāļāļ āđāļāļĨāđ PDF āļŦāļĨāļēāļĒāļāļĢāļ°āđāļ āļ (Types) āđāļāđāļ āļāļāļŦāļĄāļēāļĒ (Letter), āļāļĩāđāļĄāļĨāđ (Email), Request for Information (RFI), āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāļāļĢāļ°āđāļ āļāđāļŦāļĄāđāđāļāđāđāļāļ āļēāļĒāļŦāļĨāļąāļ
- 3.2.3. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ (Correspondence):
- āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđ (āđāļāđāļ Document Control) āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢāļĢāļāđāļ§āđāđāļāļŠāļāļēāļāļ° āļāļāļąāļāļĢāđāļēāļ" (Draft) āđāļāđ āļāļķāđāļāļāļđāđāđāļāđāļāļēāļāļāđāļēāļāļāļāļāđāļāļĢāļāļ°āļĄāļāļāđāļĄāđāđāļŦāđāļ
- āđāļĄāļ·āđāļāļāļ "Submitted" āđāļĨāđāļ§ āļāļēāļĢāđāļāđāđāļ, āļāļāļāđāļāļāļŠāļēāļĢāļāļĨāļąāļāđāļāļŠāļāļēāļāļ° Draft, āļŦāļĢāļ·āļāļĒāļāđāļĨāļīāļ (Cancel) āļāļ°āļāđāļāļāļāļģāđāļāļĒāļāļđāđāđāļāđāļĢāļ°āļāļąāļ Admin āļāļķāđāļāđāļ āļāļĢāđāļāļĄāļĢāļ°āļāļļāđāļŦāļāļļāļāļĨ
- 3.2.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ:
- āđāļāļāļŠāļēāļĢāļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļāļķāļ (Reference) āđāļāļāļŠāļēāļĢāļāļāļąāļāļāđāļāļāļŦāļāđāļēāđāļāđāļŦāļĨāļēāļĒāļāļāļąāļ
- āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļ Tag āđāļāđāļŦāļĨāļēāļĒ Tag āđāļāļ·āđāļāļāļąāļāļāļĨāļļāđāļĄāđāļĨāļ°āđāļāđāđāļāļāļēāļĢāļāđāļāļŦāļēāļāļąāđāļāļŠāļđāļ
- 3.2.5. Routings : āļāđāļāļāļĢāļāļāļĢāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāđāļāļāđāļāđāļāļāļŠāļēāļĢ (Routing) āļāļēāļĄāļĨāļģāļāļąāļ āđāļāđāļ
- āļŠāđāļāļāļēāļ Originator -> Organization 1 -> Organization 2 -> Organization 3 āđāļĨāđāļ§āļŠāđāļāļāļĨāļāļĨāļąāļāļāļēāļĄāļĨāļģāļāļąāļāđāļāļīāļĄ (āđāļāļĒāļāđāļē āļāļāļāļĢāļāđāđāļāđāļ Wouting āđāļŦāđāļŠāđāļāļāļĨāļąāļ āļāđāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāļĨāļāļĨāļąāļāļāļēāļĄāļĨāļģāļāļąāļāđāļāļīāļĄāđāļāļĒāđāļĄāđāļāđāļāļāļĢāļāđāļŦāđāļāļķāļ āļāļāļāļĢāļāļ·āđāļāļĨāļģāļāļąāļāļāļąāļāđāļ)
- 3.2.6. āļāļēāļĢāļāļąāļāļāļēāļĢ: āļĄāļĩāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĒāđāļēāļāļāđāļāļĒāļāļąāļāļāļĩāđ
- āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļ§āļąāļāđāļĨāđāļ§āđāļŠāļĢāđāļ (Deadline) āļŠāļģāļŦāļĢāļąāļāļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļāļāļ āļāļāļāļĢāļāđ āļāļĩāđāđāļāđāļāļāļđāđāļĢāļąāļāđāļāđ
- āļĄāļĩāļĢāļ°āļāļāđāļāđāļāđāļāļ·āļāļ āđāļŦāđāļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļāļāļāļāļāļāļĢāļāđāļāļĩāđāđāļāđāļ āļāļđāđāļĢāļąāļ/āļāļđāđāļŠāđāļ āļāļĢāļēāļ āđāļĄāļ·āđāļāļĄāļĩāđāļāļāļŠāļēāļĢāđāļŦāļĄāđ āļŦāļĢāļ·āļāļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļŠāļāļēāļāļ°
- 3.3. āļāļēāļĢāļāļąāļāļāļēāđāļāļāļāļđāđāļŠāļąāļāļāļē (Contract Drawing)
- 3.3.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āđāļāļāļāļđāđāļŠāļąāļāļāļē (Contract Drawing) āđāļāđāđāļāļ·āđāļāļāđāļēāļāļāļīāļāđāļĨāļ°āđāļāđāđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļ
- 3.3.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: āđāļāļĨāđ PDF
- 3.3.3. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ: āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļāđāļāđ
- 3.3.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ: āđāļāđāļŠāļģāļŦāļĢāļąāļāļāđāļēāļāļāļīāļ āđāļ Shop Drawings, āļĄāļĩāļāļēāļĢāļāļąāļāļŦāļĄāļ§āļāļŦāļĄāļđāđāļāļāļ Contract Drawing
- 3.4. āļāļēāļĢāļāļąāļāļāļēāđāļāļāļāđāļāļŠāļĢāđāļēāļ (Shop Drawing)
- 3.4.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āđāļāļāļāđāļāļŠāļĢāđāļēāļ (Shop Drawing) āđāļāđāđāđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļ āđāļāļĒāļāļąāļāļŠāđāļāļāđāļ§āļĒ Request for Approval (RFA)
- 3.4.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: āđāļāļĨāđ PDF
- 3.4.3. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ: āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļāđāļāđ
- 3.4.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ: āļāđāļŠāļģāļŦāļĢāļąāļāļāđāļēāļāļāļīāļ āđāļ Shop Drawings, āļĄāļĩāļāļēāļĢāļāļąāļāļŦāļĄāļ§āļāļŦāļĄāļđāđāļāļāļ Shop Drawings
- 3.5. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļāļāļāļāļļāļĄāļąāļāļī (Request for Approval & Workflow)
- 3.5.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āđāļāļāļŠāļēāļĢāļāļāļāļāļļāļĄāļąāļāļī (Request for Approval) āđāļāđāđāļāļāļēāļĢāļŠāđāļāđāļāļāļŠāļēāļĢāđāļāļīāļāļāļāļāļāļļāļĄāļąāļāļī
- 3.5.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: Request for Approval (RFA) āđāļāđāļāļāļāļīāļāļŦāļāļķāđāļāļāļāļ Correspondence āļāļĩāđāļĄāļĩāļĨāļąāļāļĐāļāļ°āđāļāļāļēāļ°āļāļĩāđāļāđāļāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļāļļāļĄāļąāļāļī āļĄāļĩāļāļĢāļ°āđāļ āļāļāļąāļāļāļĩāđ:
- Request for Drawing Approval (RFA_DWG)
- Request for Document Approval (RFA_DOC)
- Request for Method statement Approval (RFA_MES)
- Request for Material Approval (RFA_MAT)
- 3.5.2. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ: āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļāđāļāđ
- 3.5.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ: āļāļēāļĢāļāļąāļāļāļēāļĢ Drawing (RFA_DWG):
- āđāļāļāļŠāļēāļĢ RFA_DWG āļāļ°āļāļĢāļ°āļāļāļāđāļāļāđāļ§āļĒ Shop Drawing (shop_drawings) āļŦāļĨāļēāļĒāđāļāđāļ āļāļķāđāļāđāļāđāļĨāļ°āđāļāđāļāļĄāļĩ Revision āļāļāļāļāļąāļ§āđāļāļ
- Shop Drawing āđāļāđāļĨāļ° Revision āļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļāļīāļāļāļķāļ Contract Drawing (Ccontract_drawings) āļŦāļĨāļēāļĒāđāļāđāļ āļŦāļĢāļ·āļāđāļĄāđāļāđāļēāļāļāļķāļāļāđāđāļāđ
- āļĢāļ°āļāļāļāđāļāļāļĄāļĩāļŠāđāļ§āļāļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨ Master Data āļāļāļāļāļąāđāļ Shop Drawing āđāļĨāļ° Contract Drawing āđāļĒāļāļāļēāļāļāļąāļ
- 3.6.5. Workflow āļāļēāļĢāļāļāļļāļĄāļąāļāļī: āļāđāļāļāļĢāļāļāļĢāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļāļļāļĄāļąāļāļīāļāļĩāđāļāļąāļāļāđāļāļāđāļĨāļ°āđāļāđāļāļĨāļģāļāļąāļ āđāļāđāļ
- āļŠāđāļāļāļēāļ Originator -> Organization 1 -> Organization 2 -> Organization 3 āđāļĨāđāļ§āļŠāđāļāļāļĨāļāļĨāļąāļāļāļēāļĄāļĨāļģāļāļąāļāđāļāļīāļĄ (āđāļāļĒāļāđāļē āļāļāļāļĢāļāđāđāļāđāļ Workflow āđāļŦāđāļŠāđāļāļāļĨāļąāļ āļāđāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāļĨāļāļĨāļąāļāļāļēāļĄāļĨāļģāļāļąāļāđāļāļīāļĄāđāļāļĒāđāļĄāđāļāđāļāļāļĢāļāđāļŦāđāļāļķāļ āļāļāļāļĢāļāļ·āđāļāļĨāļģāļāļąāļāļāļąāļāđāļ)
- 3.6.6. āļāļēāļĢāļāļąāļāļāļēāļĢ: āļĄāļĩāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĒāđāļēāļāļāđāļāļĒāļāļąāļāļāļĩāđ
- āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļ§āļąāļāđāļĨāđāļ§āđāļŠāļĢāđāļ (Deadline) āļŠāļģāļŦāļĢāļąāļāļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļāļāļ āļāļāļāļĢāļāđ āļāļĩāđāļāļĒāļđāđāđāļ Workflow āđāļāđ
- āļĄāļĩāļĢāļ°āļāļāđāļāđāļāđāļāļ·āļāļ āđāļŦāđāļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļāļāļ āļāļāļāļĢāļāđ āļāļĩāđāļāļĒāļđāđāđāļ Workflow āļāļĢāļēāļ āđāļĄāļ·āđāļāļĄāļĩ RFA āđāļŦāļĄāđ āļŦāļĢāļ·āļāļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļŠāļāļēāļāļ°
- 3.6.āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļāļģāļŠāđāļ (Transmittals)
- 3.6.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āđāļāļāļŠāļēāļĢāļāļģāļŠāđāļ āđāļāđāļŠāļģāļŦāļĢāļąāļ āļāļģāļŠāđāļ Request for Approval (RFAS) āļŦāļĨāļēāļĒāļāļāļąāļ āđāļāļĒāļąāļāļāļāļāđāļāļĢāļāļ·āđāļ
- 3.6.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: āđāļāļĨāđ PDF
- 3.6.3. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ: āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļāđāļāđ
- 3.6.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ: āđāļāļāļŠāļēāļĢāļāļģāļŠāđāļ āđāļāđāļāļŠāđāļ§āļāļŦāļāļķāđāļāđāļ Correspondence
- 3.7. āđāļāđāļ§āļĩāļĒāļāđāļāļāļŠāļēāļĢ (Circulation Sheet)
- 3.7.1. āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđ: āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢ āđāļāļāļŠāļēāļĢ (Correspondence) āļāļļāļāļāļāļąāļ āļāļ°āļĄāļĩāđāļāđāļ§āļĩāļĒāļāđāļāļāļŠāļēāļĢāđāļāļ·āđāļāļāļ§āļāļāļļāļĄāđāļĨāļ°āļĄāļāļāļŦāļĄāļēāļĒāļāļēāļāļ āļēāļĒāđāļāļāļāļāđāļāļĢ (āļŠāļēāļĄāļēāļĢāļāļāļđāđāļĨāļ°āđāļāđāđāļāđāļāđāđāļāļāļēāļ°āļāļāđāļāļāļāļāđāļāļĢ)
- 3.7.2. āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ: āđāļāļĨāđ PDF
- 3.7.3. āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢ: āļāļđāđāđāļāđāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđāđāļāļāļāļāđāļāļĢāļāļąāđāļ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļāđāļāđ
- 3.7.4. āļāļēāļĢāļāđāļēāļāļāļīāļāđāļĨāļ°āļāļąāļāļāļĨāļļāđāļĄ: āļāļēāļĢāļĢāļ°āļāļļāļāļđāđāļĢāļąāļāļāļīāļāļāļāļ:
- āļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļŦāļĨāļąāļ (Main): āļĄāļĩāđāļāđāļŦāļĨāļēāļĒāļāļ
- āļāļđāđāļĢāđāļ§āļĄāļāļāļīāļāļąāļāļīāļāļēāļ (Action): āļĄāļĩāđāļāđāļŦāļĨāļēāļĒāļāļ
- āļāļđāđāļāļĩāđāļāđāļāļāļĢāļąāļāļāļĢāļēāļ (Information): āļĄāļĩāđāļāđāļŦāļĨāļēāļĒāļāļ
- 3.7.5. āļāļēāļĢāļāļīāļāļāļēāļĄāļāļēāļ:
- āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļ§āļąāļāđāļĨāđāļ§āđāļŠāļĢāđāļ (Deadline) āļŠāļģāļŦāļĢāļąāļāļāļđāđāļĢāļąāļāļāļīāļāļāļāļāļāļĢāļ°āđāļ āļ Main āđāļĨāļ° Action āđāļāđ
- āļĄāļĩāļĢāļ°āļāļāđāļāđāļāđāļāļ·āļāļāđāļĄāļ·āđāļāļĄāļĩ Circulation āđāļŦāļĄāđ āđāļĨāļ°āđāļāđāļāđāļāļ·āļāļāļĨāđāļ§āļāļŦāļāđāļēāļāđāļāļāļāļķāļāļ§āļąāļāđāļĨāđāļ§āđāļŠāļĢāđāļ
- āļŠāļēāļĄāļēāļĢāļāļāļīāļ Circulation āđāļāđāđāļĄāļ·āđāļāļāļģāđāļāļīāļāļāļēāļĢāļāļāļāļāļĨāļąāļāđāļāļĒāļąāļāļāļāļāđāļāļĢāļāļđāđāļŠāđāļ (Originator) āđāļĨāđāļ§ āļŦāļĢāļ·āļ āļĢāļąāļāļāļĢāļēāļāđāļĨāđāļ§ (For Information)
- 3.8. āļāļĢāļ°āļ§āļąāļāļīāļāļēāļĢāđāļāđāđāļ (Revisions): āļĢāļ°āļāļāļāļ°āđāļāđāļāļāļĢāļ°āļ§āļąāļāļīāļāļēāļĢāļŠāļĢāđāļēāļāđāļĨāļ°āđāļāđāđāļ āđāļāļāļŠāļēāļĢāļāļąāđāļāļŦāļĄāļ
- 3.9. āļāļēāļĢāļāļąāļāđāļāđāļ: (āļāļĢāļąāļāļāļĢāļļāļāļāļēāļĄāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļŦāļĄāđ)
- āđāļāļāļŠāļēāļĢāđāļĨāļ°āđāļāļĨāđāđāļāļāļāļąāđāļāļŦāļĄāļāļāļ°āļāļđāļāļāļąāļāđāļāđāļāđāļāđāļāļĨāđāļāļāļĢāđāļāļ Server (/share/dms-data/) [cite: 2.1]
- āļāđāļāļĄāļđāļĨ Metadata āļāļāļāđāļāļĨāđ (āđāļāđāļ āļāļ·āđāļāđāļāļĨāđ, āļāļāļēāļ, path) āļāļ°āļāļđāļāđāļāđāļāđāļāļāļēāļĢāļēāļ attachments (āļāļēāļĢāļēāļāļāļĨāļēāļ)
- āđāļāļĨāđāļāļ°āļāļđāļāđāļāļ·āđāļāļĄāđāļĒāļāļāļąāļāđāļāļāļŠāļēāļĢāļāļĢāļ°āđāļ āļāļāđāļēāļāđ āļāđāļēāļāļāļēāļĢāļēāļāđāļāļ·āđāļāļĄ (Junction tables) āđāļāđāļ correspondence_attachments, circulation_attachments, shop_drawing_revision_attachments ,āđāļĨāļ° contracy_drawing_attachments
- āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļāļĢāļ§āļĄāļĻāļđāļāļĒāđāļāļĩāđ āđāļāļāļāļĩāđ āđāļāļ§āļāļīāļāđāļāļīāļĄāļāļĩāđāļāļ°āđāļĒāļāđāļāļĨāđāļāļāļĢāđāļāļēāļĄāļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ āđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļĒāļēāļĒāļĢāļ°āļāļāļāļĩāđāļāļĩāļāļ§āđāļē
- 3.10. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļĨāļāļāļĩāđāđāļāļāļŠāļēāļĢ (Document Numbering):
- 3.10.1. āļĢāļ°āļāļāļāđāļāļāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāđāļĨāļāļāļĩāđāđāļāļāļŠāļēāļĢ (āđāļāđāļ correspondence_number) āđāļāđāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļī
- 3.10.2. āļāļēāļĢāļāļąāļāđāļĨāļ Running Number (SEQ) āļāļ°āļāđāļāļāļāļąāļāđāļĒāļāļāļēāļĄ Key āļāļąāļāļāļĩāđ: āđāļāļĢāļāļāļēāļĢ (Project), āļāļāļāđāļāļĢāļāļđāđāļŠāđāļ (Originator Organization), āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ (Document Type) āđāļĨāļ° āļāļĩāļāļąāļāļāļļāļāļąāļ (Year)
- 3.10.3. āļāļđāđāļāļđāđāļĨāļĢāļ°āļāļ (Admin) āļāđāļāļāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļ "āļĢāļđāļāđāļāļ" (Format Template) āļāļāļāđāļĨāļāļāļĩāđāđāļāļāļŠāļēāļĢāđāļāđ (āđāļāđāļ {ORG_CODE}-{TYPE_CODE}-{YEAR_SHORT}-{SEQ:4}) āđāļāļĒāļāļģāļŦāļāļāđāļĒāļāļāļēāļĄāđāļāļĢāļāļāļēāļĢāđāļĨāļ°āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ
ð 4. āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļŠāļīāļāļāļīāđāđāļĨāļ°āļāļēāļĢāđāļāđāļēāļāļķāļ (Access Control Requirements)
-
4.1. āļ āļēāļāļĢāļ§āļĄ: āļāļđāđāđāļāđāđāļĨāļ°āļāļāļāđāļāļĢāļŠāļēāļĄāļēāļĢāļāļāļđāđāļĨāļ°āđāļāđāđāļāđāļāļāļŠāļēāļĢāđāļāđāļāļēāļĄāļŠāļīāļāļāļīāđāļāļĩāđāđāļāđāļĢāļąāļ āđāļāļĒāļĢāļ°āļāļāļŠāļīāļāļāļīāđāļāļ°āđāļāđāļāđāļāļ Role-Based Access Control (RBAC)
-
4.2. āļĨāļģāļāļąāļāļāļąāđāļāļāļāļāļŠāļīāļāļāļīāđ (Permission Hierarchy)
- Global: āļŠāļīāļāļāļīāđāļŠāļđāļāļŠāļļāļāļāļāļāļĢāļ°āļāļ
- Organization: āļŠāļīāļāļāļīāđāļ āļēāļĒāđāļāļāļāļāđāļāļĢ āđāļāđāļāļŠāļīāļāļāļīāđāļāļ·āđāļāļāļēāļāļāļāļāļāļđāđāđāļāđ
- Project: āļŠāļīāļāļāļīāđāđāļāļāļēāļ°āđāļāđāļāļĢāļāļāļēāļĢ āļāļ°āļāļđāļāļāļīāļāļēāļĢāļāļēāđāļĄāļ·āđāļāļāļđāđāđāļāđāļāļĒāļđāđāđāļāđāļāļĢāļāļāļēāļĢāļāļąāđāļ
- Contract: āļŠāļīāļāļāļīāđāđāļāļāļēāļ°āđāļāļŠāļąāļāļāļē āļāļ°āļāļđāļāļāļīāļāļēāļĢāļāļēāđāļĄāļ·āđāļāļāļđāđāđāļāđāļāļĒāļđāđāđāļāļŠāļąāļāļāļēāļāļąāđāļ (āļŠāļąāļāļāļēāđāļāđāļāļŠāđāļ§āļāļŦāļāļķāđāļāļāļāļāđāļāļĢāļāļāļēāļĢ)
āļāļāļāļēāļĢāļāļąāļāļāļąāļāđāļāđ: āđāļĄāļ·āđāļāļāļĢāļ§āļāļŠāļāļāļŠāļīāļāļāļīāđ āļĢāļ°āļāļāļāļ°āļāļīāļāļēāļĢāļāļēāļŠāļīāļāļāļīāđāļāļēāļāļāļļāļāļĢāļ°āļāļąāļāļāļĩāđāļāļđāđāđāļāđāļĄāļĩ āđāļĨāļ°āđāļāđ āļŠāļīāļāļāļīāđāļāļĩāđāļĄāļēāļāļāļĩāđāļŠāļļāļ (Most Permissive) āđāļāđāļāļāļąāļ§āļāļąāļāļŠāļīāļ
āļāļąāļ§āļāļĒāđāļēāļ: āļāļđāđāđāļāđ A āđāļāđāļ Viewer āđāļāļāļāļāđāļāļĢ āđāļāđāļāļđāļāļĄāļāļāļŦāļĄāļēāļĒāđāļāđāļ Editor āđāļāđāļāļĢāļāļāļēāļĢ X āđāļĄāļ·āđāļāļāļĒāļđāđāđāļāđāļāļĢāļāļāļēāļĢ X āļāļđāđāđāļāđ A āļāļ°āļĄāļĩāļŠāļīāļāļāļīāđāđāļāđāđāļāđāļāđ
-
4.3. āļāļēāļĢāļāļģāļŦāļāļāļāļāļāļēāļ (Roles) āđāļĨāļ°āļāļāļāđāļāļ (Scope)
| āļāļāļāļēāļ (Role) | āļāļāļāđāļāļ (Scope) | āļāļģāļāļāļīāļāļēāļĒ | āļŠāļīāļāļāļīāđāļŦāļĨāļąāļ (Key Permissions) |
|---|---|---|---|
| Superadmin | Global | āļāļđāđāļāļđāđāļĨāļĢāļ°āļāļāļŠāļđāļāļŠāļļāļ | āļāļģāļāļļāļāļāļĒāđāļēāļāđāļāļĢāļ°āļāļ, āļāļąāļāļāļēāļĢāļāļāļāđāļāļĢ, āļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļĢāļ°āļāļąāļ Global |
| Org Admin | Organization | āļāļđāđāļāļđāđāļĨāļāļāļāđāļāļĢ | āļāļąāļāļāļēāļĢāļāļđāđāđāļāđāđāļāļāļāļāđāļāļĢ, āļāļąāļāļāļēāļĢāļāļāļāļēāļ/āļŠāļīāļāļāļīāđāļ āļēāļĒāđāļāļāļāļāđāļāļĢ, āļāļđāļĢāļēāļĒāļāļēāļāļāļāļāļāļāļāđāļāļĢ |
| Document Control | Organization | āļāļ§āļāļāļļāļĄāđāļāļāļŠāļēāļĢāļāļāļāļāļāļāđāļāļĢ | āđāļāļīāđāļĄ/āđāļāđāđāļ/āļĨāļāđāļāļāļŠāļēāļĢ, āļāļģāļŦāļāļāļŠāļīāļāļāļīāđāđāļāļāļŠāļēāļĢāļ āļēāļĒāđāļāļāļāļāđāļāļĢ |
| Editor | Organization | āļāļđāđāđāļāđāđāļāđāļāļāļŠāļēāļĢāļāļāļāļāļāļāđāļāļĢ | āđāļāļīāđāļĄ/āđāļāđāđāļāđāļāļāļŠāļēāļĢāļāļĩāđāđāļāđāļĢāļąāļāļĄāļāļāļŦāļĄāļēāļĒ |
| Viewer | Organization | āļāļđāđāļāļđāđāļāļāļŠāļēāļĢāļāļāļāļāļāļāđāļāļĢ | āļāļđāđāļāļāļŠāļēāļĢāļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđāđāļāđāļēāļāļķāļ |
| Project Manager | Project | āļāļđāđāļāļąāļāļāļēāļĢāđāļāļĢāļāļāļēāļĢ | āļāļąāļāļāļēāļĢāļŠāļĄāļēāļāļīāļāđāļāđāļāļĢāļāļāļēāļĢ (āđāļāļīāđāļĄ/āļĨāļ/āļĄāļāļāļāļāļāļēāļ), āļŠāļĢāđāļēāļ/āļāļąāļāļāļēāļĢāļŠāļąāļāļāļēāđāļāđāļāļĢāļāļāļēāļĢ, āļāļđāļĢāļēāļĒāļāļēāļāđāļāļĢāļāļāļēāļĢ |
| Contract Admin | Contract | āļāļđāđāļāļđāđāļĨāļŠāļąāļāļāļē | āļāļąāļāļāļēāļĢāļŠāļĄāļēāļāļīāļāđāļāļŠāļąāļāļāļē, āļŠāļĢāđāļēāļ/āļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāđāļāļāļēāļ°āļŠāļąāļāļāļē (āļāđāļēāļĄāļĩ), āļāļāļļāļĄāļąāļāļīāđāļāļāļŠāļēāļĢāđāļāļŠāļąāļāļāļē |
-
4.4. āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĢāļīāđāļĄāļāđāļāđāļāđāļāļēāļ (Onboarding Workflow) āļāļĩāđāļŠāļĄāļāļđāļĢāļāđ
-
4.1. āļŠāļĢāđāļēāļāļāļāļāđāļāļĢ (Organization)
- Superadmin āļŠāļĢāđāļēāļāļāļāļāđāļāļĢāđāļŦāļĄāđ (āđāļāđāļ āļāļĢāļīāļĐāļąāļ A)
- Superadmin āđāļāđāļāļāļąāđāļāļāļđāđāđāļāđāļāļĒāđāļēāļāļāđāļāļĒ 1 āļāļāđāļŦāđāđāļāđāļ Org Admin āļŦāļĢāļ·āļ Document Control āļāļāļāļāļĢāļīāļĐāļąāļ A
-
4.2. āđāļāļīāđāļĄāļāļđāđāđāļāđāđāļāļāļāļāđāļāļĢ
- Org Admin āļāļāļāļāļĢāļīāļĐāļąāļ A āđāļāļīāđāļĄāļāļđāđāđāļāđāļāļ·āđāļāđ (Editor, Viewer) āđāļāđāļēāļĄāļēāđāļāļāļāļāđāļāļĢāļāļāļāļāļ
-
4.3. āļĄāļāļāļŦāļĄāļēāļĒāļāļđāđāđāļāđāđāļŦāđāļāļąāļāđāļāļĢāļāļāļēāļĢ (Project)
- Project Manager āļāļāļāđāļāļĢāļāļāļēāļĢ X (āļāļķāđāļāļāļēāļāļĄāļēāļāļēāļāļāļĢāļīāļĐāļąāļ A āļŦāļĢāļ·āļāļāļĢāļīāļĐāļąāļāļāļ·āđāļ) āļāļģāļāļēāļĢ "āđāļāļīāļ" āļŦāļĢāļ·āļ "āļĄāļāļāļŦāļĄāļēāļĒ" āļāļđāđāđāļāđāļāļēāļāļāļāļāđāļāļĢāļāđāļēāļāđ āļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāđāļāđāļēāļĄāļēāđāļāđāļāļĢāļāļāļēāļĢ X
- āđāļāļāļąāđāļāļāļāļāļāļĩāđ Project Manager āļāļ°āļāļģāļŦāļāļ āļāļāļāļēāļāļĢāļ°āļāļąāļāđāļāļĢāļāļāļēāļĢ (āđāļāđāļ Project Member, āļŦāļĢāļ·āļāļāļēāļāđāļĄāđāļĄāļĩāļāļāļāļēāļāļāļīāđāļĻāļĐ āđāļŦāđāđāļāđāļŠāļīāļāļāļīāđāļāļēāļāļĢāļ°āļāļąāļāļāļāļāđāļāļĢāđāļāļāđāļāļ)
-
4.4. āđāļĄāļāļāļŦāļĄāļēāļĒāļāļđāđāđāļāđāđāļŦāđāļāļąāļāļŠāļąāļāļāļē (Contract)
- Contract Admin āļāļāļāļŠāļąāļāļāļē Y (āļāļķāđāļāđāļāđāļāļŠāđāļ§āļāļŦāļāļķāđāļāļāļāļāđāļāļĢāļāļāļēāļĢ X) āļāļģāļāļēāļĢāđāļĨāļ·āļāļāļāļđāđāđāļāđāļāļĩāđāļāļĒāļđāđāđāļāđāļāļĢāļāļāļēāļĢ X āđāļĨāđāļ§ āļĄāļāļāļŦāļĄāļēāļĒāđāļŦāđāđāļāđāļēāļĄāļēāđāļāļŠāļąāļāļāļē Y
- āđāļāļāļąāđāļāļāļāļāļāļĩāđ Contract Admin āļāļ°āļāļģāļŦāļāļ āļāļāļāļēāļāļĢāļ°āļāļąāļāļŠāļąāļāļāļē (āđāļāđāļ Contract Member) āđāļĨāļ°āļŠāļīāļāļāļīāđāđāļāļāļēāļ°āļāļĩāđāļāļģāđāļāđāļ
-
-
4.5. āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļ (Master Data Management) āļāļĩāđāđāļāđāļāļāļēāļĄāļĢāļ°āļāļąāļ
| āļāđāļāļĄāļđāļĨāļŦāļĨāļąāļ | āļāļđāđāļĄāļĩāļŠāļīāļāļāļīāđāļāļąāļāļāļēāļĢ | āļĢāļ°āļāļąāļ |
|---|---|---|
| āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ (Correspondence, RFA) | Superadmin | Global |
| āļŠāļāļēāļāļ°āđāļāļāļŠāļēāļĢ (Draft, Approved, etc.) | Superadmin | Global |
| āļŦāļĄāļ§āļāļŦāļĄāļđāđāđāļāļ (Shop Drawing) | Project Manager | Project (āļŠāļĢāđāļēāļāđāļŦāļĄāđāđāļāđāļ āļēāļĒāđāļāđāļāļĢāļāļāļēāļĢ) |
| Tags | Org Admin / Project Manager | Organization / Project |
| āļāļāļāļēāļāđāļĨāļ°āļŠāļīāļāļāļīāđ (Custom Roles) | Superadmin / Org Admin | Global / Organization |
ðĨ 5. āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļāļđāđāđāļāđāļāļēāļ (User Interface & Experience)
- 5.1. Layout āļŦāļĨāļąāļ: āļŦāļāđāļēāđāļ§āđāļāđāļāđāļĢāļđāļāđāļāļ App Shell āļāļĩāđāļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
- Navbar (āļŠāđāļ§āļāļāļ): āđāļŠāļāļāļāļ·āđāļāļĢāļ°āļāļ, āđāļĄāļāļđāļāļđāđāđāļāđ (Profile), āđāļĄāļāļđāļŠāļģāļŦāļĢāļąāļ Document Control/āđāļĄāļāļđāļŠāļģāļŦāļĢāļąāļ Admin/Superadmin (āļāļąāļāļāļēāļĢāļāļđāđāđāļāđ, āļāļąāļāļāļēāļĢāļŠāļīāļāļāļīāđ), āđāļĨāļ°āļāļļāđāļĄ Login/Logout
- Sidebar (āļāđāļēāļāļāđāļēāļ): āđāļāđāļāđāļĄāļāļđāļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļēāļāļķāļāļŠāđāļ§āļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāļąāļāđāļāļāļŠāļēāļĢāļāļąāđāļāļŦāļĄāļ āđāļāđāļ Dashboard, Correspondences, RFA, Drawings
- Main Content Area: āļāļ·āđāļāļāļĩāđāļŠāļģāļŦāļĢāļąāļāđāļŠāļāļāđāļāļ·āđāļāļŦāļēāļŦāļĨāļąāļāļāļāļāļŦāļāđāļēāļāļĩāđāđāļĨāļ·āļāļ
- 5.2. āļŦāļāđāļē Landing Page: āđāļāđāļāļŦāļāđāļēāđāļĢāļāļāļĩāđāđāļŠāļāļāļāđāļāļĄāļđāļĨāļāļēāļāļŠāđāļ§āļāļāļāļāđāļāļĢāļāļāļēāļĢāļŠāļģāļŦāļĢāļąāļāļāļđāđāđāļāđāļāļĩāđāļĒāļąāļāđāļĄāđāđāļāđāļĨāđāļāļāļāļīāļ
- 5.3. āļŦāļāđāļē Dashboard: āđāļāđāļāļŦāļāđāļēāđāļĢāļāļŦāļĨāļąāļāļāļēāļāļĨāđāļāļāļāļīāļ āļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
- āļāļēāļĢāđāļāļŠāļĢāļļāļāļ āļēāļāļĢāļ§āļĄ (KPI Cards): āđāļŠāļāļāļāđāļāļĄāļđāļĨāļŠāļĢāļļāļāļāļĩāđāļŠāļģāļāļąāļāļāļāļāļāļāļāđāļāļĢ āđāļāđāļ āļāļģāļāļ§āļāđāļāļāļŠāļēāļĢ, āļāļēāļāļāļĩāđāđāļāļīāļāļāļģāļŦāļāļ
- āļāļēāļĢāļēāļ "āļāļēāļāļāļāļāļāļąāļ" (My Tasks Table): āđāļŠāļāļāļĢāļēāļĒāļāļēāļĢāļāļēāļāļāļąāđāļāļŦāļĄāļāļāļēāļ Circulation āļāļĩāđāļāļđāđāđāļāđāļāđāļāļāļāļģāđāļāļīāļāļāļēāļĢ
- 5.4. āļāļēāļĢāļāļīāļāļāļēāļĄāļŠāļāļēāļāļ°: āļāļāļāđāļāļĢāļŠāļēāļĄāļēāļĢāļāļāļīāļāļāļēāļĄāļŠāļāļēāļāļ°āđāļāļāļŠāļēāļĢāļāļąāđāļāļāļāļāļāļāđāļāļ (Originator) āđāļĨāļ°āļŠāļāļēāļāļ°āđāļāļāļŠāļēāļĢāļāļĩāđāļŠāđāļāļĄāļēāļāļķāļāļāļāđāļāļ (Recipient)
- 5.5. āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§ (Profile Page): āļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§āđāļĨāļ°āđāļāļĨāļĩāđāļĒāļāļĢāļŦāļąāļŠāļāđāļēāļāļāļāļāļāļāđāļāļāđāļāđ
- 5.6. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļāļēāļāđāļāļāļāļīāļ (RFA & Workflow): āļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļđ RFA āđāļāļĢāļđāļāđāļāļ Workflow āļāļąāđāļāļŦāļĄāļāđāļāđāđāļāļŦāļāđāļēāđāļāļĩāļĒāļ§, āļāļąāđāļāļāļāļāļāļĩāđāļĒāļąāļāđāļĄāđāļāļķāļāļŦāļĢāļ·āļāļāđāļēāļāđāļāđāļĨāđāļ§āļāļ°āđāļāđāļāļĢāļđāļāđāļāļ diable, āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāđāļāđāđāļāļāļēāļ°āđāļāļāļąāđāļāļāļāļāļāļĩāđāđāļāđāļĢāļąāļāļĄāļāļāļŦāļĄāļēāļĒāļāļēāļ (active) āđāļāđāļ āļāļĢāļ§āļāļŠāļāļāđāļĨāđāļ§ āđāļāļ·āđāļāđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ, āļŠāļīāļāļāļīāđ Document Control āļāļķāđāļāđāļ āļŠāļēāļĄāļĢāļāļāļ āđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ āđāļāđāļāļļāļāļāļąāđāļāļāļāļ, āļāļēāļĢāļĒāđāļāļāļāļĨāļąāļ āđāļāļāļąāđāļāļāļāļāļāđāļāļāļŦāļāđāļē āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒ āļŠāļīāļāļāļīāđ Document Control āļāļķāđāļāđāļ
- 5.7. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāđāļ§āļĩāļĒāļāđāļāļāļŠāļēāļĢ (Circulation): āļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļđ Circulation āđāļāļĢāļđāļāđāļāļ Workflow āļāļąāđāļāļŦāļĄāļāđāļāđāđāļāļŦāļāđāļēāđāļāļĩāļĒāļ§,āļāļąāđāļāļāļāļāļāļĩāđāļĒāļąāļāđāļĄāđāļāļķāļāļŦāļĢāļ·āļāļāđāļēāļāđāļāđāļĨāđāļ§āļāļ°āđāļāđāļāļĢāļđāļāđāļāļ diable, āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāđāļāđāđāļāļāļēāļ°āđāļāļāļąāđāļāļāļāļāļāļĩāđāđāļāđāļĢāļąāļāļĄāļāļāļŦāļĄāļēāļĒāļāļēāļ (active) āđāļāđāļ āļāļĢāļ§āļāļŠāļāļāđāļĨāđāļ§ āđāļāļ·āđāļāđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ, āļŠāļīāļāļāļīāđ Document Control āļāļķāđāļāđāļ āļŠāļēāļĄāļĢāļāļāļ āđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ āđāļāđāļāļļāļāļāļąāđāļāļāļāļ, āļāļēāļĢāļĒāđāļāļāļāļĨāļąāļ āđāļāļāļąāđāļāļāļāļāļāđāļāļāļŦāļāđāļē āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒ āļŠāļīāļāļāļīāđ Document Control āļāļķāđāļāđāļ
- 5.8. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļāļģāļŠāđāļ (Transmittals): āļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļđ Transmittals āđāļāļĢāļđāļāđāļāļāļĢāļēāļĒāļāļēāļĢāļāļąāđāļāļŦāļĄāļāđāļāđāđāļāļŦāļāđāļēāđāļāļĩāļĒāļ§
- 5.9. āļāđāļāļāļģāļŦāļāļ UI/UX āļāļēāļĢāđāļāļāđāļāļĨāđ (File Attachment UX):
- āļĢāļ°āļāļāļāđāļāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāļŦāļĨāļēāļĒāđāļāļĨāđāļāļĢāđāļāļĄāļāļąāļ (Multi-file upload) āđāļāđāļ āļāļēāļĢāļĨāļēāļāđāļĨāļ°āļ§āļēāļ (Drag-and-Drop)
- āđāļāļŦāļāđāļēāļāļąāļāđāļŦāļĨāļ (āđāļāđāļ āļŠāļĢāđāļēāļ RFA āļŦāļĢāļ·āļ Correspondence) āļāļđāđāđāļāđāļāđāļāļāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāđāļ§āđāļēāđāļāļĨāđāđāļāđāļāđāļ "āđāļāļāļŠāļēāļĢāļŦāļĨāļąāļ" (Main Document āđāļāđāļ PDF) āđāļĨāļ°āđāļāļĨāđāđāļāđāļāđāļ "āđāļāļāļŠāļēāļĢāđāļāļāļāļĢāļ°āļāļāļ" (Supporting Attachments āđāļāđāļ .dwg, .docx, .zip)
6. āļāđāļāļāļģāļŦāļāļāļāļĩāđāđāļĄāđāđāļāđāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāļģāļāļēāļ (Non-Functional Requirements)
- 6.1. āļāļēāļĢāļāļąāļāļāļķāļāļāļēāļĢāļāļĢāļ°āļāļģ (Audit Log): āļāļļāļāļāļēāļĢāļāļĢāļ°āļāļģāļāļĩāđāļŠāļģāļāļąāļāļāļāļāļāļđāđāđāļāđ (āļŠāļĢāđāļēāļ, āđāļāđāđāļ, āļĨāļ, āļŠāđāļ) āļāļ°āļāļđāļāļāļąāļāļāļķāļāđāļ§āđāđāļ audit_logs āđāļāļ·āđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļĒāđāļāļāļŦāļĨāļąāļ
- 6.2. āļāļēāļĢāļāđāļāļŦāļē (Search): āļĢāļ°āļāļāļāđāļāļāļĄāļĩāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāđāļāļŦāļēāļāļąāđāļāļŠāļđāļ āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāđāļāļŦāļēāđāļāļāļŠāļēāļĢ correspondence, rfa, shop_drawing, contract-drawing, transmittal āđāļĨāļ° āđāļāđāļ§āļĩāļĒāļ (Circulations) āļāļēāļāļŦāļĨāļēāļĒāđāļāļ·āđāļāļāđāļāļāļĢāđāļāļĄāļāļąāļāđāļāđ āđāļāđāļ āļāđāļāļŦāļēāļāļēāļāļāļ·āđāļāđāļĢāļ·āđāļāļ, āļāļĢāļ°āđāļ āļ, āļ§āļąāļāļāļĩāđ, āđāļĨāļ° Tag
- 6.3. āļāļēāļĢāļāļģāļĢāļēāļĒāļāļēāļ (Reporting): āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļģāļĢāļēāļĒāļāļēāļāļŠāļĢāļļāļāđāļĒāļāļāļĢāļ°āđāļ āļāļāļāļ Correspondence āļāļĢāļ°āļāļģāļ§āļąāļ, āļŠāļąāļāļāļēāļŦāđ, āđāļāļ·āļāļ, āđāļĨāļ°āļāļĩāđāļāđ
- 6.4. āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ (Performance): āļĄāļĩāļāļēāļĢāđāļāđ Caching āļāļąāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāļāđāļāļĒ āđāļĨāļ°āđāļāđ Pagination āđāļāļāļēāļĢāļēāļāļāđāļāļĄāļđāļĨāđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļāļģāļāļ§āļāļĄāļēāļ
- 6.5. āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ (Security):
- āļĄāļĩāļĢāļ°āļāļ Rate Limiting āđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāđāļāļĄāļāļĩāđāļāļ Brute-force
- āļāļēāļĢāļāļąāļāļāļēāļĢ Secret (āđāļāđāļ āļĢāļŦāļąāļŠāļāđāļēāļ DB, JWT Secret) āļāļ°āļāđāļāļāļāļģāļāđāļēāļ Environment Variable āļāļāļ Docker āđāļāļ·āđāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļŠāļđāļāļŠāļļāļ
- 6.6. āļāļēāļĢāļŠāļģāļĢāļāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļāļēāļĢāļāļđāđāļāļ·āļ (Backup & Recovery):
- āļĢāļ°āļāļāļāļ°āļāđāļāļāļĄāļĩāļāļĨāđāļāļāļēāļĢāļŠāļģāļĢāļāļāļāđāļāļĄāļđāļĨāļāļąāļāđāļāļĄāļąāļāļīāļŠāļģāļŦāļĢāļąāļāļāļēāļāļāđāļāļĄāļđāļĨ MariaDB [cite: 2.4] āđāļĨāļ°āđāļāļĨāđāđāļāļāļŠāļēāļĢāļāļąāđāļāļŦāļĄāļāđāļ /share/dms-data [cite: 2.1] (āđāļāđāļ āđāļāđ HBS 3 āļāļāļ QNAP āļŦāļĢāļ·āļāļŠāļāļĢāļīāļāļāđāļŠāļģāļĢāļāļāļāđāļāļĄāļđāļĨ) āļāļĒāđāļēāļāļāđāļāļĒāļ§āļąāļāļĨāļ° 1 āļāļĢāļąāđāļ
- āļāđāļāļāļĄāļĩāđāļāļāļāļēāļĢāļāļđāđāļāļ·āļāļĢāļ°āļāļ (Disaster Recovery Plan) āđāļāļāļĢāļāļĩāļāļĩāđ Server āļŦāļĨāļąāļ (QNAP) āđāļāđāļāļēāļāđāļĄāđāđāļāđ
- 6.7. āļāļĨāļĒāļļāļāļāđāļāļēāļĢāđāļāđāļāđāļāļ·āļāļ (Notification Strategy):
- āļĢāļ°āļāļāļāļ°āļŠāđāļāļāļēāļĢāđāļāđāļāđāļāļ·āļāļ (āļāđāļēāļ Email āļŦāļĢāļ·āļ Line [cite: 2.7]) āđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāļāļĢāļ°āļāļģāļāļĩāđāļŠāļģāļāļąāļ āļāļąāļāļāļĩāđ:
- āđāļĄāļ·āđāļāļĄāļĩāđāļāļāļŠāļēāļĢāđāļŦāļĄāđ (Correspondence, RFA) āļāļđāļāļŠāđāļāļĄāļēāļāļķāļāļāļāļāđāļāļĢāļāđāļāļāļāđāļĢāļē
- āđāļĄāļ·āđāļāļĄāļĩāđāļāđāļ§āļĩāļĒāļ (Circulation) āđāļŦāļĄāđ āļĄāļāļāļŦāļĄāļēāļĒāļāļēāļāļĄāļēāļāļĩāđāđāļĢāļē
- (āļāļēāļāđāļĨāļ·āļāļ) āđāļĄāļ·āđāļāđāļāļāļŠāļēāļĢāļāļĩāđāđāļĢāļēāļŠāđāļāđāļ āļāļđāļāļāļģāđāļāļīāļāļāļēāļĢ (āđāļāđāļ āļāļāļļāļĄāļąāļāļī/āļāļāļīāđāļŠāļ)
- (āļāļēāļāđāļĨāļ·āļāļ) āđāļĄāļ·āđāļāđāļāļĨāđāļāļķāļāļ§āļąāļāļāļĢāļāļāļģāļŦāļāļ (Deadline) [cite: 3.2.5, 3.6.6, 3.7.5]
- āļĢāļ°āļāļāļāļ°āļŠāđāļāļāļēāļĢāđāļāđāļāđāļāļ·āļāļ (āļāđāļēāļ Email āļŦāļĢāļ·āļ Line [cite: 2.7]) āđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāļāļĢāļ°āļāļģāļāļĩāđāļŠāļģāļāļąāļ āļāļąāļāļāļĩāđ: