erp-core/docs/04-modelado/database-design/database-roadmap.md

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

  1. partners
  2. partner_addresses
  3. currencies
  4. currency_rates
  5. countries
  6. states
  7. cities (opcional)
  8. uom_categories
  9. uoms
  10. product_categories
  11. payment_terms
  12. 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

  1. accounts (plan de cuentas)
  2. journals
  3. journal_entries
  4. journal_lines
  5. invoices
  6. invoice_lines
  7. invoice_taxes
  8. payments
  9. payment_invoice (many-to-many)
  10. taxes
  11. bank_accounts
  12. reconciliation_lines (opcional)
  13. fiscal_years
  14. account_types
  15. 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

  1. products
  2. product_variants (opcional)
  3. warehouses
  4. locations
  5. stock_quants
  6. stock_moves
  7. pickings
  8. lots
  9. serial_numbers
  10. 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

  1. purchase_orders
  2. purchase_order_lines
  3. purchase_requisitions (opcional)
  4. rfqs (Request for Quotation)
  5. rfq_lines
  6. purchase_agreements (opcional)
  7. supplier_pricelists
  8. 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

  1. sale_orders
  2. sale_order_lines
  3. quotations
  4. quotation_signatures
  5. pricelists
  6. pricelist_items
  7. discounts (opcional)
  8. sales_teams
  9. down_payments (opcional)
  10. 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

  1. analytic_accounts
  2. analytic_lines
  3. analytic_distributions
  4. analytic_tags
  5. analytic_tag_lines (many-to-many)
  6. 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

  1. projects
  2. tasks
  3. task_dependencies
  4. stages
  5. milestones
  6. project_tags
  7. project_tag_tasks (many-to-many)
  8. 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

  1. messages (chatter)
  2. message_subtypes
  3. followers
  4. notifications
  5. activities
  6. activity_types
  7. attachments
  8. email_templates
  9. tracking_values
  10. 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)

  1. auth (completado)
  2. core (partners, currencies, UoMs)

Sprint 2: Transaccionales Core (Semana 3-4)

  1. financial (contabilidad general)
  2. inventory (inventario básico)

Sprint 3: Compras y Ventas (Semana 5-6)

  1. purchase (compras)
  2. sales (ventas)

Sprint 4: Analítica y Proyectos (Semana 7)

  1. analytics (analítica)
  2. projects (proyectos)

Sprint 5: Sistema (Semana 8)

  1. system (mensajería, notificaciones)

Próximos Pasos Inmediatos

  1. Completar schema core:

    • Crear DDL completo
    • Seed data: países (ISO 3166-1), monedas (ISO 4217)
    • Validar con modelos de dominio
  2. Completar schema financial:

    • Crear DDL completo
    • Funciones: validar balance, generar asientos
    • Seed data: plan de cuentas México
  3. Generar Prisma Schema:

    • Convertir DDL a schema.prisma
    • O usar prisma db pull desde DDL
  4. Crear Migrations:

    • Setup Prisma migrations
    • Crear migration inicial por schema
  5. 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