Files
lcbp3/docs/Markdown/0_Requirements_V1_4_3.md
admin aaa5da3ec1
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251217:1704 Docunment Number: Update to 1.6.2
2025-12-17 17:04:06 +07:00

69 KiB

📝 Documents Management System Version 1.4.3: Application Requirements Specification

āļŠāļ–āļēāļ™āļ°: FINAL-Rev.01 āļ§āļąāļ™āļ—āļĩāđˆ: 2025-11-22 āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™: v1.4.3 Classification: Internal Technical Documentation

📌 1. āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ

āļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļāļŠāļēāļĢāđ‚āļ„āļĢāļ‡āļāļēāļĢ (Document Management System - DMS) āđāļšāļšāļ„āļĢāļšāļ§āļ‡āļˆāļĢ āļ—āļĩāđˆāđ€āļ™āđ‰āļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļŠāļđāļ‡āļŠāļļāļ” āļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Data Integrity) āđāļĨāļ°āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ‚āļĒāļēāļĒāļ•āļąāļ§āđƒāļ™āļ­āļ™āļēāļ„āļ• (Scalability) āđ‚āļ”āļĒāđāļāđ‰āđ„āļ‚āļ›āļąāļāļŦāļē Race Condition āđāļĨāļ°āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāđ€āļŠāļ–āļĩāļĒāļĢāđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ„āļŸāļĨāđŒāđāļĨāļ° Workflow

  • āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļŦāļĨāļąāļāđƒāļ™āļāļēāļĢāļ­āļąāļ›āđ‚āļŦāļĨāļ” āļˆāļąāļ”āđ€āļāđ‡āļš āļ„āđ‰āļ™āļŦāļē āđāļŠāļĢāđŒ āđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāļŠāļīāļ—āļ˜āļīāđŒāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ€āļ­āļāļŠāļēāļĢ
  • āļŠāđˆāļ§āļĒāļĨāļ”āļāļēāļĢāđƒāļŠāđ‰āđ€āļ­āļāļŠāļēāļĢāļāļĢāļ°āļ”āļēāļĐ āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđƒāļ™āļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨ
  • āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļāđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ­āļ‡āļāļĢāļ“āđŒ
  • āđ€āļŠāļĢāļīāļĄ: āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒāļĄāļēāļ•āļĢāļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ
  • āđ€āļŠāļĢāļīāļĄ: āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļ—āļ™āļ—āļēāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒāļāļĨāđ„āļ resilience patterns
  • āđ€āļŠāļĢāļīāļĄ: āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļš monitoring āđāļĨāļ° observability āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ

🛠ïļ 2. āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļĨāļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ (System Architecture & Technology Stack)

āđƒāļŠāđ‰āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļšāļš Headless/API-First āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ āļ—āļģāļ‡āļēāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļšāļ™ QNAP Server āļœāđˆāļēāļ™ Container Station āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļāđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđāļĨāļ°āļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļē

Domain: np-dms.work, www.np-dms.work IP: 159.192.126.103 Docker Network: āļ—āļļāļ Service āļˆāļ°āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļœāđˆāļēāļ™āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāļāļĨāļēāļ‡āļŠāļ·āđˆāļ­ lcbp3 āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļ™āđ„āļ”āđ‰

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/Cursor on Windows 11
  • Data Storage: /share/dms-data āļšāļ™ QNAP
  • āļ‚āđ‰āļ­āļˆāļģāļāļąāļ”: āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰ .env āđƒāļ™āļāļēāļĢāļāļģāļŦāļ™āļ”āļ•āļąāļ§āđāļ›āļĢāļ āļēāļĒāļ™āļ­āļāđ„āļ”āđ‰ āļ•āđ‰āļ­āļ‡āļāļģāļŦāļ™āļ”āđƒāļ™ docker-compose.yml āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™

2.2 āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Configuration (āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡):

  • āđƒāļŠāđ‰ docker-compose.yml āļŠāļģāļŦāļĢāļąāļš environment variables āļ•āļēāļĄāļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ‚āļ­āļ‡ QNAP
  • Secrets Management (āđƒāļŦāļĄāđˆ):
    • āļŦāđ‰āļēāļĄāļĢāļ°āļšāļļ Sensitive Secrets (Password, Keys) āđƒāļ™ docker-compose.yml āļŦāļĨāļąāļ
    • āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ„āļŸāļĨāđŒ docker-compose.override.yml (āļ—āļĩāđˆāļ–āļđāļ gitignore) āļŠāļģāļŦāļĢāļąāļš Inject Environment Variables āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ„āļ§āļēāļĄāļĨāļąāļšāđƒāļ™āđāļ•āđˆāļĨāļ° Environment (Dev/Prod)
    • āđ„āļŸāļĨāđŒ docker-compose.yml āļŦāļĨāļąāļāđƒāļŦāđ‰āđƒāļŠāđˆāļ„āđˆāļē Dummy āļŦāļĢāļ·āļ­āļ§āđˆāļēāļ‡āđ„āļ§āđ‰
  • āđāļ•āđˆāļ•āđ‰āļ­āļ‡āļĄāļĩ mechanism āļŠāļģāļŦāļĢāļąāļšāļˆāļąāļ”āļāļēāļĢ sensitive secrets āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ āđ‚āļ”āļĒāđƒāļŠāđ‰:
    • Docker secrets (āļ–āđ‰āļēāļĢāļ­āļ‡āļĢāļąāļš)
    • External secret management (Hashicorp Vault) āļŦāļĢāļ·āļ­
    • Encrypted environment variables
  • Development environment āļĒāļąāļ‡āđƒāļŠāđ‰ .env āđ„āļ”āđ‰ āđāļ•āđˆāļ•āđ‰āļ­āļ‡āđ„āļĄāđˆ commit āđ€āļ‚āđ‰āļē version control
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ configuration validation during application startup
  • āļ•āđ‰āļ­āļ‡āđāļĒāļ configuration āļ•āļēāļĄ environment (development, staging, production)

2.3 Core Services:

  • Code Hosting: Gitea (Self-hosted on QNAP)

    • Application name: git
    • Service name: gitea
    • Domain: git.np-dms.work
    • āļŦāļ™āđ‰āļēāļ—āļĩāđˆ: āđ€āļ›āđ‡āļ™āļĻāļđāļ™āļĒāđŒāļāļĨāļēāļ‡āđƒāļ™āļāļēāļĢāđ€āļāđ‡āļšāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ” (Source Code) āļŠāļģāļŦāļĢāļąāļšāļ—āļļāļāļŠāđˆāļ§āļ™
  • Backend / Data Platform: NestJS

    • Application name: lcbp3-backend
    • Service name: backend
    • Domain: backend.np-dms.work
    • Framework: NestJS (Node.js, TypeScript, ESM)
    • āļŦāļ™āđ‰āļēāļ—āļĩāđˆ: āļˆāļąāļ”āļāļēāļĢāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Data Models), āļŠāļĢāđ‰āļēāļ‡ API, āļˆāļąāļ”āļāļēāļĢāļŠāļīāļ—āļ˜āļīāđŒāļœāļđāđ‰āđƒāļŠāđ‰ (Roles & Permissions), āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡ Workflow āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ‚āļ­āļ‡āļĢāļ°āļšāļš
  • Database: MariaDB 10.11

    • Application name: lcbp3-db
    • Service name: mariadb
    • Domain: db.np-dms.work
    • āļŦāļ™āđ‰āļēāļ—āļĩāđˆ: āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļšāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
    • Tooling: DBeaver (Community Edition), phpmyadmin āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ
  • Database Management: phpMyAdmin

    • Application name: lcbp3-db
    • Service: phpmyadmin:5-apache
    • Service name: pma
    • Domain: pma.np-dms.work
    • āļŦāļ™āđ‰āļēāļ—āļĩāđˆ: āļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ mariadb āļœāđˆāļēāļ™ Web UI
  • Frontend: Next.js

    • Application name: lcbp3-frontend
    • 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
  • Workflow Automation: n8n

    • Application name: lcbp3-n8n
    • Service: n8nio/n8n:latest
    • Service name: n8n
    • Domain: n8n.np-dms.work
    • āļŦāļ™āđ‰āļēāļ—āļĩāđˆ: āļˆāļąāļ”āļāļēāļĢ workflow āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Backend āđāļĨāļ° Line
  • Reverse Proxy: Nginx Proxy Manager

    • 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) āđƒāļŦāđ‰āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
  • Search Engine: Elasticsearch

  • Cache: Redis

2.4 Business Logic & Consistency (āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡):

  • 2.4.1 āļ•āļĢāļĢāļāļ°āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ” (āđ€āļŠāđˆāļ™ āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ° Workflow [cite: 3.5.3, 3.6.5], āļāļēāļĢāļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰āļŠāļīāļ—āļ˜āļīāđŒ [cite: 4.4], āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš Deadline [cite: 3.2.5]) āļˆāļ°āļ–āļđāļāļˆāļąāļ”āļāļēāļĢāđƒāļ™āļāļąāđˆāļ‡ Backend (NestJS) [cite: 2.3] āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļēāđāļĨāļ°āļ—āļ”āļŠāļ­āļšāđ„āļ”āđ‰āļ‡āđˆāļēāļĒ (Testability)

  • 2.4.2 Unified Workflow Engine (āđƒāļŦāļĄāđˆ): āļĢāļ§āļĄ Logic āļāļēāļĢāđ€āļ”āļīāļ™āđ€āļ­āļāļŠāļēāļĢāļ‚āļ­āļ‡ CorrespondenceRouting āđāļĨāļ° RfaWorkflow āđƒāļŦāđ‰āđƒāļŠāđ‰ Core Engine āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āđ€āļžāļ·āđˆāļ­āļĨāļ”āļ„āļ§āļēāļĄāļ‹āđ‰āļģāļ‹āđ‰āļ­āļ™āđāļĨāļ°āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļē

  • 2.4.3 Idempotency Keys (āđƒāļŦāļĄāđˆ): API āļ—āļĩāđˆāļŠāļģāļ„āļąāļ (āđ€āļŠāđˆāļ™ Submit Document, Approve) āļ•āđ‰āļ­āļ‡āļšāļąāļ‡āļ„āļąāļšāļŠāđˆāļ‡ Header Idempotency-Key āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļ—āļģāļĢāļēāļĒāļāļēāļĢāļ‹āđ‰āļģāļˆāļēāļāļāļēāļĢāļāļ”āļ›āļļāđˆāļĄāļĢāļąāļ§āđ† āļŦāļĢāļ·āļ­ Network Retry

  • 2.4.4 Optimistic Locking (āđƒāļŦāļĄāđˆ): āđƒāļŠāđ‰ Version Column āđƒāļ™ Database āļ„āļ§āļšāļ„āļđāđˆāļāļąāļš Redis Lock āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢ āđ€āļžāļ·āđˆāļ­āđ€āļ›āđ‡āļ™ Safety Net āļŠāļąāđ‰āļ™āļŠāļļāļ”āļ—āđ‰āļēāļĒ

  • 2.4.5 āļˆāļ°āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāđƒāļŠāđ‰ SQL Triggers āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ•āļĢāļĢāļāļ°āļ‹āđˆāļ­āļ™āđ€āļĢāđ‰āļ™ (Hidden Logic) āđāļĨāļ°āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđƒāļ™āļāļēāļĢāļ”āļĩāļšāļąāļ

2.5 Data Migration āđāļĨāļ° Schema Versioning:

  • āļ•āđ‰āļ­āļ‡āļĄāļĩ database migration scripts āļŠāļģāļŦāļĢāļąāļšāļ—āļļāļ schema change āđ‚āļ”āļĒāđƒāļŠāđ‰ TypeORM migrations
  • āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš rollback āļ‚āļ­āļ‡ migration āđ„āļ”āđ‰
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ data seeding strategy āļŠāļģāļŦāļĢāļąāļš environment āļ•āđˆāļēāļ‡āđ† (development, staging, production)
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ version compatibility between schema versions
  • Migration scripts āļ•āđ‰āļ­āļ‡āļœāđˆāļēāļ™āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđƒāļ™ staging environment āļāđˆāļ­āļ™ production
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ database backup āļāđˆāļ­āļ™āļ—āļģ migration āđƒāļ™ production

2.6 āļāļĨāļĒāļļāļ—āļ˜āđŒāļ„āļ§āļēāļĄāļ—āļ™āļ—āļēāļ™āđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” (Resilience & Error Handling Strategy)

  • 2.6.1 Circuit Breaker Pattern: āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļš external service calls (Email, LINE, Elasticsearch)
  • 2.6.2 Retry Mechanism: āļ”āđ‰āļ§āļĒ exponential backoff āļŠāļģāļŦāļĢāļąāļš transient failures
  • 2.6.3 Fallback Strategies: Graceful degradation āđ€āļĄāļ·āđˆāļ­āļšāļĢāļīāļāļēāļĢāļ āļēāļĒāļ™āļ­āļāļĨāđ‰āļĄāđ€āļŦāļĨāļ§
  • 2.6.4 Error Handling: Error messages āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāđ€āļ›āļīāļ”āđ€āļœāļĒāļ‚āđ‰āļ­āļĄāļđāļĨ sensitive
  • 2.6.5 Monitoring: Centralized error monitoring āđāļĨāļ° alerting system

ðŸ“Ķ 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. Correspondence Routing & Workflow
    • 3.2.5.1 Routing Templates (āđāļĄāđˆāđāļšāļšāļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­)
      • āļœāļđāđ‰āļ”āļđāđāļĨāļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđāļĄāđˆāđāļšāļšāļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­āđ„āļ”āđ‰
      • āđāļĄāđˆāđāļšāļšāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āđ‡āļ™āđāļšāļšāļ—āļąāđˆāļ§āđ„āļ› (āđƒāļŠāđ‰āđ„āļ”āđ‰āļ—āļļāļāđ‚āļ„āļĢāļ‡āļāļēāļĢ) āļŦāļĢāļ·āļ­āđ€āļ‰āļžāļēāļ°āđ‚āļ„āļĢāļ‡āļāļēāļĢ
      • āđāļ•āđˆāļĨāļ°āđāļĄāđˆāđāļšāļšāļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāļĨāļģāļ”āļąāļšāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­
      • āļāļēāļĢāļŠāđˆāļ‡āļˆāļēāļ Originator -> Organization 1 -> Organization 2 -> Organization 3 āđāļĨāđ‰āļ§āļŠāđˆāļ‡āļœāļĨāļāļĨāļąāļšāļ•āļēāļĄāļĨāļģāļ”āļąāļšāđ€āļ”āļīāļĄ (āđ‚āļ”āļĒāļ–āđ‰āļē āļ­āļ‡āļāļĢāļ“āđŒāđƒāļ”āđƒāļ™ Wouting āđƒāļŦāđ‰āļŠāđˆāļ‡āļāļĨāļąāļš āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļœāļĨāļāļĨāļąāļšāļ•āļēāļĄāļĨāļģāļ”āļąāļšāđ€āļ”āļīāļĄāđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļ­āđƒāļŦāđ‰āļ–āļķāļ‡ āļ­āļ‡āļāļĢāļ“āļ·āđƒāļ™āļĨāļģāļ”āļąāļšāļ–āļąāļ”āđ„āļ›)
    • 3.2.5.2 Routing Steps (āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­) āđāļ•āđˆāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđƒāļ™āđāļĄāđˆāđāļšāļšāļ•āđ‰āļ­āļ‡āļāļģāļŦāļ™āļ”:
      • āļĨāļģāļ”āļąāļšāļ‚āļąāđ‰āļ™āļ•āļ­āļ™ (Sequence)
      • āļ­āļ‡āļ„āđŒāļāļĢāļœāļđāđ‰āļĢāļąāļš (To Organization)
      • āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ (Purpose): āđ€āļžāļ·āđˆāļ­āļ­āļ™āļļāļĄāļąāļ•āļī (FOR_APPROVAL), āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš (FOR_REVIEW), āđ€āļžāļ·āđˆāļ­āļ—āļĢāļēāļš (FOR_INFORMATION), āđ€āļžāļ·āđˆāļ­āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ (FOR_ACTION)
      • āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļ—āļĩāđˆāļ„āļēāļ”āļŦāļ§āļąāļ‡ (Expected Duration)
    • 3.2.5.3 Actual Routing Execution (āļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­āļˆāļĢāļīāļ‡) āđ€āļĄāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āđ€āļ­āļāļŠāļēāļĢāđāļĨāļ°āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āđāļĄāđˆāđāļšāļš āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡:
      • āļŠāļĢāđ‰āļēāļ‡āļĨāļģāļ”āļąāļšāļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­āļ•āļēāļĄāđāļĄāđˆāđāļšāļš
      • āļ•āļīāļ”āļ•āļēāļĄāļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™: āļŠāđˆāļ‡āđāļĨāđ‰āļ§ (SENT), āļāļģāļĨāļąāļ‡āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ (IN_PROGRESS), āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļĨāđ‰āļ§ (ACTIONED), āļŠāđˆāļ‡āļ•āđˆāļ­āđāļĨāđ‰āļ§ (FORWARDED), āļ•āļ­āļšāļāļĨāļąāļšāđāļĨāđ‰āļ§ (REPLIED)
      • āļĢāļ°āļšāļļāļ§āļąāļ™āļ„āļĢāļšāļāļģāļŦāļ™āļ” (Due Date) āļŠāļģāļŦāļĢāļąāļšāđāļ•āđˆāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™
      • āļšāļąāļ™āļ—āļķāļāļœāļđāđ‰āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļĨāļ°āđ€āļ§āļĨāļēāļ—āļĩāđˆāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ
    • 3.2.5.4 Routing Flexibility (āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™)
      • āļŠāļēāļĄāļēāļĢāļ–āļ‚āđ‰āļēāļĄāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđ„āļ”āđ‰āđƒāļ™āļāļĢāļ“āļĩāļžāļīāđ€āļĻāļĐ (āđ‚āļ”āļĒāļœāļđāđ‰āļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒ)
      • āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļāļĨāļąāļšāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāđ„āļ”āđ‰
      • āļŠāļēāļĄāļēāļĢāļ–āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļ„āļīāļ”āđ€āļŦāđ‡āļ™āđƒāļ™āđāļ•āđˆāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™
      • āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ€āļĄāļ·āđˆāļ­āļ–āļķāļ‡āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđƒāļŦāļĄāđˆāļŦāļĢāļ·āļ­āđƒāļāļĨāđ‰āļ„āļĢāļšāļāļģāļŦāļ™āļ”
  • 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.3. āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđāļĨāļ°āļˆāļąāļ”āļāļĨāļļāđˆāļĄ: āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Drawing (RFA_DWG):
    • āđ€āļ­āļāļŠāļēāļĢ RFA_DWG āļˆāļ°āļ›āļĢāļ°āļāļ­āļšāđ„āļ›āļ”āđ‰āļ§āļĒ Shop Drawing (shop_drawings) āļŦāļĨāļēāļĒāđāļœāđˆāļ™ āļ‹āļķāđˆāļ‡āđāļ•āđˆāļĨāļ°āđāļœāđˆāļ™āļĄāļĩ Revision āļ‚āļ­āļ‡āļ•āļąāļ§āđ€āļ­āļ‡
    • Shop Drawing āđāļ•āđˆāļĨāļ° Revision āļŠāļēāļĄāļēāļĢāļ–āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ–āļķāļ‡ Contract Drawing (Ccontract_drawings) āļŦāļĨāļēāļĒāđāļœāđˆāļ™ āļŦāļĢāļ·āļ­āđ„āļĄāđˆāļ­āđ‰āļēāļ‡āļ–āļķāļ‡āļāđ‡āđ„āļ”āđ‰
    • āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļĄāļĩāļŠāđˆāļ§āļ™āļŠāļģāļŦāļĢāļąāļšāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨ Master Data āļ‚āļ­āļ‡āļ—āļąāđ‰āļ‡ Shop Drawing āđāļĨāļ° Contract Drawing āđāļĒāļāļˆāļēāļāļāļąāļ™
  • 3.5.4. Workflow āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļī: āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļšāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļīāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđāļĨāļ°āđ€āļ›āđ‡āļ™āļĨāļģāļ”āļąāļš āđ€āļŠāđˆāļ™
    • āļŠāđˆāļ‡āļˆāļēāļ Originator -> Organization 1 -> Organization 2 -> Organization 3 āđāļĨāđ‰āļ§āļŠāđˆāļ‡āļœāļĨāļāļĨāļąāļšāļ•āļēāļĄāļĨāļģāļ”āļąāļšāđ€āļ”āļīāļĄ (āđ‚āļ”āļĒāļ–āđ‰āļē āļ­āļ‡āļāļĢāļ“āđŒāđƒāļ”āđƒāļ™ Workflow āđƒāļŦāđ‰āļŠāđˆāļ‡āļāļĨāļąāļš āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļœāļĨāļāļĨāļąāļšāļ•āļēāļĄāļĨāļģāļ”āļąāļšāđ€āļ”āļīāļĄāđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļ­āđƒāļŦāđ‰āļ–āļķāļ‡ āļ­āļ‡āļāļĢāļ“āļ·āđƒāļ™āļĨāļģāļ”āļąāļšāļ–āļąāļ”āđ„āļ›)
  • 3.5.5. āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ: āļĄāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒāļ”āļąāļ‡āļ™āļĩāđ‰
    • āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āļ§āļąāļ™āđāļĨāđ‰āļ§āđ€āļŠāļĢāđ‡āļˆ (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. āļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāđ„āļŸāļĨāđŒ (File Handling - āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđƒāļŦāļāđˆ)

  • 3.9.1 Two-Phase Storage Strategy:

    1. Phase 1 (Upload): āđ„āļŸāļĨāđŒāļ–āļđāļāļ­āļąāļ›āđ‚āļŦāļĨāļ”āđ€āļ‚āđ‰āļēāđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒ temp/ āđāļĨāļ°āđ„āļ”āđ‰āļĢāļąāļš temp_id
    2. Phase 2 (Commit): āđ€āļĄāļ·āđˆāļ­ User āļāļ” Submit āļŸāļ­āļĢāđŒāļĄāļŠāļģāđ€āļĢāđ‡āļˆ āļĢāļ°āļšāļšāļˆāļ°āļĒāđ‰āļēāļĒāđ„āļŸāļĨāđŒāļˆāļēāļ temp/ āđ„āļ›āļĒāļąāļ‡ permanent/{YYYY}/{MM}/ āđāļĨāļ°āļšāļąāļ™āļ—āļķāļāļĨāļ‡ Database āļ āļēāļĒāđƒāļ™ Transaction āđ€āļ”āļĩāļĒāļ§āļāļąāļ™
    3. Cleanup: āļĄāļĩ Cron Job āļĨāļšāđ„āļŸāļĨāđŒāđƒāļ™ temp/ āļ—āļĩāđˆāļ„āđ‰āļēāļ‡āđ€āļāļīāļ™ 24 āļŠāļĄ. (Orphan Files)
  • 3.9.2 Security:

    • Virus Scan (ClamAV) āļāđˆāļ­āļ™āļĒāđ‰āļēāļĒāđ€āļ‚āđ‰āļē Permanent
    • Whitelist File Types: PDF, DWG, DOCX, XLSX, ZIP
    • Max Size: 50MB
    • Access Control: āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļīāļ—āļ˜āļīāđŒāļœāđˆāļēāļ™ Junction Table āļāđˆāļ­āļ™āđƒāļŦāđ‰ Download Link
  • 3.9.3 āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāđ„āļŸāļĨāđŒ:

    • āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢ scan virus āļŠāļģāļŦāļĢāļąāļšāđ„āļŸāļĨāđŒāļ—āļĩāđˆāļ­āļąāļ›āđ‚āļŦāļĨāļ”āļ—āļąāđ‰āļ‡āļŦāļĄāļ” āđ‚āļ”āļĒāđƒāļŠāđ‰ ClamAV āļŦāļĢāļ·āļ­āļšāļĢāļīāļāļēāļĢ third-party
    • āļˆāļģāļāļąāļ”āļ›āļĢāļ°āđ€āļ āļ—āđ„āļŸāļĨāđŒāļ—āļĩāđˆāļ­āļ™āļļāļāļēāļ•: PDF, DWG, DOCX, XLSX, ZIP (āļ•āđ‰āļ­āļ‡āļĢāļ°āļšāļļāļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™)
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 50MB āļ•āđˆāļ­āđ„āļŸāļĨāđŒ
    • āđ„āļŸāļĨāđŒāļ•āđ‰āļ­āļ‡āļ–āļđāļāđ€āļāđ‡āļšāļ™āļ­āļ web root āđāļĨāļ°āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āļœāđˆāļēāļ™ authenticated endpoint āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ file integrity check (checksum) āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđāļāđ‰āđ„āļ‚āđ„āļŸāļĨāđŒ
    • Download links āļ•āđ‰āļ­āļ‡āļĄāļĩ expiration time (default: 24 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡)
    • āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļ audit log āļ—āļļāļāļ„āļĢāļąāđ‰āļ‡āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ”āļēāļ§āļ™āđŒāđ‚āļŦāļĨāļ”āđ„āļŸāļĨāđŒāļŠāļģāļ„āļąāļ

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}) āđ‚āļ”āļĒāļāļģāļŦāļ™āļ”āđāļĒāļāļ•āļēāļĄāđ‚āļ„āļĢāļ‡āļāļēāļĢāđāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—āđ€āļ­āļāļŠāļēāļĢ
  • 3.10.4. āļāļĨāđ„āļ: āđƒāļŠāđ‰ Redis Distributed Lock āđ€āļ›āđ‡āļ™āļ”āđˆāļēāļ™āđāļĢāļ
  • 3.10.5. Safety Net: āđ€āļžāļīāđˆāļĄ Optimistic Locking (āļ•āļĢāļ§āļˆāļŠāļ­āļš Version/Last Number āđƒāļ™ DB āļ‚āļ“āļ° Update) āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļĢāļ“āļĩ Redis āļĨāđˆāļĄ āļŦāļĢāļ·āļ­ Race Condition āļŦāļĨāļļāļ”āļĢāļ­āļ”
  • 3.10.6. āļ•āđ‰āļ­āļ‡āļĄāļĩ retry mechanism āđāļĨāļ° fallback strategy āđ€āļĄāļ·āđˆāļ­āļāļēāļĢ generate āđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢāļĨāđ‰āļĄāđ€āļŦāļĨāļ§

3.11 āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ JSON Details (JSON & Performance - āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡)

  • 3.11.1 āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ

    • āļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡āļāļąāļšāđāļ•āđˆāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āđ€āļ­āļāļŠāļēāļĢ
    • āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ‚āļĒāļēāļĒāļ•āļąāļ§āļ‚āļ­āļ‡āļĢāļ°āļšāļšāđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ database schema
    • āļˆāļąāļ”āļāļēāļĢ metadata āđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ›āļĢāļ°āļāļ­āļšāļŠāļģāļŦāļĢāļąāļš correspondence, routing, āđāļĨāļ° workflows
  • 3.11.2 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ JSON Schema āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļĄāļĩ predefined JSON schemas āļŠāļģāļŦāļĢāļąāļšāļ›āļĢāļ°āđ€āļ āļ—āđ€āļ­āļāļŠāļēāļĢāļ•āđˆāļēāļ‡āđ†:

    • 3.11.2.1 Correspondence Types
      • GENERIC: āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāđ€āļ­āļāļŠāļēāļĢāļ—āļąāđˆāļ§āđ„āļ›
      • RFI: āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ„āļģāļ–āļēāļĄāđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„
      • RFA: āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļ‚āļ­āļ­āļ™āļļāļĄāļąāļ•āļīāđāļšāļšāđāļĨāļ°āļ§āļąāļŠāļ”āļļ
      • TRANSMITTAL: āļĢāļēāļĒāļāļēāļĢāđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāļŠāđˆāļ‡āļ•āđˆāļ­
      • LETTER: āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļ”āļŦāļĄāļēāļĒāļ—āļēāļ‡āļāļēāļĢ
      • EMAIL: āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļĩāđ€āļĄāļĨ
    • 3.11.2.2 Routing Types
      • ROUTING_TEMPLATE: āļāļŽāđāļĨāļ°āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­
      • ROUTING_INSTANCE: āļŠāļ–āļēāļ™āļ°āđāļĨāļ°āļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāļŠāđˆāļ‡āļ•āđˆāļ­
      • ROUTING_ACTION: āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđƒāļ™āđāļ•āđˆāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™
    • 3.11.2.3 Audit Types
      • AUDIT_LOG: āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš
      • SECURITY_SCAN: āļœāļĨāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ
  • 3.11.3 Virtual Columns (āđƒāļŦāļĄāđˆ): āļŠāļģāļŦāļĢāļąāļš Field āđƒāļ™ JSON āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļē (Search) āļŦāļĢāļ·āļ­āļˆāļąāļ”āđ€āļĢāļĩāļĒāļ‡ (Sort) āļšāđˆāļ­āļĒāđ† āļ•āđ‰āļ­āļ‡āļŠāļĢāđ‰āļēāļ‡ Generated Column (Virtual Column) āđƒāļ™ Database āđāļĨāļ°āļ—āļģ Index āđ„āļ§āđ‰ āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļŠāļļāļ”

  • 3.11.4 Validation Rules

    • āļ•āđ‰āļ­āļ‡āļĄāļĩ JSON schema validation āļŠāļģāļŦāļĢāļąāļšāđāļ•āđˆāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—
    • āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš versioning āļ‚āļ­āļ‡ schema
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ default values āļŠāļģāļŦāļĢāļąāļš field āļ—āļĩāđˆāđ„āļĄāđˆāļšāļąāļ‡āļ„āļąāļš
    • āļ•āđ‰āļ­āļ‡āļ•āļĢāļ§āļˆāļŠāļ­āļš data types āđāļĨāļ° format āđƒāļŦāđ‰āļ–āļđāļāļ•āđ‰āļ­āļ‡
  • 3.11.5 Performance Requirements

    • JSON field āļ•āđ‰āļ­āļ‡āļĄāļĩāļ‚āļ™āļēāļ”āđ„āļĄāđˆāđ€āļāļīāļ™ 50KB
    • āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš indexing āļŠāļģāļŦāļĢāļąāļš field āļ—āļĩāđˆāđƒāļŠāđ‰āļ„āđ‰āļ™āļŦāļēāļšāđˆāļ­āļĒ
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ compression āļŠāļģāļŦāļĢāļąāļš JSON āļ‚āļ™āļēāļ”āđƒāļŦāļāđˆ
  • 3.11.6 Security Requirements

    • āļ•āđ‰āļ­āļ‡ sanitize JSON input āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™ injection attacks
    • āļ•āđ‰āļ­āļ‡ validate JSON structure āļāđˆāļ­āļ™āļšāļąāļ™āļ—āļķāļ
    • āļ•āđ‰āļ­āļ‡ encrypt sensitive data āđƒāļ™ JSON fields

3.12 āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļžāļīāđ€āļĻāļĐ

  • āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāļĢāļ°āļ”āļąāļšāļŠāļđāļ‡ (Global) āļŦāļĢāļ·āļ­āļœāļđāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļ­āļ™āļļāļāļēāļ•āđ€āļ›āđ‡āļ™āļāļĢāļ“āļĩāļžāļīāđ€āļĻāļĐ
    • āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļ āļŠāļĢāđ‰āļēāļ‡āđƒāļ™āļ™āļēāļĄāļ­āļ‡āļ„āđŒāļāļĢ (Create on behalf of) āđ„āļ”āđ‰ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ­āļ­āļāđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢ (Running Number) āļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢāļ­āļ·āđˆāļ™āđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĨāđ‡āļ­āļāļ­āļīāļ™āđƒāļŦāļĄāđˆ
    • āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđāļ—āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āļ­āļ·āđˆāļ™āđ„āļ”āđ‰ Routing & Workflow āļ‚āļ­āļ‡ Correspondence, RFA, Circulation Sheet

🔐 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. Token Management (āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡)

  • Payload Optimization: āđƒāļ™ JWT Access Token āđƒāļŦāđ‰āđ€āļāđ‡āļšāđ€āļ‰āļžāļēāļ° userId āđāļĨāļ° scope āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
  • Permission Caching: āļŠāļīāļ—āļ˜āļīāđŒāļĨāļ°āđ€āļ­āļĩāļĒāļ” (Permissions List) āđƒāļŦāđ‰āđ€āļāđ‡āļšāđƒāļ™ Redis āđāļĨāļ°āļ”āļķāļ‡āļĄāļēāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļĄāļ·āđˆāļ­ Request āđ€āļ‚āđ‰āļēāļĄāļē āđ€āļžāļ·āđˆāļ­āļĨāļ”āļ‚āļ™āļēāļ” Token āđāļĨāļ°āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§

4.5. āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļ‡āļēāļ™ (Onboarding Workflow) āļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒ

  • 4.5.1. āļŠāļĢāđ‰āļēāļ‡āļ­āļ‡āļ„āđŒāļāļĢ (Organization)
    • Superadmin āļŠāļĢāđ‰āļēāļ‡āļ­āļ‡āļ„āđŒāļāļĢāđƒāļŦāļĄāđˆ (āđ€āļŠāđˆāļ™ āļšāļĢāļīāļĐāļąāļ— A)
    • Superadmin āđāļ•āđˆāļ‡āļ•āļąāđ‰āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 1 āļ„āļ™āđƒāļŦāđ‰āđ€āļ›āđ‡āļ™ Org Admin āļŦāļĢāļ·āļ­ Document Control āļ‚āļ­āļ‡āļšāļĢāļīāļĐāļąāļ— A
  • 4.5.2. āđ€āļžāļīāđˆāļĄāļœāļđāđ‰āđƒāļŠāđ‰āđƒāļ™āļ­āļ‡āļ„āđŒāļāļĢ
    • Org Admin āļ‚āļ­āļ‡āļšāļĢāļīāļĐāļąāļ— A āđ€āļžāļīāđˆāļĄāļœāļđāđ‰āđƒāļŠāđ‰āļ­āļ·āđˆāļ™āđ† (Editor, Viewer) āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļ™āļ­āļ‡āļ„āđŒāļāļĢāļ‚āļ­āļ‡āļ•āļ™
  • 4.5.3. āļĄāļ­āļšāļŦāļĄāļēāļĒāļœāļđāđ‰āđƒāļŠāđ‰āđƒāļŦāđ‰āļāļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢ (Project)
    • Project Manager āļ‚āļ­āļ‡āđ‚āļ„āļĢāļ‡āļāļēāļĢ X (āļ‹āļķāđˆāļ‡āļ­āļēāļˆāļĄāļēāļˆāļēāļāļšāļĢāļīāļĐāļąāļ— A āļŦāļĢāļ·āļ­āļšāļĢāļīāļĐāļąāļ—āļ­āļ·āđˆāļ™) āļ—āļģāļāļēāļĢ "āđ€āļŠāļīāļ" āļŦāļĢāļ·āļ­ "āļĄāļ­āļšāļŦāļĄāļēāļĒ" āļœāļđāđ‰āđƒāļŠāđ‰āļˆāļēāļāļ­āļ‡āļ„āđŒāļāļĢāļ•āđˆāļēāļ‡āđ† āļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļ™āđ‚āļ„āļĢāļ‡āļāļēāļĢ X
    • āđƒāļ™āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ™āļĩāđ‰ Project Manager āļˆāļ°āļāļģāļŦāļ™āļ” āļšāļ—āļšāļēāļ—āļĢāļ°āļ”āļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢ (āđ€āļŠāđˆāļ™ Project Member, āļŦāļĢāļ·āļ­āļ­āļēāļˆāđ„āļĄāđˆāļĄāļĩāļšāļ—āļšāļēāļ—āļžāļīāđ€āļĻāļĐ āđƒāļŦāđ‰āđƒāļŠāđ‰āļŠāļīāļ—āļ˜āļīāđŒāļˆāļēāļāļĢāļ°āļ”āļąāļšāļ­āļ‡āļ„āđŒāļāļĢāđ„āļ›āļāđˆāļ­āļ™)
  • 4.5.4. āđ€āļĄāļ­āļšāļŦāļĄāļēāļĒāļœāļđāđ‰āđƒāļŠāđ‰āđƒāļŦāđ‰āļāļąāļšāļŠāļąāļāļāļē (Contract)
    • Contract Admin āļ‚āļ­āļ‡āļŠāļąāļāļāļē Y (āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡āđ‚āļ„āļĢāļ‡āļāļēāļĢ X) āļ—āļģāļāļēāļĢāđ€āļĨāļ·āļ­āļāļœāļđāđ‰āđƒāļŠāđ‰āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™āđ‚āļ„āļĢāļ‡āļāļēāļĢ X āđāļĨāđ‰āļ§ āļĄāļ­āļšāļŦāļĄāļēāļĒāđƒāļŦāđ‰āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļ™āļŠāļąāļāļāļē Y
    • āđƒāļ™āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ™āļĩāđ‰ Contract Admin āļˆāļ°āļāļģāļŦāļ™āļ” āļšāļ—āļšāļēāļ—āļĢāļ°āļ”āļąāļšāļŠāļąāļāļāļē (āđ€āļŠāđˆāļ™ Contract Member) āđāļĨāļ°āļŠāļīāļ—āļ˜āļīāđŒāđ€āļ‰āļžāļēāļ°āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™
  • 4.5.5 Security Onboarding:
    • āļ•āđ‰āļ­āļ‡āļšāļąāļ‡āļ„āļąāļšāđ€āļ›āļĨāļĩāđˆāļĒāļ™ password āļ„āļĢāļąāđ‰āļ‡āđāļĢāļāļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āđƒāļŦāļĄāđˆ
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ security awareness training āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ—āļĩāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāļŠāļđāļ‡
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ process āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļĢāļĩāđ€āļ‹āđ‡āļ• password āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ
    • āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļ audit log āļ—āļļāļāļ„āļĢāļąāđ‰āļ‡āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ permissions

4.6. āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļ (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
Document Numbering Formats Superadmin / 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 āļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ
  • Security Metrics: āđāļŠāļ”āļ‡āļˆāļģāļ™āļ§āļ™ files scanned, security incidents, failed login attempts

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)
  • Security Feedback: āđāļŠāļ”āļ‡ security warnings āļŠāļģāļŦāļĢāļąāļš file types āļ—āļĩāđˆāđ€āļŠāļĩāđˆāļĒāļ‡āļŦāļĢāļ·āļ­ files āļ—āļĩāđˆ fail virus scan
  • File Type Indicators: āđāļŠāļ”āļ‡ file type icons āđāļĨāļ° security status

5.10 Form & Interaction (āđƒāļŦāļĄāđˆ)

  • Dynamic Form Generator: āđƒāļŠāđ‰ Component āļāļĨāļēāļ‡āļ—āļĩāđˆāļĢāļąāļš JSON Schema āđāļĨāđ‰āļ§ Render Form āļ­āļ­āļāļĄāļēāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđ€āļžāļ·āđˆāļ­āļĨāļ”āļ„āļ§āļēāļĄāļ‹āđ‰āļģāļ‹āđ‰āļ­āļ™āļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ”āļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™ āđāļĨāļ°āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āđ€āļ āļ—āđƒāļŦāļĄāđˆāđ† āđ„āļ”āđ‰āļ—āļąāļ™āļ—āļĩ
  • Optimistic Updates: āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ° (āđ€āļŠāđˆāļ™ āļāļ” Approve, āļāļ” Read) āđƒāļŦāđ‰ UI āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ°āļ—āļąāļ™āļ—āļĩāđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āđ€āļŦāđ‡āļ™āļāđˆāļ­āļ™āļĢāļ­ API Response (Rollback āļ–āđ‰āļē Failed)

5.11 Mobile Responsiveness (āđƒāļŦāļĄāđˆ)

  • Table Visualization: āļšāļ™āļŦāļ™āđ‰āļēāļˆāļ­āļĄāļ·āļ­āļ–āļ·āļ­ āļ•āļēāļĢāļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĄāļĩāļŦāļĨāļēāļĒ Column (āđ€āļŠāđˆāļ™ Correspondence List) āļ•āđ‰āļ­āļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāđ€āļ›āđ‡āļ™āđāļšāļš Card View āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
  • Navigation: Sidebar āļ•āđ‰āļ­āļ‡āđ€āļ›āđ‡āļ™āđāļšāļš Collapsible Drawer

5.12 Resilience & Offline Support (āđƒāļŦāļĄāđˆ)

  • Auto-Save Draft: āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļĄāļđāļĨāļŸāļ­āļĢāđŒāļĄāļ—āļĩāđˆāļāļģāļĨāļąāļ‡āļāļĢāļ­āļāļĨāļ‡ LocalStorage āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļēāļĒāļāļĢāļ“āļĩāđ€āļ™āđ‡āļ•āļŦāļĨāļļāļ”āļŦāļĢāļ·āļ­āļ›āļīāļ” Browser āđ‚āļ”āļĒāđ„āļĄāđˆāđ„āļ”āđ‰āļ•āļąāđ‰āļ‡āđƒāļˆ
  • Graceful Degradation: āļŦāļēāļ Service āļĢāļ­āļ‡ (āđ€āļŠāđˆāļ™ Search, Notification) āļĨāđˆāļĄ āļĢāļ°āļšāļšāļŦāļĨāļąāļ (CRUD) āļ•āđ‰āļ­āļ‡āļĒāļąāļ‡āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ„āļ”āđ‰

ðŸ›Ąïļ 6. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™ (Non-Functional Requirements)

6.1. āļāļēāļĢāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļāļĢāļ°āļ—āļģ (Audit Log): āļ—āļļāļāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰ (āļŠāļĢāđ‰āļēāļ‡, āđāļāđ‰āđ„āļ‚, āļĨāļš, āļŠāđˆāļ‡) āļˆāļ°āļ–āļđāļāļšāļąāļ™āļ—āļķāļāđ„āļ§āđ‰āđƒāļ™ audit_logs āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļĒāđ‰āļ­āļ™āļŦāļĨāļąāļ‡

  • 6.1.1 āļ‚āļ­āļšāđ€āļ‚āļ•āļāļēāļĢāļšāļąāļ™āļ—āļķāļ Audit Log:

    • āļ—āļļāļāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡/āđāļāđ‰āđ„āļ‚/āļĨāļš āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļģāļ„āļąāļ (correspondences, RFAs, drawings, users, permissions)
    • āļ—āļļāļāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ sensitive (user data, financial information)
    • āļ—āļļāļāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ° workflow (status transitions)
    • āļ—āļļāļāļāļēāļĢāļ”āļēāļ§āļ™āđŒāđ‚āļŦāļĨāļ”āđ„āļŸāļĨāđŒāļŠāļģāļ„āļąāļ (contract documents, financial reports)
    • āļ—āļļāļāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ permission āđāļĨāļ° role assignment
    • āļ—āļļāļāļāļēāļĢāļĨāđ‡āļ­āļāļ­āļīāļ™āļ—āļĩāđˆāļŠāļģāđ€āļĢāđ‡āļˆāđāļĨāļ°āļĨāđ‰āļĄāđ€āļŦāļĨāļ§
    • āļ—āļļāļāļāļēāļĢāļŠāđˆāļ‡āļ„āļģāļ‚āļ­ API āļ—āļĩāđˆāļŠāļģāļ„āļąāļ
  • 6.1.2 āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļāđƒāļ™ Audit Log:

    • āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™ (user_id)
    • āļāļēāļĢāļāļĢāļ°āļ—āļģ (action)
    • āļŠāļ™āļīāļ”āļ‚āļ­āļ‡ entity (entity_type)
    • ID āļ‚āļ­āļ‡ entity (entity_id)
    • āļ‚āđ‰āļ­āļĄāļđāļĨāļāđˆāļ­āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ (old_values) - āļŠāļģāļŦāļĢāļąāļš update operations
    • āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ (new_values) - āļŠāļģāļŦāļĢāļąāļš update operations
    • IP address
    • User agent
    • Timestamp
    • Request ID āļŠāļģāļŦāļĢāļąāļš tracing

6.2. Data Archiving & Partitioning (āđƒāļŦāļĄāđˆ)

  • āļŠāļģāļŦāļĢāļąāļšāļ•āļēāļĢāļēāļ‡āļ—āļĩāđˆāļĄāļĩāļ‚āļ™āļēāļ”āđƒāļŦāļāđˆāđāļĨāļ°āđ‚āļ•āđ€āļĢāđ‡āļ§ (āđ€āļŠāđˆāļ™ audit_logs, notifications, correspondence_revisions) āļ•āđ‰āļ­āļ‡āļ­āļ­āļāđāļšāļšāđ‚āļ”āļĒāļĢāļ­āļ‡āļĢāļąāļš Table Partitioning (āđāļšāđˆāļ‡āļ•āļēāļĄ Range āļ§āļąāļ™āļ—āļĩāđˆ āļŦāļĢāļ·āļ­ List) āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļĢāļ°āļĒāļ°āļĒāļēāļ§

6.3. āļāļēāļĢāļ„āđ‰āļ™āļŦāļē (Search): āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļ„āđ‰āļ™āļŦāļēāđ€āļ­āļāļŠāļēāļĢ correspondence, rfa, shop_drawing, contract-drawing, transmittal āđāļĨāļ° āđƒāļšāđ€āļ§āļĩāļĒāļ™ (Circulations) āļˆāļēāļāļŦāļĨāļēāļĒāđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ„āļ”āđ‰ āđ€āļŠāđˆāļ™ āļ„āđ‰āļ™āļŦāļēāļˆāļēāļāļŠāļ·āđˆāļ­āđ€āļĢāļ·āđˆāļ­āļ‡, āļ›āļĢāļ°āđ€āļ āļ—, āļ§āļąāļ™āļ—āļĩāđˆ, āđāļĨāļ° Tag

6.4. āļāļēāļĢāļ—āļģāļĢāļēāļĒāļ‡āļēāļ™ (Reporting): āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āļģāļĢāļēāļĒāļ‡āļēāļ™āļŠāļĢāļļāļ›āđāļĒāļāļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡ Correspondence āļ›āļĢāļ°āļˆāļģāļ§āļąāļ™, āļŠāļąāļ›āļ”āļēāļŦāđŒ, āđ€āļ”āļ·āļ­āļ™, āđāļĨāļ°āļ›āļĩāđ„āļ”āđ‰

6.5. āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž (Performance): āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰ Caching āļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļšāđˆāļ­āļĒ āđāļĨāļ°āđƒāļŠāđ‰ Pagination āđƒāļ™āļ•āļēāļĢāļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļģāļ™āļ§āļ™āļĄāļēāļ

  • 6.5.1 āļ•āļąāļ§āļŠāļĩāđ‰āļ§āļąāļ”āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž:

    • API Response Time: < 200ms (90th percentile) āļŠāļģāļŦāļĢāļąāļš operation āļ—āļąāđˆāļ§āđ„āļ›
    • Search Query Performance: < 500ms āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āļąāđ‰āļ™āļŠāļđāļ‡
    • File Upload Performance: < 30 seconds āļŠāļģāļŦāļĢāļąāļšāđ„āļŸāļĨāđŒāļ‚āļ™āļēāļ” 50MB
    • Concurrent Users: āļĢāļ­āļ‡āļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 100 āļ„āļ™
    • Database Connection Pool: āļ‚āļ™āļēāļ”āđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļąāļš workload (default: min 5, max 20 connections)
    • Cache Hit Ratio: > 80% āļŠāļģāļŦāļĢāļąāļš cached data
    • Application Startup Time: < 30 seconds
  • 6.5.2 Caching Strategy:

    • Master Data Cache: Roles, Permissions, Organizations, Project metadata (TTL: 1 hour)
    • User Session Cache: User permissions āđāļĨāļ° profile data (TTL: 30 minutes)
    • Search Result Cache: Frequently searched queries (TTL: 15 minutes)
    • File Metadata Cache: Attachment metadata (TTL: 1 hour)
    • Document Cache: Frequently accessed document metadata (TTL: 30 minutes)
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ cache invalidation strategy āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™:
      • Invalidate on update/delete operations
      • Time-based expiration
      • Manual cache clearance āļŠāļģāļŦāļĢāļąāļš admin operations
    • āđƒāļŠāđ‰ Redis āđ€āļ›āđ‡āļ™ distributed cache backend
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ cache monitoring (hit/miss ratios)

6.6. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ (Security):

  • āļĄāļĩāļĢāļ°āļšāļš Rate Limiting āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš Brute-force

  • āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Secret (āđ€āļŠāđˆāļ™ āļĢāļŦāļąāļŠāļœāđˆāļēāļ™ DB, JWT Secret) āļˆāļ°āļ•āđ‰āļ­āļ‡āļ—āļģāļœāđˆāļēāļ™ Environment Variable āļ‚āļ­āļ‡ Docker āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļŠāļđāļ‡āļŠāļļāļ”

  • 6.6.1 Rate Limiting Strategy:

    • Anonymous Endpoints: 100 requests/hour āļ•āđˆāļ­ IP address
    • Authenticated Endpoints:
      • Viewer: 500 requests/hour
      • Editor: 1000 requests/hour
      • Document Control: 2000 requests/hour
      • Admin/Superadmin: 5000 requests/hour
    • File Upload Endpoints: 50 requests/hour āļ•āđˆāļ­ user
    • Search Endpoints: 500 requests/hour āļ•āđˆāļ­ user
    • Authentication Endpoints: 10 requests/minute āļ•āđˆāļ­ IP address
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ mechanism āļŠāļģāļŦāļĢāļąāļšāļĒāļāđ€āļ§āđ‰āļ™ rate limiting āļŠāļģāļŦāļĢāļąāļš trusted services
    • āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļ log āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢ trigger rate limiting
  • 6.6.2 Error Handling āđāļĨāļ° Resilience:

    • āļ•āđ‰āļ­āļ‡āļĄāļĩ circuit breaker pattern āļŠāļģāļŦāļĢāļąāļš external service calls
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ retry mechanism āļ”āđ‰āļ§āļĒ exponential backoff
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ graceful degradation āđ€āļĄāļ·āđˆāļ­āļšāļĢāļīāļāļēāļĢāļ āļēāļĒāļ™āļ­āļāļĨāđ‰āļĄāđ€āļŦāļĨāļ§
    • Error messages āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāđ€āļ›āļīāļ”āđ€āļœāļĒāļ‚āđ‰āļ­āļĄāļđāļĨ sensitive
  • 6.6.3 Input Validation:

    • āļ•āđ‰āļ­āļ‡āļĄāļĩ input validation āļ—āļąāđ‰āļ‡āļāļąāđˆāļ‡ client āđāļĨāļ° server (defense in depth)
    • āļ•āđ‰āļ­āļ‡āļ›āđ‰āļ­āļ‡āļāļąāļ™ OWASP Top 10 vulnerabilities:
      • SQL Injection (āđƒāļŠāđ‰ parameterized queries āļœāđˆāļēāļ™ ORM)
      • XSS (input sanitization āđāļĨāļ° output encoding)
      • CSRF (CSRF tokens āļŠāļģāļŦāļĢāļąāļš state-changing operations)
    • āļ•āđ‰āļ­āļ‡ validate file uploads:
      • File type (white-list approach)
      • File size
      • File content (magic number verification)
    • āļ•āđ‰āļ­āļ‡ sanitize user inputs āļāđˆāļ­āļ™āđāļŠāļ”āļ‡āļœāļĨāđƒāļ™ UI
    • āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ content security policy (CSP) headers
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ request size limits āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™ DoS attacks
  • 6.6.4 Session āđāļĨāļ° Token Management:

    • JWT token expiration: 8 hours āļŠāļģāļŦāļĢāļąāļš access token
    • Refresh token expiration: 7 days
    • Refresh token mechanism: āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš token rotation āđāļĨāļ° revocation
    • Token revocation on logout: āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļ revoked tokens āļˆāļ™āļāļ§āđˆāļēāļˆāļ° expire
    • Concurrent session management:
      • āļˆāļģāļāļąāļ”āļˆāļģāļ™āļ§āļ™ session āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ„āļ”āđ‰ (default: 5 devices)
      • āļ•āđ‰āļ­āļ‡āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđ€āļĄāļ·āđˆāļ­āļĄāļĩ login āļˆāļēāļ device/location āđƒāļŦāļĄāđˆ
    • Device fingerprinting: āļŠāļģāļŦāļĢāļąāļš security āđāļĨāļ° audit purposes
    • Password policy:
      • āļ„āļ§āļēāļĄāļĒāļēāļ§āļ‚āļąāđ‰āļ™āļ•āđˆāļģ: 8 characters
      • āļ•āđ‰āļ­āļ‡āļĄāļĩ uppercase, lowercase, number, special character
      • āļ•āđ‰āļ­āļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™ password āļ—āļļāļ 90 āļ§āļąāļ™
      • āļ•āđ‰āļ­āļ‡āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđƒāļŠāđ‰ password āļ—āļĩāđˆāđ€āļ„āļĒāđƒāļŠāđ‰āļĄāļēāđāļĨāđ‰āļ§ 5 āļ„āļĢāļąāđ‰āļ‡āļĨāđˆāļēāļŠāļļāļ”

6.7. āļāļēāļĢāļŠāļģāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļāļēāļĢāļāļđāđ‰āļ„āļ·āļ™ (Backup & Recovery):

  • āļĢāļ°āļšāļšāļˆāļ°āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļĨāđ„āļāļāļēāļĢāļŠāļģāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāļŠāļģāļŦāļĢāļąāļšāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ MariaDB [cite: 2.4] āđāļĨāļ°āđ„āļŸāļĨāđŒāđ€āļ­āļāļŠāļēāļĢāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđƒāļ™ /share/dms-data [cite: 2.1] (āđ€āļŠāđˆāļ™ āđƒāļŠāđ‰ HBS 3 āļ‚āļ­āļ‡ QNAP āļŦāļĢāļ·āļ­āļŠāļ„āļĢāļīāļ›āļ•āđŒāļŠāļģāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ) āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒāļ§āļąāļ™āļĨāļ° 1 āļ„āļĢāļąāđ‰āļ‡

  • āļ•āđ‰āļ­āļ‡āļĄāļĩāđāļœāļ™āļāļēāļĢāļāļđāđ‰āļ„āļ·āļ™āļĢāļ°āļšāļš (Disaster Recovery Plan) āđƒāļ™āļāļĢāļ“āļĩāļ—āļĩāđˆ Server āļŦāļĨāļąāļ (QNAP) āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļĄāđˆāđ„āļ”āđ‰

  • 6.7.1 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļāļđāđ‰āļ„āļ·āļ™:

    • Database Restoration Procedure:
      • āļŠāļĢāđ‰āļēāļ‡āļˆāļēāļ full backup āļĨāđˆāļēāļŠāļļāļ”
      • Apply transaction logs āļ–āļķāļ‡ point-in-time āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ
      • Verify data integrity post-restoration
    • File Storage Restoration Procedure:
      • Restore āļˆāļēāļ QNAP snapshot āļŦāļĢāļ·āļ­ backup
      • Verify file integrity āđāļĨāļ° permissions
    • Application Redeployment Procedure:
      • Deploy āļˆāļēāļ version āļĨāđˆāļēāļŠāļļāļ”āļ—āļĩāđˆāļĢāļđāđ‰āļ§āđˆāļēāļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰
      • Verify application health
    • Data Integrity Verification Post-Recovery:
      • Run data consistency checks
      • Verify critical business data
    • Recovery Time Objective (RTO): < 4 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡
    • Recovery Point Objective (RPO): < 1 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡

6.8. āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ (Notification Strategy - āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡):

  • 6.8.1 āļĢāļ°āļšāļšāļˆāļ°āļŠāđˆāļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ (āļœāđˆāļēāļ™ Email āļŦāļĢāļ·āļ­ Line [cite: 2.7]) āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāļŠāļģāļ„āļąāļ āļ”āļąāļ‡āļ™āļĩāđ‰:

    1. āđ€āļĄāļ·āđˆāļ­āļĄāļĩāđ€āļ­āļāļŠāļēāļĢāđƒāļŦāļĄāđˆ (Correspondence, RFA) āļ–āļđāļāļŠāđˆāļ‡āļĄāļēāļ–āļķāļ‡āļ­āļ‡āļ„āđŒāļāļĢāļ“āđŒāļ‚āļ­āļ‡āđ€āļĢāļē
    2. āđ€āļĄāļ·āđˆāļ­āļĄāļĩāđƒāļšāđ€āļ§āļĩāļĒāļ™ (Circulation) āđƒāļŦāļĄāđˆ āļĄāļ­āļšāļŦāļĄāļēāļĒāļ‡āļēāļ™āļĄāļēāļ—āļĩāđˆāđ€āļĢāļē
    3. (āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļ) āđ€āļĄāļ·āđˆāļ­āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļĢāļēāļŠāđˆāļ‡āđ„āļ› āļ–āļđāļāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ (āđ€āļŠāđˆāļ™ āļ­āļ™āļļāļĄāļąāļ•āļī/āļ›āļāļīāđ€āļŠāļ˜)
    4. (āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļ) āđ€āļĄāļ·āđˆāļ­āđƒāļāļĨāđ‰āļ–āļķāļ‡āļ§āļąāļ™āļ„āļĢāļšāļāļģāļŦāļ™āļ” (Deadline) [cite: 3.2.5, 3.6.6, 3.7.5]
  • 6.8.2 Grouping/Digest (āđƒāļŦāļĄāđˆ): āļāļĢāļ“āļĩāļĄāļĩāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ›āļĢāļ°āđ€āļ āļ—āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļˆāļģāļ™āļ§āļ™āļĄāļēāļāđƒāļ™āļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļēāļŠāļąāđ‰āļ™āđ† (āđ€āļŠāđˆāļ™ Approve āđ€āļ­āļāļŠāļēāļĢ 10 āļ‰āļšāļąāļšāļĢāļ§āļ”) āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡ āļĢāļ§āļĄ (Batch) āđ€āļ›āđ‡āļ™ 1 Email/Line Notification āđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āļĢāļšāļāļ§āļ™āļœāļđāđ‰āđƒāļŠāđ‰ (Spamming)

  • 6.8.3 Notification Delivery Guarantees:

    • At-least-once delivery: āļŠāļģāļŦāļĢāļąāļš important notifications
    • Retry mechanism: āļ”āđ‰āļ§āļĒ exponential backoff (max 3 reties)
    • Dead letter queue: āļŠāļģāļŦāļĢāļąāļš notifications āļ—āļĩāđˆāļŠāđˆāļ‡āđ„āļĄāđˆāļŠāļģāđ€āļĢāđ‡āļˆāļŦāļĨāļąāļ‡āļˆāļēāļ retries
    • Delivery status tracking: āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļāļŠāļ–āļēāļ™āļ°āļāļēāļĢāļŠāđˆāļ‡ notifications
    • Fallback channels: āļ–āđ‰āļē Email āļĨāđ‰āļĄāđ€āļŦāļĨāļ§ āđƒāļŦāđ‰āļŠāđˆāļ‡āļœāđˆāļēāļ™ SYSTEM notification
    • Notification preferences: āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ” channel preferences āđ„āļ”āđ‰

6.9. Maintenance Mode (āđƒāļŦāļĄāđˆ)

  • āļĢāļ°āļšāļšāļ•āđ‰āļ­āļ‡āļĄāļĩāļāļĨāđ„āļ Maintenance Mode āļ—āļĩāđˆ Admin āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰
    • āđ€āļĄāļ·āđˆāļ­āđ€āļ›āļīāļ”: āļœāļđāđ‰āđƒāļŠāđ‰āļ—āļąāđˆāļ§āđ„āļ›āļˆāļ°āđ€āļŦāđ‡āļ™āļŦāļ™āđ‰āļē "āļ›āļīāļ”āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡" āđāļĨāļ°āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļ API āđ„āļ”āđ‰ (āļĒāļāđ€āļ§āđ‰āļ™ Admin)
    • āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļŠāđˆāļ§āļ‡ Deploy Version āđƒāļŦāļĄāđˆ āļŦāļĢāļ·āļ­ Database Migration

6.10. Monitoring āđāļĨāļ° Observability

  • 6.10.1 Application Monitoring:
    • Health checks: /health endpoint āļŠāļģāļŦāļĢāļąāļš load balancer
    • Metrics collection: Response times, error rates, throughput
    • Distributed tracing: āļŠāļģāļŦāļĢāļąāļš request tracing across services
    • Log aggregation: Structured logging āļ”āđ‰āļ§āļĒ JSON format
    • Alerting: āļŠāļģāļŦāļĢāļąāļš critical errors āđāļĨāļ° performance degradation
  • 6.10.2 Business Metrics:
    • āļˆāļģāļ™āļ§āļ™ documents created āļ•āđˆāļ­āļ§āļąāļ™
    • Workflow completion rates
    • User activity metrics
    • System utilization rates
    • Search query performance
  • 6.10.3 Security Monitoring:
    • Failed login attempts
    • Rate limiting triggers
    • Virus scan results
    • File download activities
    • Permission changes

6.11 JSON Processing & Validation

  • 6.11.1 JSON Schema Management
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ centralized JSON schema registry
    • āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš schema versioning āđāļĨāļ° migration
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ schema validation during runtime
  • 6.11.2 Performance Optimization
    • Caching: Cache parsed JSON structures
    • Compression: āđƒāļŠāđ‰ compression āļŠāļģāļŦāļĢāļąāļš JSON āļ‚āļ™āļēāļ”āđƒāļŦāļāđˆ
    • Indexing: Support JSON path indexing āļŠāļģāļŦāļĢāļąāļš query
  • 6.11.3 Error Handling
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ graceful degradation āđ€āļĄāļ·āđˆāļ­ JSON validation āļĨāđ‰āļĄāđ€āļŦāļĨāļ§
    • āļ•āđ‰āļ­āļ‡āļĄāļĩ default fallback values
    • āļ•āđ‰āļ­āļ‡āļšāļąāļ™āļ—āļķāļ error logs āļŠāļģāļŦāļĢāļąāļš validation failures

🧊 7. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ”āđ‰āļēāļ™āļāļēāļĢāļ—āļ”āļŠāļ­āļš (Testing Requirements)

7.1. Unit Testing:

  • āļ•āđ‰āļ­āļ‡āļĄāļĩ unit tests āļŠāļģāļŦāļĢāļąāļš business logic āļ—āļąāđ‰āļ‡āļŦāļĄāļ”
  • Code coverage āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 70% āļŠāļģāļŦāļĢāļąāļš backend services
  • āļ•āđ‰āļ­āļ‡āļ—āļ”āļŠāļ­āļš RBAC permission logic āļ—āļļāļāļĢāļ°āļ”āļąāļš

7.2. Integration Testing:

  • āļ—āļ”āļŠāļ­āļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļ‚āļ­āļ‡ modules
  • āļ—āļ”āļŠāļ­āļš database migrations āđāļĨāļ° data integrity
  • āļ—āļ”āļŠāļ­āļš API endpoints āļ”āđ‰āļ§āļĒ realistic data

7.3. End-to-End Testing:

  • āļ—āļ”āļŠāļ­āļš complete user workflows
  • āļ—āļ”āļŠāļ­āļš document lifecycle āļˆāļēāļ creation āļ–āļķāļ‡ archival
  • āļ—āļ”āļŠāļ­āļš cross-module integrations

7.4. Security Testing:

  • Penetration Testing: āļ—āļ”āļŠāļ­āļš OWASP Top 10 vulnerabilities
  • Security Audit: Review code āļŠāļģāļŦāļĢāļąāļš security flaws
  • Virus Scanning Test: āļ—āļ”āļŠāļ­āļš file upload security
  • Rate Limiting Test: āļ—āļ”āļŠāļ­āļš rate limiting functionality

7.5. Performance Testing:

  • Load Testing: āļ—āļ”āļŠāļ­āļšāļ”āđ‰āļ§āļĒ realistic workloads
  • Stress Testing: āļŦāļē breaking points āļ‚āļ­āļ‡āļĢāļ°āļšāļš
  • Endurance Testing: āļ—āļ”āļŠāļ­āļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđ€āļ›āđ‡āļ™āđ€āļ§āļĨāļēāļ™āļēāļ™

7.6. Disaster Recovery Testing:

  • āļ—āļ”āļŠāļ­āļš backup āđāļĨāļ° restoration procedures
  • āļ—āļ”āļŠāļ­āļš failover mechanisms
  • āļ—āļ”āļŠāļ­āļš data integrity āļŦāļĨāļąāļ‡āļāļēāļĢ recovery

7.7 Specific Scenario Testing (āđ€āļžāļīāđˆāļĄ)

  • Race Condition Test: āļ—āļ”āļŠāļ­āļšāļĒāļīāļ‡ Request āļ‚āļ­āđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢāļžāļĢāđ‰āļ­āļĄāļāļąāļ™ 100 Request
  • Transaction Test: āļ—āļ”āļŠāļ­āļšāļ›āļīāļ”āđ€āļ™āđ‡āļ•āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Upload āđ„āļŸāļĨāđŒ (āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļēāđ„āļĄāđˆāļĄāļĩ Orphan File āļŦāļĢāļ·āļ­ Broken Link)
  • Permission Test: āļ—āļ”āļŠāļ­āļš CASL Integration āļ—āļąāđ‰āļ‡āļāļąāđˆāļ‡ Backend āđāļĨāļ° Frontend āđƒāļŦāđ‰āļ•āļĢāļ‡āļāļąāļ™

8. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ”āđ‰āļēāļ™āļāļēāļĢāļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļē (Maintenance Requirements)

8.1. Log Retention:

  • Audit logs: 7 āļ›āļĩ
  • Application logs: 1 āļ›āļĩ
  • Performance metrics: 2 āļ›āļĩ

8.2. Monitoring āđāļĨāļ° Alerting:

  • āļ•āđ‰āļ­āļ‡āļĄāļĩ proactive monitoring āļŠāļģāļŦāļĢāļąāļš critical systems
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ alerting āļŠāļģāļŦāļĢāļąāļš security incidents
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ performance degradation alerts

8.3. Patch Management:

  • āļ•āđ‰āļ­āļ‡āļĄāļĩ process āļŠāļģāļŦāļĢāļąāļš security patches
  • āļ•āđ‰āļ­āļ‡āļ—āļ”āļŠāļ­āļš patches āđƒāļ™ staging environment
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ rollback plan āļŠāļģāļŦāļĢāļąāļš failed updates

8.4. Capacity Planning:

  • āļ•āđ‰āļ­āļ‡ monitor resource utilization
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ scaling strategy āļŠāļģāļŦāļĢāļąāļš growth
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ performance baselines āđāļĨāļ° trending

9. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ”āđ‰āļēāļ™āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļĢāļ°āđ€āļšāļĩāļĒāļš (Compliance Requirements)

9.1. Data Privacy:

  • āļ•āđ‰āļ­āļ‡āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļŦāļĄāļēāļĒāļ„āļļāđ‰āļĄāļ„āļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨ
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ data retention policies
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ data deletion procedures

9.2. Audit Compliance:

  • āļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļš internal āđāļĨāļ° external audits
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ comprehensive audit trails
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ reporting capabilities āļŠāļģāļŦāļĢāļąāļš compliance

9.3. Security Standards:

  • āļ•āđ‰āļ­āļ‡āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ organizational security policies
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ security incident response plan
  • āļ•āđ‰āļ­āļ‡āļĄāļĩ regular security assessments

📋 āļŠāļĢāļļāļ›āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļˆāļēāļāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļāđˆāļ­āļ™āļŦāļ™āđ‰āļē

Security Enhancements:

  1. File Upload Security - Virus scanning, file type validation, access controls
  2. Input Validation - OWASP Top 10 protection, XSS/CSRF prevention
  3. Rate Limiting - Comprehensive rate limiting strategy
  4. Secrets Management - Secure handling of sensitive configuration

Architecture Improvements:

  1. Document Numbering - Changed from Stored Procedure to Application-level Locking with Optimistic Locking safety net
  2. Resilience Patterns - Circuit breaker, retry mechanisms, fallback strategies
  3. Monitoring & Observability - Health checks, metrics, distributed tracing
  4. Caching Strategy - Comprehensive caching with proper invalidation
  5. Two-Phase File Storage - Temp -> Permanent storage with transaction safety
  6. Unified Workflow Engine - Consolidated routing logic for better maintainability

Performance Targets:

  1. API Response Time - < 200ms (90th percentile)
  2. Search Performance - < 500ms
  3. File Upload - < 30 seconds for 50MB files
  4. Cache Hit Ratio - > 80%

Operational Excellence:

  1. Disaster Recovery - RTO < 4 hours, RPO < 1 hour
  2. Backup Procedures - Comprehensive backup and restoration
  3. Security Testing - Penetration testing and security audits
  4. Performance Testing - Load testing with realistic workloads
  5. Maintenance Mode - Graceful system maintenance capabilities

User Experience Improvements:

  1. Dynamic Form Generator - Reduced code duplication and better schema support
  2. Mobile Responsiveness - Card view for tables on mobile devices
  3. Auto-Save Draft - LocalStorage integration for form resilience
  4. Notification Digest - Reduced notification spam

Data Management:

  1. Virtual Columns - Improved JSON field search performance
  2. Table Partitioning - Support for large-scale data growth
  3. Idempotency Keys - Prevention of duplicate transactions

āđ€āļ­āļāļŠāļēāļĢāļ™āļĩāđ‰āļŠāļ°āļ—āđ‰āļ­āļ™āļ–āļķāļ‡āļ„āļ§āļēāļĄāļĄāļļāđˆāļ‡āļĄāļąāđˆāļ™āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļšāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ, āļĄāļĩāļ„āļ§āļēāļĄāļ—āļ™āļ—āļēāļ™, āđāļĨāļ°āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡ āļžāļĢāđ‰āļ­āļĄāļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāđ€āļ•āļīāļšāđ‚āļ•āđƒāļ™āļ­āļ™āļēāļ„āļ•āđāļĨāļ°āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ„āļ›

āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ: Requirements āļ™āļĩāđ‰āļˆāļ°āļ–āļđāļāļ—āļšāļ—āļ§āļ™āđāļĨāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđ€āļ›āđ‡āļ™āļĢāļ°āļĒāļ°āļ•āļēāļĄ feedback āļˆāļēāļāļ—āļĩāļĄāļžāļąāļ’āļ™āļēāđāļĨāļ°āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ„āļ›

Document Control:

  • Document: Application Requirements Specification v1.4.3
  • Version: 1.4
  • Date: 2025-11-22
  • Author: NAP LCBP3-DMS & Gemini
  • Status: FINAL-Rev.01
  • Classification: Internal Technical Documentation
  • Approved By: Nattanin

End of Requirements Specification v1.4.3