Documentación Técnica Completa - Sistema de Gestión de Estados Financieros
Resumen Ejecutivo
Sistema profesional de gestión de estados financieros multicompañía construido con tecnología moderna, diseñado para contadores, PYMES y firmas de accounting. Arquitectura escalable con capacidades de análisis avanzado, reporting profesional y seguridad enterprise-grade.
Arquitectura del Sistema
Stack Tecnológico Principal
- Frontend: React 18 + TypeScript + Vite
- Styling: Tailwind CSS + Headless UI
- Backend: Supabase (PostgreSQL + Realtime + Auth + Storage)
- Deployment: Netlify + Supabase Cloud
- Analytics: Plausible / PostHog (opcional)
- Monitoring: Sentry / LogRocket (opcional)
Diagrama de Arquitectura
Frontend Supabase Netlify
React + Vite PostgreSQL CDN + Edge
TypeScript Auth + RLS Functions
Tailwind CSS Realtime Analytics
Usuario Storage Monitoring
Browser S3 Bucket Logs + Errors
Estructura del Proyecto
Estadosfinancieros/
src/ # Código fuente principal
components/ # Componentes React reutilizables
contexts/ # Contextos de React (Auth, Theme, etc.)
hooks/ # Custom React Hooks
lib/ # Librerías y utilities
types/ # Definiciones TypeScript
utils/ # Funciones utilitarias
App.tsx # Componente principal
main.tsx # Punto de entrada
database/ # Scripts de base de datos
scripts/ # Scripts de automatización
public/ # Archivos estáticos
supabase/ # Configuración Supabase
docs/ # Documentación adicional
Esquema de Base de Datos Completo
Tablas Principales (29 Tablas)
1. Gestión de Usuarios y Autenticación
users- Usuarios del sistemauser_profiles- Perfiles extendidos de usuariosuser_sessions- Sesiones de usuariouser_companies- Relación usuarios-empresassecurity_policies- Políticas de seguridadsecurity_policy_history- Historial de políticas
2. Gestión de Empresas
companies- Empresas/clientescompany_settings- Configuración por empresafiscal_periods- Períodos fiscalescompany_financial_settings- Configuración financiera
3. Catálogos y Maestros
account_codes- Códigos de cuentas contablesaccount_code_mappings- Mapeos entre sistemastemplate_accounts- Plantillas de cuentascurrency_rates- Tasas de cambiocurrency_rate_history- Historial de tasas
4. Datos Financieros
financial_entries- Asientos contablesfinancial_entries_audit- Auditoría de asientosbalance_sheets- Balances de situaciónincome_statements- Estados de resultadoscash_flow_statements- Estados de flujo de efectivomanual_cash_flows- Flujos manualesfinancial_ratios- Ratios financierosfinancial_analysis- Análisis financiero
5. Reporting y Exportación
report_templates- Plantillas de reportesgenerated_reports- Reportes generadosexport_jobs- Trabajos de exportaciónexport_formats- Formatos de exportación
6. Integraciones ERP
erp_integrations- Conexiones a APIs de ERPs (Odoo, SAP, etc.)erp_import_profiles- Perfiles de mapeo para importaciones de archivos manualesexternal_mappings- Mapeos de códigos de cuentas externos
7. Sistema y Logs
audit_logs- Logs de auditoríasystem_settings- Configuración del sistemamigration_history- Historial de migraciones
Relaciones Clave
users1:Nuser_companiescompanies1:Nfinancial_entriesaccount_codes1:Nfinancial_entriesfiscal_periods1:Nfinancial_entries
Modelo de Seguridad
Row Level Security (RLS)
Todas las tablas tienen RLS habilitado con políticas específicas:
-- Ejemplo: Política para financial_entries
CREATE POLICY "Users can view own company entries"
ON financial_entries FOR SELECT
TO authenticated
USING (
company_id IN (
SELECT company_id FROM user_companies
WHERE user_id = auth.uid()
)
);
Políticas de Acceso
- Administradores: Acceso completo a todas las empresas
- Contadores: Acceso a empresas asignadas + todas las funcionalidades
- Usuarios Básicos: Acceso solo a su empresa + funcionalidades limitadas
- Solo Lectura: Usuarios con permisos de visualización únicamente
Encriptación y Protección
- Todos los secrets en variables de entorno
- JWT tokens con expiración corta
- Passwords hasheados con bcrypt
- SSL/TLS enforced en todas las conexiones
- Rate limiting en endpoints críticos
Configuración de Entornos
Variables de Entorno (.env.development)
# Supabase Configuration
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=example-anon-key
# App Configuration
VITE_APP_VERSION=1.0.0
VITE_ENVIRONMENT=development
VITE_DEBUG=true
# Feature Flags
VITE_ENABLE_ANALYTICS=false
VITE_ENABLE_PREMIUM_FEATURES=true
# External Services
VITE_BCV_API_URL=https://bcv-api.example.com
VITE_EXCHANGE_RATE_API_KEY=example-key-placeholder
Variables de Producción
# Production-specific
VITE_ENVIRONMENT=production
VITE_DEBUG=false
VITE_ENABLE_ANALYTICS=true
# Monitoring
VITE_SENTRY_DSN=your-sentry-dsn
VITE_LOGROCKET_ID=your-logrocket-id
Performance y Optimización
Optimizaciones de Base de Datos
- Índices Optimizados: Todos los campos de búsqueda y JOINs indexados
- Query Optimization: Consultas optimizadas con EXPLAIN ANALYZE
- Connection Pooling: Pool de conexiones configurado
- Caching Strategy: Cache de tasas de cambio y datos estáticos
Optimizaciones Frontend
- Code Splitting: Lazy loading de componentes
- Bundle Optimization: Tree shaking y minificación
- Image Optimization: WebP format + lazy loading
- CDN Deployment: Netlify CDN global
Métricas de Performance
- LCP (Largest Contentful Paint): <2.5s
- FID (First Input Delay): <100ms
- CLS (Cumulative Layout Shift): <0.1
- TTFB (Time to First Byte): <200ms
API e Integraciones
Supabase Client API
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
import.meta.env.VITE_SUPABASE_URL,
import.meta.env.VITE_SUPABASE_ANON_KEY
);
// Ejemplos de uso
const { data: entries } = await supabase
.from('financial_entries')
.select('*')
.eq('company_id', companyId);
Endpoints Principales
- Autenticación:
/auth/v1/* - Datos Financieros:
/rest/v1/financial_entries - Reportes:
/rest/v1/generated_reports - Empresas:
/rest/v1/companies - Usuarios:
/rest/v1/user_profiles
Webhooks y Integraciones
- Odoo ERP: Integración directa via JSON-RPC a través de Supabase Edge Functions.
- BCV Integration: Para tasas de cambio automáticas.
- Email Service: Para notificaciones y reportes.
- Calendar Integration: Para recordatorios fiscales.
Motor de Sincronización ERP (Odoo)
El sistema utiliza una arquitectura de Proxy para evitar problemas de CORS:
- Frontend: Solicita sincronización a la Edge Function
odoo-proxy. - Edge Function: Actúa como puente, autentica con Odoo y extrae
account.accountyaccount.move.line. - Mapeo Automático: Transforma los datos de Odoo (naturaleza, tipos) al esquema de HermesAI.
- Persistencia: Guarda los saldos finales en
financial_entries.
Perfiles de Importación Personalizados
El sistema permite a los usuarios definir perfiles de importación (mapeos) para archivos CSV/Excel de cualquier sistema contable que no esté soportado nativamente.
- Tabla:
erp_import_profiles - Funcionalidad: Los usuarios pueden crear un nuevo perfil especificando:
- Formato del archivo (CSV, Excel).
- Fila de encabezado y fila de inicio de datos.
- Mapeo de columnas (Columna "Cuenta" ->
account_code, Columna "Saldo" ->balance_amount, etc.). - Reglas de transformación numérica (separadores de miles/decimales).
- Alcance: Los perfiles pueden ser globales (predefinidos en código) o específicos por empresa (creados por el usuario).
Motor de Reporting
Plantillas de Reportes
-- Estructura de report_templates
CREATE TABLE report_templates (
id UUID PRIMARY KEY,
name VARCHAR(255),
description TEXT,
template_type VARCHAR(50), -- balance_sheet, income_statement, etc.
template_config JSONB, -- Configuración del reporte
is_public BOOLEAN DEFAULT false,
created_by UUID REFERENCES users(id),
created_at TIMESTAMPTZ DEFAULT NOW()
);
Formatos de Exportación
- PDF: Reportes profesionales con branding
- Excel: Datos crudos para análisis
- CSV: Importación/exportación simple
- JSON: Para integraciones API
- HTML: Reportes web interactivos
Módulos Avanzados de Análisis
Simulador de Escenarios
- Componente Principal:
ScenarioSimulator.tsx - Arquitectura: Procesamiento en el cliente (Client-side processing) para máxima interactividad.
- Motor de Cálculo: Proyecta estados financieros futuros aplicando tasas de variación (CAGR, inflación personalizada) sobre el dataset histórico base. Soporta múltiples escenarios (Base, Optimista, Pesimista) en paralelo.
- Visualización: Utiliza
rechartspara graficar curvas de tendencia comparativas en tiempo real.
Valoración de Empresas
- Componente Principal:
ValuationAnalysis.tsx - Algoritmos:
- DCF (Flujo de Caja Descontado): Cálculo automático del WACC y proyección de flujos de caja libre (FCF) a 5-10 años con valor terminal.
- Análisis de Sensibilidad: Matrices de impacto variando tasas de descuento y crecimiento.
- Datos: Se alimenta de los estados financieros históricos almacenados en
financial_entriespara generar las proyecciones base.
Evaluación de Seguros
- Componente Principal:
InsuranceAssessment.tsx - Lógica de Negocio: Motor de reglas que compara el valor en libros de los activos fijos e inventarios (ajustados por inflación si está configurado) contra las sumas aseguradas registradas.
- Detección de Riesgos:
- Infraseguro: Si
Valor Activo > (Suma Asegurada * Tolerancia). - Supraseguro: Si
Valor Activo < (Suma Asegurada * Tolerancia).
- Infraseguro: Si
- Integración: Cruza datos del módulo de activos fijos con el registro de pólizas de seguros.
Seguridad y Compliance
Normativas Cumplidas
- LGPD: Ley General de Protección de Datos (Brasil)
- GDPR: General Data Protection Regulation (EU)
- SOC 2: Security and Organization Controls
- ISO 27001: Information Security Management
Medidas de Seguridad
- Encriptación: AES-256 para datos en reposo
- Backups: Diarios + retención 30 días
- Auditoría: Logs completos de todas las acciones
- 2FA: Autenticación de dos factores opcional
- IP Whitelisting: Para acceso administrativo
© 2025 HermesAI Financial Systems. Todos los derechos reservados.
Documentación generada automáticamente el 22/12/2025.