260322:1648 Correct Coresspondence / Doing RFA / Correct CI
This commit is contained in:
@@ -1,15 +1,18 @@
|
||||
# 📖 User Stories — LCBP3-DMS v1.8.0
|
||||
|
||||
---
|
||||
|
||||
title: 'User Stories — All Modules'
|
||||
version: 1.0.0
|
||||
status: DRAFT
|
||||
owner: Nattanin Peancharoen (Product Owner)
|
||||
last_updated: 2026-03-11
|
||||
related:
|
||||
- specs/01-Requirements/01-01-objectives.md
|
||||
- specs/01-Requirements/01-05-acceptance-criteria.md
|
||||
- specs/01-Requirements/01-03-modules/
|
||||
|
||||
- specs/01-Requirements/01-01-objectives.md
|
||||
- specs/01-Requirements/01-05-acceptance-criteria.md
|
||||
- specs/01-Requirements/01-03-modules/
|
||||
|
||||
---
|
||||
|
||||
## 📖 วิธีอ่าน
|
||||
@@ -24,6 +27,7 @@ related:
|
||||
## 👥 Epic 1: Authentication & User Management
|
||||
|
||||
### US-001 — Login เข้าระบบ
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 2 | **AC:** AC-AUTH-001, AC-AUTH-002
|
||||
|
||||
```
|
||||
@@ -31,7 +35,9 @@ As a ผู้ใช้งานทุกประเภท
|
||||
I want to login ด้วย Username + Password
|
||||
So that ฉันเข้าถึงระบบตามบทบาทของตนได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Login สำเร็จ → Dashboard | Password ผิด → Error กลางๆ
|
||||
- ผิดเกิน 5 ครั้งใน 1 นาที → 429 Rate Limit
|
||||
- Audit Log: `LOGIN_SUCCESS` / `LOGIN_FAILED` + IP
|
||||
@@ -39,6 +45,7 @@ So that ฉันเข้าถึงระบบตามบทบาทขอ
|
||||
---
|
||||
|
||||
### US-002 — เปลี่ยนรหัสผ่านครั้งแรก
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 2 | **AC:** AC-AUTH-003
|
||||
|
||||
```
|
||||
@@ -46,13 +53,16 @@ As a ผู้ใช้งานใหม่ที่เพิ่งถูกส
|
||||
I want to ถูกบังคับเปลี่ยนรหัสผ่านใน Login ครั้งแรก
|
||||
So that ฉันมีรหัสผ่านที่ฉันรู้คนเดียว
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Login ครั้งแรก → Redirect หน้าเปลี่ยน Password ทันที (ผ่านไม่ได้)
|
||||
- Password ใหม่ต้องผ่าน Policy (8+ ตัว, อักษรใหญ่-เล็ก-ตัวเลข)
|
||||
|
||||
---
|
||||
|
||||
### US-003 — จัดการ Profile ส่วนตัว
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 2
|
||||
|
||||
```
|
||||
@@ -60,13 +70,16 @@ As a ผู้ใช้งานทุกประเภท
|
||||
I want to แก้ไขข้อมูลส่วนตัวและเปลี่ยนรหัสผ่าน
|
||||
So that ฉันดูแล Account ของตัวเองได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- แก้ไข ชื่อ, Email, ช่องทาง Notification ได้
|
||||
- เปลี่ยน Password ต้องยืนยัน Password เก่า
|
||||
|
||||
---
|
||||
|
||||
### US-004 — Superadmin สร้างองค์กร + Project + Contract
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 5 | **AC:** AC-ADMIN-001, AC-ADMIN-002
|
||||
|
||||
```
|
||||
@@ -74,7 +87,9 @@ As a Superadmin
|
||||
I want to สร้าง Organization, Project, Contract และผูกความสัมพันธ์กัน
|
||||
So that ระบบพร้อมให้แต่ละองค์กรเริ่มทำงานได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- สร้าง Org → แต่งตั้ง Org Admin ได้ทันที
|
||||
- สร้าง Project → ผูก Organizations (หลายองค์กร)
|
||||
- สร้าง Contract → 1 Contractor ต่อ 1 Contract
|
||||
@@ -83,6 +98,7 @@ So that ระบบพร้อมให้แต่ละองค์กรเ
|
||||
---
|
||||
|
||||
### US-005 — Org Admin จัดการ User ในองค์กร
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 3 | **AC:** AC-ADMIN-003
|
||||
|
||||
```
|
||||
@@ -90,7 +106,9 @@ As a Org Admin
|
||||
I want to เพิ่ม/แก้ไข/Deactivate User และกำหนด Role
|
||||
So that ทีมงานเข้าถึงระบบได้ตามหน้าที่
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- เพิ่ม User → Email แจ้ง Credentials อัตโนมัติ
|
||||
- Deactivate ได้ (ไม่ Delete — Audit ยังอยู่)
|
||||
- เห็นเฉพาะ User ในองค์กรตัวเอง
|
||||
@@ -98,6 +116,7 @@ So that ทีมงานเข้าถึงระบบได้ตามห
|
||||
---
|
||||
|
||||
### US-006 — Permission Isolation ระหว่าง Contractor
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 2 | **AC:** AC-ADMIN-004
|
||||
|
||||
```
|
||||
@@ -105,7 +124,9 @@ As a ระบบ
|
||||
I want to ป้องกัน Contractor A เห็นข้อมูล Contractor B
|
||||
So that ข้อมูลทางธุรกิจของแต่ละ Contractor เป็นความลับ
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Contractor A→ ไม่เห็น List เอกสาร B | พยายาม Access URL ตรงๆ → 403
|
||||
- Audit Log บันทึก Unauthorized Attempt
|
||||
|
||||
@@ -114,6 +135,7 @@ So that ข้อมูลทางธุรกิจของแต่ละ Co
|
||||
## 📨 Epic 2: Correspondence Management
|
||||
|
||||
### US-007 — สร้าง Correspondence Draft
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 5 | **AC:** AC-CORR-001
|
||||
|
||||
```
|
||||
@@ -121,7 +143,9 @@ As a Document Control
|
||||
I want to สร้าง Correspondence (Letter/RFI) ในสถานะ Draft พร้อมแนบไฟล์
|
||||
So that เตรียมเอกสารได้ก่อนส่งโดยองค์กรอื่นยังไม่เห็น
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Form: Subject, To (หลายองค์กร), CC, Doc Type, Attachments (PDF/ZIP)
|
||||
- Drag-and-Drop Multi-file | ClamAV Scan ทุกไฟล์
|
||||
- Auto-Save Draft → LocalStorage (กันข้อมูลสูญ)
|
||||
@@ -130,6 +154,7 @@ So that เตรียมเอกสารได้ก่อนส่งโด
|
||||
---
|
||||
|
||||
### US-008 — Submit Correspondence + Auto Number
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 5 | **AC:** AC-CORR-002
|
||||
|
||||
```
|
||||
@@ -137,7 +162,9 @@ As a Document Control
|
||||
I want to Submit Correspondence และให้ระบบออกเลขอัตโนมัติ
|
||||
So that เอกสารได้รับเลขที่ไม่ซ้ำและส่งถึงผู้รับทันที
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ออกเลขตาม Template (เช่น `LCBP3-สค.-กทท.-LETTER-0001-68`)
|
||||
- เลขไม่ซ้ำแม้ Submit พร้อมกัน (Redis Redlock)
|
||||
- สถานะ → SUBMITTED | Workflow Instance ถูกสร้าง
|
||||
@@ -146,6 +173,7 @@ So that เอกสารได้รับเลขที่ไม่ซ้ำ
|
||||
---
|
||||
|
||||
### US-009 — ดู Correspondence ใน Inbox
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 3 | **AC:** AC-CORR-003
|
||||
|
||||
```
|
||||
@@ -153,13 +181,16 @@ As a Document Control ขององค์กรผู้รับ
|
||||
I want to เห็น Correspondence ที่ส่งมาถึงองค์กรในรายการ
|
||||
So that ดำเนินการได้ทันที (สร้าง Circulation, ตอบกลับ)
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- List แสดง Received/Sent แยก | PDF Viewer ในแอป (Streaming)
|
||||
- ดาวน์โหลดไฟล์แนบได้ (ถ้ามีสิทธิ์)
|
||||
|
||||
---
|
||||
|
||||
### US-010 — อ้างอิง + Tag เอกสาร
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 3 | **AC:** AC-CORR-004
|
||||
|
||||
```
|
||||
@@ -167,13 +198,16 @@ As a Document Control
|
||||
I want to อ้างอิงเอกสารเก่าและกำหนด Tag หลาย Tag
|
||||
So that จัดกลุ่มเอกสารและ Navigate ข้าม Thread ได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ค้นหาและเลือก Reference Documents | Link ระหว่างเอกสาร (คลิก Navigate)
|
||||
- กำหนด Tag หลาย Tag | ค้นหาได้จาก Tag
|
||||
|
||||
---
|
||||
|
||||
### US-011 — ยกเลิก Correspondence (Admin)
|
||||
|
||||
**Priority:** 🟡 C | **SP:** 2 | **AC:** AC-CORR-005
|
||||
|
||||
```
|
||||
@@ -181,7 +215,9 @@ As a Org Admin / Superadmin
|
||||
I want to ยกเลิก Correspondence ที่ Submit แล้ว พร้อมระบุเหตุผล
|
||||
So that เอกสารที่ส่งผิดถูกระงับโดยมีหลักฐาน Audit
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ต้องกรอก cancel_reason | สถานะ → CANCELLED
|
||||
- Editor/Viewer ทำ Cancel ไม่ได้ → 403
|
||||
|
||||
@@ -190,6 +226,7 @@ So that เอกสารที่ส่งผิดถูกระงับโ
|
||||
## 📋 Epic 3: RFA Management
|
||||
|
||||
### US-012 — สร้าง RFA + Shop Drawing
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 8 | **AC:** AC-RFA-001
|
||||
|
||||
```
|
||||
@@ -197,7 +234,9 @@ As a Document Control ของ Contractor
|
||||
I want to สร้าง RFA พร้อม Upload Shop Drawing
|
||||
So that ยื่นขออนุมัติแบบก่อสร้างจากที่ปรึกษาได้อย่างเป็นระบบ
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Form: RFA Type, Discipline, Shop Drawing (PDF/DWG/ZIP)
|
||||
- 1 Shop Drawing Revision = 1 RFA เท่านั้น
|
||||
- ClamAV Scan | Draft (ไม่เห็นข้ามองค์กร)
|
||||
@@ -205,6 +244,7 @@ So that ยื่นขออนุมัติแบบก่อสร้าง
|
||||
---
|
||||
|
||||
### US-013 — Submit RFA ผ่าน Transmittal
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 8 | **AC:** AC-RFA-002, AC-TRM-001
|
||||
|
||||
```
|
||||
@@ -212,7 +252,9 @@ As a Document Control ของ Contractor
|
||||
I want to สร้าง Transmittal รวม RFA หลายฉบับ ส่งไปยังที่ปรึกษา
|
||||
So that ส่งเอกสารเป็นชุด ที่ปรึกษาได้รับทุกฉบับพร้อมกัน
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Transmittal → เลือก RFA หลายฉบับ | ออกเลขเองเป็น Correspondence
|
||||
- RFA แต่ละฉบับ → ออกเลขตาม Format `LCBP3-RFA-{DISCIPLINE}-{SEQ}`
|
||||
- ที่ปรึกษา → Notification
|
||||
@@ -220,6 +262,7 @@ So that ส่งเอกสารเป็นชุด ที่ปรึก
|
||||
---
|
||||
|
||||
### US-014 — Review RFA (Approved / w.Comments / Rejected)
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 5 | **AC:** AC-RFA-003~005
|
||||
|
||||
```
|
||||
@@ -227,7 +270,9 @@ As a Engineer ของ Supervisor Organization
|
||||
I want to เปิดดู Shop Drawing และให้คำตอบ RFA
|
||||
So that Contractor ได้รับผลพิจารณาและดำเนินการต่อได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- PDF Viewer Streaming | ปุ่ม: Approved / Approved w/Comments / Rejected
|
||||
- Comment บังคับสำหรับ Approved w/Comments และ Rejected
|
||||
- Originator → Notification | Workflow History บันทึกครบ
|
||||
@@ -235,6 +280,7 @@ So that Contractor ได้รับผลพิจารณาและดำ
|
||||
---
|
||||
|
||||
### US-015 — ยื่น RFA Revision ใหม่หลัง Reject
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-RFA-006
|
||||
|
||||
```
|
||||
@@ -242,7 +288,9 @@ As a Document Control ของ Contractor
|
||||
I want to สร้าง RFA Revision ใหม่ (Rev.B) หลัง Rev.A ถูก Rejected
|
||||
So that แก้ไขและยื่น Shop Drawing เวอร์ชันใหม่ได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Rev.B ผูกกับ Shop Drawing Rev.B | Rev.A ยังดูได้
|
||||
- Revision Code เปลี่ยนตาม Sequence (A→B→C)
|
||||
|
||||
@@ -251,6 +299,7 @@ So that แก้ไขและยื่น Shop Drawing เวอร์ชั
|
||||
## 📐 Epic 4: Drawing Management
|
||||
|
||||
### US-016 — Upload Contract Drawing
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-DRW-001
|
||||
|
||||
```
|
||||
@@ -258,13 +307,16 @@ As a Document Control ของ Design Consultant
|
||||
I want to Upload แบบคู่สัญญา (Contract Drawing) พร้อมกำหนดหมวดหมู่
|
||||
So that Contractor ใช้อ้างอิงใน Shop Drawing ได้
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Upload PDF → Drawing Number, Category, Discipline
|
||||
- Shop Drawing Link Reference กับ Contract Drawing ได้
|
||||
|
||||
---
|
||||
|
||||
### US-017 — Upload Shop Drawing + Revision Control
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-DRW-002, AC-DRW-003
|
||||
|
||||
```
|
||||
@@ -272,7 +324,9 @@ As a Document Control ของ Contractor
|
||||
I want to Upload Shop Drawing พร้อม Reference Contract Drawing และจัดการ Revision
|
||||
So that ผู้ Review เห็น Revision ล่าสุด และ History ทุก Revision
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ค้นหาและเลือก Contract Drawing ที่ Reference
|
||||
- Rev.ใหม่ → Rev.เก่า Mark "Superseded" แต่ยังดูได้
|
||||
- 1 Revision = 1 RFA เท่านั้น (Constraint enforced)
|
||||
@@ -282,6 +336,7 @@ So that ผู้ Review เห็น Revision ล่าสุด และ Hist
|
||||
## ⚙️ Epic 5: Workflow Engine
|
||||
|
||||
### US-018 — ดู Workflow Diagram ของเอกสาร
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 3 | **AC:** AC-WF-004
|
||||
|
||||
```
|
||||
@@ -289,7 +344,9 @@ As a ผู้ใช้งานที่มีสิทธิ์ดูเอก
|
||||
I want to เห็น Workflow Diagram แบบ Visual
|
||||
So that รู้ทันทีว่าเอกสารอยู่ขั้นตอนไหน ใครถืออยู่
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Workflow Diagram แสดง State ปัจจุบัน (Highlight)
|
||||
- คลิก Step ที่ผ่านมา → Audit Log ย่อย (ใคร/เมื่อไหร่/Comment)
|
||||
- Step ที่ยังไม่ถึง → Disabled Style
|
||||
@@ -297,6 +354,7 @@ So that รู้ทันทีว่าเอกสารอยู่ขั้
|
||||
---
|
||||
|
||||
### US-019 — Approve / Reject ผ่าน Workflow
|
||||
|
||||
**Priority:** 🔴 M | **SP:** 5 | **AC:** AC-WF-002, AC-WF-003
|
||||
|
||||
```
|
||||
@@ -304,7 +362,9 @@ As a Reviewer ที่ถูก Assign ใน Workflow
|
||||
I want to Approve / Reject เอกสารในขั้นตอนที่ฉันรับผิดชอบ
|
||||
So that Workflow เดินหน้าหรือส่งกลับตามการตัดสินใจ
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- เห็นปุ่ม Action เฉพาะ Step ที่เป็นของฉัน
|
||||
- Wrong Role → ปุ่มซ่อน / 403 ถ้าเรียก API ตรงๆ
|
||||
- ทุก Action → Workflow History + Timestamp
|
||||
@@ -312,6 +372,7 @@ So that Workflow เดินหน้าหรือส่งกลับตา
|
||||
---
|
||||
|
||||
### US-020 — Force Proceed + Revert (Document Control)
|
||||
|
||||
**Priority:** 🟡 C | **SP:** 3 | **AC:** AC-WF-005
|
||||
|
||||
```
|
||||
@@ -319,13 +380,16 @@ As a Document Control
|
||||
I want to บังคับข้ามหรือย้อน Workflow Step ในกรณีพิเศษ
|
||||
So that Workflow ที่ติดขัดถูก Unblock ได้อย่างมีหลักฐาน
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ปุ่ม "Force Proceed" / "Revert" เห็นได้เฉพาะ Document Control ขึ้นไป
|
||||
- ต้องกรอก reason | Audit Log: FORCE_PROCEED / REVERT
|
||||
|
||||
---
|
||||
|
||||
### US-021 — กำหนด Deadline ใน Workflow
|
||||
|
||||
**Priority:** 🟡 C | **SP:** 3 | **AC:** AC-WF-006
|
||||
|
||||
```
|
||||
@@ -333,7 +397,9 @@ As a Document Control
|
||||
I want to กำหนด Deadline ให้แต่ละ Organization ใน Workflow
|
||||
So that ดำเนินการทันเวลา ไม่เกิดความล่าช้า
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- กำหนด Due Date ต่อ Org ใน Workflow
|
||||
- เกิน Deadline → Dashboard Overdue Badge + Notification
|
||||
- 2 วันก่อน → Reminder Notification
|
||||
@@ -343,6 +409,7 @@ So that ดำเนินการทันเวลา ไม่เกิด
|
||||
## 📄 Epic 6: Circulation Sheet
|
||||
|
||||
### US-022 — สร้าง Circulation Sheet
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-CIRC-001
|
||||
|
||||
```
|
||||
@@ -350,7 +417,9 @@ As a Document Control ภายในองค์กร
|
||||
I want to สร้างใบเวียนสำหรับ Correspondence พร้อมกำหนดผู้รับผิดชอบ
|
||||
So that งานถูก Assign ชัดเจนและมีหลักฐาน
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- กำหนด Main / Action / Information Assignees (หลายคน)
|
||||
- Assignees → In-App + Email Notification
|
||||
- Internal Only (ไม่เห็นข้ามองค์กร)
|
||||
@@ -358,6 +427,7 @@ So that งานถูก Assign ชัดเจนและมีหลัก
|
||||
---
|
||||
|
||||
### US-023 — ติดตาม Circulation Deadline + ปิด
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 3 | **AC:** AC-CIRC-002, AC-CIRC-003
|
||||
|
||||
```
|
||||
@@ -365,7 +435,9 @@ As a Assignee / Document Control
|
||||
I want to เห็น Deadline งานของฉันและปิด Circulation เมื่อเสร็จ
|
||||
So that ไม่พลาดงาน และ Track สถานะได้ชัดเจน
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Dashboard My Tasks แสดง Deadline + Overdue Badge
|
||||
- ปิด Circulation → สถานะ CLOSED + Timestamp
|
||||
- My Tasks ลบรายการที่ปิดแล้ว
|
||||
@@ -375,6 +447,7 @@ So that ไม่พลาดงาน และ Track สถานะได้
|
||||
## 🔍 Epic 7: Search & Notifications
|
||||
|
||||
### US-024 — ค้นหาเอกสาร Full-text
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-SRCH-001
|
||||
|
||||
```
|
||||
@@ -382,13 +455,16 @@ As a ผู้ใช้งานทุกประเภท
|
||||
I want to ค้นหาเอกสารด้วย Keyword ได้รวดเร็ว
|
||||
So that พบเอกสารที่ต้องการโดยไม่ต้องจำเลขที่แม่นยำ
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- ผล Search < 500ms (Elasticsearch) | ค้นจาก เลขเอกสาร, Subject, Tag
|
||||
- แสดงเฉพาะเอกสารที่มีสิทธิ์เห็น
|
||||
|
||||
---
|
||||
|
||||
### US-025 — รับ Notification (Email + In-App)
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-NOTIF-001, AC-NOTIF-002
|
||||
|
||||
```
|
||||
@@ -396,7 +472,9 @@ As a ผู้ใช้งาน
|
||||
I want to รับ Email และ In-App Notification เมื่อมี Event เกี่ยวข้องกับฉัน
|
||||
So that ไม่พลาดงานโดยไม่ต้องเช็คระบบตลอดเวลา
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Email ถูกส่งภายใน 5 นาที หลัง Event (BullMQ Queue)
|
||||
- Bell Icon Unread Count | คลิก → Navigate ไปเอกสาร
|
||||
- Retry 3 ครั้ง ถ้าส่งไม่ได้ → Dead Letter Queue
|
||||
@@ -406,6 +484,7 @@ So that ไม่พลาดงานโดยไม่ต้องเช็ค
|
||||
## 💾 Epic 8: File & Dashboard
|
||||
|
||||
### US-026 — Upload ไฟล์ + ดู PDF ในแอป
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-STOR-001, AC-STOR-003
|
||||
|
||||
```
|
||||
@@ -413,7 +492,9 @@ As a Document Control / Reviewer
|
||||
I want to Upload ไฟล์หลายไฟล์และดู PDF ในแอปได้เลย
|
||||
So that ทำงานเร็วขึ้นและลดความเสี่ยงข้อมูลรั่วจาก Download
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- Drag-and-Drop Multi-file | ClamAV Scan < 30s
|
||||
- In-App PDF Viewer (Range Requests Streaming)
|
||||
- ปุ่ม Download → Disabled สำหรับ Viewer-only
|
||||
@@ -421,6 +502,7 @@ So that ทำงานเร็วขึ้นและลดความเส
|
||||
---
|
||||
|
||||
### US-027 — Dashboard KPI ส่วนตัว
|
||||
|
||||
**Priority:** 🟠 S | **SP:** 5 | **AC:** AC-DASH-001
|
||||
|
||||
```
|
||||
@@ -428,7 +510,9 @@ As a ผู้ใช้งานทุกประเภท
|
||||
I want to เห็น Dashboard สรุปงานของฉันทันทีที่ Login
|
||||
So that รู้สถานะงานโดยไม่ต้องไล่ดูแต่ละ Module
|
||||
```
|
||||
|
||||
**Done When:**
|
||||
|
||||
- KPI Cards: Pending RFA, Pending Correspondence, Overdue Circulation
|
||||
- My Tasks Table: Circulation ที่ค้าง + Deadline
|
||||
- Filter ตาม Permission ของ User
|
||||
@@ -437,17 +521,17 @@ So that รู้สถานะงานโดยไม่ต้องไล่
|
||||
|
||||
## 📊 Story Map Summary
|
||||
|
||||
| Epic | Stories | 🔴 Must | 🟠 Should | 🟡 Could |
|
||||
|------|---------|---------|----------|--------|
|
||||
| Auth & Users | US-001~006 | 4 | 1 | 1 |
|
||||
| Correspondence | US-007~011 | 2 | 2 | 1 |
|
||||
| RFA | US-012~015 | 2 | 2 | 0 |
|
||||
| Drawing | US-016~017 | 0 | 2 | 0 |
|
||||
| Workflow | US-018~021 | 1 | 1 | 2 |
|
||||
| Circulation | US-022~023 | 0 | 2 | 0 |
|
||||
| Search & Notify | US-024~025 | 0 | 2 | 0 |
|
||||
| File & Dashboard | US-026~027 | 0 | 2 | 0 |
|
||||
| **รวม** | **27** | **9** | **14** | **4** |
|
||||
| Epic | Stories | 🔴 Must | 🟠 Should | 🟡 Could |
|
||||
| ---------------- | ---------- | ------- | --------- | -------- |
|
||||
| Auth & Users | US-001~006 | 4 | 1 | 1 |
|
||||
| Correspondence | US-007~011 | 2 | 2 | 1 |
|
||||
| RFA | US-012~015 | 2 | 2 | 0 |
|
||||
| Drawing | US-016~017 | 0 | 2 | 0 |
|
||||
| Workflow | US-018~021 | 1 | 1 | 2 |
|
||||
| Circulation | US-022~023 | 0 | 2 | 0 |
|
||||
| Search & Notify | US-024~025 | 0 | 2 | 0 |
|
||||
| File & Dashboard | US-026~027 | 0 | 2 | 0 |
|
||||
| **รวม** | **27** | **9** | **14** | **4** |
|
||||
|
||||
> **MVP Sprint Focus:** US-001~006, US-007~008, US-012~014, US-019 — ครอบคลุม Core Happy Path ทั้งหมด
|
||||
|
||||
|
||||
Reference in New Issue
Block a user