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>
395 lines
14 KiB
Markdown
395 lines
14 KiB
Markdown
# 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% |
|
|
| WhatsApp | 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 |
|
|
| WhatsApp | 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*
|