Files
alla-tms/plans/phase-0-architecture-audit-part-1.md
2026-07-16 09:53:14 +07:00

2076 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 0 Architecture Audit
## Part 1 Context, Current Status & Audit Foundation
> **Project:** Training Management System (TMS)
>
> **Phase:** Phase 0 Architecture Audit
>
> **Objective:** Validate Architecture Readiness Before Permission-first Migration
---
# Background
ระบบ Training Management System (TMS) กำลังอยู่ในช่วงเปลี่ยนผ่านจาก **Role-based Authorization** ไปสู่ **Permission-first Authorization Architecture**
ในปัจจุบัน ระบบมี Foundation สำหรับ Permission-first แล้วบางส่วน แต่ยังอยู่ใน **Compatibility Mode**
หมายความว่า Feature หลายส่วนของระบบยังคงใช้แนวคิดเดิม เช่น
- `businessRole`
- `membership.role`
- `systemRole`
- `isHRD()`
- `isIT()`
- `requireHRD()`
- `requireIT()`
ขณะที่ Foundation ใหม่เริ่มถูกสร้างแล้ว เช่น
- Permission Catalog
- Permission Helpers
- Effective Permission Resolver
- Session Permission Resolution
- Permission Template Schema
- Permission Assignment Schema
- Permission Override Schema
ดังนั้น เป้าหมายของ Phase นี้คือ
> **ตรวจสอบความพร้อมของ Foundation ทั้งหมดก่อนเริ่ม Migration ของ Feature**
---
# Current Project Status
สถานะปัจจุบันของระบบโดยสรุป
## Completed
Foundation ที่มีอยู่แล้ว
- Central Permission Catalog
- Authorization Helper
- Session Permission Resolver
- Effective Permission Resolution
- Database Schema สำหรับ Permission Template
- Permission Assignment
- Permission Override
- Permission Audit Log
- Compatibility Layer สำหรับระบบเดิม
## In Progress
อยู่ระหว่าง Migration
- Navigation
- Page Guard
- Route Handlers
- Feature Authorization
- Permission Template Service
- Assignment Service
## Not Started
ยังไม่มีการพัฒนา
- Permission Template Administration UI
- User Permission Assignment UI
- Permission Override UI
- Effective Permission Viewer
- Compatibility Cleanup
- Legacy Removal
---
# Purpose Of Phase 0
Phase นี้มีหน้าที่เพียงอย่างเดียวคือ
> **Audit + Validate + Assess + Report**
ไม่ใช่
> Refactor
ไม่ใช่
> Rewrite
ไม่ใช่
> Feature Development
---
# Expected Outcome
เมื่อจบ Phase นี้
ทีมพัฒนาต้องสามารถตอบคำถามต่อไปนี้ได้อย่างชัดเจน
- Foundation พร้อมหรือไม่
- Permission Model สมบูรณ์หรือไม่
- Session สามารถใช้เป็น Source of Truth ได้หรือไม่
- Effective Permission ถูกต้องหรือไม่
- Multi-Organization พร้อมหรือไม่
- Compatibility Layer เพียงพอหรือไม่
- Feature ใดสามารถเริ่ม Migration ได้ก่อน
- Feature ใดมีความเสี่ยงสูง
- มี Technical Debt อะไรค้างอยู่
- มี Architecture Smell หรือไม่
---
# Architecture Direction
Architecture ใหม่ของระบบต้องยึดตามโครงสร้างนี้
```text
Organization
Permission Template
Template Permissions
User Template Assignment
User Permission Override
Effective Permissions
Authorization Helpers
API / Server
Page Guard
Navigation
UI Visibility
```
ทุก Feature ใหม่
ต้องอ้างอิง Architecture นี้เท่านั้น
---
# Source Of Truth
ภายหลังการ Migration
Source Of Truth ต้องมีเพียงชุดเดียว
```text
Effective Permissions
```
ระบบทั้งหมด
ห้ามตรวจสอบสิทธิ์จาก
- businessRole
- membership.role
- systemRole
- isHRD()
- isIT()
โดยตรงอีก
Field เหล่านี้สามารถมีอยู่ได้
แต่มีไว้เพื่อ Compatibility เท่านั้น
---
# Scope Of Audit
Phase นี้ต้องตรวจสอบทุก Layer ของระบบ
ประกอบด้วย
## Architecture Layer
- Authorization Architecture
- Permission Architecture
- Session Architecture
- Organization Architecture
## Database Layer
- Schema
- Migration
- Foreign Keys
- Indexes
- Constraints
## Backend Layer
- Auth
- Session
- Permission Helpers
- Route Handlers
- Services
## Frontend Layer
- Navigation
- Page Guards
- Feature Visibility
- Permission Context
## Security Layer
- Authorization
- Privilege Escalation
- Cross Organization Access
- Permission Leak
## Performance Layer
- Permission Resolution
- Database Query
- Cache
- Session Size
---
# Audit Philosophy
การตรวจสอบครั้งนี้
ห้ามเริ่มจาก
> "จะเปลี่ยนอะไร"
แต่ต้องเริ่มจาก
> "ระบบปัจจุบันทำอะไรอยู่"
ก่อน
หลังจากนั้น
จึงประเมินว่า
- สิ่งใดใช้ต่อได้
- สิ่งใดต้อง Refactor
- สิ่งใดควรลบ
- สิ่งใดควรสร้างใหม่
ห้ามสร้าง Component
Helper
Service
หรือ Model ใหม่
หากของเดิมสามารถ Reuse ได้
---
# Audit Principles
การตรวจสอบทุกหัวข้อ
ต้องยึดหลัก
## Reuse First
ตรวจสอบของเดิมก่อน
ห้ามสร้างใหม่ทันที
---
## Evidence Based
ห้ามคาดเดา
ทุกข้อสรุปต้องอ้างอิงจากโค้ดจริง
---
## Compatibility First
ห้ามเสนอแนวทาง
ที่ทำให้ระบบเดิมใช้งานไม่ได้
---
## Incremental Migration
ทุก Feature
ต้องสามารถย้ายทีละส่วนได้
โดยไม่ต้อง Rewrite ทั้งระบบ
---
## Security First
UI
ไม่ใช่ Security
Authorization
ต้องตรวจที่ Server เสมอ
---
## Single Source Of Truth
Effective Permissions
คือแหล่งข้อมูลสิทธิ์เพียงชุดเดียว
ทุก Layer
ต้องอ้างอิงจากข้อมูลชุดเดียวกัน
---
# Important Rules
Phase นี้
ห้ามทำสิ่งต่อไปนี้
- ห้าม Refactor Feature
- ห้ามแก้ Business Logic
- ห้ามแก้ Workflow
- ห้ามเพิ่ม Feature ใหม่
- ห้ามเปลี่ยน Database Schema
- ห้ามลบ Legacy Code
- ห้ามลบ businessRole
- ห้ามลบ membership.role
- ห้ามลบ isHRD()
- ห้ามลบ isIT()
- ห้ามลบ requireHRD()
- ห้ามลบ requireIT()
หากพบปัญหา
ให้บันทึกไว้ในรายงาน
ห้ามแก้ไขทันที
---
# End Of Section A
หลังจบ Section นี้
ให้รอ Section B ก่อนดำเนินการตรวจสอบเชิงลึกต่อ
# Phase 0 Architecture Audit
## Part 1 Section B
### Audit Objectives, Repository Inspection Strategy & Readiness Assessment
> **Objective**
>
> กำหนดมาตรฐานการตรวจสอบ (Audit Standard) เพื่อประเมินว่าโปรเจกต์มีความพร้อมสำหรับการ Migration ไปสู่ Permission-first Architecture หรือไม่
---
# Primary Objectives
Phase 0 มีเป้าหมายหลักเพียงข้อเดียว
> **ยืนยันว่า Foundation ของระบบมีความถูกต้อง แข็งแรง และพร้อมสำหรับการ Migration ใน Phase ถัดไป**
Codex ต้องไม่เริ่มจากการแก้ไขโค้ด
แต่ต้องตอบคำถามต่อไปนี้ให้ได้ก่อน
- Foundation พร้อมหรือยัง
- โครงสร้างปัจจุบันมีข้อขัดแย้งกับ Permission-first หรือไม่
- มีส่วนใดที่สามารถ Reuse ได้
- มีส่วนใดที่ควร Refactor
- มีส่วนใดที่ควรเลิกใช้ (Deprecated)
- มีส่วนใดที่ยังขาดอยู่
- หากเริ่ม Migration ตอนนี้ จะมีความเสี่ยงอะไรบ้าง
---
# Audit Strategy
การตรวจสอบต้องทำจาก "แกนกลาง" ออกไปยัง Feature
ลำดับการตรวจต้องเป็นดังนี้
```text
Architecture
Database
Authentication
Authorization
Session
Permission Resolution
Navigation
Page Guard
API
Feature Server
Feature UI
Reports
```
ห้ามเริ่มตรวจจากหน้า UI ก่อน
เนื่องจาก UI ไม่ใช่ Source of Truth
---
# Repository Inspection Rules
ก่อนวิเคราะห์หรือเสนอแนวทางใด ๆ
ต้องตรวจสอบ Repository จริงก่อนเสมอ
ห้ามสมมติว่า
- มี Service
- มี Helper
- มี Component
- มี Hook
- มี Model
หากยังไม่ได้ตรวจสอบ
---
## Required Inspection
ทุก Layer ต้องตรวจอย่างน้อย
### Database
- Schema
- Enum
- Tables
- Foreign Keys
- Constraints
- Migration Files
- Seed Strategy
---
### Authentication
- auth.ts
- session callback
- JWT callback
- next-auth types
- organization context
---
### Authorization
- permissions.ts
- authorization.ts
- roles.ts
- session.ts
---
### Navigation
- nav-config.ts
- use-nav.ts
- sidebar
- menu visibility
---
### Page Guard
- dashboard guards
- route guards
- middleware
---
### API
ทุก Route
ต้องตรวจว่า
ใช้
```text
requirePermission()
หรือ
requireHRD()
หรือ
isHRD()
```
---
### Feature Layer
ตรวจทุก Module
เช่น
- Announcements
- Online Lessons
- Training Records
- Reports
- Employee Directory
- Courses
- Users
- Notifications
---
# Architecture Validation Matrix
ทุก Layer ต้องถูกประเมินด้วยเกณฑ์เดียวกัน
| Category | ตรวจสอบ |
| -------------- | --------------------------------- |
| Responsibility | Layer นี้มีหน้าที่ชัดเจนหรือไม่ |
| Coupling | พึ่งพา Layer อื่นมากเกินไปหรือไม่ |
| Duplication | Logic ซ้ำหรือไม่ |
| Compatibility | รองรับ Migration หรือไม่ |
| Extensibility | เพิ่ม Feature ใหม่ได้ง่ายหรือไม่ |
| Testability | ทดสอบได้ง่ายหรือไม่ |
| Security | มีช่องโหว่หรือไม่ |
| Performance | มี Bottleneck หรือไม่ |
---
# Readiness Assessment
ทุกหัวข้อ
ต้องให้คะแนน
```text
READY
PARTIAL
NOT READY
```
พร้อมเหตุผล
ตัวอย่าง
```text
Permission Catalog
Status
READY
Reason
Permission ถูก Centralized แล้ว
```
หรือ
```text
Navigation
Status
PARTIAL
Reason
รองรับ Permission Metadata แล้ว
แต่ยังใช้ businessRole เป็น fallback
```
---
# Audit Categories
การตรวจสอบต้องแบ่งออกเป็น
## Foundation
- Permission Catalog
- Session
- Schema
- Effective Permission
- Organization
---
## Compatibility
- businessRole
- membership.role
- systemRole
- Legacy Helpers
---
## Feature
แต่ละ Feature
ต้องประเมินแยก
- Ready
- Partial
- Not Ready
---
## Security
ตรวจสอบ
- Privilege Escalation
- Missing Permission Checks
- Direct URL Access
- Organization Isolation
- Data Leakage
---
## Performance
ตรวจสอบ
- Permission Resolution
- Duplicate Queries
- Session Payload
- N+1 Queries
- Cache Opportunities
---
## Maintainability
ตรวจสอบ
- Code Duplication
- Service Separation
- Helper Reuse
- Naming Consistency
- Folder Structure
---
# Discovery Strategy
ห้ามเริ่มจากการค้นหาเฉพาะไฟล์ที่คิดว่าสำคัญ
ให้สำรวจระบบทั้งหมดก่อน
ตัวอย่าง
```text
Auth
Session
Permissions
Navigation
Page Guard
API
Services
UI
```
ทุกขั้นตอน
ต้องบันทึก
- สิ่งที่พบ
- สิ่งที่ขาด
- สิ่งที่ซ้ำ
- สิ่งที่ควรปรับ
---
# Required Evidence
ทุกข้อสรุป
ต้องมีหลักฐาน
เช่น
- File
- Function
- Helper
- Component
- Route
- Service
ห้ามเขียนว่า
> "น่าจะ"
> "คาดว่า"
> "อาจจะ"
หากไม่มีหลักฐาน
ให้ระบุว่า
```text
Not Verified
```
---
# Audit Deliverables (Section B)
เมื่อจบการตรวจสอบใน Section นี้
Codex ต้องสามารถสร้างรายการต่อไปนี้ได้
- Architecture Validation Matrix
- Readiness Matrix
- Foundation Checklist
- Compatibility Checklist
- Repository Inspection Summary
- Code Discovery Summary
เอกสารเหล่านี้จะถูกนำไปใช้ต่อใน
- Phase 0 Part 2
- Phase 0 Part 3
- Phase 0 Part 4
และเป็นพื้นฐานสำหรับ Phase 1
---
# End Of Section B
ห้ามเริ่ม Refactor
จนกว่าจะผ่านการตรวจสอบทั้งหมดใน Phase 0
# Phase 0 Architecture Audit
## Part 1 Section C
### Enterprise Architecture Principles, Validation Rules & Anti-Pattern Detection
> **Objective**
>
> กำหนดหลักการ (Architecture Principles) และกฎการตรวจสอบ (Validation Rules) สำหรับการย้ายระบบไปสู่ Permission-first Architecture โดยไม่สร้าง Technical Debt เพิ่ม
---
# Enterprise Architecture Principles
ทุกการวิเคราะห์และข้อเสนอแนะในโปรเจกต์นี้ ต้องยึดหลักการต่อไปนี้
---
## Principle 1 — Permission First
Permission คือ Source of Truth เพียงหนึ่งเดียวของระบบ
ทุกการตรวจสอบสิทธิ์ ไม่ว่าจะอยู่ที่
- API
- Route Handler
- Server Action
- Feature Service
- Page Guard
- Navigation
- UI Visibility
ต้องอ้างอิงจาก Effective Permissions เท่านั้น
ห้ามตรวจสอบสิทธิ์จาก
- businessRole
- membership.role
- systemRole
โดยตรง
Role มีไว้เพื่อช่วย Migration เท่านั้น
---
## Principle 2 — Effective Permission Is The Truth
Permission จริงของผู้ใช้งาน
ต้องคำนวณจาก
```text
Permission Template
+
Allow Override
-
Deny Override
=
Effective Permissions
```
ห้ามให้แต่ละ Feature
คำนวณ Permission เอง
ต้องใช้ Logic กลางเพียงชุดเดียว
---
## Principle 3 — Server Owns Authorization
Server
คือเจ้าของการตัดสินใจเรื่องสิทธิ์
UI
มีหน้าที่เพียง
- ซ่อน
- แสดง
เท่านั้น
ห้ามเชื่อถือ UI
ทุก API
ต้องตรวจ Permission ซ้ำเสมอ
---
## Principle 4 — Single Permission Engine
ระบบต้องมี
Permission Engine
เพียงหนึ่งเดียว
ทุกส่วนของระบบ
ต้องเรียกใช้ Engine นี้
ห้ามมี
Permission Logic
ซ้ำหลายที่
---
## Principle 5 — Organization Isolation
ทุก Permission
ต้องอยู่ภายใต้
Organization Context
เสมอ
ห้ามเกิดกรณี
```text
User A
Organization A
เข้าถึงข้อมูล
Organization B
```
โดยไม่ได้รับอนุญาต
---
## Principle 6 — Incremental Migration
ทุก Feature
ต้องสามารถย้ายทีละ Module ได้
โดยไม่ทำให้
Module อื่นเสีย
---
## Principle 7 — Backward Compatibility
Compatibility Layer
สามารถมีได้
แต่
ห้ามเป็น
Source of Truth
---
# Permission-first Validation Rules
Codex ต้องตรวจสอบว่า
ทุก Layer
ใช้
Effective Permission
จริงหรือไม่
Checklist
```text
Permission
Session
Permission Engine
API
Feature
Navigation
UI
```
หากพบ
Role
เข้ามาเป็นตัวตัดสิน
ให้บันทึกเป็น
Architecture Finding
---
# Architecture Validation Rules
ตรวจสอบทุก Layer
ด้วยกฎเดียวกัน
---
## Rule 1
Business Logic
ต้องอยู่
Server
ไม่ใช่ UI
---
## Rule 2
Authorization
ต้องอยู่
Server
ไม่ใช่ Hook
---
## Rule 3
Permission
ต้อง Resolve
เพียงครั้งเดียว
ไม่ใช่ทุก Feature
---
## Rule 4
ทุก Module
ต้องใช้
Permission Helper
ชุดเดียวกัน
---
## Rule 5
ทุก Query
ต้องมี
Organization Scope
---
## Rule 6
ทุก Feature
ต้องรองรับ
Permission Override
โดยไม่ต้องเขียน Logic เพิ่ม
---
# Anti-Pattern Detection
Codex
ต้องค้นหา
Architecture Smell
ต่อไปนี้
---
## Role Leak
เช่น
```ts
if (businessRole === "HRD")
```
หรือ
```ts
if (isHRD())
```
---
## Permission Leak
เช่น
Permission
ถูกตรวจ
เฉพาะ UI
---
## Organization Leak
เช่น
Query
ไม่มี
organization_id
---
## Duplicate Authorization
เช่น
Feature A
เขียน
Permission Logic
เอง
Feature B
เขียนใหม่อีกชุด
---
## Duplicate Permission Mapping
เช่น
Announcement
มี Mapping
คนละชุด
กับ
Online Lesson
---
## Feature-specific Permission Resolver
เช่น
Announcement
Resolve Permission
เอง
แทนที่จะใช้
Permission Engine
---
## Session Leak
เช่น
Session
มีข้อมูล
Permission
ไม่ตรงกับ
Database
---
## Direct Role Dependency
เช่น
Navigation
ตรวจ
businessRole
โดยตรง
---
## UI Trust
เช่น
ซ่อนปุ่ม
แต่
API
ไม่ตรวจ Permission
---
## Cross Organization Access
เช่น
ไม่มี
Organization Context
ใน Query
---
# Permission Dependency Validation
Codex
ต้องตรวจสอบว่า
Permission
สัมพันธ์กันถูกต้องหรือไม่
ตัวอย่าง
```text
announcement:publish
```
ควรมี
```text
announcement:read_all
```
ก่อน
หรือ
```text
training_record:approve
```
ควรมี
```text
training_record:review
```
หากพบ
Permission
ที่ขาด Dependency
ให้บันทึก
เป็น
Finding
---
# Reuse Validation
ก่อนเสนอ
สร้าง
Service
Component
Hook
Repository
Helper
ใหม่
Codex
ต้องตรวจสอบว่า
ของเดิม
สามารถ Reuse
ได้หรือไม่
หากสร้างใหม่
ต้องอธิบายเหตุผล
ทุกครั้ง
---
# Naming Validation
ตรวจสอบ
Naming Convention
ทั้งหมด
เช่น
Permission
ต้องเป็น
```text
module:action
```
ตัวอย่าง
```text
announcement:create
announcement:publish
online_lesson:approve
```
ห้ามมี
Pattern
หลายแบบ
ในระบบเดียวกัน
---
# Layer Responsibility Validation
แต่ละ Layer
ต้องมีหน้าที่ชัดเจน
| Layer | Responsibility |
| -------------------- | ---------------------------- |
| Database | Data Storage |
| Permission Engine | Resolve Effective Permission |
| Authorization Helper | Permission Validation |
| API | Business Authorization |
| Service | Business Logic |
| Navigation | Menu Visibility |
| UI | Presentation |
ห้าม
Business Logic
หลุดไปอยู่
UI
---
# Architecture Smell Severity
ทุก Finding
ต้องถูกจัดระดับ
```text
Critical
High
Medium
Low
Information
```
พร้อมเหตุผล
และ
ผลกระทบ
---
# Required Outputs
หลังจบ Section นี้
Codex
ต้องสามารถสร้าง
- Architecture Principles Validation
- Anti-Pattern Report
- Architecture Smell Report
- Layer Responsibility Report
- Permission Dependency Report
- Reuse Opportunity Report
ทั้งหมดจะถูกใช้ต่อ
ใน
Phase 0
Part 2
---
# End Of Section C
ห้ามเสนอการ Refactor
จนกว่าจะตรวจครบทุก Rule ใน Section นี้
# Phase 0 Architecture Audit
## Part 1 Section D
### Deliverables, Reporting Standards, Readiness Assessment & Exit Criteria
> **Objective**
>
> กำหนดผลลัพธ์ (Deliverables) ที่ Codex ต้องจัดทำหลังจากตรวจสอบระบบเสร็จ รวมถึงมาตรฐานการจัดทำรายงาน การประเมินความพร้อม (Readiness Assessment) และเกณฑ์การอนุมัติให้เข้าสู่ Phase 1
---
# Deliverables
เมื่อจบ Phase 0
Codex ต้องสร้างเอกสารในโฟลเดอร์
```text
docs/architecture-audit/
```
ประกอบด้วยเอกสารอย่างน้อยดังต่อไปนี้
```text
phase-0-architecture-audit.md
phase-0-readiness-report.md
phase-0-risk-register.md
phase-0-migration-checklist.md
phase-0-architecture-findings.md
phase-0-technical-debt.md
phase-0-next-phase-plan.md
```
ห้ามรวมทุกอย่างไว้ในไฟล์เดียว
แต่ละเอกสารต้องมีวัตถุประสงค์ชัดเจน
---
# Architecture Audit Report
รายงานหลักของ Phase 0
ต้องประกอบด้วย
## Executive Summary
สรุปภาพรวม
- สถานะปัจจุบัน
- จุดแข็ง
- จุดอ่อน
- ความพร้อม
- ความเสี่ยง
- คำแนะนำ
---
## Current Architecture
อธิบาย Architecture ปัจจุบัน
พร้อม Diagram
เช่น
```text
Authentication
Session
Permission Resolution
API
Feature
Navigation
UI
```
---
## Findings
สรุปสิ่งที่พบ
แบ่งตาม
- Critical
- High
- Medium
- Low
พร้อม
- File
- Module
- Description
- Impact
- Recommendation
---
## Reuse Opportunities
สรุป
Service
Helper
Component
ที่สามารถ Reuse
ได้
---
## Technical Debt
สรุป
Legacy Code
Code Duplication
Architecture Smell
Dependency
ที่ยังเหลือ
---
# Readiness Report
รายงานนี้
มีหน้าที่ตอบเพียงคำถามเดียว
```text
ระบบพร้อมเข้าสู่ Phase 1 หรือไม่
```
ต้องแบ่งเป็นหมวด
ตัวอย่าง
| Category | Status | Score | Notes |
| ------------------ | --------- | ----: | ------------------- |
| Permission Catalog | READY | 100 | ครบถ้วน |
| Session | READY | 95 | เหลือ Compatibility |
| Navigation | PARTIAL | 60 | ยังใช้ businessRole |
| Route Handler | NOT READY | 20 | ยังใช้ requireHRD |
| Admin UI | NOT READY | 0 | ยังไม่มี |
---
# Readiness Levels
ใช้ระดับดังนี้
```text
READY
PARTIAL
NOT READY
```
พร้อมคะแนน
```text
0 - 100
```
เกณฑ์
```text
90-100
Production Ready
70-89
Ready For Migration
40-69
Need Improvement
0-39
Not Ready
```
---
# Risk Register
ทุก Risk
ต้องมี
| Field | Description |
| -------------- | ------------------------------ |
| Risk ID | รหัส |
| Severity | Critical / High / Medium / Low |
| Probability | High / Medium / Low |
| Impact | Business Impact |
| Recommendation | วิธีลดความเสี่ยง |
| Owner | ผู้รับผิดชอบ |
| Phase | ควรแก้ในเฟสใด |
ตัวอย่าง
```text
R-001
Legacy businessRole
High
ควรลบใน Phase 4
```
---
# Migration Checklist
สร้าง Checklist
ที่สามารถใช้จริง
ในทุก Phase
ตัวอย่าง
```text
Permission Engine
Template Service
Navigation
Announcement
Online Lesson
Training Record
Admin UI
Cleanup
```
---
# Architecture Scorecard
ประเมินแต่ละหัวข้อ
| Category | Score |
| ------------------ | ----: |
| Architecture | |
| Security | |
| Authorization | |
| Session | |
| Performance | |
| Maintainability | |
| Scalability | |
| Multi Organization | |
| Compatibility | |
| Testability | |
พร้อม
คะแนนรวม
---
# Documentation Standards
ทุกเอกสาร
ต้องมี
## Summary
## Findings
## Evidence
## Recommendation
## Impact
## Next Step
ห้ามมีเพียง
ความคิดเห็น
โดยไม่มีหลักฐาน
---
# Evidence Requirements
ทุก Finding
ต้องอ้างอิง
- File
- Function
- Component
- Route
- Helper
- Service
ตัวอย่าง
```text
File
src/lib/auth/session.ts
Function
requirePermission()
Finding
ยังมี fallback ไป businessRole
```
ห้ามเขียน
```text
น่าจะ
อาจจะ
คาดว่า
```
---
# Recommendation Standards
ทุก Recommendation
ต้องจัดลำดับ
```text
Immediate
Short Term
Medium Term
Long Term
```
พร้อมเหตุผล
---
# Phase Gate
ก่อนเข้าสู่
Phase 1
ต้องตรวจสอบว่า
## Permission Catalog
READY
---
## Effective Permission Resolver
READY
---
## Session
READY
---
## Schema
READY
---
## Compatibility Layer
PARTIAL หรือ READY
---
## Critical Issues
ต้องไม่มี
---
## High Severity
ต้องมีแผนแก้
---
## Documentation
ครบทุกไฟล์
---
# Exit Criteria
Phase 0
ถือว่าเสร็จ
เมื่อ
- Audit ครบทุก Layer
- ตรวจ Repository ครบทุก Module
- Architecture Validation ผ่าน
- Security Review ผ่าน
- Compatibility Review ผ่าน
- Readiness Report เสร็จ
- Risk Register เสร็จ
- Migration Checklist เสร็จ
- Technical Debt Report เสร็จ
- Next Phase Plan เสร็จ
หากเงื่อนไขใดไม่ผ่าน
ห้ามเริ่ม
Phase 1
---
# Definition Of Done
Phase 0
จะถือว่าเสร็จสมบูรณ์
เมื่อสามารถตอบคำถามต่อไปนี้ได้ทั้งหมด
- Foundation พร้อมหรือไม่
- Permission-first Model ถูกต้องหรือไม่
- Effective Permission เป็น Source Of Truth จริงหรือไม่
- Organization Isolation เพียงพอหรือไม่
- Feature ใดพร้อม Migration ก่อน
- Feature ใดมีความเสี่ยง
- Legacy ส่วนใดยังจำเป็น
- Legacy ส่วนใดสามารถลบได้ในอนาคต
- Architecture มี Technical Debt อะไร
- ระบบพร้อมเข้าสู่ Phase 1 หรือยัง
---
# Next Phase Handover
เมื่อจบ Phase 0
ให้สร้างเอกสาร
```text
docs/architecture-audit/phase-0-next-phase-plan.md
```
โดยระบุ
## Recommended Phase Order
```text
Phase 1
Permission Core Architecture
Phase 2
Feature Authorization Migration
Phase 3
Permission Administration
Phase 4
Compatibility Cleanup
```
พร้อม
- Dependencies
- Risks
- Estimated Complexity
- Expected Deliverables
เพื่อใช้เป็นเอกสารอ้างอิงของทุกเฟสถัดไป
---
# End Of Part 1
เมื่อ Part 1 เสร็จ
ห้ามเริ่ม Refactor
ห้ามเริ่ม Feature Migration
ห้ามแก้ไขโค้ด
จนกว่าจะเข้าสู่
**Phase 0 Part 2 (Codebase Architecture Audit)**
ซึ่งจะเป็นการตรวจสอบ Repository จริงแบบ File-by-File และ Module-by-Module โดยอ้างอิงหลักการทั้งหมดจาก Part 1