10 KiB
ROADMAP DE DISEÑO DE BASE DE DATOS
Objetivo: Crear DDL completo para 9 schemas del ERP Genérico Fecha Inicio: 2025-11-24 Meta: Completar DDL de todos los schemas antes de implementación backend
Estado Actual
| Schema | Tablas | DDL | Índices | Functions | Triggers | RLS | Seeds | Estado |
|---|---|---|---|---|---|---|---|---|
| auth | 10 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | COMPLETADO |
| core | 12 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| financial | 15 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| inventory | 10 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| purchase | 8 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| sales | 10 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| analytics | 6 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| projects | 8 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
| system | 10 | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ | PENDIENTE |
Total: 1/9 schemas completados (11%)
Schemas Completados
✅ auth (Completado 2025-11-24)
Tablas: 10
- tenants
- companies
- users
- roles
- permissions
- user_roles
- role_permissions
- sessions
- user_companies
- password_resets
Características:
- ✅ ENUMs definidos (user_status, tenant_status, session_status, permission_action)
- ✅ Funciones de contexto (get_current_tenant_id, get_current_user_id, get_current_company_id)
- ✅ Función de autorización (user_has_permission)
- ✅ Triggers para updated_at
- ✅ Trigger de validación (al menos 1 admin por tenant)
- ✅ RLS policies para tenant isolation
- ✅ Índices en campos clave
- ✅ Vistas útiles (user_permissions_view, active_sessions_view)
- ✅ Seed data (50+ permisos estándar)
Archivos:
/schemas/auth-schema-ddl.sql(completado)
Próximos Schemas a Implementar
1. Schema: core (PRIORIDAD ALTA)
Propósito: Datos maestros (partners, currencies, countries, UoM) Módulos: MGN-002 (Empresas), MGN-003 (Catálogos) Dependencias: auth (companies, tenants)
Tablas Estimadas: 12
- partners
- partner_addresses
- currencies
- currency_rates
- countries
- states
- cities (opcional)
- uom_categories
- uoms
- product_categories
- payment_terms
- fiscal_positions (opcional)
Características Requeridas:
- Jerarquía de partners (parent_id)
- Flags: is_customer, is_supplier, is_employee
- Conversión automática entre UoMs de misma categoría
- Tasas de cambio con vigencia temporal
- Seed data: países (ISO 3166-1), monedas (ISO 4217), UoMs estándar
Estimación: 2-3 días
2. Schema: financial (PRIORIDAD ALTA)
Propósito: Contabilidad general Módulos: MGN-004 (Financiero Básico) Dependencias: core (partners, currencies), auth (companies)
Tablas Estimadas: 15
- accounts (plan de cuentas)
- journals
- journal_entries
- journal_lines
- invoices
- invoice_lines
- invoice_taxes
- payments
- payment_invoice (many-to-many)
- taxes
- bank_accounts
- reconciliation_lines (opcional)
- fiscal_years
- account_types
- account_templates
Características Requeridas:
- Validación: SUM(debit) = SUM(credit)
- Generación automática de asientos desde transacciones
- Multi-moneda con conversión automática
- Estado immutable (posted journal entries)
- Seed data: plan de cuentas México/USA, impuestos estándar
Estimación: 4-5 días
3. Schema: inventory (PRIORIDAD MEDIA)
Propósito: Gestión de inventario Módulos: MGN-005 (Inventario Básico) Dependencias: core (products, UoMs), auth (companies)
Tablas Estimadas: 10
- products
- product_variants (opcional)
- warehouses
- locations
- stock_quants
- stock_moves
- pickings
- lots
- serial_numbers
- valuation_layers
Características Requeridas:
- Actualización automática de stock_quants desde stock_moves
- Trazabilidad completa (lotes/series)
- Valoración FIFO/LIFO/Average
- Ubicaciones jerárquicas
- Seed data: UoMs de inventario, tipos de ubicación
Estimación: 3-4 días
4. Schema: purchase (PRIORIDAD MEDIA)
Propósito: Gestión de compras Módulos: MGN-006 (Compras Básico) Dependencias: core (partners), inventory (products)
Tablas Estimadas: 8
- purchase_orders
- purchase_order_lines
- purchase_requisitions (opcional)
- rfqs (Request for Quotation)
- rfq_lines
- purchase_agreements (opcional)
- supplier_pricelists
- supplier_pricelist_items
Características Requeridas:
- Workflow: draft → confirmed → received → billed
- Generación automática de picking al confirmar
- 3-way match (PO vs Receipt vs Invoice)
- Aprobaciones con umbrales
- Seed data: términos de pago estándar
Estimación: 2-3 días
5. Schema: sales (PRIORIDAD MEDIA)
Propósito: Gestión de ventas Módulos: MGN-007 (Ventas Básico) Dependencias: core (partners), inventory (products)
Tablas Estimadas: 10
- sale_orders
- sale_order_lines
- quotations
- quotation_signatures
- pricelists
- pricelist_items
- discounts (opcional)
- sales_teams
- down_payments (opcional)
- sale_order_templates (opcional)
Características Requeridas:
- Workflow: quotation → sale → delivery → invoice
- Firma electrónica de cotizaciones
- Generación automática de picking al confirmar
- Control de cantidades entregadas/facturadas
- Seed data: pricelists estándar, términos de venta
Estimación: 3 días
6. Schema: analytics (PRIORIDAD MEDIA)
Propósito: Contabilidad analítica Módulos: MGN-008 (Contabilidad Analítica) Dependencias: core, financial, purchase, sales
Tablas Estimadas: 6
- analytic_accounts
- analytic_lines
- analytic_distributions
- analytic_tags
- analytic_tag_lines (many-to-many)
- analytic_plans (opcional)
Características Requeridas:
- Generación automática de líneas desde transacciones
- Distribución analítica multi-cuenta (%)
- Tags multi-dimensionales
- Jerarquía de cuentas analíticas
- Integración con projects (1-1)
Estimación: 2 días
7. Schema: projects (PRIORIDAD MEDIA)
Propósito: Gestión de proyectos Módulos: MGN-011 (Proyectos Genéricos) Dependencias: core (partners), analytics (analytic_accounts)
Tablas Estimadas: 8
- projects
- tasks
- task_dependencies
- stages
- milestones
- project_tags
- project_tag_tasks (many-to-many)
- timesheets (puede ir en HR)
Características Requeridas:
- Integración 1-1 con analytic_accounts
- Jerarquía de tareas (parent_id)
- Dependencias entre tareas (finish_to_start, etc.)
- Kanban stages configurables
- Timesheet vinculado a tareas
Estimación: 2-3 días
8. Schema: system (PRIORIDAD BAJA)
Propósito: Mensajería, notificaciones, logs Módulos: MGN-012 (Reportes), MGN-014 (Mensajería) Dependencias: Todos los schemas (genérico)
Tablas Estimadas: 10
- messages (chatter)
- message_subtypes
- followers
- notifications
- activities
- activity_types
- attachments
- email_templates
- tracking_values
- audit_logs
Características Requeridas:
- Chatter genérico (model + res_id)
- Notificaciones multi-canal (inbox, email, push)
- Tracking automático de cambios
- WebSocket para real-time
- Storage de attachments (S3 o filesystem)
Estimación: 3 días
Cronograma Estimado
| Schema | Días | Inicio | Fin |
|---|---|---|---|
| auth | - | 2025-11-24 | ✅ Completado |
| core | 3 | TBD | TBD |
| financial | 5 | TBD | TBD |
| inventory | 4 | TBD | TBD |
| purchase | 3 | TBD | TBD |
| sales | 3 | TBD | TBD |
| analytics | 2 | TBD | TBD |
| projects | 3 | TBD | TBD |
| system | 3 | TBD | TBD |
Total Estimado: 26 días de trabajo
Con 1 desarrollador a tiempo parcial: ~6-8 semanas
Orden de Implementación (Recomendado)
Sprint 1: Fundamentos (Semana 1-2)
- ✅ auth (completado)
- ⏳ core (partners, currencies, UoMs)
Sprint 2: Transaccionales Core (Semana 3-4)
- ⏳ financial (contabilidad general)
- ⏳ inventory (inventario básico)
Sprint 3: Compras y Ventas (Semana 5-6)
- ⏳ purchase (compras)
- ⏳ sales (ventas)
Sprint 4: Analítica y Proyectos (Semana 7)
- ⏳ analytics (analítica)
- ⏳ projects (proyectos)
Sprint 5: Sistema (Semana 8)
- ⏳ system (mensajería, notificaciones)
Próximos Pasos Inmediatos
-
Completar schema
core:- Crear DDL completo
- Seed data: países (ISO 3166-1), monedas (ISO 4217)
- Validar con modelos de dominio
-
Completar schema
financial:- Crear DDL completo
- Funciones: validar balance, generar asientos
- Seed data: plan de cuentas México
-
Generar Prisma Schema:
- Convertir DDL a schema.prisma
- O usar prisma db pull desde DDL
-
Crear Migrations:
- Setup Prisma migrations
- Crear migration inicial por schema
-
Testing:
- Scripts de test de integridad referencial
- Test de RLS policies
- Test de funciones y triggers
Recursos Necesarios
Desarrollador Backend
- Conocimiento PostgreSQL avanzado
- Experiencia con Prisma ORM
- Conocimiento de patrones ERP
Herramientas
- PostgreSQL 15+
- Prisma CLI
- pgAdmin o DBeaver
- Git para versionado de DDL
Referencias
- Modelos de dominio (../domain-models/)
- ADR-007 (Database Design)
- Documentación Odoo (para patrones)
Métricas de Progreso
Completado:
- Schemas: 1/9 (11%)
- Tablas: 10/89 (11%)
- DDL Lines: ~1000 / ~9000 (11%)
Meta para Fase 2:
- Completar al menos auth + core + financial (33%)
- Documentar todos los schemas restantes
- Crear plan detallado para implementación
Notas Importantes
Decisiones de Diseño
- UUID para PKs (mejor para distributed systems)
- Soft delete obligatorio (deleted_at)
- Auditoría obligatoria (created_at, created_by, updated_at, updated_by)
- RLS para tenant isolation
- JSONB para settings (flexibilidad)
Convenciones
- snake_case para todo
- Prefijo de schema en queries
- Sufijos estándar (_id, _at, _by)
Performance
- Índices en FKs
- Índices en campos de filtro frecuente
- Índices parciales (WHERE deleted_at IS NULL)
Última Actualización: 2025-11-24
Próxima Revisión: Al completar schema core