101 خطوط
6.4 KiB
Markdown
101 خطوط
6.4 KiB
Markdown
# راهنمای فاز P2 — CRM حرفهای
|
||
|
||
این فاز قابلیتهای حرفهای فروش را روی پایه امن P0/P1 اضافه میکند. داشبوردهای نقشمحور حذف یا جایگزین نشدهاند و مسیر `/` همچنان پس از ورود، داشبورد مجاز کاربر را نمایش میدهد.
|
||
|
||
## قابلیتهای تحویلشده
|
||
|
||
- داشبورد: حفظ داشبوردهای Admin/Supervisor/Agent، refresh دستی و دورهای، loading و error/retry واقعی، و ترجیحات شخصی ویجتها.
|
||
- فرصت فروش: چند پایپلاین و چند مرحله، برد کانبان، مجموع ارزش مرحله، ارزش وزنی، workspace جزئیات، تاریخچه مرحله، بستن موفق/ناموفق با دلیل و مبلغ نهایی، و optimistic locking با `version`.
|
||
- بهرهوری: جستوجوی سراسری scopeشده برای Lead/Deal/Company/Contact/Call، نماهای ذخیرهشده private/team/public، و ترجیحات اعلان و داشبورد.
|
||
- هوشمندی: امتیازدهی deterministic لید با breakdown و سطح cold/warm/hot، SLA برای اولین تماس، پیگیری و فرصت راکد، تشخیص idempotent و اعلان قابل mute.
|
||
- پیکربندی: اتوماسیون محدود و قابل audit برای ایجاد Task، اعلان و تغییر اولویت لید؛ triggerهای واقعی `lead_created`، `lead_scored`، `deal_stage_changed` و `sla_breached`؛ سقف اجرا و event key ضدتکرار.
|
||
- فیلد سفارشی: تعریف فیلد برای Lead/Deal/Company/Contact با نوعهای متنی، عددی، تاریخ، boolean و انتخابی؛ ذخیره typed و indexپذیر و کنترل visibility نقش.
|
||
- کیفیت و اسکریپت: strengths/improvement areas، acknowledgement کارشناس و پاسخ او، metadata اسکریپت شامل category/source/questions/disclosures/template و جستوجوی سروری.
|
||
- گزارش و اعلان: گزارش عملیات فروش شامل pipeline/forecast/won/SLA/task، فیلتر اعلان خواندهنشده و لینک ترجیحات.
|
||
|
||
## مسیرهای UI
|
||
|
||
- `/` داشبورد نقشمحور و صفحه پیشفرض
|
||
- `/deals` برد فرصتها
|
||
- `/deals/{id}` workspace فرصت و تاریخچه مرحله
|
||
- `/operations` مرکز SLA، اتوماسیون، فیلد سفارشی و ترجیحات
|
||
- `/reports` تب «عملیات فروش و SLA»
|
||
- `/sales-scripts` اسکریپتهای توسعهیافته
|
||
- `/quality-reviews` ارزیابی و acknowledgement
|
||
|
||
جستوجوی سراسری در Header با `Ctrl+K` در دسترس است.
|
||
|
||
## APIهای اصلی
|
||
|
||
| حوزه | Endpointهای اصلی |
|
||
|---|---|
|
||
| Pipeline | `GET /api/pipelines`, `POST /api/pipelines`, `GET /api/pipelines/{id}/board`, `PATCH /api/deals/{id}/stage` |
|
||
| Search/View | `GET /api/global-search`, `GET/POST/DELETE /api/saved-views` |
|
||
| Preferences | `GET/PUT /api/workspace-preferences` |
|
||
| Scoring/SLA | `POST /api/leads/{id}/score`, `POST /api/leads/bulk-score`, `GET/POST /api/sla-rules`, `POST /api/sla/detect`, `PATCH /api/sla-breaches/{id}/resolve` |
|
||
| Automation | `GET/POST /api/automations`, `POST /api/automations/{id}/run`, `GET /api/automation-runs` |
|
||
| Custom fields | `GET/POST /api/custom-fields`, `GET/PUT /api/custom-field-values/{type}/{id}` |
|
||
| QA | `POST /api/quality-reviews/{id}/acknowledge` |
|
||
| Reports | `GET /api/reports/operations` |
|
||
|
||
تمام endpointهای رکوردی مجوز و scope مالک/تیم را در backend اعمال میکنند. مخفیکردن کنترل در UI جایگزین authorization سرور نیست.
|
||
|
||
## مجوزهای جدید
|
||
|
||
`view_pipelines`, `manage_pipelines`, `move_deals`, `close_deals`, `manage_saved_views`, `share_team_views`, `use_global_search`, `score_leads`, `view_sla`, `manage_sla`, `manage_automations`, `view_automation_logs`, `manage_custom_fields`, `acknowledge_quality_reviews`, `manage_dashboard_preferences`, `manage_notification_preferences`.
|
||
|
||
بعد از deploy این فرمان را اجرا کنید تا permissionهای جدید ساخته و نقشهای پیشفرض همگام شوند:
|
||
|
||
```powershell
|
||
php artisan permissions:sync-defaults
|
||
```
|
||
|
||
## Scheduler و عملیات
|
||
|
||
پایش SLA هر ۱۵ دقیقه در scheduler ثبت شده و از `withoutOverlapping` و event key یکتا استفاده میکند. اجرای دستی و idempotent:
|
||
|
||
```powershell
|
||
php artisan sla:monitor
|
||
```
|
||
|
||
در production اجرای `php artisan schedule:run` در هر دقیقه الزامی است. اعلان SLA ترجیح `notification_type=sla` را رعایت میکند.
|
||
|
||
## مهاجرت و rollback
|
||
|
||
پنج migration این فاز با prefixهای `030000` تا `034000` بهترتیب pipeline، preferences، scoring/SLA، automation/custom fields و QA/scripts را ایجاد میکنند.
|
||
|
||
پیش از migration از دیتابیس backup بگیرید:
|
||
|
||
```powershell
|
||
php artisan migrate --force
|
||
php artisan permissions:sync-defaults
|
||
```
|
||
|
||
برای rollback کامل P2 در محیط کنترلشده، آخرین پنج migration را برگردانید:
|
||
|
||
```powershell
|
||
php artisan migrate:rollback --step=5 --force
|
||
```
|
||
|
||
Rollback جدولها و ستونهای P2 را حذف میکند؛ در production بازیابی دادههای pipeline/history/custom fields باید از backup انجام شود. ابتدا روی staging تمرین شود.
|
||
|
||
## کنترل کیفیت
|
||
|
||
```powershell
|
||
cd backend
|
||
php artisan test
|
||
vendor\bin\pint --test
|
||
|
||
cd ..\frontend
|
||
npm run lint
|
||
npm run test:run
|
||
npm run build
|
||
npm run test:e2e
|
||
```
|
||
|
||
تست `ProfessionalCrmP2Test` scope تیم، بستن فرصت و version conflict، audit، search/view/preferences، scoring/SLA، idempotency اتوماسیون، typed custom field و acknowledgement QA را پوشش میدهد. تست کامپوننت rollback کانبان و خطای جستوجو و Playwright مسیر جستوجو تا جابهجایی فرصت را پوشش میدهند.
|
||
|
||
## محدودیتهای عمدی
|
||
|
||
Automation یک DSL محدود است و PHP/SQL دلخواه اجرا نمیکند. actionهای مجاز فقط `create_task`، `notify` و `set_lead_priority` هستند. برای افزودن action جدید، validation، authorization، audit و تست idempotency همزمان توسعه داده شوند.
|