420 lines
6.0 KiB
Markdown
420 lines
6.0 KiB
Markdown
# Task J.1: CRM Admin Configuration Center
|
|
|
|
## Goal
|
|
|
|
สร้างหน้า Admin Configuration สำหรับจัดการ configuration สำคัญของ CRM ที่ปัจจุบันมี foundation แล้ว แต่ยังจัดการผ่าน UI ไม่สมบูรณ์
|
|
|
|
ครอบคลุม:
|
|
|
|
1. Document Templates
|
|
2. Approval Workflows
|
|
3. Document Sequences
|
|
|
|
ยังไม่ทำ:
|
|
|
|
* Template drag/drop designer เต็มรูปแบบ
|
|
* PDF visual designer
|
|
* Advanced conditional approval
|
|
* Report builder
|
|
|
|
---
|
|
|
|
# Must Read
|
|
|
|
```txt
|
|
Layout.md
|
|
AGENTS.md
|
|
.agents/skills/kiranism-shadcn-dashboard
|
|
|
|
src/features/foundation/document-template/**
|
|
src/features/foundation/approval/**
|
|
src/features/foundation/document-sequence/**
|
|
src/features/foundation/master-options/**
|
|
src/features/foundation/storage/**
|
|
src/db/schema.ts
|
|
|
|
docs/adr/0009-approved-document-storage-lifecycle.md
|
|
docs/adr/0010-revenue-attribution-governance.md
|
|
docs/implementation/technical-debt.md
|
|
```
|
|
|
|
---
|
|
|
|
# Scope 1: Admin Settings Navigation
|
|
|
|
Under:
|
|
|
|
```txt
|
|
/dashboard/crm/settings
|
|
```
|
|
|
|
Add/complete pages:
|
|
|
|
```txt
|
|
/dashboard/crm/settings/templates
|
|
/dashboard/crm/settings/approval-workflows
|
|
/dashboard/crm/settings/document-sequences
|
|
```
|
|
|
|
Use existing:
|
|
|
|
```txt
|
|
PageContainer
|
|
DataTable
|
|
Sheet/Dialog
|
|
Bento/Settings cards
|
|
```
|
|
|
|
No new design system.
|
|
|
|
---
|
|
|
|
# Scope 2: Document Template Management
|
|
|
|
Current state:
|
|
|
|
* template schema exists
|
|
* template versions exist
|
|
* template mappings exist
|
|
* default pdfme template seed exists
|
|
* template settings page is mostly listing/read-focused
|
|
|
|
Need UI:
|
|
|
|
## Template List
|
|
|
|
Show:
|
|
|
|
```txt
|
|
Template Name
|
|
Document Type
|
|
Product Type
|
|
File Type
|
|
Default
|
|
Active
|
|
Latest Version
|
|
Mapping Count
|
|
Actions
|
|
```
|
|
|
|
Actions:
|
|
|
|
```txt
|
|
Create Template
|
|
Edit Template Metadata
|
|
Activate/Deactivate
|
|
Set Default
|
|
View Versions
|
|
```
|
|
|
|
## Template Version Management
|
|
|
|
For each template:
|
|
|
|
```txt
|
|
Version
|
|
Active
|
|
File Path
|
|
Schema JSON
|
|
Preview Image URL
|
|
Created By
|
|
Created At
|
|
```
|
|
|
|
Actions:
|
|
|
|
```txt
|
|
Create Version
|
|
View Version
|
|
Activate Version
|
|
Deactivate Version
|
|
```
|
|
|
|
## Template Mapping Management
|
|
|
|
Add basic CRUD UI for mappings:
|
|
|
|
```txt
|
|
placeholderKey
|
|
sourcePath
|
|
dataType
|
|
defaultValue
|
|
formatMask
|
|
sortOrder
|
|
```
|
|
|
|
For table mapping:
|
|
|
|
```txt
|
|
columnName
|
|
sourceField
|
|
columnLetter
|
|
sortOrder
|
|
formatMask
|
|
```
|
|
|
|
Rules:
|
|
|
|
* role: admin only
|
|
* audit template mutations
|
|
* no drag/drop designer yet
|
|
* JSON textarea is acceptable for schemaJson in this task
|
|
* validate schemaJson is valid JSON
|
|
|
|
Permissions:
|
|
|
|
```txt
|
|
crm.document_template.read
|
|
crm.document_template.create
|
|
crm.document_template.update
|
|
crm.document_template.delete
|
|
```
|
|
|
|
---
|
|
|
|
# Scope 3: Approval Workflow Management
|
|
|
|
Current state:
|
|
|
|
* approval schema exists
|
|
* seeded quotation standard workflow exists
|
|
* approval engine works
|
|
* no workflow management UI
|
|
|
|
Need UI:
|
|
|
|
## Workflow List
|
|
|
|
Show:
|
|
|
|
```txt
|
|
Workflow Code
|
|
Workflow Name
|
|
Entity Type
|
|
Active
|
|
Step Count
|
|
Actions
|
|
```
|
|
|
|
Actions:
|
|
|
|
```txt
|
|
Create Workflow
|
|
Edit Workflow
|
|
Activate/Deactivate
|
|
Manage Steps
|
|
```
|
|
|
|
## Workflow Step Management
|
|
|
|
For each workflow:
|
|
|
|
```txt
|
|
Step Number
|
|
Role Code
|
|
Role Name
|
|
Required
|
|
```
|
|
|
|
Actions:
|
|
|
|
```txt
|
|
Add Step
|
|
Edit Step
|
|
Remove Step
|
|
Reorder Steps
|
|
```
|
|
|
|
Rules:
|
|
|
|
* sequential approval only
|
|
* no parallel approval
|
|
* no conditional approval
|
|
* no delegation
|
|
* no escalation
|
|
* roleCode must match CRM businessRole or permission strategy
|
|
* do not break existing quotation approval flow
|
|
|
|
Permissions:
|
|
|
|
```txt
|
|
crm.approval.workflow.read
|
|
crm.approval.workflow.create
|
|
crm.approval.workflow.update
|
|
crm.approval.workflow.delete
|
|
```
|
|
|
|
Audit:
|
|
|
|
```txt
|
|
crm_approval_workflow
|
|
crm_approval_step
|
|
```
|
|
|
|
---
|
|
|
|
# Scope 4: Document Sequence Management
|
|
|
|
Current state:
|
|
|
|
* document sequence service exists
|
|
* seed exists
|
|
* generate/preview works
|
|
* admin UI incomplete
|
|
|
|
Need UI:
|
|
|
|
## Sequence List
|
|
|
|
Show:
|
|
|
|
```txt
|
|
Document Type
|
|
Prefix
|
|
Period
|
|
Branch
|
|
Current Number
|
|
Padding Length
|
|
Next Preview
|
|
Updated At
|
|
Actions
|
|
```
|
|
|
|
Actions:
|
|
|
|
```txt
|
|
Create Sequence
|
|
Edit Sequence
|
|
Preview Next Code
|
|
Reset Current Number
|
|
Deactivate/Delete if supported
|
|
```
|
|
|
|
Rules:
|
|
|
|
* reset requires confirmation
|
|
* changing prefix should not rewrite old document codes
|
|
* preview must not increment
|
|
* generation remains server-only
|
|
* organization scoped
|
|
* branch optional or from crm_branch options
|
|
|
|
Permissions:
|
|
|
|
```txt
|
|
crm.document_sequence.read
|
|
crm.document_sequence.create
|
|
crm.document_sequence.update
|
|
crm.document_sequence.reset
|
|
```
|
|
|
|
Audit:
|
|
|
|
```txt
|
|
crm_document_sequence
|
|
```
|
|
|
|
---
|
|
|
|
# Scope 5: Route Handlers
|
|
|
|
Add or complete APIs:
|
|
|
|
```txt
|
|
/api/crm/settings/document-templates/**
|
|
/api/crm/settings/approval-workflows/**
|
|
/api/crm/settings/document-sequences/**
|
|
```
|
|
|
|
หรือถ้ามี route เดิมแล้ว ให้ reuse และเติม missing mutation
|
|
|
|
All APIs must:
|
|
|
|
```txt
|
|
requireOrganizationAccess
|
|
requirePermission
|
|
filter by organizationId
|
|
audit mutations
|
|
return user-safe errors
|
|
```
|
|
|
|
---
|
|
|
|
# Scope 6: Mutation Freshness Rule
|
|
|
|
All CRUD pages must follow project hotfix rule:
|
|
|
|
```txt
|
|
mutation success
|
|
↓
|
|
invalidate list query
|
|
↓
|
|
invalidate detail query if relevant
|
|
↓
|
|
refresh table/detail immediately
|
|
```
|
|
|
|
No stale config table after save.
|
|
|
|
---
|
|
|
|
# Scope 7: Safety Constraints
|
|
|
|
Do NOT implement:
|
|
|
|
```txt
|
|
visual template designer
|
|
drag/drop pdf designer
|
|
advanced approval engine
|
|
parallel approval
|
|
conditional workflow
|
|
notification
|
|
report builder
|
|
dashboard changes
|
|
```
|
|
|
|
---
|
|
|
|
# Output
|
|
|
|
1. Files Added
|
|
2. Files Modified
|
|
3. Template Config UI Added
|
|
4. Approval Workflow UI Added
|
|
5. Document Sequence UI Added
|
|
6. API Routes Added
|
|
7. Permissions Added
|
|
8. Audit Integration
|
|
9. Remaining Risks
|
|
10. Task K Readiness
|
|
|
|
---
|
|
|
|
# Definition of Done
|
|
|
|
✔ Admin can manage template metadata
|
|
|
|
✔ Admin can manage template versions
|
|
|
|
✔ Admin can manage template mappings
|
|
|
|
✔ Admin can manage approval workflows
|
|
|
|
✔ Admin can manage approval steps
|
|
|
|
✔ Admin can manage document sequences
|
|
|
|
✔ Preview next document code works
|
|
|
|
✔ All mutations refresh table data
|
|
|
|
✔ All settings routes are organization scoped
|
|
|
|
✔ Permission guard works
|
|
|
|
✔ Audit works
|
|
|
|
✔ No drag/drop designer
|
|
|
|
✔ No advanced approval logic
|