- Laravel 11 backend with API REST - React 18 + TypeScript + Vite frontend - Multi-parser architecture for accounting systems (CONTPAQi, Aspel, SAP) - 27+ financial metrics calculation - PDF report generation with Browsershot - Complete documentation (10 documents) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
356 lines
8.3 KiB
Markdown
356 lines
8.3 KiB
Markdown
# Horux Strategy Platform - Plan de Implementación
|
|
|
|
**Fecha:** 2025-01-31
|
|
**Documento de diseño:** 2025-01-31-horux-strategy-design.md
|
|
|
|
---
|
|
|
|
## Fases de Implementación
|
|
|
|
### FASE 1: Fundamentos (Backend)
|
|
|
|
#### 1.1 Configuración del proyecto Laravel
|
|
- [ ] Crear proyecto Laravel 11
|
|
- [ ] Configurar base de datos (MySQL/PostgreSQL)
|
|
- [ ] Instalar y configurar Laravel Sanctum
|
|
- [ ] Configurar CORS para React
|
|
|
|
#### 1.2 Migraciones de base de datos
|
|
- [ ] Tabla `users` (con campo role)
|
|
- [ ] Tabla `clientes`
|
|
- [ ] Tabla `giros`
|
|
- [ ] Tabla `permisos_empleado`
|
|
- [ ] Tabla `reportes_contables`
|
|
- [ ] Tabla `categorias_contables`
|
|
- [ ] Tabla `umbrales`
|
|
- [ ] Tabla `balanzas`
|
|
- [ ] Tabla `cuentas`
|
|
- [ ] Tabla `reglas_mapeo`
|
|
- [ ] Tabla `mapeo_cuentas`
|
|
- [ ] Tabla `reportes`
|
|
- [ ] Seeders para catálogos iniciales (giros, categorías, reglas CONTPAQi)
|
|
|
|
#### 1.3 Modelos y relaciones
|
|
- [ ] User (con roles)
|
|
- [ ] Cliente
|
|
- [ ] Giro
|
|
- [ ] PermisoEmpleado
|
|
- [ ] Umbral
|
|
- [ ] Balanza
|
|
- [ ] Cuenta
|
|
- [ ] ReglaMappeo
|
|
- [ ] Reporte
|
|
|
|
#### 1.4 Sistema de autenticación
|
|
- [ ] Login / Logout
|
|
- [ ] Registro (solo admin puede crear usuarios)
|
|
- [ ] Middleware por rol
|
|
- [ ] Policies para autorización
|
|
|
|
---
|
|
|
|
### FASE 2: Parser de Balanzas
|
|
|
|
#### 2.1 Arquitectura de parsers
|
|
- [ ] Crear `ParserInterface.php`
|
|
- [ ] Crear `DetectorFormato.php`
|
|
- [ ] Implementar `ContpaqiParser.php`
|
|
- [ ] Crear `ParserGenerico.php` (CSV/Excel)
|
|
|
|
#### 2.2 Procesamiento de archivos
|
|
- [ ] Endpoint para upload de archivos
|
|
- [ ] Extracción de texto de PDF
|
|
- [ ] Parsing de estructura CONTPAQi
|
|
- [ ] Normalización a formato interno
|
|
- [ ] Almacenamiento en tabla `cuentas`
|
|
|
|
#### 2.3 Clasificación automática
|
|
- [ ] Crear `ClasificadorCuentas.php`
|
|
- [ ] Aplicar reglas de mapeo
|
|
- [ ] Detectar anomalías
|
|
- [ ] Marcar cuentas que requieren revisión
|
|
|
|
---
|
|
|
|
### FASE 3: Motor de Cálculo
|
|
|
|
#### 3.1 Calculador de estados financieros
|
|
- [ ] Crear `CalculadorMetricas.php`
|
|
- [ ] Calcular Balance General
|
|
- [ ] Calcular Estado de Resultados
|
|
- [ ] Calcular Flujo de Efectivo (método indirecto)
|
|
|
|
#### 3.2 Cálculo de métricas
|
|
- [ ] Métricas de márgenes (7 métricas)
|
|
- [ ] Métricas de retorno (4 métricas)
|
|
- [ ] Métricas de eficiencia (6 métricas)
|
|
- [ ] Métricas de liquidez (3 métricas)
|
|
- [ ] Métricas de solvencia (3 métricas)
|
|
- [ ] Métricas de gestión (4 métricas)
|
|
|
|
#### 3.3 Comparativos
|
|
- [ ] Calcular promedio 3 periodos
|
|
- [ ] Comparar con periodo anterior
|
|
- [ ] Comparar con año anterior
|
|
- [ ] Calcular variaciones
|
|
- [ ] Determinar tendencia según umbrales
|
|
|
|
---
|
|
|
|
### FASE 4: API REST
|
|
|
|
#### 4.1 Endpoints de autenticación
|
|
- [ ] POST /api/login
|
|
- [ ] POST /api/logout
|
|
- [ ] GET /api/user
|
|
|
|
#### 4.2 Endpoints de clientes
|
|
- [ ] GET /api/clientes
|
|
- [ ] POST /api/clientes
|
|
- [ ] GET /api/clientes/{id}
|
|
- [ ] PUT /api/clientes/{id}
|
|
- [ ] DELETE /api/clientes/{id}
|
|
|
|
#### 4.3 Endpoints de balanzas
|
|
- [ ] POST /api/clientes/{id}/balanzas (upload)
|
|
- [ ] GET /api/clientes/{id}/balanzas
|
|
- [ ] GET /api/balanzas/{id}/cuentas
|
|
- [ ] PUT /api/balanzas/{id}/cuentas (actualizar exclusiones)
|
|
- [ ] PUT /api/cuentas/{id}/clasificacion (corregir anomalía)
|
|
|
|
#### 4.4 Endpoints de reportes
|
|
- [ ] POST /api/clientes/{id}/reportes (generar)
|
|
- [ ] GET /api/clientes/{id}/reportes
|
|
- [ ] GET /api/reportes/{id}
|
|
- [ ] GET /api/reportes/{id}/pdf
|
|
|
|
#### 4.5 Endpoints administrativos
|
|
- [ ] CRUD /api/admin/usuarios
|
|
- [ ] CRUD /api/admin/giros
|
|
- [ ] CRUD /api/admin/umbrales
|
|
- [ ] CRUD /api/admin/reglas-mapeo
|
|
|
|
---
|
|
|
|
### FASE 5: Frontend - Fundamentos
|
|
|
|
#### 5.1 Configuración del proyecto React
|
|
- [ ] Crear proyecto con Vite + TypeScript
|
|
- [ ] Configurar React Router
|
|
- [ ] Configurar Axios para API
|
|
- [ ] Configurar Recharts
|
|
- [ ] Configurar Tailwind CSS
|
|
|
|
#### 5.2 Autenticación
|
|
- [ ] Página de Login
|
|
- [ ] Context de autenticación
|
|
- [ ] Rutas protegidas por rol
|
|
- [ ] Interceptor para tokens
|
|
|
|
#### 5.3 Layout base
|
|
- [ ] Sidebar de navegación
|
|
- [ ] Header con usuario
|
|
- [ ] Layout para admin
|
|
- [ ] Layout para cliente
|
|
|
|
---
|
|
|
|
### FASE 6: Frontend - Flujo Principal
|
|
|
|
#### 6.1 Gestión de clientes
|
|
- [ ] Lista de clientes
|
|
- [ ] Formulario crear/editar cliente
|
|
- [ ] Subida de logo
|
|
|
|
#### 6.2 Subida de balanzas
|
|
- [ ] Componente de upload (drag & drop)
|
|
- [ ] Preview de archivos
|
|
- [ ] Indicador de progreso
|
|
- [ ] Detección de sistema origen
|
|
|
|
#### 6.3 Revisión y limpieza
|
|
- [ ] Vista de anomalías con corrección
|
|
- [ ] Lista de cuentas con checkboxes
|
|
- [ ] Filtros y búsqueda
|
|
- [ ] Guardar exclusiones
|
|
|
|
---
|
|
|
|
### FASE 7: Frontend - Dashboard
|
|
|
|
#### 7.1 Componentes de gráficas
|
|
- [ ] BarChart
|
|
- [ ] LineChart
|
|
- [ ] StackedBarChart
|
|
- [ ] WaterfallChart
|
|
- [ ] ComboChart
|
|
|
|
#### 7.2 Componentes de cards
|
|
- [ ] KPICard (con semáforo)
|
|
- [ ] InsightCard
|
|
- [ ] MetricTable
|
|
|
|
#### 7.3 Secciones del dashboard
|
|
- [ ] Mensajes Destacados
|
|
- [ ] Resumen Mensual
|
|
- [ ] Resumen 12m
|
|
- [ ] Márgenes
|
|
- [ ] Márgenes Deep Dive
|
|
- [ ] Resultados
|
|
- [ ] Balance
|
|
- [ ] Capital de Trabajo
|
|
- [ ] Flujo de Efectivo
|
|
- [ ] Métricas
|
|
- [ ] Indicadores
|
|
- [ ] Negocios
|
|
- [ ] Estados Financieros
|
|
|
|
---
|
|
|
|
### FASE 8: Generación de PDF
|
|
|
|
#### 8.1 Backend
|
|
- [ ] Instalar Browsershot
|
|
- [ ] Crear `GeneradorPdf.php`
|
|
- [ ] Endpoint GET /api/reportes/{id}/pdf
|
|
|
|
#### 8.2 Frontend
|
|
- [ ] Vista `PdfView` con todas las páginas
|
|
- [ ] Estilos específicos para impresión
|
|
- [ ] Separadores de sección
|
|
- [ ] Portada y contraportada
|
|
|
|
---
|
|
|
|
### FASE 9: Panel Administrativo
|
|
|
|
#### 9.1 Dashboard admin
|
|
- [ ] Estadísticas generales
|
|
- [ ] Alertas pendientes
|
|
|
|
#### 9.2 Gestión de usuarios
|
|
- [ ] CRUD de usuarios
|
|
- [ ] Asignación de roles
|
|
|
|
#### 9.3 Configuración
|
|
- [ ] Editor de umbrales
|
|
- [ ] Editor de reglas de mapeo
|
|
- [ ] Editor de giros
|
|
|
|
---
|
|
|
|
### FASE 10: Funcionalidades de Cliente
|
|
|
|
#### 10.1 Gestión de empleados
|
|
- [ ] Lista de empleados
|
|
- [ ] Crear empleado
|
|
- [ ] Configurar permisos
|
|
|
|
#### 10.2 Configuración
|
|
- [ ] Exclusiones guardadas
|
|
- [ ] Preferencias de reporte
|
|
|
|
---
|
|
|
|
### FASE 11: Testing y Refinamiento
|
|
|
|
#### 11.1 Testing
|
|
- [ ] Tests unitarios del motor de cálculo
|
|
- [ ] Tests de parsers
|
|
- [ ] Tests de API
|
|
- [ ] Tests E2E del flujo principal
|
|
|
|
#### 11.2 Refinamiento
|
|
- [ ] Optimización de rendimiento
|
|
- [ ] Manejo de errores
|
|
- [ ] Validaciones
|
|
- [ ] UX/UI polish
|
|
|
|
---
|
|
|
|
## Prioridad de Implementación
|
|
|
|
1. **MVP (Fases 1-4, 5-7):** Sistema funcional con CONTPAQi, dashboard básico
|
|
2. **PDF (Fase 8):** Exportación de reportes
|
|
3. **Admin (Fase 9):** Panel de configuración
|
|
4. **Multi-usuario (Fase 10):** Funcionalidades de cliente
|
|
5. **Calidad (Fase 11):** Testing y refinamiento
|
|
|
|
---
|
|
|
|
## Archivos Clave a Crear
|
|
|
|
### Backend (Laravel)
|
|
|
|
```
|
|
app/
|
|
├── Http/Controllers/
|
|
│ ├── AuthController.php
|
|
│ ├── ClienteController.php
|
|
│ ├── BalanzaController.php
|
|
│ ├── CuentaController.php
|
|
│ ├── ReporteController.php
|
|
│ └── Admin/
|
|
│ ├── UsuarioController.php
|
|
│ ├── UmbralController.php
|
|
│ └── ReglaMappeoController.php
|
|
├── Models/
|
|
│ ├── User.php
|
|
│ ├── Cliente.php
|
|
│ ├── Balanza.php
|
|
│ ├── Cuenta.php
|
|
│ ├── Reporte.php
|
|
│ └── ...
|
|
├── Services/
|
|
│ ├── Parsers/
|
|
│ │ ├── ParserInterface.php
|
|
│ │ ├── ContpaqiParser.php
|
|
│ │ └── DetectorFormato.php
|
|
│ ├── ClasificadorCuentas.php
|
|
│ ├── CalculadorMetricas.php
|
|
│ └── GeneradorPdf.php
|
|
└── ...
|
|
```
|
|
|
|
### Frontend (React)
|
|
|
|
```
|
|
src/
|
|
├── components/
|
|
│ ├── charts/
|
|
│ │ ├── BarChart.tsx
|
|
│ │ ├── LineChart.tsx
|
|
│ │ ├── StackedBarChart.tsx
|
|
│ │ ├── WaterfallChart.tsx
|
|
│ │ └── ComboChart.tsx
|
|
│ ├── cards/
|
|
│ │ ├── KPICard.tsx
|
|
│ │ └── InsightCard.tsx
|
|
│ ├── forms/
|
|
│ │ ├── ClienteForm.tsx
|
|
│ │ └── UploadBalanza.tsx
|
|
│ └── layout/
|
|
│ ├── Sidebar.tsx
|
|
│ └── Header.tsx
|
|
├── pages/
|
|
│ ├── Login.tsx
|
|
│ ├── Dashboard/
|
|
│ │ ├── index.tsx
|
|
│ │ ├── Resumen.tsx
|
|
│ │ ├── Margenes.tsx
|
|
│ │ └── ...
|
|
│ ├── Admin/
|
|
│ │ ├── Usuarios.tsx
|
|
│ │ └── Umbrales.tsx
|
|
│ └── PdfView/
|
|
│ └── index.tsx
|
|
├── hooks/
|
|
│ ├── useAuth.ts
|
|
│ ├── useCliente.ts
|
|
│ └── useReporte.ts
|
|
├── services/
|
|
│ └── api.ts
|
|
└── types/
|
|
└── index.ts
|
|
```
|