Auditoría completa en 5 fases CAPVED (81 SP): Fase 1 - Inventario: - 22 módulos SAAS documentados (SAAS-001 a SAAS-022) - 11 ADRs, 7 integraciones, 5 especificaciones técnicas - 17 schemas DDL, 48 tablas, 72 RLS policies - 23 módulos backend, 71 entities, 41 controllers - 56 páginas frontend, 22 hooks Fase 2 - Coherencia: - DDL→Backend: 93% cobertura - Backend→Frontend: 58% cobertura (gaps críticos) - Trazabilidad RF/RNF: 97.3% Fase 3 - Plan Remediación: - 16 gaps identificados (4 P0, 4 P1, 4 P2, 4 P3) - P0: Audit, RBAC, Notifications sin frontend - 57 archivos obsoletos a purgar (620 KB) - Plan: 21 tareas, 39 SP en 3 sprints Outputs: - FASE-1-INVENTARIO-CONTEXTO.md - FASE-2-ANALISIS-COHERENCIA.md - FASE-3-PLANEACION-REMEDIACION.md - REPORTE-FINAL-ANALISIS.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
488 lines
15 KiB
Markdown
488 lines
15 KiB
Markdown
# FASE 3: PLANEACIÓN DE REMEDIACIÓN
|
|
|
|
**ID:** TASK-2026-02-03-ANALISIS-INTEGRAL-TEMPLATE-SAAS
|
|
**Fecha:** 2026-02-03
|
|
**Estado:** COMPLETADA
|
|
**SP Ejecutados:** 30
|
|
|
|
---
|
|
|
|
## 1. PLAN DE PURGA DE DOCUMENTACIÓN OBSOLETA (3.1)
|
|
|
|
### 1.1 Clasificación Final
|
|
|
|
| Carpeta | Archivos | Clasificación | Acción |
|
|
|---------|----------|---------------|--------|
|
|
| 2026-01-07-trazas | 5 | 100% OBSOLETO | **PURGAR** |
|
|
| 2026-01-10-simco-v37 | 51 | 71% OBSOLETO | PURGAR 36, REVISAR 15 |
|
|
| 2026-01-10-sprint5 | 19 | 84% OBSOLETO | PURGAR 16, REVISAR 3 |
|
|
| **TOTAL** | **75** | **77%** | **57 a PURGAR** |
|
|
|
|
### 1.2 Archivos a Purgar Inmediatamente (57 archivos)
|
|
|
|
**Carpeta: 2026-01-07-trazas/** (5 archivos - TODA)
|
|
- REPORTE-EJECUCION-SPRINT5-2026-01-07.md
|
|
- TRAZA-2026-01-07-tests-ddl.md
|
|
- TRAZA-TAREAS-BACKEND.md
|
|
- TRAZA-TAREAS-DATABASE.md
|
|
- TRAZA-TAREAS-FRONTEND.md
|
|
|
|
**Carpeta: 2026-01-10-simco-v37/** (36 archivos)
|
|
- FASE-1-*.md a FASE-8-*.md (16 archivos)
|
|
- ANALISIS-BF-02 a ANALISIS-BF-08 (7 archivos)
|
|
- CP-3-VALIDACION-FASE-3.md, CP-4-VALIDACION-FASE-4-5.md
|
|
- ESTRUCTURA-OBJETIVO-*.md (2 archivos)
|
|
- GUIA-ORQUESTACION-SUBAGENTES.md
|
|
- MAPA-ENLACES-ROTOS.md
|
|
- README.md, _INDEX.md
|
|
- Otros archivos de fases completadas
|
|
|
|
**Carpeta: 2026-01-10-sprint5/** (16 archivos)
|
|
- PLAN-SPRINT-1-TESTS.md a PLAN-SPRINT-5-WHATSAPP.md (5 archivos)
|
|
- PLAN-FEATURES-ADICIONALES-2026-01-10.md
|
|
- ANALISIS-VALIDACION-SPRINT-5-2026-01-10.md
|
|
- FASE-1 a FASE-5 integracion (5 archivos)
|
|
- VALIDACION-PLAN-*.md (2 archivos)
|
|
- CP-2-VALIDACION-FASE-1-2.md
|
|
|
|
### 1.3 Archivos a Revisar Antes de Purgar (18 archivos)
|
|
|
|
| Archivo | Razón Revisión | Acción Post-Revisión |
|
|
|---------|----------------|----------------------|
|
|
| HALLAZGOS-ANALISIS-DOCUMENTAL-2026-01-10.md | 23 discrepancias identificadas | Crear issue tracker si no resueltas |
|
|
| MAPA-CONFLICTOS-NOMENCLATURA.md | Conflictos SAAS-006 a 013 | Verificar resolución |
|
|
| MAPA-DISCREPANCIAS-DOC-CODIGO.md | Gaps doc↔código | Verificar coherencia actual |
|
|
| PLAN-MAESTRO-PURGA-DOCUMENTAL-2026-01-10.md | Discrepancias listadas | Verificar cumplimiento |
|
|
| INVENTARIO-ARCHIVOS-HUERFANOS.md | Archivos sin referencia | Validar limpieza |
|
|
| INVENTARIO-DOCUMENTACION-FALTANTE.md | Docs faltantes | Verificar creación |
|
|
| HISTORICO-SPRINTS.md | Referencia histórica | Opcional mantener resumen |
|
|
| PLAN-CORRECCION-SPRINT-5-2026-01-10.md | Issues pendientes | Verificar resolución |
|
|
| MAPA-DUPLICIDADES.md | Refactoring pendiente | Verificar completitud |
|
|
| MATRIZ-DEPENDENCIAS-MODULOS.md | Arquitectura histórica | Comparar con DEPENDENCY-GRAPH |
|
|
|
|
### 1.4 Validación Pre-Purga
|
|
|
|
```bash
|
|
# 1. Verificar que no hay referencias activas
|
|
grep -r "2026-01-07-trazas" orchestration/ docs/
|
|
grep -r "simco-v37" orchestration/ docs/
|
|
grep -r "sprint5" orchestration/ docs/
|
|
|
|
# 2. Verificar imports en código
|
|
grep -r "_archive" backend/src frontend/src
|
|
|
|
# 3. Backup antes de purga
|
|
cp -r orchestration/_archive/ orchestration/_archive_backup_2026-02-03/
|
|
```
|
|
|
|
### 1.5 Espacio a Liberar
|
|
|
|
| Categoría | Espacio |
|
|
|-----------|---------|
|
|
| Purga inmediata | 620 KB |
|
|
| Post-revisión | 80 KB |
|
|
| **Total** | **~700 KB (87%)** |
|
|
|
|
---
|
|
|
|
## 2. PLAN DE ACTUALIZACIÓN DE DOCUMENTACIÓN (3.2)
|
|
|
|
### 2.1 Actualizar docs/_MAP.md (P0)
|
|
|
|
**Estado Actual:** Lista SAAS-001 a SAAS-014, 5 ADRs, 12 schemas
|
|
|
|
**Cambios Requeridos:**
|
|
|
|
```markdown
|
|
## Agregar en Sección Módulos:
|
|
- SAAS-015: OAuth 2.0 Endpoints
|
|
- SAAS-016: Analytics Dashboard
|
|
- SAAS-017: Reportes Exportables
|
|
- SAAS-018: Sales Foundation
|
|
- SAAS-019: Portfolio
|
|
- SAAS-020: Commissions
|
|
- SAAS-021: MLM
|
|
- SAAS-022: Goals
|
|
|
|
## Agregar en Sección ADRs:
|
|
- ADR-006: AI Integration Multi-Provider
|
|
- ADR-007: Storage Abstraction Layer
|
|
- ADR-008: Webhook Retry Strategy
|
|
- ADR-009: WhatsApp Business Integration
|
|
- ADR-010: Audit Log Retention Policy
|
|
- ADR-011: Rate Limiting Strategy
|
|
|
|
## Actualizar Sección Database:
|
|
- Total schemas: 12 → 17
|
|
- Total tablas: 24 → 48
|
|
- Agregar: sales, commissions, portfolio, goals, mlm
|
|
```
|
|
|
|
**Estimación:** 1 SP
|
|
|
|
### 2.2 Actualizar docs/01-modulos/_INDEX.md (P1)
|
|
|
|
**Agregar referencias a:**
|
|
- SAAS-015 a SAAS-022 con descripciones
|
|
- Actualizar contadores y estadísticas
|
|
|
|
**Estimación:** 1 SP
|
|
|
|
### 2.3 Documentación Faltante para Páginas (P2)
|
|
|
|
| Página | Ubicación | Acción |
|
|
|--------|-----------|--------|
|
|
| DashboardSettingsPage | dashboard/ | Crear spec |
|
|
| DashboardStoragePage | dashboard/ | Crear spec |
|
|
| DashboardAnalyticsPage | dashboard/ | Crear spec |
|
|
| SettingsProfilePage | settings/ | Crear spec |
|
|
| SettingsSecurityPage | settings/ | Crear spec |
|
|
| OnboardingStep4-6 | onboarding/ | Crear specs |
|
|
| AdminWebhooksPage | admin/ | Crear spec |
|
|
| AdminNotificationsPage | admin/ | Crear spec |
|
|
| AdminAuditPage | admin/ | Crear spec |
|
|
| AdminRbacPage | admin/ | Crear spec |
|
|
|
|
**Estimación:** 3 SP
|
|
|
|
### 2.4 Actualizar Inventarios (P1)
|
|
|
|
| Inventario | Cambios |
|
|
|------------|---------|
|
|
| MASTER_INVENTORY.yml | Agregar estadísticas actualizadas |
|
|
| BACKEND_INVENTORY.yml | Verificar 71 entities, 41 controllers |
|
|
| FRONTEND_INVENTORY.yml | Verificar 56 páginas, 22 hooks |
|
|
| DATABASE_INVENTORY.yml | Verificar 17 schemas, 48 tablas |
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
---
|
|
|
|
## 3. PLAN DE ESPECIFICACIONES TÉCNICAS FALTANTES (3.3)
|
|
|
|
### 3.1 ET-SAAS-018-sales.md (P1)
|
|
|
|
**Contenido:**
|
|
- Arquitectura módulo Sales
|
|
- 4 entities: PipelineStage, Lead, Opportunity, Activity
|
|
- 5 controllers: leads, opportunities, activities, dashboard, pipeline
|
|
- 36 endpoints documentados
|
|
- Integraciones: notifications, commissions
|
|
- Flujos de negocio: Lead conversion, Pipeline management
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
### 3.2 ET-SAAS-019-portfolio.md (P1)
|
|
|
|
**Contenido:**
|
|
- Arquitectura módulo Portfolio
|
|
- 4 entities: Category, Product, Variant, Price
|
|
- 2 controllers: categories, products
|
|
- 21 endpoints documentados
|
|
- Flujos: Gestión catálogo, variantes, precios
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
### 3.3 ET-SAAS-020-commissions.md (P1)
|
|
|
|
**Contenido:**
|
|
- Arquitectura módulo Commissions
|
|
- 4 entities: Scheme, Assignment, Entry, Period
|
|
- 5 controllers documentados
|
|
- 37 endpoints
|
|
- Cálculos: % fijo, escalonado, combinado
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
### 3.4 ET-SAAS-021-mlm.md (P1)
|
|
|
|
**Contenido:**
|
|
- Arquitectura módulo MLM
|
|
- 6 entities: Structure, Rank, Node, Commission, Bonus, RankHistory
|
|
- 4 controllers documentados
|
|
- 29 endpoints
|
|
- Estructuras: Binary, Unilevel, Matrix
|
|
- Comisiones por niveles
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
### 3.5 ET-SAAS-022-goals.md (P1)
|
|
|
|
**Contenido:**
|
|
- Arquitectura módulo Goals
|
|
- 4 entities: Definition, Assignment, ProgressLog, MilestoneNotification
|
|
- 2 controllers documentados
|
|
- 22 endpoints
|
|
- Tipos: OKR, KPI, Sales targets
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
---
|
|
|
|
## 4. PLAN DE CORRECCIÓN DE GAPS DE CÓDIGO (3.4)
|
|
|
|
### 4.1 Plan UI MLM (P1 - 6 páginas React)
|
|
|
|
**Páginas a crear:**
|
|
|
|
| Página | Ruta | Componentes |
|
|
|--------|------|-------------|
|
|
| MLMStructuresPage | /dashboard/mlm/structures | StructuresList, StructureForm |
|
|
| MLMStructureDetailPage | /dashboard/mlm/structures/:id | TreeVisualization, NodesList |
|
|
| MLMNodesPage | /dashboard/mlm/nodes | NodesGrid, NodeFilters |
|
|
| MLMNodeDetailPage | /dashboard/mlm/nodes/:id | NodeProfile, Downlines, Commissions |
|
|
| MLMRanksPage | /dashboard/mlm/ranks | RanksList, RankRequirements |
|
|
| MLMCommissionsPage | /dashboard/mlm/commissions | CommissionsTable, PeriodSelector |
|
|
|
|
**Dependencias:** useMlm hook (ya existe)
|
|
|
|
**Estimación:** 3 SP
|
|
|
|
### 4.2 Plan UI Goals (P1 - 6 páginas React)
|
|
|
|
**Páginas a crear:**
|
|
|
|
| Página | Ruta | Componentes |
|
|
|--------|------|-------------|
|
|
| GoalsDefinitionsPage | /dashboard/goals/definitions | GoalsList, GoalForm |
|
|
| GoalDetailPage | /dashboard/goals/definitions/:id | GoalProgress, Assignments |
|
|
| GoalsAssignmentsPage | /dashboard/goals/assignments | AssignmentsList, Filters |
|
|
| GoalAssignmentDetailPage | /dashboard/goals/assignments/:id | ProgressChart, Logs |
|
|
| GoalsDashboardPage | /dashboard/goals | KPICards, TrendCharts |
|
|
| GoalsReportsPage | /dashboard/goals/reports | ReportGenerator |
|
|
|
|
**Dependencias:** useGoals hook (ya existe)
|
|
|
|
**Estimación:** 3 SP
|
|
|
|
### 4.3 Plan Tests Sales (P1)
|
|
|
|
**Cobertura actual:** 0%
|
|
|
|
**Tests a crear:**
|
|
|
|
| Servicio | Tests Unitarios | Tests E2E |
|
|
|----------|-----------------|-----------|
|
|
| leads.service.ts | 15 tests | 5 flows |
|
|
| opportunities.service.ts | 15 tests | 5 flows |
|
|
| activities.service.ts | 12 tests | 3 flows |
|
|
| pipeline.service.ts | 10 tests | 3 flows |
|
|
| dashboard.service.ts | 8 tests | 2 flows |
|
|
|
|
**Total:** 60 unit tests + 18 E2E tests
|
|
|
|
**Estimación:** 3 SP
|
|
|
|
### 4.4 Plan Tests Commissions (P1)
|
|
|
|
**Cobertura actual:** 0%
|
|
|
|
**Tests a crear:**
|
|
|
|
| Servicio | Tests Unitarios | Tests E2E |
|
|
|----------|-----------------|-----------|
|
|
| schemes.service.ts | 12 tests | 4 flows |
|
|
| assignments.service.ts | 10 tests | 3 flows |
|
|
| entries.service.ts | 15 tests | 5 flows |
|
|
| periods.service.ts | 12 tests | 4 flows |
|
|
| dashboard.service.ts | 8 tests | 2 flows |
|
|
|
|
**Total:** 57 unit tests + 18 E2E tests
|
|
|
|
**Estimación:** 3 SP
|
|
|
|
### 4.5 Plan Tests Portfolio (P2)
|
|
|
|
**Cobertura actual:** 0%
|
|
|
|
**Tests a crear:**
|
|
|
|
| Servicio | Tests Unitarios | Tests E2E |
|
|
|----------|-----------------|-----------|
|
|
| categories.service.ts | 10 tests | 3 flows |
|
|
| products.service.ts | 18 tests | 5 flows |
|
|
| variants.service.ts | 8 tests | 2 flows |
|
|
| prices.service.ts | 8 tests | 2 flows |
|
|
|
|
**Total:** 44 unit tests + 12 E2E tests
|
|
|
|
**Estimación:** 2 SP
|
|
|
|
### 4.6 Corrección Gaps DDL↔Backend (P0)
|
|
|
|
**Session Entity:**
|
|
```typescript
|
|
// backend/src/modules/auth/entities/session.entity.ts
|
|
@Entity({ name: 'sessions', schema: 'auth' })
|
|
export class Session {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column({ name: 'user_id' })
|
|
userId: string;
|
|
|
|
@Column({ name: 'tenant_id' })
|
|
tenantId: string;
|
|
|
|
@Column({ name: 'device_info', type: 'jsonb' })
|
|
deviceInfo: object;
|
|
|
|
@Column({ name: 'ip_address' })
|
|
ipAddress: string;
|
|
|
|
@Column({ name: 'user_agent' })
|
|
userAgent: string;
|
|
|
|
@Column({ name: 'expires_at' })
|
|
expiresAt: Date;
|
|
|
|
@CreateDateColumn({ name: 'created_at' })
|
|
createdAt: Date;
|
|
|
|
@Column({ name: 'last_activity_at' })
|
|
lastActivityAt: Date;
|
|
}
|
|
```
|
|
|
|
**Campos Notification:**
|
|
```typescript
|
|
// Agregar a notification.entity.ts
|
|
@Column({ name: 'body_html', nullable: true })
|
|
bodyHtml: string;
|
|
|
|
@Column({ name: 'recipient_phone', nullable: true })
|
|
recipientPhone: string;
|
|
|
|
@Column({ name: 'delivered_at', nullable: true })
|
|
deliveredAt: Date;
|
|
|
|
@Column({ name: 'failure_reason', nullable: true })
|
|
failureReason: string;
|
|
```
|
|
|
|
**Estimación:** 1 SP
|
|
|
|
### 4.7 Corrección Frontend Críticos (P0)
|
|
|
|
**Audit Frontend:**
|
|
```
|
|
frontend/src/
|
|
├── services/api/audit.api.ts (8 endpoints)
|
|
├── hooks/useAudit.ts (queries + mutations)
|
|
└── pages/dashboard/AuditLogsPage.tsx
|
|
```
|
|
|
|
**RBAC Frontend:**
|
|
```
|
|
frontend/src/
|
|
├── services/api/rbac.api.ts (14 endpoints)
|
|
├── hooks/useRbac.ts (queries + mutations)
|
|
├── pages/dashboard/RolesPage.tsx
|
|
└── pages/dashboard/PermissionsPage.tsx
|
|
```
|
|
|
|
**Notifications Frontend:**
|
|
```
|
|
frontend/src/
|
|
├── services/api/notifications.api.ts (17 endpoints)
|
|
├── hooks/useNotifications.ts (queries + mutations)
|
|
└── pages/dashboard/NotificationsPage.tsx
|
|
```
|
|
|
|
**Estimación:** 5 SP
|
|
|
|
---
|
|
|
|
## 5. PRIORIZACIÓN DE TAREAS
|
|
|
|
### Sprint Inmediato (P0 - 10 SP)
|
|
|
|
| ID | Tarea | SP | Dependencias |
|
|
|----|-------|-----|--------------|
|
|
| T1 | Actualizar docs/_MAP.md | 1 | - |
|
|
| T2 | Crear Session entity | 0.5 | - |
|
|
| T3 | Agregar campos Notification | 0.5 | - |
|
|
| T4 | Crear Audit frontend | 2 | - |
|
|
| T5 | Crear RBAC frontend | 2 | - |
|
|
| T6 | Crear Notifications frontend | 2 | - |
|
|
| T7 | Purgar _archive (fase 1) | 1 | Validación |
|
|
| T8 | Actualizar inventarios | 1 | T1 |
|
|
|
|
### Sprint Siguiente (P1 - 18 SP)
|
|
|
|
| ID | Tarea | SP | Dependencias |
|
|
|----|-------|-----|--------------|
|
|
| T9 | Crear UI MLM (6 páginas) | 3 | - |
|
|
| T10 | Crear UI Goals (6 páginas) | 3 | - |
|
|
| T11 | Crear Portfolio pages | 2 | - |
|
|
| T12 | Crear ET-SAAS-018 sales | 2 | - |
|
|
| T13 | Crear ET-SAAS-019 portfolio | 2 | - |
|
|
| T14 | Crear ET-SAAS-020 commissions | 2 | - |
|
|
| T15 | Crear ET-SAAS-021 mlm | 2 | - |
|
|
| T16 | Crear ET-SAAS-022 goals | 2 | - |
|
|
|
|
### Sprint Posterior (P2 - 11 SP)
|
|
|
|
| ID | Tarea | SP | Dependencias |
|
|
|----|-------|-----|--------------|
|
|
| T17 | Tests Sales | 3 | - |
|
|
| T18 | Tests Commissions | 3 | - |
|
|
| T19 | Tests Portfolio | 2 | - |
|
|
| T20 | Consolidar Logging | 2 | Análisis |
|
|
| T21 | Extraer patrones CRUD | 1 | T17-T19 |
|
|
|
|
---
|
|
|
|
## 6. DIAGRAMA DE DEPENDENCIAS
|
|
|
|
```
|
|
T1 (docs/_MAP) ──────────────────────────────────────┐
|
|
│
|
|
T2 (Session entity) ────────────────────────────────▶│
|
|
│
|
|
T3 (Notification campos) ──────────────────────────▶ │
|
|
▼
|
|
T4 (Audit frontend) ────────────────────────────────▶ RELEASE P0
|
|
│
|
|
T5 (RBAC frontend) ─────────────────────────────────▶│
|
|
│
|
|
T6 (Notifications frontend) ────────────────────────▶│
|
|
│
|
|
T7 (Purgar _archive) ───────────────────────────────▶│
|
|
│
|
|
T8 (Inventarios) ───────────────────────────────────▶│
|
|
│
|
|
▼
|
|
T9 (UI MLM) ────────────────────────────────────────▶ RELEASE P1
|
|
│
|
|
T10 (UI Goals) ─────────────────────────────────────▶│
|
|
│
|
|
T11 (Portfolio pages) ──────────────────────────────▶│
|
|
│
|
|
T12-T16 (Especificaciones) ─────────────────────────▶│
|
|
│
|
|
▼
|
|
T17-T19 (Tests) ────────────────────────────────────▶ RELEASE P2
|
|
│
|
|
T20 (Consolidar Logging) ───────────────────────────▶│
|
|
│
|
|
T21 (Patrones CRUD) ────────────────────────────────▶│
|
|
```
|
|
|
|
---
|
|
|
|
## 7. MÉTRICAS DEL PLAN
|
|
|
|
| Métrica | Valor |
|
|
|---------|-------|
|
|
| Tareas planificadas | 21 |
|
|
| SP totales | 39 |
|
|
| Archivos a purgar | 57 |
|
|
| Archivos a crear | 35+ |
|
|
| Tests a crear | 161+ |
|
|
| Páginas a crear | 14+ |
|
|
|
|
---
|
|
|
|
*Generado: 2026-02-03 | Agente: Claude Opus 4.5 | Metodología: SIMCO v4.0.0 + CAPVED*
|