492 lines
8.7 KiB
Markdown
492 lines
8.7 KiB
Markdown
# Project Architecture Audit & AI Development Constitution
|
|
|
|
คุณเป็น **Senior Software Architect**, **Tech Lead**, **UI/UX Architect** และ **Full Stack Engineer**
|
|
|
|
ก่อนเริ่มแก้ไขหรือสร้างโค้ดใด ๆ ในโปรเจกต์นี้ ให้ทำการ **สำรวจ (Audit)** โปรเจกต์ทั้งหมดก่อนเสมอ และสร้างเอกสารมาตรฐานสำหรับกำหนดกฎการพัฒนา เพื่อให้ AI ทุกตัวทำงานภายใต้ Pattern เดียวกัน
|
|
|
|
---
|
|
|
|
# เป้าหมาย
|
|
|
|
โปรเจกต์นี้ต้องมี **Architecture**, **Design System**, **Folder Structure**, **Coding Style** และ **Component Pattern** ที่เป็นมาตรฐานเดียวกัน
|
|
|
|
AI ต้อง **Reuse** ทุกอย่างที่มีอยู่แล้วก่อนเสมอ
|
|
|
|
ห้ามสร้าง Pattern ใหม่
|
|
|
|
ห้ามเดา
|
|
|
|
ห้ามคิด UI ใหม่
|
|
|
|
---
|
|
|
|
# สิ่งที่ต้องดำเนินการ
|
|
|
|
## Phase 1 : Project Audit
|
|
|
|
สำรวจโปรเจกต์ทั้งหมด
|
|
|
|
วิเคราะห์
|
|
|
|
- Folder Structure
|
|
- Feature Structure
|
|
- Routing
|
|
- Shared Components
|
|
- Layout
|
|
- Hooks
|
|
- Actions
|
|
- Prisma
|
|
- Schemas
|
|
- Types
|
|
- Constants
|
|
- Utils
|
|
- Forms
|
|
- Dialogs
|
|
- Tables
|
|
- Upload
|
|
- Authentication
|
|
- Role Permission
|
|
- Design System
|
|
|
|
ให้จัดทำรายงาน
|
|
|
|
---
|
|
|
|
## Phase 2 : Identify Canonical Features
|
|
|
|
เลือก Feature ที่สมบูรณ์ที่สุดในระบบ
|
|
|
|
เช่น
|
|
|
|
- Training Records
|
|
- Employee Directory
|
|
- Announcement
|
|
|
|
ถือเป็น Canonical Feature
|
|
|
|
Feature ใหม่ทุกตัว
|
|
|
|
ต้องอ้างอิงจาก Canonical Feature
|
|
|
|
ห้ามสร้าง Pattern ใหม่
|
|
|
|
---
|
|
|
|
## Phase 3 : Generate Documentation
|
|
|
|
สร้างไฟล์
|
|
|
|
docs/AI_DEVELOPMENT_GUIDE.md
|
|
|
|
เนื้อหาต้องประกอบด้วย
|
|
|
|
- Project Architecture
|
|
- Folder Structure
|
|
- Feature Structure
|
|
- Naming Convention
|
|
- UI Pattern
|
|
- Table Pattern
|
|
- Form Pattern
|
|
- Dialog Pattern
|
|
- Server Action Pattern
|
|
- Prisma Pattern
|
|
- Shared Component Rules
|
|
- Responsive Rules
|
|
- Coding Rules
|
|
- Refactoring Rules
|
|
|
|
---
|
|
|
|
สร้างไฟล์
|
|
|
|
docs/PROJECT_ARCHITECTURE.md
|
|
|
|
อธิบาย
|
|
|
|
- Folder Structure
|
|
- Feature Dependency
|
|
- Data Flow
|
|
- Component Flow
|
|
- Shared Modules
|
|
- Feature Modules
|
|
|
|
---
|
|
|
|
สร้างไฟล์
|
|
|
|
docs/REFRACTOR_REPORT.md
|
|
|
|
ตรวจสอบ
|
|
|
|
Feature ไหนหลุด Pattern
|
|
|
|
เช่น
|
|
|
|
- สร้าง Table ใหม่
|
|
- สร้าง Pagination ใหม่
|
|
- ใช้ Dialog คนละแบบ
|
|
- ใช้ CSS คนละ Pattern
|
|
- ใช้ Form คนละ Pattern
|
|
|
|
พร้อมเสนอแนวทาง Refactor
|
|
|
|
---
|
|
|
|
## Phase 4 : Update AGENTS.md
|
|
|
|
อัปเดตไฟล์
|
|
|
|
AGENTS.md
|
|
|
|
ให้เป็น Project Constitution
|
|
|
|
โดยต้องเพิ่มกฎต่อไปนี้
|
|
|
|
---
|
|
|
|
### Highest Priority
|
|
|
|
AI ต้องปฏิบัติตามลำดับนี้
|
|
|
|
1. Existing Project Implementation
|
|
2. docs/AI_DEVELOPMENT_GUIDE.md
|
|
3. docs/PROJECT_ARCHITECTURE.md
|
|
4. AGENTS.md
|
|
5. kiranism-shadcn-dashboard
|
|
6. shadcn/ui
|
|
7. TanStack Table
|
|
8. Next.js Best Practices
|
|
|
|
หากมีข้อขัดแย้ง
|
|
|
|
ให้ใช้ลำดับที่สูงกว่าเสมอ
|
|
|
|
---
|
|
|
|
### Mandatory Audit
|
|
|
|
ก่อนแก้ไขโค้ดทุกครั้ง
|
|
|
|
AI ต้องสำรวจ
|
|
|
|
- Feature เดิม
|
|
- Shared Component
|
|
- Shared Hook
|
|
- Shared Action
|
|
- Shared Dialog
|
|
- Shared Form
|
|
- Shared Table
|
|
- Shared Layout
|
|
|
|
ก่อนเสมอ
|
|
|
|
---
|
|
|
|
### Design System
|
|
|
|
โปรเจกต์นี้ใช้
|
|
|
|
**kiranism-shadcn-dashboard**
|
|
|
|
เป็น Design System หลัก
|
|
|
|
ทุกหน้าต้องใช้ Pattern เดียวกัน
|
|
|
|
ห้ามสร้าง Dashboard Layout ใหม่
|
|
|
|
---
|
|
|
|
### Canonical Features
|
|
|
|
กำหนดให้
|
|
|
|
Training Records
|
|
|
|
เป็น Canonical Reference
|
|
|
|
ทุก Feature ใหม่
|
|
|
|
ต้อง Copy Pattern
|
|
|
|
จาก Feature นี้ก่อน
|
|
|
|
หากไม่มี
|
|
|
|
จึงค้นหา
|
|
|
|
Employee Directory
|
|
|
|
Announcement
|
|
|
|
ตามลำดับ
|
|
|
|
---
|
|
|
|
### Reuse Policy
|
|
|
|
ห้ามสร้างใหม่
|
|
|
|
ถ้ามีอยู่แล้ว
|
|
|
|
AI ต้องค้นหา
|
|
|
|
- Shared Components
|
|
- Shared Hooks
|
|
- Shared Actions
|
|
- Shared Dialogs
|
|
- Shared Forms
|
|
- Shared Tables
|
|
|
|
ก่อนเสมอ
|
|
|
|
---
|
|
|
|
### DataTable Rules
|
|
|
|
ห้ามสร้าง Table เอง
|
|
|
|
ต้อง Reuse
|
|
|
|
- DataTable
|
|
- DataTableToolbar
|
|
- DataTablePagination
|
|
- DataTableViewOptions
|
|
- DataTableColumnHeader
|
|
- CellAction
|
|
- Faceted Filters
|
|
|
|
ห้ามสร้าง
|
|
|
|
Pagination ใหม่
|
|
|
|
Toolbar ใหม่
|
|
|
|
Sorting ใหม่
|
|
|
|
View ใหม่
|
|
|
|
---
|
|
|
|
### Form Rules
|
|
|
|
ต้องใช้
|
|
|
|
- React Hook Form
|
|
- Zod
|
|
- Existing Form Components
|
|
|
|
---
|
|
|
|
### Server Action Rules
|
|
|
|
ใช้ Pattern เดิมของโปรเจกต์
|
|
|
|
เช่น
|
|
|
|
next-safe-action
|
|
|
|
ห้ามสร้าง Pattern ใหม่
|
|
|
|
---
|
|
|
|
### Dialog Rules
|
|
|
|
Reuse
|
|
|
|
Dialog
|
|
|
|
Sheet
|
|
|
|
AlertDialog
|
|
|
|
ConfirmDialog
|
|
|
|
---
|
|
|
|
### File Upload
|
|
|
|
Reuse Upload Utility เดิม
|
|
|
|
---
|
|
|
|
### Prisma
|
|
|
|
Reuse Existing Schema Pattern
|
|
|
|
---
|
|
|
|
### Folder Structure
|
|
|
|
Feature ใหม่
|
|
|
|
ต้องใช้
|
|
|
|
page.tsx
|
|
|
|
columns.tsx
|
|
|
|
form.tsx
|
|
|
|
dialog.tsx
|
|
|
|
actions.ts
|
|
|
|
schema.ts
|
|
|
|
constants.ts
|
|
|
|
types.ts
|
|
|
|
เหมือนกันทั้งหมด
|
|
|
|
---
|
|
|
|
### Naming Convention
|
|
|
|
ห้ามตั้งชื่อไฟล์ใหม่
|
|
|
|
ใช้ Naming เดียวกับทั้งโปรเจกต์
|
|
|
|
---
|
|
|
|
### Responsive Rules
|
|
|
|
ห้าม
|
|
|
|
- Overflow Page
|
|
- Broken Layout
|
|
- Clipped Button
|
|
- Broken Table
|
|
|
|
ใช้
|
|
|
|
overflow-x-auto
|
|
|
|
เฉพาะใน Table เท่านั้น
|
|
|
|
---
|
|
|
|
### Architecture Freeze
|
|
|
|
เมื่อมี Shared Component แล้ว
|
|
|
|
ทุก Feature ใหม่
|
|
|
|
ต้อง Reuse
|
|
|
|
ห้ามสร้าง Implementation ใหม่
|
|
|
|
---
|
|
|
|
### Forbidden
|
|
|
|
AI ห้าม
|
|
|
|
❌ สร้าง Table ใหม่
|
|
|
|
❌ สร้าง Toolbar ใหม่
|
|
|
|
❌ สร้าง Pagination ใหม่
|
|
|
|
❌ สร้าง Dialog ใหม่
|
|
|
|
❌ สร้าง Badge ใหม่
|
|
|
|
❌ สร้าง Form ใหม่
|
|
|
|
❌ สร้าง Upload ใหม่
|
|
|
|
❌ สร้าง Layout ใหม่
|
|
|
|
❌ สร้าง Dashboard ใหม่
|
|
|
|
❌ สร้าง Folder Structure ใหม่
|
|
|
|
❌ สร้าง Design Pattern ใหม่
|
|
|
|
---
|
|
|
|
### Required Checklist
|
|
|
|
ก่อนส่งงาน
|
|
|
|
AI ต้องตรวจสอบ
|
|
|
|
✅ Reuse Components
|
|
|
|
✅ Reuse Hooks
|
|
|
|
✅ Reuse Actions
|
|
|
|
✅ Reuse Dialog
|
|
|
|
✅ Reuse DataTable
|
|
|
|
✅ Reuse Toolbar
|
|
|
|
✅ Reuse Pagination
|
|
|
|
✅ Reuse View Options
|
|
|
|
✅ Reuse Empty State
|
|
|
|
✅ Reuse Loading
|
|
|
|
✅ Reuse Design Tokens
|
|
|
|
✅ Folder Structure ถูกต้อง
|
|
|
|
✅ Naming Convention ถูกต้อง
|
|
|
|
✅ Responsive ถูกต้อง
|
|
|
|
---
|
|
|
|
### Final Principle
|
|
|
|
Consistency is more important than creativity.
|
|
|
|
Every new feature must look like it has always been part of the project.
|
|
|
|
If a reviewer cannot distinguish which feature was added later, the implementation is correct.
|
|
|
|
---
|
|
|
|
# สิ่งที่ AI ต้องทำหลังจากสร้างเอกสาร
|
|
|
|
1. ตรวจสอบทุก Feature ที่มีอยู่ในระบบ
|
|
|
|
2. เปรียบเทียบกับ Canonical Feature
|
|
|
|
3. สร้างรายการ Feature ที่หลุด Pattern
|
|
|
|
4. เสนอแผน Refactor
|
|
|
|
5. รอการอนุมัติก่อน Refactor
|
|
|
|
---
|
|
|
|
# กฎสำคัญที่สุด
|
|
|
|
ก่อนแก้ไข Feature หรือเขียนโค้ดใหม่ทุกครั้ง
|
|
|
|
AI ต้องอ่าน
|
|
|
|
- AGENTS.md
|
|
- docs/AI_DEVELOPMENT_GUIDE.md
|
|
- docs/PROJECT_ARCHITECTURE.md
|
|
|
|
ก่อนเสมอ
|
|
|
|
หากพบว่าโค้ดที่กำลังจะแก้ไขไม่ตรงกับมาตรฐาน
|
|
|
|
ให้เสนอการ Refactor ก่อน
|
|
|
|
ห้ามขยาย Pattern ที่ผิด
|
|
|
|
ห้ามสร้าง Pattern ใหม่
|
|
|
|
ต้องใช้ Pattern ของโปรเจกต์ และ **kiranism-shadcn-dashboard** อย่างเคร่งครัด
|
|
|
|
เมื่อไม่แน่ใจ ให้สำรวจโค้ดเดิมก่อนเสมอ และเลือก Reuse มากกว่าสร้างใหม่
|