# Vision General: ERP Core ## Resumen Ejecutivo ERP Core es la **base generica reutilizable** que proporciona el 60-70% del codigo compartido para todas las verticales del ERP Suite. Es una adaptacion de los patrones de Odoo al stack TypeScript/Node.js/React. --- ## Proposito ### Problema que Resuelve Desarrollar ERPs verticales desde cero es costoso y repetitivo. El 60-70% de la funcionalidad es comun: - Autenticacion y usuarios - Multi-tenancy - Catalogos maestros - Partners (clientes/proveedores) - Productos e inventario - Ventas y compras - Contabilidad basica ### Solucion ERP Core provee esta funcionalidad comun de forma: - **Modular:** Cada modulo es independiente - **Extensible:** Las verticales pueden extender sin modificar - **Multi-tenant:** Aislamiento por tenant desde el diseno - **Documentado:** Documentacion antes de desarrollo --- ## Objetivos ### Corto Plazo (3 meses) 1. Completar modulos core: Auth, Users, Roles, Tenants 2. Implementar Partners y Products 3. Establecer patrones de extension para verticales ### Mediano Plazo (6 meses) 1. Completar Sales, Purchases, Inventory 2. Implementar Financial basico 3. Primera vertical (Construccion) usando el core ### Largo Plazo (12 meses) 1. Todas las verticales usando el core 2. SaaS layer para autocontratacion 3. Marketplace de extensiones --- ## Arquitectura ### Modelo de Capas ``` ┌─────────────────────────────────────────────────────────────┐ │ FRONTEND │ │ React 18 + TypeScript + Tailwind + Zustand │ ├─────────────────────────────────────────────────────────────┤ │ API REST │ │ Express.js + TypeScript + Swagger │ ├─────────────────────────────────────────────────────────────┤ │ BACKEND │ │ Modulos: Auth | Users | Partners | Products | Sales... │ │ Services + Controllers + DTOs + Entities │ ├─────────────────────────────────────────────────────────────┤ │ DATABASE │ │ PostgreSQL 15+ con RLS (Row-Level Security) │ │ Schemas: core_auth | core_partners | core_products... │ └─────────────────────────────────────────────────────────────┘ ``` ### Modelo de Extension ``` ┌─────────────────────────────────────────────────────────────┐ │ ERP CORE │ │ Modulos Genericos (MGN-001 a MGN-015) │ │ 60-70% funcionalidad comun │ └────────────────────────┬────────────────────────────────────┘ │ EXTIENDE ┌────────────────┼────────────────┐ ↓ ↓ ↓ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ Construccion │ │Vidrio Templado│ │ Retail │ │ (MAI-*) │ │ (MVT-*) │ │ (MRT-*) │ │ 30-40% extra │ │ 30-40% extra │ │ 30-40% extra │ └───────────────┘ └───────────────┘ └───────────────┘ ``` --- ## Modulos Core (MGN-*) | Codigo | Modulo | Descripcion | Prioridad | Estado | |--------|--------|-------------|-----------|--------| | MGN-001 | auth | Autenticacion JWT, OAuth, sessions | P0 | En desarrollo | | MGN-002 | users | Gestion de usuarios CRUD | P0 | En desarrollo | | MGN-003 | roles | Roles y permisos (RBAC) | P0 | Planificado | | MGN-004 | tenants | Multi-tenancy, aislamiento | P0 | Planificado | | MGN-005 | catalogs | Catalogos maestros genericos | P1 | Planificado | | MGN-006 | settings | Configuracion del sistema | P1 | Planificado | | MGN-007 | audit | Auditoria y logs | P1 | Planificado | | MGN-008 | notifications | Sistema de notificaciones | P2 | Planificado | | MGN-009 | reports | Reportes genericos | P2 | Planificado | | MGN-010 | financial | Contabilidad basica | P1 | Planificado | | MGN-011 | inventory | Inventario basico | P1 | Planificado | | MGN-012 | purchasing | Compras basicas | P1 | Planificado | | MGN-013 | sales | Ventas basicas | P1 | Planificado | | MGN-014 | crm | CRM basico | P2 | Planificado | | MGN-015 | projects | Proyectos genericos | P2 | Planificado | --- ## Stack Tecnologico ### Backend | Tecnologia | Version | Proposito | |------------|---------|-----------| | Node.js | 20+ | Runtime | | Express.js | 4.x | Framework HTTP | | TypeScript | 5.3+ | Lenguaje | | TypeORM | 0.3.17 | ORM | | JWT + bcryptjs | - | Autenticacion | | Zod, class-validator | - | Validacion | | Swagger | 3.x | Documentacion API | | Jest | 29.x | Testing | ### Frontend | Tecnologia | Version | Proposito | |------------|---------|-----------| | React | 18.x | Framework UI | | Vite | 5.x | Build tool | | TypeScript | 5.3+ | Lenguaje | | Zustand | 4.x | State management | | Tailwind CSS | 4.x | Styling | | React Query | 5.x | Data fetching | | React Hook Form | 7.x | Formularios | ### Database | Tecnologia | Version | Proposito | |------------|---------|-----------| | PostgreSQL | 15+ | Motor BD | | RLS | - | Row-Level Security | | uuid-ossp | - | Generacion UUIDs | | pg_trgm | - | Busqueda fuzzy | --- ## Principios de Diseno ### 1. Multi-Tenancy First Toda tabla tiene `tenant_id`. Todo query filtra por tenant. ### 2. Documentation Driven Documentar antes de desarrollar. La documentacion es el contrato. ### 3. Extension over Modification Las verticales extienden, nunca modifican el core. ### 4. Patterns from Odoo Adaptar patrones probados de Odoo al stack TypeScript. ### 5. Single Source of Truth Un lugar para cada dato. Sincronizacion automatica. --- ## Entregables por Fase ### Fase 1: Foundation (Actual) - [ ] MGN-001 Auth completo - [ ] MGN-002 Users completo - [ ] MGN-003 Roles completo - [ ] MGN-004 Tenants completo - [ ] Documentacion de todos los modulos ### Fase 2: Core Business - [ ] MGN-005 Catalogs - [ ] MGN-010 Financial basico - [ ] MGN-011 Inventory - [ ] MGN-012 Purchasing - [ ] MGN-013 Sales ### Fase 3: Extended - [ ] MGN-006 Settings - [ ] MGN-007 Audit - [ ] MGN-008 Notifications - [ ] MGN-009 Reports - [ ] MGN-014 CRM - [ ] MGN-015 Projects --- ## Referencias | Recurso | Path | |---------|------| | Directivas | `orchestration/directivas/` | | Patrones Odoo | `orchestration/directivas/DIRECTIVA-PATRONES-ODOO.md` | | Templates | `orchestration/templates/` | | Catálogo central | `shared/catalog/` *(patrones reutilizables)* | --- ## Metricas de Exito | Metrica | Objetivo | |---------|----------| | Cobertura de tests | >80% | | Documentacion | 100% antes de desarrollo | | Reutilizacion en verticales | >60% | | Tiempo de setup nueva vertical | <1 semana | --- *Ultima actualizacion: Diciembre 2025*