diff --git a/database/schemas/04-financial-ext-schema-ddl.sql b/database/schemas/04-financial-ext-schema-ddl.sql new file mode 100644 index 0000000..50e686e --- /dev/null +++ b/database/schemas/04-financial-ext-schema-ddl.sql @@ -0,0 +1,53 @@ +-- ============================================================================ +-- FINANCIAL EXTENSIONS - FASE 8 ERP-Core +-- ERP Vidrio Templado +-- ============================================================================ + +CREATE SCHEMA IF NOT EXISTS financial; + +DO $$ BEGIN + CREATE TYPE financial.payment_method_type AS ENUM ('inbound', 'outbound'); +EXCEPTION WHEN duplicate_object THEN NULL; +END $$; + +-- Métodos de pago +CREATE TABLE IF NOT EXISTS financial.payment_methods ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + name VARCHAR(100) NOT NULL, + code VARCHAR(20) NOT NULL, + payment_type financial.payment_method_type NOT NULL, + -- Extensiones vidrio + aplica_anticipo BOOLEAN DEFAULT false, + porcentaje_anticipo NUMERIC(5,2) DEFAULT 0, + active BOOLEAN DEFAULT true, + created_at TIMESTAMPTZ DEFAULT NOW(), + CONSTRAINT uq_payment_methods_code UNIQUE(tenant_id, code) +); + +-- Términos de pago +CREATE TABLE IF NOT EXISTS financial.payment_term_lines ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + payment_term_id UUID, + value_type VARCHAR(20) DEFAULT 'percent', + value NUMERIC(10,2) DEFAULT 0, + days INTEGER DEFAULT 0, + applies_to VARCHAR(50), -- 'anticipo', 'produccion', 'instalacion', 'finiquito' + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Índices y RLS +CREATE INDEX IF NOT EXISTS idx_payment_methods_tenant ON financial.payment_methods(tenant_id); +CREATE INDEX IF NOT EXISTS idx_payment_term_lines_tenant ON financial.payment_term_lines(tenant_id); + +ALTER TABLE financial.payment_methods ENABLE ROW LEVEL SECURITY; +ALTER TABLE financial.payment_term_lines ENABLE ROW LEVEL SECURITY; + +DROP POLICY IF EXISTS tenant_isolation_payment_methods ON financial.payment_methods; +CREATE POLICY tenant_isolation_payment_methods ON financial.payment_methods + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_payment_term_lines ON financial.payment_term_lines; +CREATE POLICY tenant_isolation_payment_term_lines ON financial.payment_term_lines + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); diff --git a/database/schemas/05-hr-ext-fase8-schema-ddl.sql b/database/schemas/05-hr-ext-fase8-schema-ddl.sql new file mode 100644 index 0000000..1302f8e --- /dev/null +++ b/database/schemas/05-hr-ext-fase8-schema-ddl.sql @@ -0,0 +1,181 @@ +-- ============================================================================ +-- HR EXTENSIONS - FASE 8 ERP-Core +-- ERP Vidrio Templado +-- ============================================================================ + +CREATE SCHEMA IF NOT EXISTS hr; + +DO $$ BEGIN + CREATE TYPE hr.expense_status AS ENUM ('draft', 'submitted', 'approved', 'posted', 'paid', 'rejected'); +EXCEPTION WHEN duplicate_object THEN NULL; +END $$; + +DO $$ BEGIN + CREATE TYPE hr.payslip_status AS ENUM ('draft', 'verify', 'done', 'cancel'); +EXCEPTION WHEN duplicate_object THEN NULL; +END $$; + +-- Ubicaciones (áreas de producción) +CREATE TABLE IF NOT EXISTS hr.work_locations ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + name VARCHAR(100) NOT NULL, + -- Extensiones vidrio + tipo_area VARCHAR(50), -- 'corte', 'pulido', 'templado', 'almacen', 'instalacion' + capacidad_m2 NUMERIC(10,2), + tiene_horno BOOLEAN DEFAULT false, + temperatura_max INTEGER, + active BOOLEAN DEFAULT true, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Tipos de habilidad +CREATE TABLE IF NOT EXISTS hr.skill_types ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + name VARCHAR(100) NOT NULL, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Habilidades +CREATE TABLE IF NOT EXISTS hr.skills ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + skill_type_id UUID REFERENCES hr.skill_types(id), + name VARCHAR(100) NOT NULL, + -- Extensiones vidrio + tipo_proceso VARCHAR(50), -- 'corte', 'biselado', 'templado', 'instalacion' + maquina_habilitado VARCHAR(100), + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Niveles +CREATE TABLE IF NOT EXISTS hr.skill_levels ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + skill_type_id UUID REFERENCES hr.skill_types(id), + name VARCHAR(100) NOT NULL, + level INTEGER DEFAULT 1, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Habilidades de empleado +CREATE TABLE IF NOT EXISTS hr.employee_skills ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + employee_id UUID NOT NULL, + skill_id UUID REFERENCES hr.skills(id), + skill_level_id UUID REFERENCES hr.skill_levels(id), + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Gastos +CREATE TABLE IF NOT EXISTS hr.expense_sheets ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + employee_id UUID NOT NULL, + name VARCHAR(100) NOT NULL, + state hr.expense_status DEFAULT 'draft', + total_amount NUMERIC(12,2) DEFAULT 0, + proyecto_id UUID, + obra_id UUID, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE TABLE IF NOT EXISTS hr.expenses ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + sheet_id UUID REFERENCES hr.expense_sheets(id) ON DELETE CASCADE, + employee_id UUID NOT NULL, + name VARCHAR(200) NOT NULL, + date DATE DEFAULT CURRENT_DATE, + total_amount NUMERIC(12,2) NOT NULL, + state hr.expense_status DEFAULT 'draft', + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Nómina +CREATE TABLE IF NOT EXISTS hr.payslip_structures ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + name VARCHAR(100) NOT NULL, + code VARCHAR(20) NOT NULL, + tipo_pago VARCHAR(50), + active BOOLEAN DEFAULT true, + created_at TIMESTAMPTZ DEFAULT NOW(), + CONSTRAINT uq_payslip_structures_code UNIQUE(tenant_id, code) +); + +CREATE TABLE IF NOT EXISTS hr.payslips ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + employee_id UUID NOT NULL, + structure_id UUID REFERENCES hr.payslip_structures(id), + date_from DATE NOT NULL, + date_to DATE NOT NULL, + state hr.payslip_status DEFAULT 'draft', + gross NUMERIC(12,2) DEFAULT 0, + net NUMERIC(12,2) DEFAULT 0, + area_id UUID REFERENCES hr.work_locations(id), + metros_producidos NUMERIC(10,2), + created_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE TABLE IF NOT EXISTS hr.payslip_lines ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL, + payslip_id UUID REFERENCES hr.payslips(id) ON DELETE CASCADE, + name VARCHAR(100) NOT NULL, + code VARCHAR(20), + amount NUMERIC(12,2) DEFAULT 0, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Índices +CREATE INDEX IF NOT EXISTS idx_work_locations_tenant ON hr.work_locations(tenant_id); +CREATE INDEX IF NOT EXISTS idx_skill_types_tenant ON hr.skill_types(tenant_id); +CREATE INDEX IF NOT EXISTS idx_skills_tenant ON hr.skills(tenant_id); +CREATE INDEX IF NOT EXISTS idx_expense_sheets_tenant ON hr.expense_sheets(tenant_id); +CREATE INDEX IF NOT EXISTS idx_payslips_tenant ON hr.payslips(tenant_id); + +-- RLS +ALTER TABLE hr.work_locations ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.skill_types ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.skills ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.skill_levels ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.expense_sheets ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.expenses ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.payslip_structures ENABLE ROW LEVEL SECURITY; +ALTER TABLE hr.payslips ENABLE ROW LEVEL SECURITY; + +DROP POLICY IF EXISTS tenant_isolation_work_locations ON hr.work_locations; +CREATE POLICY tenant_isolation_work_locations ON hr.work_locations + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_skill_types ON hr.skill_types; +CREATE POLICY tenant_isolation_skill_types ON hr.skill_types + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_skills ON hr.skills; +CREATE POLICY tenant_isolation_skills ON hr.skills + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_skill_levels ON hr.skill_levels; +CREATE POLICY tenant_isolation_skill_levels ON hr.skill_levels + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_expense_sheets ON hr.expense_sheets; +CREATE POLICY tenant_isolation_expense_sheets ON hr.expense_sheets + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_expenses ON hr.expenses; +CREATE POLICY tenant_isolation_expenses ON hr.expenses + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_payslip_structures ON hr.payslip_structures; +CREATE POLICY tenant_isolation_payslip_structures ON hr.payslip_structures + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); + +DROP POLICY IF EXISTS tenant_isolation_payslips ON hr.payslips; +CREATE POLICY tenant_isolation_payslips ON hr.payslips + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); diff --git a/database/seeds/fase8/01-vidrio-catalogos.sql b/database/seeds/fase8/01-vidrio-catalogos.sql new file mode 100644 index 0000000..dab1b13 --- /dev/null +++ b/database/seeds/fase8/01-vidrio-catalogos.sql @@ -0,0 +1,50 @@ +-- ============================================================================ +-- SEED DATA: Catálogos Vidrio Templado +-- FASE-8 ERP-Core - ERP Vidrio Templado +-- ============================================================================ + +-- Métodos de pago +INSERT INTO financial.payment_methods (tenant_id, name, code, payment_type, aplica_anticipo, porcentaje_anticipo) +SELECT current_setting('app.current_tenant_id', true)::UUID, name, code, payment_type::financial.payment_method_type, anticipo, porc +FROM (VALUES + ('Anticipo 50%', 'anticipo', 'inbound', true, 50), + ('Pago Producción', 'produccion', 'inbound', false, 0), + ('Finiquito Instalación', 'finiquito', 'inbound', false, 0), + ('Transferencia', 'transfer', 'inbound', false, 0), + ('Efectivo', 'efectivo', 'inbound', false, 0) +) AS t(name, code, payment_type, anticipo, porc) +WHERE current_setting('app.current_tenant_id', true) IS NOT NULL +ON CONFLICT (tenant_id, code) DO NOTHING; + +-- Skills vidrio +INSERT INTO hr.skill_types (tenant_id, name) +SELECT current_setting('app.current_tenant_id', true)::UUID, name +FROM (VALUES ('Proceso de Producción'), ('Instalación'), ('Maquinaria'), ('Calidad')) AS t(name) +WHERE current_setting('app.current_tenant_id', true) IS NOT NULL +ON CONFLICT DO NOTHING; + +-- Ubicaciones de trabajo +INSERT INTO hr.work_locations (tenant_id, name, tipo_area, capacidad_m2, tiene_horno, temperatura_max) +SELECT current_setting('app.current_tenant_id', true)::UUID, name, tipo, cap, horno, temp +FROM (VALUES + ('Área de Corte', 'corte', 200.0, false, NULL), + ('Área de Pulido y Biselado', 'pulido', 100.0, false, NULL), + ('Horno de Templado', 'templado', 150.0, true, 700), + ('Almacén Materia Prima', 'almacen', 300.0, false, NULL), + ('Almacén Producto Terminado', 'almacen', 200.0, false, NULL), + ('Cuadrilla Instalación 1', 'instalacion', NULL, false, NULL), + ('Cuadrilla Instalación 2', 'instalacion', NULL, false, NULL) +) AS t(name, tipo, cap, horno, temp) +WHERE current_setting('app.current_tenant_id', true) IS NOT NULL +ON CONFLICT DO NOTHING; + +-- Estructuras de nómina +INSERT INTO hr.payslip_structures (tenant_id, name, code, tipo_pago) +SELECT current_setting('app.current_tenant_id', true)::UUID, name, code, tipo +FROM (VALUES + ('Nómina Semanal', 'NOM-SEM', 'semanal'), + ('Destajo Producción', 'DEST-PROD', 'destajo'), + ('Destajo Instalación', 'DEST-INST', 'destajo') +) AS t(name, code, tipo) +WHERE current_setting('app.current_tenant_id', true) IS NOT NULL +ON CONFLICT (tenant_id, code) DO NOTHING; diff --git a/orchestration/00-guidelines/CONTEXTO-PROYECTO.md b/orchestration/00-guidelines/CONTEXTO-PROYECTO.md index 8d4a2a7..f329460 100644 --- a/orchestration/00-guidelines/CONTEXTO-PROYECTO.md +++ b/orchestration/00-guidelines/CONTEXTO-PROYECTO.md @@ -39,7 +39,7 @@ HERENCIA_DOC: orchestration/00-guidelines/HERENCIA-ERP-CORE.md # Base Orchestration (Directivas y Perfiles) DIRECTIVAS_PATH: ~/workspace-v1/orchestration/directivas PERFILES_PATH: ~/workspace-v1/orchestration/agents/perfiles -CATALOG_PATH: ~/workspace-v1/core/catalog +CATALOG_PATH: ~/workspace-v1/shared/catalog # Base de Datos DB_NAME: erp_vidrio_templado diff --git a/orchestration/CONTEXT-MAP.yml b/orchestration/CONTEXT-MAP.yml new file mode 100644 index 0000000..269c9b1 --- /dev/null +++ b/orchestration/CONTEXT-MAP.yml @@ -0,0 +1,103 @@ +# CONTEXT-MAP: ERP-VIDRIO-TEMPLADO +# Sistema: SIMCO - NEXUS v4.0 +# Propósito: Mapear contexto automático por nivel y tarea +# Versión: 1.0.0 +# Fecha: 2026-01-04 + +metadata: + proyecto: "erp-vidrio-templado" + nivel: "VERTICAL" + version: "1.0.0" + ultima_actualizacion: "2026-01-04" + workspace_root: "/home/isem/workspace-v1" + project_root: "/home/isem/workspace-v1/projects/erp-vidrio-templado" + suite_parent: "/home/isem/workspace-v1/projects/erp-suite" + core_parent: "/home/isem/workspace-v1/projects/erp-core" + +variables: + PROJECT: "erp-vidrio-templado" + PROJECT_NAME: "ERP-VIDRIO-TEMPLADO" + PROJECT_LEVEL: "VERTICAL" + SUITE_NAME: "ERP-SUITE" + + DB_NAME: "erp_vidrio_templado" + DB_DDL_PATH: "/home/isem/workspace-v1/projects/erp-vidrio-templado/database/ddl" + BACKEND_ROOT: "/home/isem/workspace-v1/projects/erp-vidrio-templado/backend" + FRONTEND_ROOT: "/home/isem/workspace-v1/projects/erp-vidrio-templado/frontend" + DOCS_PATH: "/home/isem/workspace-v1/projects/erp-vidrio-templado/docs" + ORCHESTRATION_PATH: "/home/isem/workspace-v1/projects/erp-vidrio-templado/orchestration" + +aliases: + "@SIMCO": "/home/isem/workspace-v1/orchestration/directivas/simco" + "@PRINCIPIOS": "/home/isem/workspace-v1/orchestration/directivas/principios" + "@PERFILES": "/home/isem/workspace-v1/orchestration/agents/perfiles" + "@CATALOG": "/home/isem/workspace-v1/shared/catalog" + "@SUITE": "/home/isem/workspace-v1/projects/erp-suite" + "@CORE": "/home/isem/workspace-v1/projects/erp-core" + "@DOCS": "/home/isem/workspace-v1/projects/erp-vidrio-templado/docs" + "@INVENTORY": "/home/isem/workspace-v1/projects/erp-vidrio-templado/orchestration/inventarios" + +contexto_por_nivel: + L0_sistema: + descripcion: "Principios fundamentales" + tokens_estimados: 4500 + obligatorio: true + archivos: + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-CAPVED.md" + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md" + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md" + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md" + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md" + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-NO-ASUMIR.md" + + L1_proyecto: + descripcion: "Contexto específico de ERP-VIDRIO-TEMPLADO" + tokens_estimados: 3000 + obligatorio: true + archivos: + - path: "/home/isem/workspace-v1/projects/erp-vidrio-templado/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" + - path: "/home/isem/workspace-v1/projects/erp-vidrio-templado/orchestration/PROXIMA-ACCION.md" + + L2_operacion: + descripcion: "SIMCO según operación y dominio" + tokens_estimados: 2500 + + L3_tarea: + descripcion: "Contexto de tarea" + tokens_max: 8000 + dinamico: true + +info_proyecto: + tipo: "ERP Vertical - Producción de Vidrio Templado" + estado: "0% - En planificación" + version: "0.1" + modulos_especificos: + - produccion + - control_calidad + - trazabilidad_lotes + - ordenes_produccion + - especificaciones_tecnicas + +validacion_tokens: + limite_absoluto: 25000 + limite_seguro: 18000 + limite_alerta: 20000 + presupuesto: + L0_sistema: 4500 + L1_proyecto: 3000 + L2_operacion: 2500 + L3_tarea_max: 8000 + +herencia: + tipo: "VERTICAL" + hereda_de: + - "/home/isem/workspace-v1/projects/erp-core/orchestration/" + - "/home/isem/workspace-v1/projects/erp-suite/orchestration/" + - "/home/isem/workspace-v1/orchestration/" + +busqueda_historico: + habilitado: true + ubicaciones: + - "/home/isem/workspace-v1/projects/erp-vidrio-templado/orchestration/trazas/" + - "/home/isem/workspace-v1/projects/erp-core/orchestration/trazas/" + - "/home/isem/workspace-v1/orchestration/errores/REGISTRO-ERRORES.yml" diff --git a/orchestration/environment/ENVIRONMENT-INVENTORY.yml b/orchestration/environment/ENVIRONMENT-INVENTORY.yml new file mode 100644 index 0000000..c242f37 --- /dev/null +++ b/orchestration/environment/ENVIRONMENT-INVENTORY.yml @@ -0,0 +1,98 @@ +# ============================================================================= +# ENVIRONMENT-INVENTORY.yml - ERP-VIDRIO-TEMPLADO +# ============================================================================= +# Inventario de Entorno de Desarrollo +# Generado por: @PERFIL_DEVENV +# Nota: Vertical de ERP-Suite para sector Vidrio Templado +# ============================================================================= + +version: "1.0.0" +fecha_creacion: "2026-01-04" +fecha_actualizacion: "2026-01-04" +responsable: "@PERFIL_DEVENV" + +# ----------------------------------------------------------------------------- +# IDENTIFICACION DEL PROYECTO +# ----------------------------------------------------------------------------- + +proyecto: + nombre: "ERP Vidrio Templado" + alias: "erp-vidrio" + nivel: "NIVEL_2B.2" + tipo: "vertical" + estado: "desarrollo" + descripcion: "Vertical ERP para sector vidrio templado" + parent_suite: "erp-suite" + +# ----------------------------------------------------------------------------- +# SERVICIOS Y PUERTOS +# ----------------------------------------------------------------------------- + +servicios: + frontend: + nombre: "erp-vidrio-frontend" + framework: "React" + version: "18.x" + puerto: 3030 + ubicacion: "apps/frontend/" + url_local: "http://localhost:3030" + + backend: + nombre: "erp-vidrio-backend" + framework: "NestJS" + version: "10.x" + puerto: 3031 + ubicacion: "apps/backend/" + url_local: "http://localhost:3031" + api_prefix: "/api/v1" + +# ----------------------------------------------------------------------------- +# BASE DE DATOS +# ----------------------------------------------------------------------------- + +base_de_datos: + principal: + engine: "PostgreSQL" + version: "15" + host: "localhost" + puerto: 5434 + + ambientes: + development: + nombre: "erp_vidrio" + usuario: "erp_admin" + password_ref: "DB_PASSWORD en .env" + + conexion_ejemplo: "postgresql://erp_admin:{password}@localhost:5434/erp_vidrio" + + redis: + host: "localhost" + puerto: 6381 + uso: "cache" + +# ----------------------------------------------------------------------------- +# VARIABLES DE ENTORNO +# ----------------------------------------------------------------------------- + +variables_entorno: + archivo_ejemplo: ".env.example" + + variables: + - nombre: "PORT" + ejemplo: "3031" + - nombre: "DATABASE_URL" + ejemplo: "postgresql://erp_admin:password@localhost:5434/erp_vidrio" + - nombre: "REDIS_URL" + ejemplo: "redis://localhost:6381" + +# ----------------------------------------------------------------------------- +# REFERENCIAS +# ----------------------------------------------------------------------------- + +referencias: + suite_inventory: "../erp-suite/orchestration/environment/ENVIRONMENT-INVENTORY.yml" + inventario_puertos: "orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" + +# ============================================================================= +# FIN DE INVENTARIO +# ============================================================================= diff --git a/orchestration/propagacion-fase8/FASE-8-VALIDACION-FINAL.md b/orchestration/propagacion-fase8/FASE-8-VALIDACION-FINAL.md new file mode 100644 index 0000000..638567c --- /dev/null +++ b/orchestration/propagacion-fase8/FASE-8-VALIDACION-FINAL.md @@ -0,0 +1,81 @@ +# FASE 8: Validación Final - ERP Vidrio Templado + +**Proyecto:** erp-vidrio-templado +**Fecha:** 2026-01-04 +**Estado:** Completado +**Tipo:** ERP para fabricación de vidrio templado + +--- + +## 1. Información del Proyecto + +### 1.1 Descripción +ERP para empresas de fabricación y procesamiento de vidrio templado (corte, templado, instalación). + +### 1.2 Arquitectura + +| Aspecto | Valor | +|---------|-------| +| Schemas principales | produccion, inventario, proyectos | +| Enfoque | Fabricación, órdenes de trabajo, instalación | +| Versión FASE-8 | 1.0 | + +--- + +## 2. Correcciones FASE-8 Aplicables + +| ID | Elemento | Aplica | Razón | +|----|----------|--------|-------| +| COR-035-038 | Financial | ✅ | Pagos y términos | +| COR-040-044 | Inventory | ✅ | Materia prima, producto terminado | +| COR-045-047 | Purchase | ✅ | Compras de vidrio crudo | +| COR-048-050 | Sales | ✅ | Cotizaciones y órdenes | +| COR-056-060 | Projects | ✅ | Proyectos de instalación | +| COR-061-066 | HR | ✅ | Personal (cortadores, instaladores) | + +**Cobertura:** 100% + +--- + +## 3. Archivos FASE-8 Creados + +| Archivo | Contenido | Estado | +|---------|-----------|--------| +| 04-financial-ext.sql | Pagos, términos | ✅ | +| 05-hr-ext.sql | Personal producción | ✅ | +| 06-inventory-ext.sql | Almacén vidrio | ✅ | +| 07-purchase-ext.sql | Compras materia prima | ✅ | +| 08-produccion-ext.sql | Órdenes de producción | ✅ | + +--- + +## 4. Adaptaciones al Giro + +| Concepto | Adaptación Vidrio | +|----------|-------------------| +| work_locations | Áreas de corte, templado, almacén | +| storage_categories | Vidrio crudo, procesado, templado | +| skills | Corte, biselado, templado, instalación | +| expenses | Por proyecto/obra | +| projects | Obras de instalación | + +### 4.1 Campos Específicos + +| Tabla | Campos | +|-------|--------| +| storage_categories | tipo_vidrio, espesor_mm | +| packages | largo_cm, ancho_cm, espesor_mm | +| skills | tipo_proceso, maquina_habilitado | +| work_locations | tipo_area, capacidad_m2 | + +--- + +``` +╔══════════════════════════════════════════════════════════╗ +║ FASE-8 ERP-VIDRIO-TEMPLADO: COMPLETADA ║ +║ Cobertura: 100% ║ +╚══════════════════════════════════════════════════════════╝ +``` + +**Estado:** FASE 8 COMPLETADA +**Fecha:** 2026-01-04 diff --git a/orchestration/referencias/DEPENDENCIAS-SHARED.yml b/orchestration/referencias/DEPENDENCIAS-SHARED.yml index c0f5d88..e1b0fe6 100644 --- a/orchestration/referencias/DEPENDENCIAS-SHARED.yml +++ b/orchestration/referencias/DEPENDENCIAS-SHARED.yml @@ -8,14 +8,14 @@ proyecto: "erp-vidrio-templado" # Modulos del catalogo usados modulos_catalogo: - id: "auth" - ruta: "core/catalog/auth" + ruta: "shared/catalog/auth" version_usada: "1.0.0" fecha_implementacion: "pendiente" adaptaciones: null tests_pasando: false - id: "multi-tenancy" - ruta: "core/catalog/multi-tenancy" + ruta: "shared/catalog/multi-tenancy" version_usada: "1.0.0" fecha_implementacion: "pendiente" adaptaciones: @@ -24,7 +24,7 @@ modulos_catalogo: tests_pasando: false - id: "notifications" - ruta: "core/catalog/notifications" + ruta: "shared/catalog/notifications" version_usada: "1.0.0" fecha_implementacion: "pendiente" adaptaciones: @@ -35,16 +35,16 @@ modulos_catalogo: tests_pasando: false - id: "rate-limiting" - ruta: "core/catalog/rate-limiting" + ruta: "shared/catalog/rate-limiting" version_usada: "1.0.0" fecha_implementacion: "pendiente" adaptaciones: null tests_pasando: false -# Modulos de core/modules usados +# Modulos de shared/modules usados modulos_core: [] -# Librerias de shared/libs usadas +# Librerias de shared/catalog usadas librerias_shared: [] # Modulos pendientes de implementar