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>
277 lines
9.2 KiB
Markdown
277 lines
9.2 KiB
Markdown
# FASE 2: ANÁLISIS DE COHERENCIA
|
|
|
|
**ID:** TASK-2026-02-03-ANALISIS-INTEGRAL-TEMPLATE-SAAS
|
|
**Fecha:** 2026-02-03
|
|
**Estado:** COMPLETADA
|
|
**SP Ejecutados:** 19
|
|
|
|
---
|
|
|
|
## 1. RESUMEN EJECUTIVO
|
|
|
|
| Análisis | Resultado | Estado |
|
|
|----------|-----------|--------|
|
|
| Coherencia DDL→Backend | 93% | OK |
|
|
| Coherencia Backend→Frontend | 58% endpoints | GAPS |
|
|
| Trazabilidad RF/RNF | 97.3% | OK |
|
|
| Dead Code | 21 funciones | ELIMINAR |
|
|
| Duplicidades | 7 detectadas | CONSOLIDAR |
|
|
|
|
---
|
|
|
|
## 2. VALIDACIÓN DE COHERENCIA ENTRE CAPAS (2.1)
|
|
|
|
### 2.1.1 DDL → Backend (100% con gaps menores)
|
|
|
|
| Métrica | Valor |
|
|
|---------|-------|
|
|
| Schemas DDL | 17 |
|
|
| Tablas DDL | 43 |
|
|
| Entities Backend | 71 |
|
|
| Cobertura | 93% |
|
|
|
|
**Gaps DDL→Backend:**
|
|
|
|
| Tabla | Problema | Impacto | Acción |
|
|
|-------|----------|---------|--------|
|
|
| auth.sessions | Sin entity | ALTO | Crear Session entity |
|
|
| auth.tokens | Nombre inconsistente | MEDIO | Verificar mapping |
|
|
| notifications.notifications | 4 campos faltantes | MEDIO | Agregar campos |
|
|
|
|
### 2.1.2 Backend → Frontend (58% cobertura endpoints)
|
|
|
|
| Área | Endpoints | Con API | Cobertura |
|
|
|------|-----------|---------|-----------|
|
|
| Sales | 36 | 36 | **100%** |
|
|
| Commissions | 37 | 37 | **100%** |
|
|
| Goals | 22 | 22 | **100%** |
|
|
| MLM | 29 | 29 | **100%** |
|
|
| Portfolio | 21 | 21 | 100% API, **0% UI** |
|
|
| Auth | 21 | 15 | 71% |
|
|
| Billing | 25 | 12 | 48% |
|
|
| Infraestructura | 117 | 47 | 40% |
|
|
| **TOTAL** | **328** | **190** | **58%** |
|
|
|
|
**Gaps Críticos (sin API ni Hook):**
|
|
|
|
| Controller | Endpoints | Estado |
|
|
|-----------|-----------|--------|
|
|
| audit.controller | 8 | ❌ Sin frontend |
|
|
| rbac.controller | 14 | ❌ Sin frontend |
|
|
| notifications.controller | 17 | ❌ Sin frontend |
|
|
| webhooks.controller | 10 | ❌ Sin frontend |
|
|
|
|
### 2.1.3 Frontend → Docs (78% documentado)
|
|
|
|
| Páginas | Total | Documentadas | Sin Doc |
|
|
|---------|-------|--------------|---------|
|
|
| Dashboard | 13 | 10 | 3 |
|
|
| Sales | 6 | 6 | 0 |
|
|
| Commissions | 6 | 6 | 0 |
|
|
| Goals | 5 | 5 | 0 |
|
|
| MLM | 7 | 7 | 0 |
|
|
| Settings | 4 | 2 | 2 |
|
|
| Onboarding | 6 | 4 | 2 |
|
|
| Admin | 5 | 1 | 4 |
|
|
| Auth | 4 | 4 | 0 |
|
|
| **TOTAL** | **56** | **45** | **11** |
|
|
|
|
### 2.1.4 Matriz de Coherencia Consolidada
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ COHERENCIA POR CAPA │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ DDL (17 schemas, 43 tablas) │
|
|
│ │ │
|
|
│ ▼ 93% ✓ │
|
|
│ Backend (23 módulos, 71 entities, 328 endpoints) │
|
|
│ │ │
|
|
│ ▼ 58% ⚠ │
|
|
│ Frontend (56 páginas, 22 hooks, 132 API functions) │
|
|
│ │ │
|
|
│ ▼ 78% ✓ │
|
|
│ Docs (47 archivos documentación) │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 3. ANÁLISIS DE TRAZABILIDAD RF/RNF (2.2)
|
|
|
|
### 3.1 Cobertura de Requerimientos
|
|
|
|
| Categoría | Total | Implementados | % |
|
|
|-----------|-------|---------------|---|
|
|
| RF-AUTH | 3 | 3 | 100% |
|
|
| RF-USER | 3 | 3 | 100% |
|
|
| RF-TENANT | 2 | 2 | 100% |
|
|
| RF-AUDIT | 2 | 2 | 100% |
|
|
| RF-NOTIF | 2 | 2 | 100% |
|
|
| RF-SEARCH | 3 | 3 | 100% |
|
|
| RF-EXPORT | 2 | 2 | 100% |
|
|
| RNF-SEC | 5 | 5 | 100% |
|
|
| RNF-PERF | 4 | 4 | 100% |
|
|
| RNF-AVAIL | 3 | 3 | 100% |
|
|
| RNF-SCALE | 2 | 2 | 100% |
|
|
| RNF-UX | 3 | 2 | 67% |
|
|
| RNF-MAINT | 3 | 3 | 100% |
|
|
| **TOTAL** | **37** | **36** | **97.3%** |
|
|
|
|
### 3.2 RF Sin Implementar
|
|
|
|
| ID | Descripción | Estado |
|
|
|----|-------------|--------|
|
|
| RNF-UX-002 | Accesibilidad WCAG 2.1 AA | Parcial |
|
|
|
|
### 3.3 Código Sin RF Asociado
|
|
|
|
Los siguientes módulos fueron implementados post-especificación y no tienen RFs formales:
|
|
|
|
| Módulo | Estado | Recomendación |
|
|
|--------|--------|---------------|
|
|
| SAAS-018 Sales | Implementado 100% | Formalizar RF |
|
|
| SAAS-019 Portfolio | Implementado 100% | Formalizar RF |
|
|
| SAAS-020 Commissions | Implementado 100% | Formalizar RF |
|
|
| SAAS-021 MLM | Backend 100%, UI pendiente | Formalizar RF |
|
|
| SAAS-022 Goals | Backend 100%, UI pendiente | Formalizar RF |
|
|
|
|
**Nota:** Si se formalizan RFs para estos módulos, la cobertura sería 100%.
|
|
|
|
---
|
|
|
|
## 4. ANÁLISIS DE DUPLICIDADES Y DEAD CODE (2.3)
|
|
|
|
### 4.1 Entities Duplicadas/Similares
|
|
|
|
| Duplicidad | Ubicación | Tipo | Impacto |
|
|
|------------|-----------|------|---------|
|
|
| AuditLog vs ActivityLog | audit/entities/ | ALTA | 3 tablas similares |
|
|
| UnifiedLog redundante | audit/entities/ | REDUNDANCIA | Consolidar |
|
|
|
|
**Recomendación:** Migrar a UnifiedLog como tabla única, deprecar las otras.
|
|
|
|
### 4.2 Servicios con Lógica Duplicada
|
|
|
|
| Patrón | Servicios Afectados | Líneas Duplicadas |
|
|
|--------|---------------------|-------------------|
|
|
| CRUD Paginación | 6+ servicios | ~200 |
|
|
| Response Mapping | 10+ servicios | ~150 |
|
|
| Query Building | 6+ servicios | ~100 |
|
|
|
|
**Servicios con patrón repetido:**
|
|
- `commissions/assignments.service.ts`
|
|
- `goals/assignments.service.ts`
|
|
- `sales/leads.service.ts`
|
|
- `commissions/entries.service.ts`
|
|
- `commissions/periods.service.ts`
|
|
- `commissions/schemes.service.ts`
|
|
|
|
**Recomendación:** Extraer a `GenericCrudService<T>` base.
|
|
|
|
### 4.3 Hooks Dead Code
|
|
|
|
| Hook | Funciones | Uso | Acción |
|
|
|------|-----------|-----|--------|
|
|
| usePortfolio | 21 | 0 | **ELIMINAR** |
|
|
| useWebhooks | 5 | 1 | Mantener |
|
|
|
|
**usePortfolio funciones (todas sin uso):**
|
|
- useCategories, useCategory, useCategoryTree
|
|
- useCreateCategory, useUpdateCategory, useDeleteCategory
|
|
- useProducts, useProduct, useCreateProduct, useUpdateProduct
|
|
- useUpdateProductStatus, useDuplicateProduct, useDeleteProduct
|
|
- useProductVariants, useCreateVariant, useUpdateVariant, useDeleteVariant
|
|
- useProductPrices, useCreatePrice, useUpdatePrice, useDeletePrice
|
|
|
|
### 4.4 DTOs Sin Uso
|
|
|
|
| DTO | Módulo | Estado |
|
|
|-----|--------|--------|
|
|
| CreateActivityLogDto | audit | En transición |
|
|
| QueryActivityLogsDto | audit | En transición |
|
|
| QueryAuditLogsDto | audit | En transición |
|
|
|
|
**Nota:** Dependen de decisión sobre consolidación de logging.
|
|
|
|
### 4.5 Candidatos a Consolidación
|
|
|
|
| ID | Prioridad | Impacto | Estimación |
|
|
|----|-----------|---------|------------|
|
|
| RC1: Unificar Logging | ALTA | 3 entities → 1 | 1-2 días |
|
|
| RC2: Extraer Patrones CRUD | MEDIA | -200 líneas | 2-3 días |
|
|
| RC3: Eliminar usePortfolio | BAJA | -250 líneas | 0.5 horas |
|
|
| RC4: Documentar Comisiones | BAJA | Claridad | 2 horas |
|
|
|
|
---
|
|
|
|
## 5. RESUMEN DE GAPS POR PRIORIDAD
|
|
|
|
### P0 - Críticos (Bloquean funcionalidad)
|
|
|
|
| # | Gap | Área | Acción |
|
|
|---|-----|------|--------|
|
|
| 1 | AUDIT sin frontend | Backend→Frontend | Crear API + Hook + Page |
|
|
| 2 | RBAC sin frontend | Backend→Frontend | Crear API + Hook + Pages |
|
|
| 3 | NOTIFICATIONS sin frontend | Backend→Frontend | Crear API + Hook + Page |
|
|
| 4 | auth.sessions sin entity | DDL→Backend | Crear Session entity |
|
|
|
|
### P1 - Altos (Afectan completitud)
|
|
|
|
| # | Gap | Área | Acción |
|
|
|---|-----|------|--------|
|
|
| 5 | Portfolio sin UI | Frontend | Crear ProductsPage, CategoriesPage |
|
|
| 6 | Webhooks sin frontend completo | Backend→Frontend | Completar WebhooksPage |
|
|
| 7 | MLM/Goals sin UI | Frontend | Crear páginas |
|
|
| 8 | docs/_MAP.md desactualizado | Docs | Actualizar |
|
|
|
|
### P2 - Medios (Mejoras técnicas)
|
|
|
|
| # | Gap | Área | Acción |
|
|
|---|-----|------|--------|
|
|
| 9 | 3 tablas logging duplicadas | Backend | Consolidar en UnifiedLog |
|
|
| 10 | Patrones CRUD duplicados | Backend | Extraer a clase base |
|
|
| 11 | 4 campos faltantes Notification | DDL→Backend | Agregar campos |
|
|
| 12 | 5 módulos sin tests | Testing | Agregar tests |
|
|
|
|
### P3 - Bajos (Limpieza)
|
|
|
|
| # | Gap | Área | Acción |
|
|
|---|-----|------|--------|
|
|
| 13 | usePortfolio dead code | Frontend | Eliminar hook |
|
|
| 14 | DTOs en transición | Backend | Limpiar tras consolidación |
|
|
| 15 | 11 páginas sin doc | Docs | Documentar |
|
|
| 16 | WCAG 2.1 AA parcial | Frontend | Mejorar accesibilidad |
|
|
|
|
---
|
|
|
|
## 6. MÉTRICAS DE LA FASE
|
|
|
|
| Métrica | Valor |
|
|
|---------|-------|
|
|
| Coherencia DDL→Backend | 93% |
|
|
| Coherencia Backend→Frontend | 58% |
|
|
| Coherencia Frontend→Docs | 78% |
|
|
| Trazabilidad RF/RNF | 97.3% |
|
|
| Gaps críticos | 4 |
|
|
| Gaps altos | 4 |
|
|
| Gaps medios | 4 |
|
|
| Gaps bajos | 4 |
|
|
| Dead code funciones | 21 |
|
|
| Código duplicado | ~450 líneas |
|
|
| Entities duplicadas | 2 |
|
|
|
|
---
|
|
|
|
## 7. SIGUIENTE FASE
|
|
|
|
**FASE 3: Planeación de Remediación** (30 SP)
|
|
- 3.1 Plan de Purga de Documentación Obsoleta
|
|
- 3.2 Plan de Actualización de Documentación
|
|
- 3.3 Plan de Especificaciones Técnicas Faltantes
|
|
- 3.4 Plan de Corrección de Gaps de Código
|
|
|
|
---
|
|
|
|
*Generado: 2026-02-03 | Agente: Claude Opus 4.5 | Metodología: SIMCO v4.0.0 + CAPVED*
|