201 lines
26 KiB
Markdown
201 lines
26 KiB
Markdown
# ð Documents Management Sytem Version 1.1.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) āđāļŦāđāļāļąāļāđāļāļĄāļąāļāļī
|
|
|
|
## ðĶ 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)
|
|
- 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. āļāļēāļĢāļāļąāļāļāļēāļĢ: āļĄāļĩāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĒāđāļēāļāļāđāļāļĒāļāļąāļāļāļĩāđ
|
|
- āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļ§āļąāļāđāļĨāđāļ§āđāļŠāļĢāđāļ (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. āđāļāđāļ§āļĩāļĒāļāđāļāļāļŠāļēāļĢāļ āļēāļĒāđāļ (Internal 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/`)
|
|
- āļāđāļāļĄāļđāļĨ Metadata āļāļāļāđāļāļĨāđ (āđāļāđāļ āļāļ·āđāļāđāļāļĨāđ, āļāļāļēāļ, path) āļāļ°āļāļđāļāđāļāđāļāđāļāļāļēāļĢāļēāļ `attachments` (āļāļēāļĢāļēāļāļāļĨāļēāļ)
|
|
- āđāļāļĨāđāļāļ°āļāļđāļāđāļāļ·āđāļāļĄāđāļĒāļāļāļąāļāđāļāļāļŠāļēāļĢāļāļĢāļ°āđāļ āļāļāđāļēāļāđ āļāđāļēāļāļāļēāļĢāļēāļāđāļāļ·āđāļāļĄ (Junction tables) āđāļāđāļ `correspondence_attachments`, `circulation_attachments`, āđāļĨāļ° `shop_drawing_revision_attachments`
|
|
- āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļāļĢāļ§āļĄāļĻāļđāļāļĒāđāļāļĩāđ *āđāļāļāļāļĩāđ* āđāļāļ§āļāļīāļāđāļāļīāļĄāļāļĩāđāļāļ°āđāļĒāļāđāļāļĨāđāļāļāļĢāđāļāļēāļĄāļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ āđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļĒāļēāļĒāļĢāļ°āļāļāļāļĩāđāļāļĩāļāļ§āđāļē
|
|
|
|
## ð 4. āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļŠāļīāļāļāļīāđāđāļĨāļ°āļāļēāļĢāđāļāđāļēāļāļķāļ (Access Control Requirements)
|
|
|
|
* 4.1. āļ āļēāļāļĢāļ§āļĄ: āļāļđāđāđāļāđāđāļĨāļ°āļāļāļāđāļāļĢāļŠāļēāļĄāļēāļĢāļāļāļđāđāļĨāļ°āđāļāđāđāļāđāļāļāļŠāļēāļĢāđāļāđāļāļēāļĄāļŠāļīāļāļāļīāđāļāļĩāđāđāļāđāļĢāļąāļ āđāļāļĒāļĢāļ°āļāļāļŠāļīāļāļāļīāđāļāļ°āđāļāđāļāđāļāļ Role-Based Access Control (RBAC)
|
|
|
|
* 4.2. āļĢāļ°āļāļąāļāļāļāļāļŠāļīāļāļāļīāđ:
|
|
|
|
- Global Roles: āļŠāļīāļāļāļīāđāđāļāļ āļēāļāļĢāļ§āļĄāļāļāļāļĢāļ°āļāļ
|
|
- Project-Specific Roles: āļŠāļīāļāļāļīāđāļāļĩāđāļāļđāļāļāļģāļŦāļāļāđāļŦāđāļāļđāđāđāļāđāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļāļēāļĢāļāļąāđāļāđ āđāļāļĒāđāļāļāļēāļ° (āđāļāđāļ āđāļāđāļ Editor āđāļāđāļāļĢāļāļāļēāļĢ A āđāļāđāđāļāđāļ Viewer āđāļāđāļāļĢāļāļāļēāļĢ B)
|
|
- Contract-Specific Roles: āļŠāļīāļāļāļīāđāļāļĩāđāļāļđāļāļāļģāļŦāļāļāđāļŦāđāđāļāļĢāļāļāļēāļĢāļŠāļģāļŦāļĢāļąāļāļŠāļąāļāļāļēāļāļąāđāļāđ (āđāļāđāļ āđāļāđāļ Admin āđāļāļŠāļąāļāļāļē 1 āļāļ°āđāļāđāļ Admin āđāļ āđāļāļĢāļāļāļēāļĢ A āđāļĨāļ° āļšB āļāļĩāđāļāļĒāļđāđāđāļāļŠāļąāļāļāļē 1)
|
|
|
|
* 4.3. āļāļāļāļēāļ (Roles) āļāļ·āđāļāļāļēāļ:
|
|
|
|
- Superadmin: āđāļĄāđāļĄāļĩāļāđāļāļāļģāļāļąāļāđāļāđ āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāđāļāđāļāļļāļāļāļĒāđāļēāļāļāđāļēāļĄāļāļāļāđāļāļĢ
|
|
- Admin: āļĄāļĩāļŠāļīāļāļāļīāđāđāļāđāļĄāļāļĩāđ āđāļāđāļāļģāļāļąāļāđāļāļāļēāļ°āđāļāļāļāļāđāļāļĢāļāļĩāđāļāļąāļ§āđāļāļāļŠāļąāļāļāļąāļ āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļāļđāđāđāļāđāđāļāļāļāļāđāļāļĢāđāļāđ āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļ Role āđāļŦāļĄāđāđāļĨāļ°āļāļģāļŦāļāļāļŠāļīāļāļāļīāđ (Permissions) āđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāđāļāļ āļēāļĒāļŦāļĨāļąāļāļāđāļēāļāļŦāļāđāļē Admin
|
|
- Document Control āļŠāļēāļĄāļēāļĢāļ āđāļāļīāđāļĄ/āđāļāđāđāļ/āļĨāļ āđāļāļāļŠāļēāļĢ āđāļāļāļēāļ°āđāļāļāļāļāđāļāļĢāļāļĩāđāļāļąāļ§āđāļāļāļŠāļąāļāļāļąāļ āđāļĄāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļāļđāđāđāļāđāđāļāđ
|
|
- Editor: āļŠāļēāļĄāļēāļĢāļ āđāļāļīāđāļĄ/āđāļāđāđāļ āđāļāļāļŠāļēāļĢāļāļĩāđāļāļģāļŦāļāļāđāļ§āđ āđāļāļāļēāļ°āđāļāļāļāļāđāļāļĢāļāļĩāđāļāļąāļ§āđāļāļāļŠāļąāļāļāļąāļ
|
|
- Viewer: āļŠāļēāļĄāļēāļĢāļāļāļđ āđāļāļāļŠāļēāļĢ āđāļāļāļēāļ°āđāļāļāļāļāđāļāļĢāļāļĩāđāļāļąāļ§āđāļāļāļŠāļąāļāļāļąāļ
|
|
|
|
* 4.4. āļāļēāļĢāļāļąāļāļāļąāļāđāļāđāļŠāļīāļāļāļīāđ: āļŠāļīāļāļāļīāđāļāļāļāļāļāļāđāļāļĢāļāļ°āļāļĢāļāļāļāļĨāļļāļĄāļŠāļīāļāļāļīāđāļāļāļāļāļđāđāđāļāđ āđāļĨāļ°āļāļēāļĢāđāļāđāļēāļāļķāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļāđāļāļĢāļāļāļēāļĢ (āđāļāđāļ āļāļēāļĢāđāļāđāđāļāđāļāļāļŠāļēāļĢ) āļāļ°āļāļđāļāļāļĢāļ§āļāļŠāļāļāđāļāļĩāļĒāļāļāļąāļāļŠāļīāļāļāļīāđāļāļĩāđāļāļđāđāđāļāđāļĄāļĩāđāļāđāļāļĢāļāļāļēāļĢāļāļąāđāļāđ āđāļāļĒāđāļāļāļēāļ°
|
|
|
|
## ðĨ 5. āļāđāļāļāļģāļŦāļāļāļāđāļēāļāļāļđāđāđāļāđāļāļēāļ (User Interface & Experience)
|
|
|
|
* 5.1. Layout āļŦāļĨāļąāļ: āļŦāļāđāļēāđāļ§āđāļāđāļāđāļĢāļđāļāđāļāļ App Shell āļāļĩāđāļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
|
|
- Navbar (āļŠāđāļ§āļāļāļ): āđāļŠāļāļāļāļ·āđāļāļĢāļ°āļāļ, āđāļĄāļāļđāļāļđāđāđāļāđ (Profile), āđāļĄāļāļđāļŠāļģāļŦāļĢāļąāļ 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. āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļāļēāļāđāļāļāļāļīāļ (Technical Documents & Workflow): āļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļđ Technical Document āđāļāļĢāļđāļāđāļāļ Workflow āļāļąāđāļāļŦāļĄāļāđāļāđāđāļāļŦāļāđāļēāđāļāļĩāļĒāļ§, āļāļąāđāļāļāļāļāļāļĩāđāļĒāļąāļāđāļĄāđāļāļķāļāļŦāļĢāļ·āļāļāđāļēāļāđāļāđāļĨāđāļ§āļāļ°āđāļāđāļāļĢāļđāļāđāļāļ diable, āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāđāļāđāđāļāļāļēāļ°āđāļāļāļąāđāļāļāļāļāļāļĩāđāđāļāđāļĢāļąāļāļĄāļāļāļŦāļĄāļēāļĒāļāļēāļ (active) āđāļāđāļ āļāļĢāļ§āļāļŠāļāļāđāļĨāđāļ§ āđāļāļ·āđāļāđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ, āļŠāļīāļāļāļīāđ admin āļāļķāđāļāđāļ āļŠāļēāļĄāļĢāļāļāļ āđāļāļĒāļąāļāļāļąāđāļāļāļāļāļāđāļāđāļ āđāļāđāļāļļāļāļāļąāđāļāļāļāļ, āļāļēāļĢāļĒāđāļāļāļāļĨāļąāļ āđāļāļāļąāđāļāļāļāļāļāđāļāļāļŦāļāđāļē āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒ āļŠāļīāļāļāļīāđ admin āļāļķāđāļāđāļ
|
|
|
|
## 6\. āļāđāļāļāļģāļŦāļāļāļāļĩāđāđāļĄāđāđāļāđāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāļģāļāļēāļ (Non-Functional Requirements)
|
|
|
|
* 6.1. āļāļēāļĢāļāļąāļāļāļķāļāļāļēāļĢāļāļĢāļ°āļāļģ (Audit Log): āļāļļāļāļāļēāļĢāļāļĢāļ°āļāļģāļāļĩāđāļŠāļģāļāļąāļāļāļāļāļāļđāđāđāļāđ (āļŠāļĢāđāļēāļ, āđāļāđāđāļ, āļĨāļ, āļŠāđāļ) āļāļ°āļāļđāļāļāļąāļāļāļķāļāđāļ§āđāđāļ `audit_logs` āđāļāļ·āđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļĒāđāļāļāļŦāļĨāļąāļ
|
|
* 6.2. āļāļēāļĢāļāđāļāļŦāļē (Search): āļĢāļ°āļāļāļāđāļāļāļĄāļĩāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāđāļāļŦāļēāļāļąāđāļāļŠāļđāļ āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāđāļāļŦāļēāđāļāļāļŠāļēāļĢāļāļēāļāļŦāļĨāļēāļĒāđāļāļ·āđāļāļāđāļāļāļĢāđāļāļĄāļāļąāļāđāļāđ āđāļāđāļ āļāđāļāļŦāļēāļāļēāļāļāļ·āđāļāđāļĢāļ·āđāļāļ, āļāļĢāļ°āđāļ āļ, āļ§āļąāļāļāļĩāđ, āđāļĨāļ° Tag
|
|
* 6.3. āļāļēāļĢāļāļģāļĢāļēāļĒāļāļēāļ (Reporting): āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļģāļĢāļēāļĒāļāļēāļāļŠāļĢāļļāļāđāļĒāļāļāļĢāļ°āđāļ āļāļāļāļ Correspondence āļāļĢāļ°āļāļģāļ§āļąāļ, āļŠāļąāļāļāļēāļŦāđ, āđāļāļ·āļāļ, āđāļĨāļ°āļāļĩāđāļāđ
|
|
* 6.4. āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ (Performance): āļĄāļĩāļāļēāļĢāđāļāđ Caching āļāļąāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāļāđāļāļĒ āđāļĨāļ°āđāļāđ Pagination āđāļāļāļēāļĢāļēāļāļāđāļāļĄāļđāļĨāđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļāļģāļāļ§āļāļĄāļēāļ
|
|
* 6.5. āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ (Security):
|
|
- āļĄāļĩāļĢāļ°āļāļ Rate Limiting āđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāđāļāļĄāļāļĩāđāļāļ Brute-force
|
|
- āļāļēāļĢāļāļąāļāļāļēāļĢ Secret (āđāļāđāļ āļĢāļŦāļąāļŠāļāđāļēāļ DB, JWT Secret) āļāļ°āļāđāļāļāļāļģāļāđāļēāļ Environment Variable āļāļāļ Docker āđāļāļ·āđāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļŠāļđāļāļŠāļļāļ |