workspace-v1/projects/erp-construccion/docs/97-adr/ADR-011-database-clean-load-strategy.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

127 lines
3.8 KiB
Markdown

# ADR-011: Estrategia de Base de Datos - Carga Limpia
**Estado:** Aceptado
**Fecha:** 2025-11-24
**Responsable:** Architecture-Analyst
**Proyecto:** ERP Construccion
## Contexto
El proyecto esta en fase de desarrollo activo donde la estructura de la base de datos evoluciona frecuentemente. Necesitamos una estrategia clara para gestionar cambios.
## Decision
**Adoptamos la estrategia de "Carga Limpia" (Clean Load) para la gestion de base de datos.**
### Principios
```
+-------------------------------------------------------------+
| SI - PERMITIDO |
+-------------------------------------------------------------+
| - Archivos DDL completos por schema (01-auth.sql, etc.) |
| - Scripts de seeds para datos iniciales |
| - Scripts de recreacion (drop + create) |
| - Un solo punto de verdad: los archivos DDL |
+-------------------------------------------------------------+
| NO - PROHIBIDO |
+-------------------------------------------------------------+
| - Archivos de migracion incremental (migrations) |
| - Archivos de fix o patch |
| - ALTER TABLE sin actualizar DDL |
| - Scripts numerados tipo migration_001_xxx.sql |
| - Hotfixes directos a la base de datos |
+-------------------------------------------------------------+
```
### Estructura de Archivos
```
apps/database/
+-- ddl/
| +-- 00-prerequisites.sql # Extensions, utilities
| +-- 01-auth.sql # Schema auth
| +-- 02-core.sql # Schema core
| +-- ...
| +-- 09-construction.sql # ESPECIFICO construccion
| +-- 10-infonavit.sql # ESPECIFICO INFONAVIT
| +-- 11-estimates.sql # ESPECIFICO estimaciones
+-- seeds/
| +-- dev/ # Seeds desarrollo
| +-- staging/ # Seeds staging
| +-- prod/ # Seeds produccion (minimos)
+-- scripts/
+-- create-database.sh
+-- reset-database.sh
+-- load-seeds.sh
```
### Flujo de Trabajo para Cambios
```
1. Editar archivo DDL correspondiente
Ejemplo: Agregar columna a proyectos
-> Editar: ddl/09-construction.sql
2. Actualizar documentacion
-> INVENTARIO-OBJETOS-BD.yml
-> Trazabilidad si aplica
3. Actualizar seeds si es necesario
-> seeds/dev/05-sample-data.sql
4. Ejecutar reset
-> ./scripts/reset-database.sh
5. Verificar que todo funciona
```
## Justificacion
### Alineacion con ERP Generico
- Misma estrategia de gestion de BD
- Facilita sincronizacion de schemas genericos
### Especifico para Construccion
- Schemas 09-11 especificos se manejan igual
- Seeds con datos de prueba de proyectos, lotes, etc.
## Consecuencias
### Positivas
- Simplicidad: Un comando recrea todo
- Reproducibilidad: Cualquier dev obtiene BD identica
- Sin deuda tecnica: No hay parches acumulados
### Negativas
- Perdida de datos locales: Cada reset borra datos
- Mitigacion: Seeds completos para desarrollo
## Transicion a Produccion
Cuando entre en produccion con datos reales:
1. CONGELAR version actual de DDL como "baseline v1.0"
2. CREAR nuevo ADR para estrategia de migracion
3. IMPLEMENTAR herramienta de migraciones (Prisma/Flyway)
## Directiva para Agentes
```
DIRECTIVA ADR-011 - CARGA LIMPIA DE BASE DE DATOS
Los agentes DEBEN:
- Editar archivos DDL existentes para cambios
- Usar reset-database.sh despues de cambios
- Actualizar inventarios y trazabilidad
- Mantener seeds actualizados
Los agentes NO DEBEN:
- Crear archivos de migracion
- Crear archivos de fix o patch
- Ejecutar ALTER TABLE directamente
- Crear scripts numerados incrementales
```
## Referencias
- [ERP Generico ADR-011](../../erp-generic/docs/adr/ADR-011-database-clean-load-strategy.md)