Files
lcbp3/specs/01-requirements/01-01-objectives.md
T
admin aa82b890a5
CI / CD Pipeline / build (push) Failing after 17m3s
CI / CD Pipeline / deploy (push) Has been skipped
260324:2133 Refactor correspondence & rfa
2026-03-24 21:33:59 +07:00

122 lines
8.1 KiB
Markdown

# 📌 Section 1: Objectives (āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ)
---
title: 'Objectives'
version: 1.8.1
status: updated
owner: Nattanin Peancharoen
last_updated: 2026-03-24
related:
- specs/00-Overview/00-03-product-vision.md
- specs/01-Requirements/01-04-user-stories.md
- specs/01-Requirements/01-05-acceptance-criteria.md
- specs/01-Requirements/01-03-modules/01-03-00-index.md
- specs/06-Decision-Records/ADR-005-technology-stack.md
---
> [!NOTE]
> āđ€āļ­āļāļŠāļēāļĢāļ™āļĩāđ‰āļāļģāļŦāļ™āļ” **āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđāļĨāļ°āļ‚āļ­āļšāđ€āļ‚āļ•āļ‚āļ­āļ‡ LCBP3-DMS** āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āđ€āļ­āļāļŠāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ—āļēāļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļĨāļ° Feature Prioritization
---
## 1. ðŸŽŊ āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļŦāļĨāļąāļ (Primary Objectives)
āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļšāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļāļŠāļēāļĢāđ‚āļ„āļĢāļ‡āļāļēāļĢ (Document Management System) āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢāļāđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļ—āđˆāļēāđ€āļĢāļ·āļ­āđāļŦāļĨāļĄāļ‰āļšāļąāļ‡āļĢāļ°āļĒāļ°āļ—āļĩāđˆ 3 āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāļ­āļ‡āļ„āđŒāļāļĢāļœāļđāđ‰āļĄāļĩāļŠāđˆāļ§āļ™āđ„āļ”āđ‰āļŠāđˆāļ§āļ™āđ€āļŠāļĩāļĒāļŦāļĨāļēāļĒāļāđˆāļēāļĒ āđ„āļ”āđ‰āđāļāđˆ āļāļ—āļ—., āļŠāļ„., āļœāļĢāļĄ., āļ„āļ„āļ‡. āđ‚āļ”āļĒāļĄāļĩāđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļ”āļąāļ‡āļ™āļĩāđ‰:
| # | āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ | KPI āļ—āļĩāđˆāļ§āļąāļ”āđ„āļ”āđ‰ | āļŠāļ–āļēāļ™āļ° |
|---|------------|------------|------|
| O-01 | āļˆāļąāļ”āļāļēāļĢāļ§āļ‡āļˆāļĢāļŠāļĩāļ§āļīāļ•āđ€āļ­āļāļŠāļēāļĢ (Correspondence, RFA, Transmittal) āđāļšāļšāļ„āļĢāļšāļ§āļ‡āļˆāļĢ | Document turnaround time āļĨāļ”āļĨāļ‡ â‰Ĩ 50% āļˆāļēāļ Manual | 🔄 UAT |
| O-02 | āļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰ RBAC 4 āļĢāļ°āļ”āļąāļš (Global/Org/Project/Contract) āļœāđˆāļēāļ™ CASL | āđ„āļĄāđˆāļžāļš Unauthorized Access āđƒāļ™ Penetration Test | ✅ Done |
| O-03 | āļ›āđ‰āļ­āļ‡āļāļąāļ™ Race Condition āđƒāļ™āļāļēāļĢāļ­āļ­āļāđ€āļĨāļ‚āđ€āļ­āļāļŠāļēāļĢ āļ”āđ‰āļ§āļĒ Redis Redlock | Duplicate document number = 0 āđƒāļ™ load test 50 concurrent | ✅ Done |
| O-04 | āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļ§āļĢāļąāļŠāļ—āļļāļāđ„āļŸāļĨāđŒāļ—āļĩāđˆāļ­āļąāļ›āđ‚āļŦāļĨāļ” āļ”āđ‰āļ§āļĒ ClamAV | Malware detection rate = 100% āļˆāļēāļ EICAR test | ✅ Done |
| O-05 | āļĢāļ­āļ‡āļĢāļąāļš Full-text Search āļ‚āđ‰āļēāļĄāđ€āļ­āļāļŠāļēāļĢāļ—āļąāđ‰āļ‡āļŦāļĄāļ” āļ”āđ‰āļ§āļĒ Elasticsearch | Search response time < 500ms āļŠāļģāļŦāļĢāļąāļš 10K documents | ✅ Done |
| O-06 | āļĢāļ­āļ‡āļĢāļąāļš ~20,000 āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđ€āļ”āļīāļĄ āļœāđˆāļēāļ™ Migration Bot (n8n + Ollama) | Migration accuracy â‰Ĩ 95% | 🔄 Planned |
| O-07 | āļšāļąāļ™āļ—āļķāļ Audit Log āļ—āļļāļ Action āļ—āļĩāđˆāļŠāļģāļ„āļąāļāđƒāļ™āļĢāļ°āļšāļš | Audit trail āļ„āļĢāļš 100% āļŠāļģāļŦāļĢāļąāļš CRUD + Workflow events | ✅ Done |
| O-08 | āļĢāļ°āļšāļšāļžāļĢāđ‰āļ­āļĄāļĢāļ­āļ‡āļĢāļąāļš 100 concurrent users āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ degradation | API response time < 200ms (P95) āļ—āļĩāđˆ 100 VUs | 🔄 UAT |
---
## 2. ðŸ§Đ āļ‚āļ­āļšāđ€āļ‚āļ•āļĢāļ°āļšāļš (Scope)
### ✅ In Scope — āļŸāļĩāđ€āļˆāļ­āļĢāđŒāļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđƒāļ™ LCBP3-DMS
| Module | āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ | āļ­āđ‰āļēāļ‡āļ­āļīāļ‡ |
|--------|---------|--------|
| **Correspondence** | āļˆāļ”āļŦāļĄāļēāļĒ/āđ€āļ­āļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ­āļ‡āļ„āđŒāļāļĢ āļžāļĢāđ‰āļ­āļĄ Workflow | US-001~005 |
| **RFA (Request for Approval)** | āļ‚āļ­āļ­āļ™āļļāļĄāļąāļ•āļī Shop Drawing āļžāļĢāđ‰āļ­āļĄ Transmittal | US-006~012c |
| **Transmittal** | āļŠāđˆāļ‡āđ€āļ­āļāļŠāļēāļĢāļˆāļģāļ™āļ§āļ™āļĄāļēāļāļžāļĢāđ‰āļ­āļĄāļāļąāļ™ | US-013~015 |
| **Shop Drawing** | āļˆāļąāļ”āļāļēāļĢāđāļšāļšāļāđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļžāļĢāđ‰āļ­āļĄ Revision History | US-016~018 |
| **Contract Drawing** | āļˆāļąāļ”āļāļēāļĢāđāļšāļšāļ„āļđāđˆāļŠāļąāļāļāļē | US-019~020 |
| **As-built Drawing** | āļˆāļąāļ”āļāļēāļĢāđāļšāļš As-built āļžāļĢāđ‰āļ­āļĄ Revision | US-021~022 |
| **Circulation Sheet** | āđ€āļ§āļĩāļĒāļ™āđ€āļ­āļāļŠāļēāļĢāļ āļēāļĒāđƒāļ™āļ­āļ‡āļ„āđŒāļāļĢ | US-023~025 |
| **Document Numbering** | āļ­āļ­āļāđ€āļĨāļ‚āđ€āļ­āļāļŠāļēāļĢāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļžāļĢāđ‰āļ­āļĄ Format Config | ADR-002 |
| **Workflow Engine** | State machine āļŠāļģāļŦāļĢāļąāļšāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļī | ADR-001 |
| **RBAC** | āļŠāļīāļ—āļ˜āļīāđŒ 4 āļĢāļ°āļ”āļąāļšāļœāđˆāļēāļ™ CASL | ADR-016 |
| **Full-text Search** | āļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļēāļĄāđ€āļ­āļāļŠāļēāļĢāļ—āļąāđ‰āļ‡āļŦāļĄāļ” | Elasticsearch |
| **Audit Log** | āļšāļąāļ™āļ—āļķāļāļ—āļļāļ Action āļŠāļģāļ„āļąāļ | — |
| **Notifications** | āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ In-App, Email, LINE | ADR-008 |
| **Admin Panel** | āļˆāļąāļ”āļāļēāļĢ Users, Orgs, Projects, Configs | SCR-022~026 |
| **Migration Bot** | āļ™āļģāđ€āļ‚āđ‰āļēāđ€āļ­āļāļŠāļēāļĢāđ€āļ”āļīāļĄ ~20K docs | ADR-017 |
### ❌ Out of Scope — āđ„āļĄāđˆāļĢāļ§āļĄāđƒāļ™āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ™āļĩāđ‰
- āļĢāļ°āļšāļšāļšāļąāļāļŠāļĩ / ERP Integration
- Mobile Native App (iOS/Android) — āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ‰āļžāļēāļ° Responsive Web
- Electronic Signature (e-Signature) āļ•āļēāļĄāļāļŽāļŦāļĄāļēāļĒ
- Video Conference / Real-time Collaboration Editor
- IoT / Sensor Data Integration
---
## 3. 🏗ïļ āļšāļĢāļīāļšāļ—āļ˜āļļāļĢāļāļīāļˆ (Business Context)
**āđ‚āļ„āļĢāļ‡āļāļēāļĢ:** āļ—āđˆāļēāđ€āļĢāļ·āļ­āđāļŦāļĨāļĄāļ‰āļšāļąāļ‡ āļĢāļ°āļĒāļ°āļ—āļĩāđˆ 3 (Laem Chabang Port Phase 3)
**āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™:** 4 āļ­āļ‡āļ„āđŒāļāļĢāļŦāļĨāļąāļ â€” āļāļ—āļ—. (PAT), āļŠāļ„. (PMC), āļœāļĢāļĄ. (Contractor), āļ„āļ„āļ‡. (Consultant)
**āļ›āļąāļāļŦāļēāđ€āļ”āļīāļĄāļ—āļĩāđˆāđāļāđ‰āđ„āļ‚:**
- āđ€āļ­āļāļŠāļēāļĢāđ€āļ”āļīāļĄāļ­āļĒāļđāđˆāđƒāļ™āļĢāļđāļ›āđāļšāļšāļāļĢāļ°āļ”āļēāļĐāđāļĨāļ°āđ„āļŸāļĨāđŒāļāļĢāļ°āļˆāļąāļ”āļāļĢāļ°āļˆāļēāļĒ (~20,000 āļĢāļēāļĒāļāļēāļĢ)
- āđ„āļĄāđˆāļĄāļĩāļĢāļ°āļšāļš Version Control āļŠāļģāļŦāļĢāļąāļšāđāļšāļšāļāđˆāļ­āļŠāļĢāđ‰āļēāļ‡
- āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļīāļ•āđ‰āļ­āļ‡āļŠāđˆāļ‡āđ€āļ­āļāļŠāļēāļĢāļœāđˆāļēāļ™āļ­āļĩāđ€āļĄāļĨāļŦāļĢāļ·āļ­āļĄāļ·āļ­ āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļ™āļēāļ™
- āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļīāļ—āļ˜āļīāđŒāļ—āļĩāđˆāļĢāļąāļ”āļāļļāļĄ āļ—āļģāđƒāļŦāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļąāđˆāļ§āđ„āļŦāļĨāđ„āļ”āđ‰
- āđ„āļĄāđˆāļĄāļĩ Audit Trail āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļĒāđ‰āļ­āļ™āļŦāļĨāļąāļ‡
---
## 4. 📐 Architectural Principles (āļŦāļĨāļąāļāļāļēāļĢāļ­āļ­āļāđāļšāļš)
| āļŦāļĨāļąāļāļāļēāļĢ | āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ” | ADR |
|--------|---------|-----|
| **Security-First** | RBAC āļ—āļļāļ Endpoint, JWT, Helmet.js, ClamAV | ADR-016 |
| **Data Integrity** | UUID-based routing (āļ›āđ‰āļ­āļ‡āļāļąāļ™ IDOR), Optimistic Locking | ADR-019 |
| **No Magic Migrations** | āđāļāđ‰āđ„āļ‚ Schema SQL āđ‚āļ”āļĒāļ•āļĢāļ‡ āđ„āļĄāđˆāđƒāļŠāđ‰ ORM Migration | ADR-009 |
| **Thin Controller** | Business Logic āļ­āļĒāļđāđˆāđƒāļ™ Service Layer āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ | — |
| **Unified Workflow** | State Machine āđ€āļ”āļĩāļĒāļ§āļŠāļģāļŦāļĢāļąāļšāļ—āļļāļ Workflow | ADR-001 |
| **Hybrid Identifier** | INT PK (internal) + UUIDv7 (public API) | ADR-019 |
| **Queue-based Notifications** | BullMQ → Email/LINE/In-App async | ADR-008 |
| **Observable System** | Prometheus + Loki + Grafana | ADR-010 |
---
## 5. ✅ āđ€āļāļ“āļ‘āđŒāļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆ (Success Criteria)
āļĢāļ°āļšāļšāļ–āļ·āļ­āļ§āđˆāļēāļžāļĢāđ‰āļ­āļĄ Go-Live āđ€āļĄāļ·āđˆāļ­:
- [ ] UAT āļœāđˆāļēāļ™ â‰Ĩ 95% āļ‚āļ­āļ‡ Test Cases āđƒāļ™ `01-05-acceptance-criteria.md`
- [ ] āđ„āļĄāđˆāļžāļš Critical Bug (Severity 1) āļ—āļĩāđˆāļ„āđ‰āļēāļ‡āļ­āļĒāļđāđˆ
- [ ] Performance Test āļœāđˆāļēāļ™āļ—āļĩāđˆ 100 concurrent users (API < 200ms P95)
- [ ] Security Audit āļœāđˆāļēāļ™ (0 High/Critical Vulnerabilities)
- [ ] Sign-off āļˆāļēāļāļ•āļąāļ§āđāļ—āļ™āļ—āļąāđ‰āļ‡ 4 āļ­āļ‡āļ„āđŒāļāļĢ āļ•āļēāļĄ `00-04-stakeholder-signoff-and-risk.md`
- [ ] Runbook āđāļĨāļ° Backup/Recovery Plan āļžāļĢāđ‰āļ­āļĄ āļ•āļēāļĄ `04-02-backup-recovery.md`
---
## 📝 Document Control
- **Version:** 1.8.1 | **Status:** updated
- **Created:** 2026-02-23 | **Updated:** 2026-03-24 | **Owner:** Nattanin Peancharoen
- **Changes:** Expanded from stub to full objectives document — added KPI table, scope, business context, architectural principles, success criteria
- **Classification:** Internal Use Only