CAPVED Analysis: - C: Documented current frontend state (56 pages, 28 components, 24 hooks) - A: Identified 12 gaps across 4 priority levels (P0-P3) - P: Created 4-sprint plan with 12 subtasks (49 SP total) Gaps identified: - P0: RBAC, Audit, Notifications frontend incomplete - P1: Portfolio, MLM, Goals UI missing (hooks exist) - P2: WCAG 2.1 at 67%, tests coverage low - P3: Documentation outdated, archive cleanup needed Files created: - METADATA.yml - FASE-CAPVED-CONTEXTO.md - FASE-CAPVED-ANALISIS.md - PLAN-SUBTAREAS-FRONTEND.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
14 KiB
14 KiB
FASE A: ANÁLISIS - Auditoría Frontend/UX-UI
ID: TASK-2026-02-03-AUDITORIA-FRONTEND-UX-UI Fecha: 2026-02-03 Estado: COMPLETADA SP Ejecutados: 13
1. ANÁLISIS DE COHERENCIA
1.1 Backend → Frontend (Por Módulo)
| Módulo | Endpoints Backend | API Frontend | UI Pages | Coherencia |
|---|---|---|---|---|
| Auth | 21 | 15 | 4 | 71% |
| Users | 8 | 8 | 1 | 100% |
| Tenants | 12 | 8 | 2 | 67% |
| Billing | 25 | 12 | 1 | 48% |
| Sales | 36 | 36 | 6 | 100% |
| Commissions | 37 | 37 | 5 | 100% |
| Portfolio | 21 | 0 | 0 | 0% |
| MLM | 29 | 29 | 0 | 0% |
| Goals | 22 | 22 | 0 | 0% |
| Audit | 8 | 2 | 1 | 25% |
| RBAC | 14 | 0 | 0 | 0% |
| Notifications | 17 | 8 | 1 | 47% |
| Webhooks | 10 | 10 | 1 | 100% |
| Storage | 12 | 12 | 1 | 100% |
| Feature Flags | 8 | 8 | 1 | 100% |
| AI | 6 | 6 | 1 | 100% |
| 8 | 8 | 1 | 100% |
1.2 Análisis de Gaps Críticos
┌────────────────────────────────────────────────────────────────┐
│ COHERENCIA POR CAPA │
├────────────────────────────────────────────────────────────────┤
│ Backend (328 endpoints) │
│ │ │
│ ▼ │
│ API Services Frontend (190 funciones) ← 58% cobertura │
│ │ │
│ ▼ │
│ Hooks (53+ funciones) ← 100% de APIs cubiertas │
│ │ │
│ ▼ │
│ Páginas UI (56) ← GAPS en MLM, Goals, Portfolio, RBAC │
└────────────────────────────────────────────────────────────────┘
2. GAPS IDENTIFICADOS POR PRIORIDAD
2.1 P0 - Críticos (Bloquean Funcionalidad Core)
| ID | Gap | Impacto | Endpoints | SP Estimados |
|---|---|---|---|---|
| GAP-FE-01 | Audit sin UI completa | Admin no puede ver logs | 8 | 3 |
| GAP-FE-02 | RBAC sin frontend | No hay gestión de roles | 14 | 5 |
| GAP-FE-03 | Notifications incompleto | Configuración limitada | 17 | 3 |
| Total P0 | 39 | 11 |
Detalle GAP-FE-01 (Audit):
- Falta: Filtros avanzados, exportación, gráficos de actividad
- Tiene: Lista básica de logs
- Componentes existentes: AuditLogRow, AuditFilters, AuditStatsCard
- Acción: Completar AuditLogsPage con filtros y stats
Detalle GAP-FE-02 (RBAC):
- Falta: 100% de UI
- Tiene: 0% (Solo guards de protección)
- Acción: Crear RolesPage, PermissionsPage, RoleAssignmentsPage
Detalle GAP-FE-03 (Notifications):
- Falta: Gestión de templates, configuración por canal
- Tiene: NotificationBell, NotificationDrawer básico
- Acción: Completar NotificationsManagementPage
2.2 P1 - Altos (Módulos Comerciales Sin UI)
| ID | Gap | Hooks Disponibles | Páginas Faltantes | SP Estimados |
|---|---|---|---|---|
| GAP-FE-04 | Portfolio sin UI | 21 funciones | 4-6 páginas | 5 |
| GAP-FE-05 | MLM sin UI | 18 funciones | 7 páginas | 8 |
| GAP-FE-06 | Goals sin UI | 14 funciones | 7 páginas | 8 |
| Total P1 | 53 funciones | 18-20 páginas | 21 |
Detalle GAP-FE-04 (Portfolio):
Páginas a crear:
├── CategoriesPage.tsx → useCategories(), useCategoryTree()
├── CategoryDetailPage.tsx → useCategory(id), useCreateCategory(), etc.
├── ProductsPage.tsx → useProducts(), filters
├── ProductDetailPage.tsx → useProduct(id), variants, prices
├── ProductFormPage.tsx → useCreateProduct(), useUpdateProduct()
└── (Opcional) PricesPage.tsx → useProductPrices()
Detalle GAP-FE-05 (MLM):
Páginas a crear:
├── MLMDashboardPage.tsx → Métricas, resumen de red
├── StructuresPage.tsx → useStructures(), crear/editar
├── StructureDetailPage.tsx → useStructure(id), visualización árbol
├── NodesPage.tsx → useNodes(), grid con filtros
├── NodeDetailPage.tsx → useNode(id), downlines, comisiones
├── RanksPage.tsx → useRanks(), requisitos por nivel
└── MyNetworkPage.tsx → useMyNetwork(), árbol personal
Detalle GAP-FE-06 (Goals):
Páginas a crear:
├── GoalsDashboardPage.tsx → KPIs, progreso general
├── DefinitionsPage.tsx → useGoalDefinitions(), CRUD
├── DefinitionDetailPage.tsx → useGoalDefinition(id), assignments
├── AssignmentsPage.tsx → useGoalAssignments(), filtros
├── AssignmentDetailPage.tsx → useGoalAssignment(id), progress logs
├── MyGoalsPage.tsx → useMyGoals(), metas personales
└── ReportsPage.tsx → useGoalReports(), exportación
2.3 P2 - Medios (Mejoras de Calidad)
| ID | Gap | Descripción | Archivos Afectados | SP |
|---|---|---|---|---|
| GAP-FE-07 | Documentación páginas | 11 páginas sin spec | docs/05-frontend/ | 3 |
| GAP-FE-08 | WCAG 2.1 AA | 67% → 90% | ~20 componentes | 5 |
| GAP-FE-09 | Tests unitarios | Cobertura <50% | tests/ | 5 |
| GAP-FE-10 | usePortfolio dead code | 21 funciones sin uso | hooks/usePortfolio.ts | 1 |
| Total P2 | 14 |
Detalle GAP-FE-08 (Accesibilidad):
| Aspecto | Estado Actual | Objetivo | Acción |
|---|---|---|---|
| Semantic HTML | 70% | 95% | Reemplazar div→button, etc. |
| ARIA labels | 60% | 90% | Agregar aria-label en iconos |
| Keyboard nav | 75% | 95% | Focus management en modales |
| Color contrast | 80% | 100% | Ajustar colores Tailwind |
| Focus visible | 65% | 100% | Agregar focus:ring en todos |
2.4 P3 - Bajos (Limpieza)
| ID | Gap | Descripción | Acción | SP |
|---|---|---|---|---|
| GAP-FE-11 | Docs obsoletos | 57 archivos | Purgar _archive/ | 1 |
| GAP-FE-12 | Specs desactualizadas | FRONTEND-*.md | Actualizar | 2 |
| Total P3 | 3 |
3. ANÁLISIS DE COMPONENTES
3.1 Componentes Existentes vs Requeridos
| Categoría | Existentes | Requeridos | Gap |
|---|---|---|---|
| Auth | 1 (OAuthButtons) | 1 | 0 |
| AI | 3 | 3 | 0 |
| Analytics | 2 | 4 | 2 |
| Audit | 4 | 6 | 2 |
| Common | 2 | 5 | 3 |
| Feature Flags | 3 | 3 | 0 |
| Notifications | 5 | 7 | 2 |
| Storage | 4 | 4 | 0 |
| Webhooks | 3 | 3 | 0 |
| 1 | 1 | 0 | |
| MLM | 0 | 8 | 8 |
| Goals | 0 | 6 | 6 |
| Portfolio | 0 | 7 | 7 |
| RBAC | 0 | 5 | 5 |
| Total | 28 | 62 | 34 |
3.2 Componentes Faltantes Detallados
MLM (8 componentes):
- StructureCard
- StructureForm
- NetworkTree (visualización árbol)
- NodeCard
- RankBadge
- CommissionsSummary
- DownlineList
- MLMDashboardStats
Goals (6 componentes):
- GoalCard
- GoalForm
- ProgressBar (custom con milestones)
- GoalAssignmentCard
- ProgressLogList
- GoalsKPIGrid
Portfolio (7 componentes):
- CategoryTree
- CategoryForm
- ProductCard
- ProductForm
- VariantList
- PriceTable
- ProductFilters
RBAC (5 componentes):
- RoleCard
- RoleForm
- PermissionsMatrix
- UserRoleAssignment
- RolePermissionsEditor
4. ANÁLISIS DE RUTAS
4.1 Rutas Actuales (45)
| Área | Rutas | Estado |
|---|---|---|
| /auth/* | 4 | OK |
| /dashboard | 1 | OK |
| /dashboard/sales/* | 6 | OK |
| /dashboard/commissions/* | 5 | OK |
| /dashboard/mlm/* | 7 | DEFINIDAS, SIN PÁGINA |
| /dashboard/goals/* | 6 | DEFINIDAS, SIN PÁGINA |
| /dashboard/rbac/* | 1 | PARCIAL |
| /dashboard/notifications | 1 | OK |
| /dashboard/* (otros) | 11 | OK |
| /superadmin/* | 4 | OK |
| /onboarding | 1 | OK |
4.2 Rutas a Agregar
| Ruta | Página | Prioridad |
|---|---|---|
| /dashboard/rbac/roles | RolesPage | P0 |
| /dashboard/rbac/permissions | PermissionsPage | P0 |
| /dashboard/notifications/templates | TemplatesPage | P0 |
| /dashboard/portfolio | PortfolioPage | P1 |
| /dashboard/portfolio/categories | CategoriesPage | P1 |
| /dashboard/portfolio/products | ProductsPage | P1 |
| /dashboard/portfolio/products/:id | ProductDetailPage | P1 |
Nota: Las rutas MLM y Goals ya están definidas en router pero apuntan a páginas vacías o inexistentes.
5. ANÁLISIS DE FLUJOS UX
5.1 Flujos Completos
| Flujo | Páginas | Estado |
|---|---|---|
| Login → Dashboard | 3 | OK |
| Register → Onboarding → Dashboard | 6 | OK |
| Sales: Lead → Opportunity → Close | 4 | OK |
| Billing: Subscribe → Manage → Cancel | 3 | OK |
| Users: Invite → Accept → Profile | 4 | OK |
5.2 Flujos Incompletos
| Flujo | Páginas Existentes | Faltantes | Impacto |
|---|---|---|---|
| MLM: Structure → Nodes → Commissions | 0 | 5 | ALTO |
| Goals: Define → Assign → Track → Report | 0 | 4 | ALTO |
| Portfolio: Category → Product → Variant → Price | 0 | 4 | MEDIO |
| RBAC: Role → Permissions → Assign to User | 0 | 3 | CRÍTICO |
| Audit: Search → Filter → Export | 1 | 2 | MEDIO |
5.3 User Stories No Implementadas
| ID | Historia | Módulo | Prioridad |
|---|---|---|---|
| US-MLM-01 | Como admin, quiero ver la estructura de red para entender la organización | MLM | P1 |
| US-MLM-02 | Como usuario, quiero ver mi árbol de referidos para tracking | MLM | P1 |
| US-GOALS-01 | Como manager, quiero crear objetivos para mi equipo | Goals | P1 |
| US-GOALS-02 | Como empleado, quiero ver mi progreso en mis metas | Goals | P1 |
| US-PORT-01 | Como admin, quiero gestionar el catálogo de productos | Portfolio | P1 |
| US-RBAC-01 | Como admin, quiero asignar roles a usuarios | RBAC | P0 |
6. ANÁLISIS DE DEPENDENCIAS
6.1 Dependencias Internas (Frontend)
┌─────────────────────────────────────────────────────┐
│ DEPENDENCIAS │
├─────────────────────────────────────────────────────┤
│ MLM Pages │
│ ├── useMlm hook (✓ EXISTE) │
│ ├── DashboardLayout (✓ EXISTE) │
│ ├── NetworkTree component (✗ CREAR) │
│ └── router/index.tsx (✓ RUTAS DEFINIDAS) │
│ │
│ Goals Pages │
│ ├── useGoals hook (✓ EXISTE) │
│ ├── DashboardLayout (✓ EXISTE) │
│ ├── ProgressBar component (✗ CREAR) │
│ └── router/index.tsx (✓ RUTAS DEFINIDAS) │
│ │
│ Portfolio Pages │
│ ├── usePortfolio hook (✓ EXISTE) │
│ ├── DashboardLayout (✓ EXISTE) │
│ ├── CategoryTree component (✗ CREAR) │
│ └── router/index.tsx (✗ AGREGAR RUTAS) │
│ │
│ RBAC Pages │
│ ├── useRbac hook (✗ CREAR) │
│ ├── DashboardLayout (✓ EXISTE) │
│ ├── PermissionsMatrix component (✗ CREAR) │
│ └── router/index.tsx (✗ AGREGAR RUTAS) │
└─────────────────────────────────────────────────────┘
6.2 Orden de Implementación Sugerido
1. [P0] RBAC API + Hook + Pages → Desbloquea gestión de permisos
↓
2. [P0] Audit completar → Desbloquea auditoría avanzada
↓
3. [P0] Notifications completar → Desbloquea configuración notif.
↓
4. [P1] Portfolio Pages → Desbloquea catálogo (usa en Sales)
↓
5. [P1] Goals Pages → Desbloquea metas (independiente)
↓
6. [P1] MLM Pages → Desbloquea MLM (usa Portfolio, Commissions)
↓
7. [P2] Accesibilidad → Mejora UX general
↓
8. [P2] Tests → Aumenta confiabilidad
↓
9. [P3] Documentación + Purga → Limpieza final
7. MÉTRICAS DEL ANÁLISIS
| Métrica | Valor |
|---|---|
| Gaps totales identificados | 12 |
| Gaps P0 (críticos) | 3 |
| Gaps P1 (altos) | 3 |
| Gaps P2 (medios) | 4 |
| Gaps P3 (bajos) | 2 |
| Páginas faltantes | 20-24 |
| Componentes faltantes | 34 |
| Rutas a agregar | 7 |
| SP total estimado | 49 |
| User stories sin implementar | 6 |
8. CONCLUSIONES DEL ANÁLISIS
Fortalezas
- Stack tecnológico moderno y bien configurado
- Hooks API completos para todos los módulos (53+ funciones)
- Módulos core funcionando correctamente
- Buena estructura de carpetas feature-based
- Testing E2E con Playwright establecido
Debilidades
- 4 módulos sin UI (MLM, Goals, Portfolio, RBAC)
- Coherencia Backend→Frontend al 58%
- Documentación frontend desactualizada
- Accesibilidad parcial (67%)
- Tests unitarios frontend escasos
Oportunidades
- Hooks existentes permiten implementación rápida de UI
- Componentes base reutilizables disponibles
- Patrones establecidos en módulos existentes (Sales, Commissions)
- Subagentes pueden paralelizar implementación
Riesgos
- Módulos MLM y Goals tienen lógica de negocio compleja
- Componente NetworkTree (árbol) requiere diseño específico
- Falta de tests puede introducir regresiones
- Documentación desactualizada puede causar confusión
Generado: 2026-02-03 | Agente: Claude Opus 4.5 | Metodología: CAPVED