feat(crm): dominio backend (cuentas, contactos, prospectos, embudos, oportunidades, actividades)
- Nuevo schema `crm` con 7 tablas multi-tenant (TenantScopedMixin + soft delete) - Módulos FastAPI por dominio: models/dto/service/routes (patrón example) - Métricas del dashboard (KPIs + embudo por etapa) - Conversión de prospecto → cuenta/contacto/oportunidad (idempotente) - Movimiento de oportunidad entre etapas (Kanban) con estado/probabilidad derivados - 25 permisos registrados en PermissionRegistry - Migración Alembic con upgrade/downgrade completos - 24 tests de servicios (pytest) en verde Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
24
backend/api/v1/modules/crm/metrics/dto.py
Normal file
24
backend/api/v1/modules/crm/metrics/dto.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from decimal import Decimal
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class StageMetric(BaseModel):
|
||||
stage_id: int
|
||||
stage_name: str
|
||||
position: int
|
||||
count: int
|
||||
value: Decimal
|
||||
|
||||
|
||||
class CrmMetricsResponse(BaseModel):
|
||||
total_accounts: int
|
||||
total_contacts: int
|
||||
total_leads: int
|
||||
open_leads: int
|
||||
open_opportunities: int
|
||||
open_pipeline_value: Decimal
|
||||
won_opportunities: int
|
||||
won_value: Decimal
|
||||
pending_activities: int
|
||||
by_stage: list[StageMetric]
|
||||
Reference in New Issue
Block a user