2107 خطوط
35 KiB
Markdown
2107 خطوط
35 KiB
Markdown
# CHANGE SAFETY PROTOCOL — MANDATORY
|
||
|
||
این پروژه در حال حاضر دارای قابلیتهای فعال و کد عملیاتی است.
|
||
|
||
هدف این برنامه **Stabilization و Controlled Improvement** است، نه بازنویسی پروژه.
|
||
|
||
## اصل اول — Working Code Is Sacred
|
||
|
||
اگر یک بخش:
|
||
|
||
* درست کار میکند،
|
||
* Test آن سبز است،
|
||
* Security issue ندارد،
|
||
* مانع مستقیم Phase فعلی نیست،
|
||
|
||
فقط برای Clean Code، زیبایی Architecture یا Preference شخصی آن را تغییر نده.
|
||
|
||
---
|
||
|
||
## Minimum Necessary Change
|
||
|
||
برای حل هر Issue کمترین تغییر ممکن را انجام بده.
|
||
|
||
مثلاً اگر یک Bug با تغییر:
|
||
|
||
* یک Route،
|
||
* یک Service،
|
||
* یا یک Component
|
||
|
||
قابل حل است، از Refactor گسترده بخشهای دیگر خودداری کن.
|
||
|
||
---
|
||
|
||
## Scope Lock
|
||
|
||
در ابتدای هر Phase دقیقاً مشخص کن:
|
||
|
||
```text
|
||
Files expected to change
|
||
Modules affected
|
||
Behavior expected to change
|
||
Behavior that must remain unchanged
|
||
```
|
||
|
||
در طول Phase از این Scope خارج نشو مگر اینکه یک Blocker واقعی پیدا شود.
|
||
|
||
اگر مشکل دیگری پیدا کردی که برای Phase جاری ضروری نیست، آن را در:
|
||
|
||
```text
|
||
Deferred Technical Debt
|
||
```
|
||
|
||
ثبت کن و تغییرش نده.
|
||
|
||
---
|
||
|
||
## No Opportunistic Refactoring
|
||
|
||
این موارد ممنوع هستند مگر اینکه مستقیماً برای حل مشکل Phase ضروری باشند:
|
||
|
||
* Renameهای گسترده
|
||
* تغییر Folder Structure
|
||
* تغییر Architecture unrelated
|
||
* تغییر API Contract unrelated
|
||
* تغییر State Management unrelated
|
||
* تغییر Database Schema unrelated
|
||
* Replace کردن Libraryها
|
||
* Rewrite کردن Componentهای سالم
|
||
* تغییر Design System در Phase فنی
|
||
* Dependency Upgrade گسترده
|
||
|
||
---
|
||
|
||
## Preserve Existing Behavior
|
||
|
||
قبل از تغییر مشخص کن رفتار فعلی چیست.
|
||
|
||
پس از تغییر همان رفتارهای سالم باید حفظ شده باشند.
|
||
|
||
Feature موجود نباید بهصورت تصادفی:
|
||
|
||
* حذف شود،
|
||
* غیرفعال شود،
|
||
* تغییر UX پیدا کند،
|
||
* یا رفتار متفاوت پیدا کند.
|
||
|
||
---
|
||
|
||
## Regression Test Rule
|
||
|
||
برای هر Bug واقعی ترجیحاً:
|
||
|
||
```text
|
||
Reproduce
|
||
↓
|
||
Write regression test
|
||
↓
|
||
Confirm test fails
|
||
↓
|
||
Implement minimum fix
|
||
↓
|
||
Confirm test passes
|
||
```
|
||
|
||
اگر نوشتن Test ممکن نبود، دلیل آن را گزارش کن.
|
||
|
||
---
|
||
|
||
## Never Fix Tests by Weakening Them
|
||
|
||
برای سبز کردن Pipeline حق نداری:
|
||
|
||
* Test را حذف کنی.
|
||
* Test را skip کنی.
|
||
* Assertion را حذف کنی.
|
||
* شرط Test را ضعیف کنی.
|
||
* Error را suppress کنی.
|
||
|
||
مگر اینکه Test واقعاً اشتباه باشد و دلیل فنی آن را مستند کنی.
|
||
|
||
---
|
||
|
||
## Checkpoint Rule
|
||
|
||
قبل از هر Phase:
|
||
|
||
```bash
|
||
git status
|
||
```
|
||
|
||
را بررسی کن.
|
||
|
||
Phase باید روی وضعیت مشخص شروع شود.
|
||
|
||
بعد از Phase:
|
||
|
||
```bash
|
||
git diff
|
||
git status
|
||
```
|
||
|
||
را بررسی کن.
|
||
|
||
هر Phase باید یک تغییر مستقل و قابل rollback باشد.
|
||
|
||
---
|
||
|
||
## One Phase = One Stable Checkpoint
|
||
|
||
تا زمانی که موارد زیر سبز نشدهاند Phase را Completed اعلام نکن:
|
||
|
||
```text
|
||
Relevant Backend Tests
|
||
Relevant Frontend Tests
|
||
Lint
|
||
Typecheck
|
||
Build
|
||
Smoke Tests
|
||
```
|
||
|
||
در صورت Failure ابتدا همان Phase را Stabilize کن.
|
||
|
||
به Phase بعد نرو.
|
||
|
||
---
|
||
|
||
## Stop-Loss Rule
|
||
|
||
اگر Fix یک Issue باعث شد:
|
||
|
||
* بیش از حد انتظار فایل تغییر کند،
|
||
* Architecture جدید نیاز شود،
|
||
* APIهای زیادی تحت تأثیر قرار گیرند،
|
||
* migration گسترده لازم شود،
|
||
* Regression متعدد ایجاد شود،
|
||
|
||
کار را متوقف کن.
|
||
|
||
بهجای ادامه دادن، گزارش بده:
|
||
|
||
```text
|
||
Issue:
|
||
Why the fix became high-risk:
|
||
Files/modules affected:
|
||
Safer alternatives:
|
||
Recommended next step:
|
||
```
|
||
|
||
بدون اجازه User تغییر پرریسک را ادامه نده.
|
||
|
||
---
|
||
|
||
## Refactor Budget
|
||
|
||
برای Phaseهای Bug Fix:
|
||
|
||
حداکثر Refactor باید فقط به اندازهای باشد که Bug امن و قابل نگهداری حل شود.
|
||
|
||
از Refactor پروژهمحور خودداری کن.
|
||
|
||
---
|
||
|
||
## Dependency Freeze
|
||
|
||
در Phaseهای Stabilization هیچ Dependency عمدهای را Upgrade یا Replace نکن مگر اینکه:
|
||
|
||
* vulnerability جدی وجود داشته باشد،
|
||
* dependency خراب باشد،
|
||
* یا Issue بدون آن قابل حل نباشد.
|
||
|
||
هر Dependency Change را جداگانه گزارش کن.
|
||
|
||
---
|
||
|
||
## Database Safety
|
||
|
||
Migrationهای موجود را rewrite نکن.
|
||
|
||
برای schema change از Migration جدید استفاده کن.
|
||
|
||
عملیات destructive روی داده موجود ممنوع است مگر با دستور صریح User.
|
||
|
||
---
|
||
|
||
## API Safety
|
||
|
||
API Contractهای فعال را بدون ضرورت تغییر نده.
|
||
|
||
اگر تغییر API ضروری است:
|
||
|
||
1. مصرفکنندگان آن را پیدا کن.
|
||
2. backward compatibility را بررسی کن.
|
||
3. frontend و tests را همزمان اصلاح کن.
|
||
4. تغییر Contract را صریح گزارش کن.
|
||
|
||
---
|
||
|
||
## UI Safety During Technical Phases
|
||
|
||
در Phaseهای Technical:
|
||
|
||
* layout را redesign نکن.
|
||
* spacing را redesign نکن.
|
||
* navigation را redesign نکن.
|
||
* typography را تغییر نده.
|
||
* visual styling unrelated را تغییر نده.
|
||
|
||
فقط UI لازم برای رفع Bug مجاز است.
|
||
|
||
---
|
||
|
||
## Technical Safety During UI Phases
|
||
|
||
در Phaseهای UI:
|
||
|
||
Business Logic، Database و Backend Architecture را فقط زمانی تغییر بده که UI بدون آن قابل اجرا نباشد.
|
||
|
||
در غیر این صورت Technical Debt ثبت کن.
|
||
|
||
---
|
||
|
||
## Final Principle
|
||
|
||
هدف هر Phase:
|
||
|
||
```text
|
||
Project after Phase
|
||
=
|
||
Project before Phase
|
||
+
|
||
specific improvement
|
||
-
|
||
specific bug
|
||
```
|
||
|
||
نه:
|
||
|
||
```text
|
||
Project after Phase
|
||
=
|
||
partially rewritten project
|
||
+
|
||
new unknown regressions
|
||
```
|
||
|
||
# Master Prompt — MicroLearning Debug, Refactor & UI/UX Enhancement
|
||
|
||
میخواهم پروژه **MicroLearning** را بهصورت مرحلهای، کنترلشده و Production-Ready بررسی، Debug، Refactor و از نظر UI/UX ارتقا دهی.
|
||
|
||
## قانون اصلی اجرای پروژه
|
||
|
||
این کار باید دقیقاً در **۹ فاز از Phase 0 تا Phase 8** انجام شود.
|
||
|
||
**هرگز چند فاز را همزمان انجام نده.**
|
||
|
||
پس از پایان هر فاز:
|
||
|
||
1. تمام تغییرات همان فاز را کامل کن.
|
||
2. تستهای مرتبط را اجرا کن.
|
||
3. Regression احتمالی را بررسی کن.
|
||
4. فایلهای تغییرکرده را اعلام کن.
|
||
5. باگهای پیدا شده را اعلام کن.
|
||
6. باگهای رفعشده را اعلام کن.
|
||
7. نتیجه Test / Lint / Build را اعلام کن.
|
||
8. وضعیت Git را بررسی کن.
|
||
9. یک گزارش کوتاه ارائه کن.
|
||
10. متوقف شو.
|
||
|
||
تا زمانی که من صراحتاً نگفتهام:
|
||
|
||
> برو فاز بعد
|
||
|
||
نباید Phase بعدی را شروع کنی.
|
||
|
||
---
|
||
|
||
# اصول غیرقابل مذاکره
|
||
|
||
در تمام فازها این قوانین رعایت شوند.
|
||
|
||
* Feature موجود بدون دلیل حذف نشود.
|
||
* رفتار فعلی سیستم بدون ضرورت تغییر نکند.
|
||
* داده کاربران یا migrationهای موجود خراب نشوند.
|
||
* API Contract بدون بررسی frontend تغییر نکند.
|
||
* هیچ Mock دائمی وارد production code نشود.
|
||
* هیچ hard-coded URL جدید ایجاد نشود.
|
||
* هیچ API Key یا Secret داخل source code قرار نگیرد.
|
||
* `.env` commit نشود.
|
||
* Architecture جدید باید component-based و maintainable باشد.
|
||
* TypeScript تا جای ممکن strict باقی بماند.
|
||
* `any` فقط با دلیل موجه استفاده شود.
|
||
* Errorها silent swallow نشوند.
|
||
* همه Async Operationها loading/error state داشته باشند.
|
||
* RTL و LTR هر دو حفظ شوند.
|
||
* Dark/Light Mode خراب نشود.
|
||
* Responsive Design حفظ شود.
|
||
* Accessibility در componentهای جدید رعایت شود.
|
||
* از ایجاد فایلهای بسیار بزرگ جلوگیری شود.
|
||
* قبل از ساخت component جدید بررسی کن component مشابه وجود دارد یا خیر.
|
||
* Design Tokenهای فعلی را تا حد ممکن reuse کن.
|
||
* duplicate logic ایجاد نکن.
|
||
* Business Logic را از UI جدا نگه دار.
|
||
|
||
اگر برای رفع یک مشکل مجبور به تغییر Architecture شدی، ابتدا impact آن را بررسی کن.
|
||
|
||
---
|
||
|
||
# تکنولوژی پروژه
|
||
|
||
Frontend:
|
||
|
||
* React
|
||
* TypeScript
|
||
* Vite
|
||
* React Query
|
||
* CSS / Design System موجود
|
||
|
||
Backend:
|
||
|
||
* Laravel
|
||
* PHP
|
||
* REST API
|
||
* Laravel Sanctum
|
||
* Queue / Jobs
|
||
* Database-backed configuration
|
||
|
||
AI Providers شامل مواردی مانند:
|
||
|
||
* Ollama
|
||
* OpenAI-compatible providers
|
||
* LM Studio
|
||
* vLLM
|
||
* Custom providers
|
||
|
||
---
|
||
|
||
# PHASE 0 — Full Baseline & Project Health Audit
|
||
|
||
## هدف
|
||
|
||
قبل از تغییر سورس باید وضعیت واقعی فعلی پروژه ثبت شود.
|
||
|
||
هیچ Refactor یا Feature Development در این فاز انجام نده.
|
||
|
||
## کارها
|
||
|
||
ابتدا ساختار پروژه را بررسی کن.
|
||
|
||
موارد زیر را شناسایی کن:
|
||
|
||
* Frontend entry points
|
||
* Backend entry points
|
||
* Routes
|
||
* Middleware
|
||
* Authentication flow
|
||
* Permissions
|
||
* API Client
|
||
* React Query configuration
|
||
* Builder architecture
|
||
* AI architecture
|
||
* Queue architecture
|
||
* Database migrations
|
||
* Tests
|
||
* GitHub Actions
|
||
* Environment/config files
|
||
|
||
---
|
||
|
||
## Backend baseline
|
||
|
||
اجرا کن:
|
||
|
||
```bash
|
||
php artisan about
|
||
php artisan route:list
|
||
php artisan route:list --path=ai
|
||
php artisan test
|
||
```
|
||
|
||
در صورت وجود ابزارها:
|
||
|
||
```bash
|
||
./vendor/bin/pint --test
|
||
```
|
||
|
||
و هر static analysis موجود در پروژه.
|
||
|
||
ثبت کن:
|
||
|
||
* تعداد Tests
|
||
* تعداد Assertions
|
||
* Failed Tests
|
||
* Skipped Tests
|
||
* Warnings
|
||
|
||
---
|
||
|
||
## Frontend baseline
|
||
|
||
اجرا کن:
|
||
|
||
```bash
|
||
npm ci
|
||
npm run lint
|
||
npm run typecheck
|
||
npm test
|
||
npm run build
|
||
```
|
||
|
||
اگر script متفاوت است ابتدا `package.json` را بررسی کن.
|
||
|
||
ثبت کن:
|
||
|
||
* تعداد Test files
|
||
* تعداد Tests
|
||
* TypeScript errors
|
||
* ESLint errors
|
||
* Build errors
|
||
* Build warnings
|
||
|
||
---
|
||
|
||
## GitHub Actions
|
||
|
||
Workflowهای موجود را بررسی کن.
|
||
|
||
Quality Gate مطلوب:
|
||
|
||
```text
|
||
install
|
||
↓
|
||
lint
|
||
↓
|
||
typecheck
|
||
↓
|
||
test
|
||
↓
|
||
build
|
||
```
|
||
|
||
Backend نیز باید test شود.
|
||
|
||
---
|
||
|
||
## خروجی Phase 0
|
||
|
||
جدولی بساز:
|
||
|
||
| Area | Status | Problem | Severity |
|
||
| ---- | ------ | ------- | -------- |
|
||
|
||
Severity:
|
||
|
||
```text
|
||
P0 Critical
|
||
P1 High
|
||
P2 Medium
|
||
P3 Low
|
||
```
|
||
|
||
همچنین Baseline رسمی پروژه را ثبت کن.
|
||
|
||
در این فاز هیچ تغییر معماری انجام نده.
|
||
|
||
پس از گزارش متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 1 — Critical Bugs & Security Stabilization
|
||
|
||
این فاز فقط مربوط به مشکلات **P0 / Security / Critical API bugs** است.
|
||
|
||
---
|
||
|
||
## 1. Fix duplicated API prefix
|
||
|
||
فایل زیر را بررسی کن:
|
||
|
||
```text
|
||
backend/routes/api.php
|
||
```
|
||
|
||
مشکل شناختهشده:
|
||
|
||
Route group دوباره `v1` prefix گرفته و مسیرهایی مانند این ساخته شدهاند:
|
||
|
||
```text
|
||
/api/v1/v1/ai/chat
|
||
/api/v1/v1/health
|
||
/api/v1/v1/certificates/verify/{code}
|
||
```
|
||
|
||
معماری route را اصلاح کن.
|
||
|
||
مسیر نهایی AI باید منطقی و یکتا باشد، مثلاً:
|
||
|
||
```text
|
||
/api/v1/ai/chat
|
||
```
|
||
|
||
بعد از اصلاح:
|
||
|
||
```bash
|
||
php artisan route:list
|
||
```
|
||
|
||
را اجرا و routeهای نهایی را بررسی کن.
|
||
|
||
---
|
||
|
||
## 2. Secure AI endpoints
|
||
|
||
تمام endpointهای AI را شناسایی کن.
|
||
|
||
بررسی کن:
|
||
|
||
* Authentication
|
||
* Authorization
|
||
* Throttling
|
||
* Organization scope
|
||
* Permission
|
||
* Input validation
|
||
|
||
AI endpoint نباید برای anonymous user قابل استفاده باشد مگر endpoint مشخصاً public طراحی شده باشد.
|
||
|
||
AI generation باید حداقل تحت:
|
||
|
||
```text
|
||
auth:sanctum
|
||
```
|
||
|
||
و permission مناسب باشد.
|
||
|
||
برای عملیات expensive rate limit تعریف کن.
|
||
|
||
---
|
||
|
||
## 3. SSRF Protection
|
||
|
||
تمام AI Connection URLها را بررسی کن.
|
||
|
||
سیستم نباید اجازه دهد user به هر URL دلخواه backend request ارسال کند.
|
||
|
||
Policy مناسب طراحی کن.
|
||
|
||
برای providerهای شناختهشده:
|
||
|
||
```text
|
||
Ollama
|
||
LM Studio
|
||
vLLM
|
||
OpenAI
|
||
```
|
||
|
||
قوانین مشخص داشته باش.
|
||
|
||
Local providerها باید بتوانند localhost را استفاده کنند.
|
||
|
||
Custom Providerها باید تحت policy / allowlist باشند.
|
||
|
||
بررسی کن:
|
||
|
||
* hostname
|
||
* protocol
|
||
* resolved IP
|
||
* redirects
|
||
* ports
|
||
* localhost rules
|
||
* private network rules
|
||
|
||
DNS rebinding و redirect bypass را نیز در نظر بگیر.
|
||
|
||
---
|
||
|
||
## 4. Secrets
|
||
|
||
بررسی کن:
|
||
|
||
```text
|
||
.env
|
||
API Keys
|
||
tokens
|
||
credentials
|
||
```
|
||
|
||
هیچ secret داخل repository قرار نگیرد.
|
||
|
||
`.gitignore` را بررسی کن.
|
||
|
||
---
|
||
|
||
## Acceptance Criteria — Phase 1
|
||
|
||
* duplicated `v1` وجود ندارد.
|
||
* anonymous AI generation امکانپذیر نیست.
|
||
* AI endpoint rate limited است.
|
||
* organization isolation رعایت شده.
|
||
* SSRF mitigation وجود دارد.
|
||
* تست security route نوشته شده.
|
||
* تست authentication نوشته شده.
|
||
* تست authorization نوشته شده.
|
||
* backend tests سبز هستند.
|
||
* frontend regression ایجاد نشده.
|
||
|
||
پس از پایان Phase 1 متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 2 — AI Architecture Consolidation
|
||
|
||
## هدف
|
||
|
||
در حال حاضر AI نباید چند معماری موازی و ناسازگار داشته باشد.
|
||
|
||
تمام مسیرهای AI را پیدا کن.
|
||
|
||
بهطور خاص بررسی کن:
|
||
|
||
```text
|
||
AIController
|
||
App\Services\AI\OllamaService
|
||
AiProviderResolver
|
||
AiProviderConnection
|
||
OpenAiCompatibleProvider
|
||
```
|
||
|
||
و فایلهای مشابه.
|
||
|
||
---
|
||
|
||
## معماری مقصد
|
||
|
||
تمام درخواستهای AI باید تا جای ممکن از یک abstraction واحد عبور کنند:
|
||
|
||
```text
|
||
Frontend
|
||
↓
|
||
AI API
|
||
↓
|
||
AI Application Service
|
||
↓
|
||
AiProviderResolver
|
||
↓
|
||
Provider Adapter
|
||
↓
|
||
Provider
|
||
```
|
||
|
||
Providerها:
|
||
|
||
```text
|
||
OllamaProvider
|
||
OpenAIProvider
|
||
OpenAICompatibleProvider
|
||
LMStudioProvider
|
||
VllmProvider
|
||
```
|
||
|
||
در صورت امکان adapterها را reuse کن.
|
||
|
||
---
|
||
|
||
## Legacy Architecture
|
||
|
||
بررسی کن آیا:
|
||
|
||
```text
|
||
AIController
|
||
App\Services\AI\OllamaService
|
||
```
|
||
|
||
هنوز نیاز هستند یا خیر.
|
||
|
||
اگر functionality آنها توسط معماری جدید پوشش داده شده:
|
||
|
||
* dependencyها را migrate کن.
|
||
* tests را migrate کن.
|
||
* routeها را migrate کن.
|
||
* سپس legacy code را حذف کن.
|
||
|
||
هیچ dead code باقی نگذار.
|
||
|
||
---
|
||
|
||
## AI Config
|
||
|
||
این فایلها را بررسی کن:
|
||
|
||
```text
|
||
.env.example
|
||
config/ai.php
|
||
```
|
||
|
||
هر config که application استفاده میکند باید واقعاً در config تعریف شده باشد.
|
||
|
||
بهخصوص:
|
||
|
||
```text
|
||
AI_OPENAI_BASE_URL
|
||
AI_OPENAI_API_KEY
|
||
AI_OPENAI_MODEL_FAST
|
||
AI_OPENAI_MODEL_BALANCED
|
||
AI_OPENAI_MODEL_ADVANCED
|
||
AI_OPENAI_TIMEOUT
|
||
```
|
||
|
||
اگر دیگر لازم نیستند حذف شوند.
|
||
|
||
اگر لازم هستند config صحیح ایجاد شود.
|
||
|
||
---
|
||
|
||
# AI Connection Bug Fixes
|
||
|
||
## enabled bug
|
||
|
||
هنگام Create Connection بررسی کن که مقدار user:
|
||
|
||
```text
|
||
enabled=false
|
||
```
|
||
|
||
با hard-coded:
|
||
|
||
```text
|
||
enabled=true
|
||
```
|
||
|
||
overwrite نشود.
|
||
|
||
---
|
||
|
||
## Default Connection invariant
|
||
|
||
Backend باید invariant مشخص داشته باشد:
|
||
|
||
```text
|
||
Per Organization:
|
||
Maximum one default enabled AI connection
|
||
```
|
||
|
||
Create / Update / Delete / Make Default باید transaction-safe باشند.
|
||
|
||
حالتهای زیر را تست کن:
|
||
|
||
### Scenario A
|
||
|
||
Default connection حذف میشود.
|
||
|
||
Expected:
|
||
|
||
یک **enabled** connection دیگر default شود.
|
||
|
||
### Scenario B
|
||
|
||
Default connection disable میشود.
|
||
|
||
Expected:
|
||
|
||
default به enabled connection دیگری منتقل شود یا default خالی شود.
|
||
|
||
### Scenario C
|
||
|
||
connection جدید default میشود.
|
||
|
||
Expected:
|
||
|
||
default قبلی atomically برداشته شود.
|
||
|
||
### Scenario D
|
||
|
||
همه connectionها disabled هستند.
|
||
|
||
Expected:
|
||
|
||
هیچ default active connection وجود نداشته باشد.
|
||
|
||
---
|
||
|
||
# AI Provider Tests
|
||
|
||
برای موارد زیر Test بنویس:
|
||
|
||
* Ollama reachable
|
||
* Ollama unavailable
|
||
* invalid model
|
||
* invalid URL
|
||
* timeout
|
||
* OpenAI compatible provider
|
||
* disabled provider
|
||
* default provider
|
||
* fallback provider
|
||
* invalid credential
|
||
* provider deletion
|
||
|
||
---
|
||
|
||
## Acceptance Criteria — Phase 2
|
||
|
||
* یک architecture اصلی AI وجود دارد.
|
||
* duplicate AI logic حذف شده.
|
||
* dead service حذف شده.
|
||
* configها consistent هستند.
|
||
* AI connections درست کار میکنند.
|
||
* enabled/default logic تست دارد.
|
||
* provider resolver deterministic است.
|
||
* تمام tests سبز هستند.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 3 — Frontend Reliability & Application State
|
||
|
||
## هدف
|
||
|
||
رفع باگهای state، routing و API handling.
|
||
|
||
---
|
||
|
||
# 1. Authentication State
|
||
|
||
فایلهایی مثل:
|
||
|
||
```text
|
||
shared/api/client.ts
|
||
AuthProvider
|
||
AuthContext
|
||
```
|
||
|
||
را بررسی کن.
|
||
|
||
مشکل:
|
||
|
||
روی HTTP 401 فقط token پاک نشود.
|
||
|
||
Authentication state نیز باید synchronize شود.
|
||
|
||
Architecture مناسب طراحی کن.
|
||
|
||
مثلاً:
|
||
|
||
```text
|
||
API receives 401
|
||
↓
|
||
central unauthorized handler
|
||
↓
|
||
clear token
|
||
↓
|
||
clear user
|
||
↓
|
||
clear protected cache
|
||
↓
|
||
set guest state
|
||
↓
|
||
navigate to login
|
||
```
|
||
|
||
از circular dependency جلوگیری کن.
|
||
|
||
---
|
||
|
||
# 2. React Query Cache
|
||
|
||
بعد از Logout یا Organization change:
|
||
|
||
cache حساس باید invalidate یا clear شود.
|
||
|
||
مطمئن شو اطلاعات organization قبلی برای organization جدید نمایش داده نمیشود.
|
||
|
||
---
|
||
|
||
# 3. Routing
|
||
|
||
AppRouter را بررسی و در صورت نیاز nested route architecture ایجاد کن.
|
||
|
||
مقصد:
|
||
|
||
```text
|
||
/app
|
||
/dashboard
|
||
/courses
|
||
/courses/:id
|
||
/library
|
||
/monitoring/*
|
||
/ai-studio
|
||
/settings
|
||
/*
|
||
```
|
||
|
||
صفحات مستقل داشته باش:
|
||
|
||
```text
|
||
404 Not Found
|
||
403 Permission Denied
|
||
Session Expired
|
||
```
|
||
|
||
Unknown route نباید صفحه unrelated نشان دهد.
|
||
|
||
---
|
||
|
||
# 4. Error Handling
|
||
|
||
برای API stateها componentهای استاندارد تعریف کن:
|
||
|
||
```text
|
||
Loading
|
||
Empty
|
||
Error
|
||
Permission denied
|
||
Offline
|
||
Retry
|
||
```
|
||
|
||
هر صفحه نباید implementation متفاوت داشته باشد.
|
||
|
||
---
|
||
|
||
# 5. Network Resilience
|
||
|
||
بررسی کن:
|
||
|
||
* timeout
|
||
* cancellation
|
||
* retry
|
||
* duplicated request
|
||
* stale data
|
||
* race condition
|
||
|
||
روی mutationهای حساس retry کورکورانه انجام نشود.
|
||
|
||
---
|
||
|
||
## Acceptance Criteria Phase 3
|
||
|
||
* Session expiry صحیح است.
|
||
* logout کامل است.
|
||
* cache leakage وجود ندارد.
|
||
* 404 صحیح است.
|
||
* 403 صحیح است.
|
||
* routes deterministic هستند.
|
||
* error handling استاندارد شده.
|
||
* lint/typecheck/test/build موفقاند.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 4 — Builder Architecture & Performance Refactor
|
||
|
||
## هدف
|
||
|
||
Builder بدون تغییر UX فعلی از نظر architecture پایدار شود.
|
||
|
||
---
|
||
|
||
# CourseBuilderPage
|
||
|
||
فایل بزرگ:
|
||
|
||
```text
|
||
CourseBuilderPage.tsx
|
||
```
|
||
|
||
را بررسی کن.
|
||
|
||
اگر همچنان بسیار بزرگ است آن را component-based کن.
|
||
|
||
Architecture پیشنهادی:
|
||
|
||
```text
|
||
builder/
|
||
components/
|
||
shell/
|
||
canvas/
|
||
toolbar/
|
||
block-library/
|
||
inspector/
|
||
structure/
|
||
review/
|
||
collaboration/
|
||
|
||
hooks/
|
||
state/
|
||
commands/
|
||
services/
|
||
utils/
|
||
types/
|
||
```
|
||
|
||
---
|
||
|
||
# State Separation
|
||
|
||
Business logic از JSX جدا شود.
|
||
|
||
مواردی مانند:
|
||
|
||
```text
|
||
selection
|
||
drag/drop
|
||
block mutations
|
||
autosave
|
||
publish
|
||
collaboration
|
||
keyboard shortcuts
|
||
```
|
||
|
||
نباید همگی داخل یک page component باشند.
|
||
|
||
---
|
||
|
||
# Rich Text
|
||
|
||
Text block فعلی را بررسی کن.
|
||
|
||
اگر HTML ذخیره میشود ولی render آن با regex strip میشود، این behavior را اصلاح کن.
|
||
|
||
Rich Text واقعی باید حداقل پشتیبانی کند:
|
||
|
||
* Paragraph
|
||
* Heading
|
||
* Bold
|
||
* Italic
|
||
* Lists
|
||
* Link
|
||
|
||
از ذخیره unsafe HTML جلوگیری کن.
|
||
|
||
Sanitization مناسب داشته باش.
|
||
|
||
در صورت نیاز از editor استاندارد مانند TipTap/ProseMirror استفاده کن، ولی dependency جدید فقط در صورت توجیه اضافه شود.
|
||
|
||
---
|
||
|
||
# Asset Resolution
|
||
|
||
بررسی کن برای دریافت یک Asset کل library دریافت نشود.
|
||
|
||
API مناسب:
|
||
|
||
```text
|
||
GET /assets/:id
|
||
```
|
||
|
||
یا hydration مناسب.
|
||
|
||
React Query cache keyهای asset را اصلاح کن.
|
||
|
||
---
|
||
|
||
# Collaboration Polling
|
||
|
||
این موارد را بررسی کن:
|
||
|
||
```text
|
||
Presence
|
||
Collaboration
|
||
Notifications
|
||
Locks
|
||
AI Jobs
|
||
```
|
||
|
||
Polling frequency را audit کن.
|
||
|
||
در صورت مناسب بودن:
|
||
|
||
* Page Visibility API
|
||
* adaptive polling
|
||
* pause in background
|
||
* exponential backoff
|
||
|
||
استفاده کن.
|
||
|
||
برای realtime architecture آینده abstraction ایجاد کن تا بعداً WebSocket/SSE قابل اضافه شدن باشد.
|
||
|
||
اما در این فاز بدون ضرورت infrastructure بزرگ جدید اضافه نکن.
|
||
|
||
---
|
||
|
||
# Memory & Rendering
|
||
|
||
بررسی کن:
|
||
|
||
* unnecessary renders
|
||
* unstable callbacks
|
||
* large context providers
|
||
* large list rendering
|
||
* expensive calculations
|
||
|
||
برای listهای بزرگ virtualization را فقط در صورت نیاز واقعی اضافه کن.
|
||
|
||
---
|
||
|
||
## Acceptance Criteria Phase 4
|
||
|
||
* Builder functionality تغییر نکرده.
|
||
* فایلهای monolithic شکسته شدهاند.
|
||
* business logic جدا شده.
|
||
* duplicate logic کاهش یافته.
|
||
* rich text صحیح است.
|
||
* asset loading بهینه شده.
|
||
* polling کنترل شده.
|
||
* tests برای core builder behavior وجود دارد.
|
||
* lint/typecheck/test/build سبزند.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 5 — Navigation, Dashboard & Information Architecture UX
|
||
|
||
این اولین فاز major UI/UX enhancement است.
|
||
|
||
در این مرحله functionality جدید سنگین اضافه نکن.
|
||
|
||
تمرکز روی usability باشد.
|
||
|
||
---
|
||
|
||
# Sidebar
|
||
|
||
Navigation فعلی را audit کن.
|
||
|
||
پیشنهاد grouping:
|
||
|
||
## Create
|
||
|
||
* Dashboard
|
||
* Courses
|
||
* Learning Paths
|
||
* Library
|
||
* Templates
|
||
* Question Bank
|
||
* AI Studio
|
||
|
||
## People
|
||
|
||
* Users
|
||
* Teams
|
||
* Assignments
|
||
|
||
## Insights
|
||
|
||
* Monitoring
|
||
* Skills
|
||
* Reports
|
||
|
||
## Manage
|
||
|
||
* Reviews
|
||
* Certificates
|
||
* Subscription
|
||
* Settings
|
||
|
||
اما grouping نهایی را بر اساس نقشها و featureهای واقعی پروژه تعیین کن.
|
||
|
||
---
|
||
|
||
# Role-aware Navigation
|
||
|
||
Navigation باید بر اساس Role / Permission نمایش داده شود.
|
||
|
||
مثلاً Learner نباید ابزار Course Designer را ببیند.
|
||
|
||
---
|
||
|
||
# Dashboard Redesign
|
||
|
||
Dashboard باید action-oriented باشد.
|
||
|
||
بخشهای پیشنهادی:
|
||
|
||
```text
|
||
Needs Attention
|
||
Continue Working
|
||
Recent Courses
|
||
Pending Reviews
|
||
Publishing Issues
|
||
Learner Risk
|
||
AI Jobs
|
||
Recent Activity
|
||
Quick Actions
|
||
```
|
||
|
||
KPIها را compactتر کن.
|
||
|
||
از empty whitespace غیرضروری جلوگیری کن.
|
||
|
||
---
|
||
|
||
# Global Header
|
||
|
||
Header باید شامل موارد مورد نیاز باشد:
|
||
|
||
* context
|
||
* search
|
||
* notifications
|
||
* user menu
|
||
|
||
اما clutter ایجاد نکند.
|
||
|
||
---
|
||
|
||
# Empty States
|
||
|
||
برای صفحات بدون داده Empty State حرفهای ایجاد کن.
|
||
|
||
مثلاً Courses:
|
||
|
||
```text
|
||
هنوز دورهای ایجاد نشده
|
||
اولین دوره خود را بسازید.
|
||
|
||
[ایجاد دوره]
|
||
```
|
||
|
||
---
|
||
|
||
# UX Consistency
|
||
|
||
بررسی کن:
|
||
|
||
* button hierarchy
|
||
* destructive actions
|
||
* primary CTA
|
||
* page titles
|
||
* breadcrumbs
|
||
* tables
|
||
* filters
|
||
* dialogs
|
||
* drawers
|
||
* toasts
|
||
|
||
Componentهای مشترک باید visual behavior یکسان داشته باشند.
|
||
|
||
---
|
||
|
||
## Acceptance Criteria Phase 5
|
||
|
||
* Navigation سادهتر شده.
|
||
* Sidebar role-aware است.
|
||
* Dashboard action-oriented است.
|
||
* visual hierarchy بهبود یافته.
|
||
* UX consistency افزایش یافته.
|
||
* Feature حذف نشده.
|
||
* responsive regression وجود ندارد.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 6 — Builder & AI Studio UX Enhancement
|
||
|
||
این مهمترین UX Phase پروژه است.
|
||
|
||
---
|
||
|
||
# Builder Layout
|
||
|
||
Layout چهارپنله فعلی را audit کن.
|
||
|
||
هدف این است که Canvas فضای اصلی باشد.
|
||
|
||
پیشنهاد:
|
||
|
||
```text
|
||
Block Library
|
||
+
|
||
Canvas
|
||
+
|
||
Right Panel
|
||
```
|
||
|
||
Right Panel میتواند tab داشته باشد:
|
||
|
||
```text
|
||
Properties
|
||
Structure
|
||
Review
|
||
```
|
||
|
||
Block Library قابل collapse باشد.
|
||
|
||
---
|
||
|
||
# Slash Command
|
||
|
||
در Canvas امکان:
|
||
|
||
```text
|
||
/
|
||
```
|
||
|
||
برای افزودن سریع block بررسی و در صورت مناسب بودن اضافه شود.
|
||
|
||
مثلاً:
|
||
|
||
```text
|
||
/text
|
||
/heading
|
||
/image
|
||
/video
|
||
/quiz
|
||
/flashcard
|
||
/divider
|
||
/ai
|
||
```
|
||
|
||
Keyboard-first UX ایجاد کن.
|
||
|
||
---
|
||
|
||
# Autosave Feedback
|
||
|
||
کاربر همیشه باید وضعیت سند را بداند:
|
||
|
||
```text
|
||
Saved
|
||
Saving...
|
||
Unsaved
|
||
Offline
|
||
Conflict
|
||
Save failed
|
||
```
|
||
|
||
این indicator در toolbar قرار گیرد.
|
||
|
||
---
|
||
|
||
# Publish Readiness
|
||
|
||
قبل از Publish Validation انجام شود.
|
||
|
||
مثلاً:
|
||
|
||
```text
|
||
3 issues before publishing
|
||
```
|
||
|
||
مواردی مانند:
|
||
|
||
* Empty lesson
|
||
* Missing title
|
||
* Broken asset
|
||
* Invalid quiz
|
||
* Missing answer
|
||
* Missing required settings
|
||
|
||
نمایش داده شوند.
|
||
|
||
---
|
||
|
||
# Builder Keyboard Shortcuts
|
||
|
||
در صورت سازگاری:
|
||
|
||
```text
|
||
Ctrl/Cmd + S
|
||
Ctrl/Cmd + Z
|
||
Ctrl/Cmd + Shift + Z
|
||
Delete
|
||
Escape
|
||
Ctrl/Cmd + D
|
||
```
|
||
|
||
Shortcuts باید در input/editor مزاحم تایپ نباشند.
|
||
|
||
---
|
||
|
||
# AI Studio Redesign
|
||
|
||
AI Studio را به workflow واضح تبدیل کن.
|
||
|
||
پیشنهاد:
|
||
|
||
```text
|
||
1 Source
|
||
2 Learning Design
|
||
3 Generate
|
||
4 Review
|
||
```
|
||
|
||
---
|
||
|
||
# Upload UI
|
||
|
||
از native file input خام استفاده نکن.
|
||
|
||
Component حرفهای:
|
||
|
||
```text
|
||
Drag & Drop
|
||
Browse
|
||
|
||
Supported:
|
||
PDF
|
||
DOCX
|
||
PPTX
|
||
|
||
Selected file:
|
||
filename
|
||
size
|
||
progress
|
||
remove
|
||
```
|
||
|
||
---
|
||
|
||
# AI Configuration
|
||
|
||
کاربر باید قبل از Generate موارد مهم را واضح ببیند:
|
||
|
||
```text
|
||
Provider
|
||
Model
|
||
Language
|
||
Audience
|
||
Difficulty
|
||
Duration
|
||
Learning objective
|
||
Tone
|
||
Output type
|
||
```
|
||
|
||
تنظیمات advanced را collapse کن.
|
||
|
||
---
|
||
|
||
# AI Generation Progress
|
||
|
||
به جای spinner ساده:
|
||
|
||
```text
|
||
Uploading source
|
||
Extracting content
|
||
Analyzing
|
||
Designing learning structure
|
||
Generating blocks
|
||
Validating
|
||
Preparing draft
|
||
```
|
||
|
||
نشان داده شود.
|
||
|
||
---
|
||
|
||
# AI Review
|
||
|
||
AI output نباید blind accept شود.
|
||
|
||
در صورت سازگاری architecture، review block-level ایجاد کن:
|
||
|
||
```text
|
||
AI Suggestion
|
||
|
||
Accept
|
||
Edit
|
||
Reject
|
||
```
|
||
|
||
و در نهایت:
|
||
|
||
```text
|
||
Accept all reviewed changes
|
||
```
|
||
|
||
---
|
||
|
||
## Acceptance Criteria Phase 6
|
||
|
||
* Builder سریعتر و سادهتر شده.
|
||
* Canvas فضای بیشتری دارد.
|
||
* Properties/Structure واضحترند.
|
||
* Save state مشخص است.
|
||
* Publish validation وجود دارد.
|
||
* AI Studio workflow واضح دارد.
|
||
* File Upload UI حرفهای است.
|
||
* AI review قابل کنترل است.
|
||
* mobile/desktop regression وجود ندارد.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 7 — Responsive, PWA, i18n & Accessibility
|
||
|
||
## Mobile
|
||
|
||
تمام صفحات اصلی را در حداقل viewportهای زیر بررسی کن:
|
||
|
||
```text
|
||
375px
|
||
430px
|
||
768px
|
||
1024px
|
||
1440px
|
||
```
|
||
|
||
---
|
||
|
||
# Mobile Builder
|
||
|
||
Builder نباید صرفاً در mobile مخفی شود.
|
||
|
||
نسخه **Quick Edit** ایجاد کن.
|
||
|
||
Workflow پیشنهادی:
|
||
|
||
```text
|
||
Course
|
||
↓
|
||
Lesson
|
||
↓
|
||
Blocks
|
||
↓
|
||
Tap block
|
||
↓
|
||
Full screen editor
|
||
```
|
||
|
||
Mobile باید حداقل اجازه دهد:
|
||
|
||
* edit text
|
||
* reorder block
|
||
* add common block
|
||
* delete block
|
||
* image selection
|
||
* quiz edit
|
||
* preview
|
||
* save
|
||
|
||
Advanced desktop features میتوانند desktop-only بمانند.
|
||
|
||
---
|
||
|
||
# Learner Experience
|
||
|
||
Learner UI را جداگانه audit کن.
|
||
|
||
Focus:
|
||
|
||
* bottom navigation
|
||
* course progress
|
||
* touch targets
|
||
* reading comfort
|
||
* assessments
|
||
* resume learning
|
||
* offline/PWA state
|
||
|
||
---
|
||
|
||
# i18n
|
||
|
||
Hard-coded Persian/English stringها را audit کن.
|
||
|
||
تمام UI stringها باید از translation catalog بیایند.
|
||
|
||
مثلاً:
|
||
|
||
```text
|
||
t('builder.publish')
|
||
t('builder.saved')
|
||
t('ai.generate')
|
||
```
|
||
|
||
FA:
|
||
|
||
```text
|
||
dir=rtl
|
||
```
|
||
|
||
EN:
|
||
|
||
```text
|
||
dir=ltr
|
||
```
|
||
|
||
Mixed UI حذف شود مگر نام فنی باشد.
|
||
|
||
---
|
||
|
||
# Accessibility
|
||
|
||
Audit:
|
||
|
||
* semantic HTML
|
||
* heading hierarchy
|
||
* labels
|
||
* ARIA
|
||
* focus state
|
||
* focus trap
|
||
* modal/dialog semantics
|
||
* drawer semantics
|
||
* keyboard navigation
|
||
* contrast
|
||
* images alt
|
||
* tabs
|
||
* skip link
|
||
* reduced motion
|
||
|
||
Tabها باید keyboard accessible باشند.
|
||
|
||
Dialog باید focus trap داشته باشد.
|
||
|
||
Escape باید modal را ببندد.
|
||
|
||
Focus بعد از close به trigger برگردد.
|
||
|
||
---
|
||
|
||
# PWA
|
||
|
||
بررسی کن:
|
||
|
||
* manifest
|
||
* icons
|
||
* install
|
||
* offline fallback
|
||
* update handling
|
||
* cache policy
|
||
|
||
API response حساس را بیدلیل cache نکن.
|
||
|
||
---
|
||
|
||
## Acceptance Criteria Phase 7
|
||
|
||
* responsive QA کامل است.
|
||
* Builder mobile quick-edit دارد.
|
||
* FA/EN کاملتر شده.
|
||
* RTL/LTR صحیح است.
|
||
* accessibility issues اصلی رفع شده.
|
||
* PWA behavior پایدار است.
|
||
* Lighthouse regression جدی وجود ندارد.
|
||
|
||
سپس متوقف شو.
|
||
|
||
---
|
||
|
||
# PHASE 8 — Final QA, Production Hardening & Release Gate
|
||
|
||
این فاز هیچ major feature جدیدی ندارد.
|
||
|
||
فقط stabilization.
|
||
|
||
---
|
||
|
||
# Full Backend QA
|
||
|
||
اجرا کن:
|
||
|
||
```bash
|
||
php artisan optimize:clear
|
||
php artisan route:list
|
||
php artisan test
|
||
```
|
||
|
||
در صورت وجود:
|
||
|
||
```bash
|
||
./vendor/bin/pint --test
|
||
```
|
||
|
||
بررسی کن:
|
||
|
||
* route duplicates
|
||
* migration status
|
||
* queue jobs
|
||
* scheduler
|
||
* permissions
|
||
* policies
|
||
* organization isolation
|
||
|
||
---
|
||
|
||
# Full Frontend QA
|
||
|
||
از clean install:
|
||
|
||
```bash
|
||
rm -rf node_modules
|
||
npm ci
|
||
npm run lint
|
||
npm run typecheck
|
||
npm test
|
||
npm run build
|
||
```
|
||
|
||
---
|
||
|
||
# Manual Smoke Tests
|
||
|
||
حداقل موارد زیر را دستی بررسی کن.
|
||
|
||
## Authentication
|
||
|
||
* Login
|
||
* Logout
|
||
* Expired Session
|
||
* Unauthorized URL
|
||
* Permission Denied
|
||
|
||
## Users
|
||
|
||
* Create
|
||
* Edit
|
||
* Search
|
||
* Team assignment
|
||
|
||
## Courses
|
||
|
||
* Create
|
||
* Edit
|
||
* Builder
|
||
* Add Blocks
|
||
* Reorder
|
||
* Save
|
||
* Preview
|
||
* Publish
|
||
|
||
## AI
|
||
|
||
* Ollama connection
|
||
* Connection test
|
||
* Generate
|
||
* Failure handling
|
||
* Timeout
|
||
* Invalid model
|
||
* AI Studio workflow
|
||
|
||
## Learner
|
||
|
||
* Open course
|
||
* Continue
|
||
* Complete lesson
|
||
* Quiz
|
||
* Progress
|
||
|
||
## Monitoring
|
||
|
||
* Dashboard
|
||
* Filters
|
||
* learner progress
|
||
|
||
## Theme
|
||
|
||
* Light
|
||
* Dark
|
||
|
||
## Languages
|
||
|
||
* Persian
|
||
* English
|
||
|
||
## Responsive
|
||
|
||
* Mobile
|
||
* Tablet
|
||
* Desktop
|
||
|
||
---
|
||
|
||
# Security Audit
|
||
|
||
حداقل بررسی کن:
|
||
|
||
* XSS
|
||
* CSRF
|
||
* SSRF
|
||
* IDOR
|
||
* authorization
|
||
* organization isolation
|
||
* unsafe uploads
|
||
* mass assignment
|
||
* exposed secrets
|
||
* rate limit
|
||
* file access
|
||
* AI endpoint abuse
|
||
|
||
---
|
||
|
||
# Database
|
||
|
||
بررسی کن:
|
||
|
||
* indexes
|
||
* foreign keys
|
||
* unique constraints
|
||
* N+1 queries
|
||
* transaction boundaries
|
||
|
||
خصوصاً جداول پرترافیک.
|
||
|
||
---
|
||
|
||
# Performance
|
||
|
||
بررسی کن:
|
||
|
||
* frontend bundle size
|
||
* lazy loading
|
||
* unnecessary requests
|
||
* duplicate requests
|
||
* query count
|
||
* image loading
|
||
* large lists
|
||
|
||
قبل و بعد را در صورت امکان مقایسه کن.
|
||
|
||
---
|
||
|
||
# GitHub Actions Final Quality Gate
|
||
|
||
Pipeline نهایی باید حداقل چنین منطق داشته باشد:
|
||
|
||
```text
|
||
Backend install
|
||
Backend static checks
|
||
Backend tests
|
||
|
||
Frontend install
|
||
Frontend lint
|
||
Frontend typecheck
|
||
Frontend tests
|
||
Frontend build
|
||
|
||
↓
|
||
SUCCESS
|
||
```
|
||
|
||
اگر هر مرحله Fail شد Release نباید موفق تلقی شود.
|
||
|
||
---
|
||
|
||
# Release Hygiene
|
||
|
||
Archive یا deployment package نباید شامل موارد غیرضروری باشد:
|
||
|
||
```text
|
||
.git
|
||
.env
|
||
node_modules
|
||
temporary logs
|
||
IDE files
|
||
runtime cache
|
||
test artifacts
|
||
```
|
||
|
||
Dependencyها باید lock شده باشند.
|
||
|
||
در PHP dependencyهای wildcard مانند:
|
||
|
||
```text
|
||
"*"
|
||
```
|
||
|
||
را بررسی و در صورت منطقی بودن version constraint مناسب تعریف کن.
|
||
|
||
`minimum-stability` را نیز بررسی کن.
|
||
|
||
---
|
||
|
||
# Final Report
|
||
|
||
در انتهای Phase 8 یک گزارش نهایی بده.
|
||
|
||
فرمت:
|
||
|
||
## 1. Bugs Fixed
|
||
|
||
جدول:
|
||
|
||
| Issue | Severity | Status |
|
||
|
||
## 2. Security Improvements
|
||
|
||
## 3. Architecture Improvements
|
||
|
||
## 4. Performance Improvements
|
||
|
||
## 5. UI/UX Improvements
|
||
|
||
## 6. Accessibility Improvements
|
||
|
||
## 7. Responsive Improvements
|
||
|
||
## 8. AI Improvements
|
||
|
||
## 9. Test Results
|
||
|
||
Backend:
|
||
|
||
```text
|
||
Tests:
|
||
Assertions:
|
||
Failures:
|
||
```
|
||
|
||
Frontend:
|
||
|
||
```text
|
||
Test Files:
|
||
Tests:
|
||
Lint:
|
||
Typecheck:
|
||
Build:
|
||
```
|
||
|
||
## 10. Remaining Technical Debt
|
||
|
||
فقط موارد واقعی باقیمانده را بنویس.
|
||
|
||
Severity بده:
|
||
|
||
```text
|
||
P0
|
||
P1
|
||
P2
|
||
P3
|
||
```
|
||
|
||
## 11. Production Readiness Score
|
||
|
||
از 100 امتیاز بده:
|
||
|
||
```text
|
||
Architecture
|
||
Security
|
||
Reliability
|
||
Performance
|
||
Testing
|
||
UI/UX
|
||
Accessibility
|
||
Maintainability
|
||
```
|
||
|
||
و در نهایت یکی از این وضعیتها را اعلام کن:
|
||
|
||
```text
|
||
NOT READY
|
||
STAGING READY
|
||
PRODUCTION READY WITH CONDITIONS
|
||
PRODUCTION READY
|
||
```
|
||
|
||
---
|
||
|
||
# قوانین Git
|
||
|
||
در هر Phase:
|
||
|
||
قبل از تغییر:
|
||
|
||
```bash
|
||
git status
|
||
```
|
||
|
||
بعد از تغییر:
|
||
|
||
```bash
|
||
git diff
|
||
```
|
||
|
||
فایلهای unrelated را تغییر نده.
|
||
|
||
در پایان هر Phase فایلهای تغییرکرده را اعلام کن.
|
||
|
||
اگر Git repository دارای تغییرات قبلی user است، آنها را overwrite یا revert نکن.
|
||
|
||
---
|
||
|
||
# قانون تست
|
||
|
||
هیچ Phase را فقط به دلیل اینکه کد compile شد موفق اعلام نکن.
|
||
|
||
هر Bug Fix مهم باید تا حد امکان Regression Test داشته باشد.
|
||
|
||
اولویت:
|
||
|
||
```text
|
||
Bug reproduction
|
||
↓
|
||
Test
|
||
↓
|
||
Fix
|
||
↓
|
||
Test passes
|
||
```
|
||
|
||
---
|
||
|
||
# قانون Refactor
|
||
|
||
Refactor و Feature Change را مخلوط نکن.
|
||
|
||
اگر قرار است رفتار تغییر کند، دقیقاً اعلام کن.
|
||
|
||
اگر فقط Refactor است، رفتار observable باید ثابت بماند.
|
||
|
||
---
|
||
|
||
# قانون UI
|
||
|
||
در UI/UX Enhancement:
|
||
|
||
* از redesign بیهدف خودداری کن.
|
||
* Design System موجود را حفظ و تقویت کن.
|
||
* visual consistency مهمتر از decoration است.
|
||
* از gradient، glass، animation و shadow بیدلیل استفاده نکن.
|
||
* Density برای نرمافزار سازمانی متعادل باشد.
|
||
* Primary Action در هر صفحه واضح باشد.
|
||
* Information hierarchy حفظ شود.
|
||
* RTL first-class citizen باشد.
|
||
|
||
---
|
||
|
||
# قانون Performance
|
||
|
||
قبل از optimization حدس نزن.
|
||
|
||
ابتدا bottleneck را شناسایی کن.
|
||
|
||
سپس fix کن.
|
||
|
||
سپس نتیجه را دوباره اندازه بگیر.
|
||
|
||
---
|
||
|
||
# قانون نهایی اجرای مراحل
|
||
|
||
ترتیب دقیق:
|
||
|
||
```text
|
||
PHASE 0
|
||
Baseline & Audit
|
||
↓
|
||
PHASE 1
|
||
Critical Bugs & Security
|
||
↓
|
||
PHASE 2
|
||
AI Architecture
|
||
↓
|
||
PHASE 3
|
||
Frontend Reliability
|
||
↓
|
||
PHASE 4
|
||
Builder Architecture & Performance
|
||
↓
|
||
PHASE 5
|
||
Navigation & Dashboard UX
|
||
↓
|
||
PHASE 6
|
||
Builder & AI Studio UX
|
||
↓
|
||
PHASE 7
|
||
Responsive + i18n + Accessibility + PWA
|
||
↓
|
||
PHASE 8
|
||
Final QA & Production Release Gate
|
||
```
|
||
|
||
**هیچ Phase را بدون اجازه من رد نکن.**
|
||
|
||
بعد از پایان هر Phase فقط گزارش بده و منتظر دستور من برای Phase بعد بمان.
|