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
346 lines
8.3 KiB
Markdown
346 lines
8.3 KiB
Markdown
# Estandar de Nomenclatura de Schemas - ERP Suite
|
|
|
|
**Version:** 1.0.0
|
|
**Fecha:** 2025-12-08
|
|
**Autor:** Architecture Analyst Agent
|
|
**Estado:** APROBADO
|
|
|
|
---
|
|
|
|
## 1. Proposito
|
|
|
|
Este documento define la convencion de nomenclatura para schemas de base de datos en todo el ecosistema ERP-Suite, asegurando consistencia entre erp-core y todas las verticales.
|
|
|
|
---
|
|
|
|
## 2. Convencion General
|
|
|
|
### 2.1 Formato de Nombres
|
|
|
|
```
|
|
{prefijo}_{dominio}
|
|
```
|
|
|
|
| Componente | Descripcion | Ejemplo |
|
|
|------------|-------------|---------|
|
|
| prefijo | Identificador del proyecto (3 letras) | `erp`, `con`, `mec` |
|
|
| dominio | Area funcional | `auth`, `inventory`, `sales` |
|
|
|
|
### 2.2 Prefijos por Proyecto
|
|
|
|
| Proyecto | Prefijo | Descripcion |
|
|
|----------|---------|-------------|
|
|
| **erp-core** | `erp_` | Schemas del core compartido |
|
|
| **construccion** | `con_` | Vertical de construccion |
|
|
| **mecanicas-diesel** | `mec_` | Vertical de mecanicas |
|
|
| **clinicas** | `cli_` | Vertical de clinicas |
|
|
| **retail** | `ret_` | Vertical de retail/POS |
|
|
| **vidrio-templado** | `vit_` | Vertical de vidrio templado |
|
|
|
|
---
|
|
|
|
## 3. Schemas del ERP-Core
|
|
|
|
### 3.1 Schemas Base (Compartidos)
|
|
|
|
| Schema Actual | Schema Estandar | Descripcion |
|
|
|---------------|-----------------|-------------|
|
|
| `auth` | `erp_auth` | Autenticacion, sesiones |
|
|
| `core` | `erp_core` | Catalogos base, configuracion |
|
|
| `financial` | `erp_financial` | Contabilidad, diarios |
|
|
| `inventory` | `erp_inventory` | Productos, almacenes |
|
|
| `purchase` | `erp_purchase` | Ordenes de compra |
|
|
| `sales` | `erp_sales` | Cotizaciones, pedidos |
|
|
| `projects` | `erp_projects` | Proyectos, tareas |
|
|
| `system` | `erp_system` | Notificaciones, logs |
|
|
| `billing` | `erp_billing` | SaaS subscripciones |
|
|
| `crm` | `erp_crm` | Leads, oportunidades |
|
|
| `hr` | `erp_hr` | Recursos humanos |
|
|
| `analytics` | `erp_analytics` | Contabilidad analitica |
|
|
|
|
---
|
|
|
|
## 4. Schemas por Vertical
|
|
|
|
### 4.1 Construccion (`con_*`)
|
|
|
|
| Schema | Descripcion | Tablas Estimadas |
|
|
|--------|-------------|------------------|
|
|
| `con_projects` | Proyectos, fraccionamientos, fases | 8 |
|
|
| `con_budgets` | Presupuestos, partidas, costos | 10 |
|
|
| `con_estimates` | Estimaciones, avances | 6 |
|
|
| `con_infonavit` | Integracion INFONAVIT | 6 |
|
|
| `con_quality` | Calidad, inspecciones | 5 |
|
|
| `con_contracts` | Contratos, subcontratos | 5 |
|
|
| `con_hse` | Seguridad, higiene | 8 |
|
|
|
|
### 4.2 Mecanicas Diesel (`mec_*`)
|
|
|
|
| Schema | Descripcion | Tablas |
|
|
|--------|-------------|--------|
|
|
| `mec_workshop` | Configuracion de taller | 9 |
|
|
| `mec_service` | Ordenes de servicio, diagnosticos | 14 |
|
|
| `mec_parts` | Refacciones, inventario | 12 |
|
|
| `mec_vehicles` | Vehiculos, flotas | 8 |
|
|
|
|
### 4.3 Clinicas (`cli_*`)
|
|
|
|
| Schema | Descripcion | Tablas Estimadas |
|
|
|--------|-------------|------------------|
|
|
| `cli_patients` | Pacientes, expedientes | 8 |
|
|
| `cli_appointments` | Citas, agenda | 5 |
|
|
| `cli_medical` | Consultas, recetas | 10 |
|
|
| `cli_lab` | Laboratorio, resultados | 6 |
|
|
| `cli_pharmacy` | Farmacia, medicamentos | 5 |
|
|
| `cli_imaging` | Imagenologia, DICOM | 4 |
|
|
|
|
### 4.4 Retail (`ret_*`)
|
|
|
|
| Schema | Descripcion | Tablas Estimadas |
|
|
|--------|-------------|------------------|
|
|
| `ret_pos` | Punto de venta, cajas | 8 |
|
|
| `ret_store` | Tiendas, sucursales | 5 |
|
|
| `ret_loyalty` | Fidelizacion, puntos | 6 |
|
|
| `ret_ecommerce` | Tienda online | 8 |
|
|
|
|
### 4.5 Vidrio Templado (`vit_*`)
|
|
|
|
| Schema | Descripcion | Tablas Estimadas |
|
|
|--------|-------------|------------------|
|
|
| `vit_production` | Produccion, ordenes | 8 |
|
|
| `vit_cutting` | Corte, nesting | 5 |
|
|
| `vit_tempering` | Templado, hornos | 5 |
|
|
| `vit_quality` | Calidad, fragmentacion | 6 |
|
|
| `vit_dispatch` | Despacho, entregas | 4 |
|
|
|
|
---
|
|
|
|
## 5. Convencion de Tablas
|
|
|
|
### 5.1 Formato de Nombres
|
|
|
|
```sql
|
|
-- Tablas en plural, snake_case
|
|
{schema}.{nombre_tabla_plural}
|
|
|
|
-- Ejemplos
|
|
erp_auth.users
|
|
erp_inventory.products
|
|
con_projects.developments
|
|
mec_service.work_orders
|
|
```
|
|
|
|
### 5.2 Columnas Obligatorias
|
|
|
|
Todas las tablas transaccionales DEBEN incluir:
|
|
|
|
```sql
|
|
-- Identificador
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
|
|
|
|
-- Multi-tenancy
|
|
tenant_id UUID NOT NULL
|
|
|
|
-- Auditoria
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
|
created_by UUID
|
|
updated_at TIMESTAMPTZ
|
|
updated_by UUID
|
|
|
|
-- Soft delete
|
|
is_active BOOLEAN DEFAULT true
|
|
deleted_at TIMESTAMPTZ
|
|
deleted_by UUID
|
|
```
|
|
|
|
### 5.3 Indices
|
|
|
|
```sql
|
|
-- Formato: idx_{tabla}_{columnas}
|
|
CREATE INDEX idx_users_tenant_id ON erp_auth.users(tenant_id);
|
|
CREATE INDEX idx_users_email ON erp_auth.users(email);
|
|
|
|
-- Unique con soft delete
|
|
CREATE UNIQUE INDEX idx_users_email_active
|
|
ON erp_auth.users(email)
|
|
WHERE deleted_at IS NULL;
|
|
```
|
|
|
|
### 5.4 Foreign Keys
|
|
|
|
```sql
|
|
-- Formato: fk_{origen}_to_{destino}
|
|
ALTER TABLE mec_service.work_orders
|
|
ADD CONSTRAINT fk_work_orders_to_vehicles
|
|
FOREIGN KEY (vehicle_id) REFERENCES mec_vehicles.vehicles(id);
|
|
```
|
|
|
|
### 5.5 Triggers
|
|
|
|
```sql
|
|
-- Formato: trg_{tabla}_{accion}
|
|
CREATE TRIGGER trg_users_updated_at
|
|
BEFORE UPDATE ON erp_auth.users
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at();
|
|
```
|
|
|
|
---
|
|
|
|
## 6. RLS (Row-Level Security)
|
|
|
|
### 6.1 Patron Estandar
|
|
|
|
```sql
|
|
-- Habilitar RLS
|
|
ALTER TABLE {schema}.{tabla} ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Policy de aislamiento por tenant
|
|
CREATE POLICY tenant_isolation ON {schema}.{tabla}
|
|
USING (tenant_id = current_setting('app.current_tenant_id')::uuid);
|
|
```
|
|
|
|
### 6.2 Variable de Contexto por Vertical
|
|
|
|
| Vertical | Variable de Contexto |
|
|
|----------|---------------------|
|
|
| erp-core | `app.current_tenant_id` |
|
|
| construccion | `app.current_tenant_id` |
|
|
| mecanicas | `app.current_taller_id` |
|
|
| clinicas | `app.current_clinica_id` |
|
|
| retail | `app.current_tienda_id` |
|
|
| vidrio | `app.current_planta_id` |
|
|
|
|
---
|
|
|
|
## 7. Migracion de Schemas Existentes
|
|
|
|
### 7.1 Plan de Migracion
|
|
|
|
Para proyectos con schemas existentes, seguir este proceso:
|
|
|
|
1. **Crear nuevo schema** con prefijo correcto
|
|
2. **Copiar estructura** de tablas
|
|
3. **Migrar datos** con INSERT...SELECT
|
|
4. **Actualizar referencias** en codigo
|
|
5. **Deprecar schema antiguo**
|
|
6. **Eliminar schema antiguo** (siguiente version)
|
|
|
|
### 7.2 Mapeo de Schemas Existentes
|
|
|
|
#### erp-core (ya implementado)
|
|
```sql
|
|
-- Actual → Estandar (pendiente migracion)
|
|
auth → erp_auth
|
|
core → erp_core
|
|
financial → erp_financial
|
|
inventory → erp_inventory
|
|
purchase → erp_purchase
|
|
sales → erp_sales
|
|
projects → erp_projects
|
|
system → erp_system
|
|
billing → erp_billing
|
|
crm → erp_crm
|
|
hr → erp_hr
|
|
analytics → erp_analytics
|
|
```
|
|
|
|
#### construccion
|
|
```sql
|
|
-- Actual → Estandar
|
|
construction → con_projects
|
|
hr → con_hr (o mover a erp_hr)
|
|
hse → con_hse
|
|
```
|
|
|
|
#### mecanicas-diesel
|
|
```sql
|
|
-- Actual → Estandar
|
|
workshop_core → mec_workshop
|
|
service_management → mec_service
|
|
parts_management → mec_parts
|
|
vehicle_management → mec_vehicles
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Validacion
|
|
|
|
### 8.1 Checklist de Validacion
|
|
|
|
```yaml
|
|
validacion_schema:
|
|
- [ ] Prefijo correcto segun proyecto
|
|
- [ ] Nombre en snake_case
|
|
- [ ] Tablas en plural
|
|
- [ ] Columnas obligatorias presentes
|
|
- [ ] RLS habilitado
|
|
- [ ] Indices de tenant_id
|
|
- [ ] Triggers de auditoria
|
|
```
|
|
|
|
### 8.2 Script de Validacion
|
|
|
|
```sql
|
|
-- Verificar schemas con prefijo correcto
|
|
SELECT schema_name
|
|
FROM information_schema.schemata
|
|
WHERE schema_name LIKE 'erp_%'
|
|
OR schema_name LIKE 'con_%'
|
|
OR schema_name LIKE 'mec_%'
|
|
OR schema_name LIKE 'cli_%'
|
|
OR schema_name LIKE 'ret_%'
|
|
OR schema_name LIKE 'vit_%';
|
|
|
|
-- Verificar RLS habilitado
|
|
SELECT schemaname, tablename, rowsecurity
|
|
FROM pg_tables
|
|
WHERE schemaname LIKE '%_%'
|
|
AND rowsecurity = false;
|
|
```
|
|
|
|
---
|
|
|
|
## 9. Excepciones
|
|
|
|
### 9.1 Schemas de Sistema
|
|
|
|
Los siguientes schemas NO requieren prefijo:
|
|
|
|
- `public` - Extensiones PostgreSQL
|
|
- `pg_catalog` - Sistema PostgreSQL
|
|
- `information_schema` - Metadatos
|
|
|
|
### 9.2 Schemas de Migracion
|
|
|
|
Durante la migracion, pueden coexistir schemas antiguos y nuevos:
|
|
|
|
```sql
|
|
-- Temporal durante migracion
|
|
auth -- Antiguo (deprecado)
|
|
erp_auth -- Nuevo (activo)
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Referencias
|
|
|
|
| Documento | Ubicacion |
|
|
|-----------|-----------|
|
|
| ADR-007 Database Design | `erp-core/docs/97-adr/ADR-007-database-design.md` |
|
|
| DDL erp-core | `erp-core/database/ddl/` |
|
|
| DDL mecanicas | `mecanicas-diesel/database/ddl/` |
|
|
| DDL construccion | `construccion/database/ddl/` |
|
|
|
|
---
|
|
|
|
## 11. Historial de Cambios
|
|
|
|
| Version | Fecha | Cambios |
|
|
|---------|-------|---------|
|
|
| 1.0.0 | 2025-12-08 | Version inicial |
|
|
|
|
---
|
|
|
|
*Documento de arquitectura - ERP Suite*
|
|
*Sistema NEXUS - Fabrica de Software con Agentes IA*
|