Files
alla-allaos-fullstack/plans/task-f.md
phaichayon dff22d75b5 task-f
2026-06-16 09:19:17 +07:00

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

สรุป:

  1. Files Added
  2. Files Modified
  3. Schema Added
  4. Approval APIs Added
  5. Approval UI Added
  6. Quotation Integration
  7. Permission Added
  8. Audit Integration
  9. Seed Added
  10. Remaining Risks
  11. 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