6.2 KiB
Task F: Approval Production Module
ALLA OS CRM vNext
คุณคือ Senior Full-stack Engineer
ให้ implement Approval Production Module โดยต่อยอดจาก:
Task A
Task B
Task B.1
Task C
Task D
Task E
Task E.1
Approval Module ต้องเป็น Generic Foundation ที่สามารถใช้กับ:
Quotation
Enquiry (future)
Purchase Request (future)
Purchase Order (future)
Document Approval (future)
ห้ามผูกกับ Quotation เพียงอย่างเดียว
ต้องอ่านก่อน
docs/implementation/task-a-template-audit.md
docs/implementation/task-b-template-audit.md
docs/implementation/task-b1-foundation-stabilization.md
docs/implementation/technical-debt.md
docs/adr/0007-quotation-revision-strategy.md
docs/adr/0008-attachment-storage-strategy.md
Layout.md
AGENTS.md
.agents/skills/kiranism-shadcn-dashboard
src/features/foundation/**
src/features/crm/customers/**
src/features/crm/enquiries/**
src/features/crm/quotations/**
src/db/schema.ts
Goal
สร้าง Approval Engine ที่ reusable ได้
รองรับ:
Submit For Approval
Approve
Reject
Request Change
Approval Timeline
Approval History
Current Approval Status
เริ่มใช้กับ Quotation ก่อน
Approval Workflow Version 1
รองรับ sequential approval
ตัวอย่าง:
Step 1
Sales Manager
Step 2
Department Manager
Step 3
Top Manager
Approval ต้องเดินทีละ step
Scope F1: Approval Schema
เพิ่ม tables
crm_approval_workflows
crm_approval_steps
crm_approval_requests
crm_approval_actions
crm_approval_workflows
id
organizationId
code
name
entityType
isActive
createdAt
updatedAt
deletedAt
entityType ตัวอย่าง
quotation
enquiry
purchase_request
crm_approval_steps
id
organizationId
workflowId
stepNumber
roleCode
roleName
isRequired
createdAt
updatedAt
deletedAt
ตัวอย่าง
sales_manager
department_manager
top_manager
crm_approval_requests
id
organizationId
workflowId
entityType
entityId
currentStep
status
requestedBy
requestedAt
completedAt
createdAt
updatedAt
deletedAt
status
pending
approved
rejected
returned
cancelled
crm_approval_actions
id
organizationId
approvalRequestId
stepNumber
action
remark
actedBy
actedAt
createdAt
updatedAt
deletedAt
action
approve
reject
return
submit
Scope F2: Approval Service
สร้าง:
src/features/foundation/approval/**
ประกอบด้วย
types.ts
service.ts
queries.ts
mutations.ts
Functions
submitForApproval()
approveApproval()
rejectApproval()
returnApproval()
cancelApproval()
getApprovalRequest()
getApprovalTimeline()
getCurrentApprovalStep()
Scope F3: Quotation Integration
เชื่อม Approval เข้ากับ Quotation
Submit For Approval
จาก:
draft
revised
ไป:
pending_approval
Rules
ต้องมี item อย่างน้อย 1 รายการ
ต้องมี customer
ต้องไม่ deleted
Approval Success
เมื่อทุก step approve
เปลี่ยน quotation status
approved
Reject
เปลี่ยน quotation status
rejected
Return
เปลี่ยน quotation status
draft
และเก็บ remark
Scope F4: API Routes
สร้าง:
src/app/api/crm/approvals/route.ts
src/app/api/crm/approvals/[id]/route.ts
src/app/api/crm/approvals/[id]/approve/route.ts
src/app/api/crm/approvals/[id]/reject/route.ts
src/app/api/crm/approvals/[id]/return/route.ts
src/app/api/crm/quotations/[id]/submit-approval/route.ts
Scope F5: Permission Model
เพิ่ม permissions
crm.approval.read
crm.approval.submit
crm.approval.approve
crm.approval.reject
crm.approval.return
Scope F6: Approval UI
แทน placeholder route
/ dashboard / crm / approvals
Approval List
Pending
Approved
Rejected
Returned
ใช้
PageContainer
DataTable
Approval Detail
แสดง
Request Information
Workflow
Current Step
Timeline
Actions
Scope F7: Quotation Detail Integration
ใน
/ dashboard / crm / quotations / [id]
เพิ่ม
Approval Tab
แสดง
Current Status
Current Step
Timeline
Actions
Submit For Approval
Approve
Reject
Return
ตาม permission
Scope F8: Audit Integration
ทุก action ต้อง audit
entityType
crm_approval_request
crm_approval_action
Scope F9: Seed Data
เพิ่มใน
foundation.seed.ts
Workflow เริ่มต้น
Quotation Standard Approval
Steps
1 sales_manager
2 department_manager
3 top_manager
Seed แบบ idempotent
ห้ามทำ
Email Notification
Line Notification
Mobile Push
PDF Generation
Report
Dashboard KPI
Parallel Approval
Conditional Approval
Escalation
Delegation
Output
สรุป:
- Files Added
- Files Modified
- Schema Added
- Approval APIs Added
- Approval UI Added
- Quotation Integration
- Permission Added
- Audit Integration
- Seed Added
- Remaining Risks
- Task G Readiness
Definition of Done
Task F ผ่านเมื่อ:
✔ Approval workflow schema พร้อม
✔ Approval request พร้อม
✔ Approval actions พร้อม
✔ Approval timeline พร้อม
✔ Submit For Approval ใช้งานได้
✔ Approve ใช้งานได้
✔ Reject ใช้งานได้
✔ Return ใช้งานได้
✔ Quotation เชื่อม approval แล้ว
✔ Audit ครบทุก approval action
✔ Approval UI ใช้งานได้
✔ ไม่ทำ notification
✔ ไม่ทำ PDF
✔ ไม่ทำ report
✔ พร้อมเริ่ม Task G