TorbatYar/docs/crm-phase-6-0.md
Mortezakoohjani 064d67f099 Ship CRM Core Platform (phases 6.0–6.3) with docs and prod deploy.
Add the Sales CRM service through collaboration, sync architecture/registry docs, expose crm.torbatyar.ir, and include a production deploy script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 20:32:00 +03:30

163 lines
4.1 KiB
Markdown
Raw Permalink 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 6.0 — CRM Service Foundation
| Field | Value |
| --- | --- |
| Status | Complete |
| Module | crm |
| Version | 0.6.0.0 |
| Database | `crm_db` |
| API Port | 8003 |
| ADR | ADR-001, ADR-003, ADR-006 |
## Goal
Establish the Sales CRM service foundation and architectural boundaries only.
No Customer360, Automation, Marketing, Communication, Helpdesk, Analytics, or AI platforms.
## CRM Responsibilities
CRM owns **Sales CRM** domain only:
- Lead
- Contact
- Organization (business account)
- Opportunity
- Pipeline / PipelineStage
- SalesActivity (meeting / call / task / note)
- Quote (sales quote only)
- CRM timeline event **source** contracts (publish)
## Service Boundaries
| CRM owns | CRM does not own |
| --- | --- |
| Sales aggregates above | Workflow / Automation |
| CRM HTTP APIs under `/api/v1/*` | Customer360 |
| `crm.*` permissions | Marketing |
| Publish-only CRM events | Notification / Messaging / Communication |
| Platform provider **interfaces** | Helpdesk / Analytics / AI |
| | Identity / Accounting / Inventory |
| | Restaurant / Marketplace / Files / Search |
Communication with platform services is **API + Events only**. No cross-DB access.
## Owned Modules (aggregates)
Independent aggregates in `backend/services/crm/app/models/foundation.py`:
1. `Lead`
2. `Contact`
3. `Organization`
4. `Opportunity`
5. `Pipeline`
6. `PipelineStage`
7. `SalesActivity`
8. `Quote`
Cross-aggregate links use UUID references inside `crm_db` only (no SQLAlchemy relationship graphs).
## External Platform Dependencies (contracts only)
Defined in `app/providers/contracts.py`**no implementations**:
- `AutomationProvider`
- `Customer360Provider`
- `NotificationProvider`
- `AnalyticsProvider`
- `AIProvider`
- `CommunicationProvider`
- `HelpdeskProvider`
## Published Events
| Event | Aggregate |
| --- | --- |
| `crm.lead.created` | lead |
| `crm.lead.updated` | lead |
| `crm.contact.created` | contact |
| `crm.opportunity.created` | opportunity |
| `crm.opportunity.won` | opportunity |
| `crm.activity.completed` | sales_activity |
| `crm.quote.created` | quote |
Phase 6.0 does **not** consume future platform events.
## API Contracts
| Method | Path |
| --- | --- |
| CRUD | `/api/v1/leads` |
| CRUD | `/api/v1/contacts` |
| CRUD | `/api/v1/organizations` |
| CRUD + stages | `/api/v1/pipelines` |
| CRUD + win | `/api/v1/opportunities` |
| CRUD + complete | `/api/v1/activities` |
| CRUD | `/api/v1/quotes` |
| Health | `/health` |
No Automation / Customer360 / Notification APIs are exposed.
## Permissions
- `crm.*`
- `crm.leads.*`
- `crm.contacts.*`
- `crm.organizations.*`
- `crm.opportunities.*`
- `crm.activities.*`
- `crm.quotes.*`
## Architecture Decisions
1. Database-per-service (`crm_db`) — ADR-001
2. Row-level `tenant_id` from request tenant context — ADR-003
3. Event publish contracts via `EventEnvelope` — ADR-006
4. Layering: API → Services → Repositories → Models
5. Platform capabilities stay behind provider protocols; CRM never implements them
## Folder Structure
```
backend/services/crm/
app/
api/v1/
core/
middlewares/
models/
repositories/
services/
validators/
schemas/
events/
permissions/
providers/
tests/
alembic/versions/0001_initial.py
scripts/ensure_db.py
README.md
```
## Future Roadmap (beyond foundation)
- Provider adapters when sibling platforms exist
- Frontend CRM module UI
- Outbox worker wiring to real message bus
Phases 6.16.3 completed — see [crm-phase-6-3.md](crm-phase-6-3.md).
## Completion Checklist
- [x] Code completed
- [x] Architecture / dependency / repository / migration / API / permission / tenant / docs tests
- [x] Documentation updated
- [x] Module registry updated
- [x] No forbidden platform ownership
- [x] No TODO placeholders in foundation
## Related Documents
- [Progress](progress.md)
- [Next Steps](next-steps.md)
- [Module Registry — crm](module-registry.md#crm)
- [CRM Phase Area](phases/CRM/README.md)
- [Service README](../backend/services/crm/README.md)