469 lines
6.3 KiB
Markdown
469 lines
6.3 KiB
Markdown
# Task B.1 – Foundation Stabilization & Production Isolation
|
||
|
||
## Context
|
||
|
||
Task B Foundation Layer เสร็จแล้ว
|
||
|
||
ปัจจุบันระบบมี:
|
||
|
||
* Organization Context
|
||
* Membership Context
|
||
* Permission Layer
|
||
* Branch Scope
|
||
* Master Options
|
||
* Document Sequence
|
||
* Audit Log Helper
|
||
|
||
เป้าหมายของ Task B.1 คือทำให้ Foundation พร้อมใช้งานจริงก่อนเริ่ม Task C (Customer + Contact)
|
||
|
||
---
|
||
|
||
# สิ่งที่ต้องอ่านก่อน
|
||
|
||
อ่านและยึดตาม:
|
||
|
||
```txt
|
||
docs/implementation/task-a-template-audit.md
|
||
docs/implementation/task-b-template-audit.md
|
||
|
||
Layout.md
|
||
AGENTS.md
|
||
|
||
.agents/skills/kiranism-shadcn-dashboard
|
||
|
||
src/auth.ts
|
||
src/lib/auth/**
|
||
src/db/schema.ts
|
||
|
||
src/features/products/**
|
||
src/features/users/**
|
||
```
|
||
|
||
ใช้ products และ users เป็น production reference
|
||
|
||
---
|
||
|
||
# เป้าหมาย
|
||
|
||
ทำ 2 เรื่องหลัก:
|
||
|
||
1. Foundation Stabilization
|
||
2. Production Isolation
|
||
|
||
โดยยังไม่เริ่ม Customer Module
|
||
|
||
---
|
||
|
||
# Part A: Foundation Stabilization
|
||
|
||
## A.1 Review Foundation Tables
|
||
|
||
ตรวจสอบ schema ใหม่ที่เพิ่มจาก Task B
|
||
|
||
```txt
|
||
msOptions
|
||
documentSequences
|
||
trAuditLogs
|
||
```
|
||
|
||
ตรวจสอบ:
|
||
|
||
* unique constraint
|
||
* indexes
|
||
* foreign keys
|
||
* organizationId consistency
|
||
* soft delete support
|
||
|
||
หากพบจุดที่ควรปรับปรุง
|
||
|
||
ให้เขียนเป็น Migration Note
|
||
|
||
ห้ามแก้ schema โดยไม่จำเป็น
|
||
|
||
---
|
||
|
||
## A.2 Create Foundation Seed
|
||
|
||
สร้าง seed script
|
||
|
||
ตัวอย่าง path:
|
||
|
||
```txt
|
||
src/db/seeds/foundation.seed.ts
|
||
```
|
||
|
||
Seed เฉพาะ foundation data
|
||
|
||
### crm_branch
|
||
|
||
```txt
|
||
สำนักงานใหญ่
|
||
Factory
|
||
Service
|
||
```
|
||
|
||
### crm_customer_status
|
||
|
||
```txt
|
||
active
|
||
inactive
|
||
suspended
|
||
```
|
||
|
||
### crm_customer_type
|
||
|
||
```txt
|
||
company
|
||
individual
|
||
```
|
||
|
||
### crm_enquiry_status
|
||
|
||
```txt
|
||
new
|
||
qualifying
|
||
requirement
|
||
follow_up
|
||
converted
|
||
closed_lost
|
||
cancelled
|
||
```
|
||
|
||
### crm_quotation_status
|
||
|
||
```txt
|
||
draft
|
||
pending_approval
|
||
approved
|
||
rejected
|
||
sent
|
||
accepted
|
||
lost
|
||
cancelled
|
||
revised
|
||
```
|
||
|
||
### crm_product_type
|
||
|
||
```txt
|
||
crane
|
||
dockdoor
|
||
solarcell
|
||
```
|
||
|
||
### crm_currency
|
||
|
||
```txt
|
||
THB
|
||
USD
|
||
EUR
|
||
```
|
||
|
||
### crm_payment_term
|
||
|
||
```txt
|
||
cash
|
||
credit_30
|
||
credit_60
|
||
```
|
||
|
||
### crm_priority
|
||
|
||
```txt
|
||
low
|
||
normal
|
||
high
|
||
urgent
|
||
```
|
||
|
||
### crm_lead_channel
|
||
|
||
```txt
|
||
website
|
||
referral
|
||
sales
|
||
facebook
|
||
line
|
||
other
|
||
```
|
||
|
||
---
|
||
|
||
## A.3 Seed Document Sequences
|
||
|
||
Seed initial document types
|
||
|
||
```txt
|
||
customer
|
||
contact
|
||
enquiry
|
||
quotation
|
||
approval
|
||
```
|
||
|
||
Mapping
|
||
|
||
```txt
|
||
CUS
|
||
CON
|
||
ENQ
|
||
QT
|
||
APV
|
||
```
|
||
|
||
Requirements:
|
||
|
||
* idempotent
|
||
* run ซ้ำได้
|
||
* ไม่สร้างข้อมูลซ้ำ
|
||
* ใช้ organizationId จาก database
|
||
* ห้าม hardcode organizationId
|
||
|
||
หากไม่พบ organization
|
||
|
||
ให้ throw error พร้อมข้อความชัดเจน
|
||
|
||
---
|
||
|
||
## A.4 Verify Foundation Services
|
||
|
||
ตรวจสอบ service ที่สร้างใน Task B
|
||
|
||
```txt
|
||
auth-context
|
||
organization-context
|
||
permission
|
||
branch-scope
|
||
master-options
|
||
document-sequence
|
||
audit-log
|
||
```
|
||
|
||
ตรวจสอบ:
|
||
|
||
* naming consistency
|
||
* return type consistency
|
||
* error handling
|
||
* organization-first design
|
||
|
||
หากพบปัญหา
|
||
|
||
ให้แก้เฉพาะ foundation layer
|
||
|
||
---
|
||
|
||
# Part B: Production Isolation
|
||
|
||
## เป้าหมาย
|
||
|
||
แยก legacy CRM mock ออกจาก production path
|
||
|
||
เพื่อให้ Task C เริ่มบน production architecture เท่านั้น
|
||
|
||
---
|
||
|
||
## B.1 Audit Existing CRM Module
|
||
|
||
ตรวจสอบ
|
||
|
||
```txt
|
||
src/features/crm/**
|
||
src/app/dashboard/crm/**
|
||
```
|
||
|
||
จำแนกเป็น:
|
||
|
||
### Production-ready
|
||
|
||
ใช้ต่อได้
|
||
|
||
### Legacy Mock
|
||
|
||
ยังใช้
|
||
|
||
* mock data
|
||
* in-memory state
|
||
* placeholder service
|
||
* fake API
|
||
|
||
---
|
||
|
||
## B.2 Move Mock Out of Production Path
|
||
|
||
ห้ามลบไฟล์
|
||
|
||
ให้ย้ายไป:
|
||
|
||
```txt
|
||
src/features/crm-mock/**
|
||
```
|
||
|
||
หรือ
|
||
|
||
```txt
|
||
src/features/crm-demo/**
|
||
```
|
||
|
||
แล้วแต่ convention ที่เหมาะกับโปรเจ็ค
|
||
|
||
---
|
||
|
||
## B.3 Route Isolation
|
||
|
||
Production route:
|
||
|
||
```txt
|
||
/dashboard/crm
|
||
```
|
||
|
||
Mock route:
|
||
|
||
```txt
|
||
/dashboard/crm-demo
|
||
```
|
||
|
||
Requirements:
|
||
|
||
* ห้าม production route import mock service
|
||
* ห้าม production route import mock API
|
||
* ห้าม production component พึ่ง mock state
|
||
|
||
---
|
||
|
||
## B.4 Import Audit
|
||
|
||
ตรวจสอบ import ทั้งระบบ
|
||
|
||
ค้นหา:
|
||
|
||
```txt
|
||
mock-api
|
||
mock-api-users
|
||
crm mock service
|
||
fake data
|
||
in-memory store
|
||
```
|
||
|
||
ถ้ายังถูก import ใน production path
|
||
|
||
ให้แก้
|
||
|
||
---
|
||
|
||
## B.5 Compile Error Cleanup
|
||
|
||
แก้เฉพาะ:
|
||
|
||
```txt
|
||
type errors
|
||
missing imports
|
||
unused exports
|
||
broken references
|
||
```
|
||
|
||
ห้าม:
|
||
|
||
* เปลี่ยน business flow
|
||
* rewrite CRM module
|
||
* เริ่ม Customer production
|
||
|
||
---
|
||
|
||
# Deliverables
|
||
|
||
สร้างเอกสาร
|
||
|
||
```txt
|
||
docs/implementation/task-b1-foundation-stabilization.md
|
||
```
|
||
|
||
ต้องมี:
|
||
|
||
## Foundation Review
|
||
|
||
* schema review
|
||
* seed review
|
||
* service review
|
||
|
||
## Production Isolation Review
|
||
|
||
* production modules
|
||
* demo modules
|
||
* route separation
|
||
|
||
## Risks
|
||
|
||
* remaining mock dependencies
|
||
* migration concerns
|
||
|
||
## Task C Readiness
|
||
|
||
---
|
||
|
||
# ห้ามทำ
|
||
|
||
```txt
|
||
Customer CRUD
|
||
Contact CRUD
|
||
Enquiry CRUD
|
||
Quotation CRUD
|
||
Approval Workflow
|
||
Dashboard KPI
|
||
PDF Generator
|
||
Reporting
|
||
Notification
|
||
```
|
||
|
||
---
|
||
|
||
# ห้ามรัน
|
||
|
||
```txt
|
||
npm run build
|
||
npm run lint
|
||
npm run test
|
||
pnpm build
|
||
pnpm lint
|
||
pnpm test
|
||
```
|
||
|
||
จนกว่าจะได้รับคำสั่ง
|
||
|
||
---
|
||
|
||
# Output ที่ต้องการ
|
||
|
||
หลังทำเสร็จให้สรุป:
|
||
|
||
1. Files Added
|
||
2. Files Modified
|
||
3. Seed Scripts Added
|
||
4. Mock Modules Moved
|
||
5. Production Routes Verified
|
||
6. Remaining Risks
|
||
7. Task C Readiness
|
||
|
||
---
|
||
|
||
# Definition of Done
|
||
|
||
✔ Foundation tables reviewed
|
||
|
||
✔ Foundation seed script created
|
||
|
||
✔ Document sequence seed created
|
||
|
||
✔ Foundation services reviewed
|
||
|
||
✔ Mock CRM isolated from production path
|
||
|
||
✔ Production route no longer depends on mock services
|
||
|
||
✔ Compile issues related to isolation fixed
|
||
|
||
✔ Task C can begin safely
|
||
|
||
✔ No Customer module created
|
||
|
||
✔ No Quotation module created
|