erp-clinicas/orchestration/propagacion-fase8/FASE-3-PLAN-IMPLEMENTACION.md
rckrdmrd 62cfcdb9c9 feat: Add database schemas, seeds and orchestration updates
- Add database schemas and seeds directories
- Add CONTEXT-MAP.yml and ENVIRONMENT-INVENTORY.yml
- Add propagacion-fase8 directory
- Update CONTEXTO-PROYECTO.md and DEPENDENCIAS-SHARED.yml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:37:26 -06:00

6.5 KiB

FASE 3: Plan de Implementación - ERP Clínicas

Proyecto: erp-clinicas Fecha: 2026-01-04 Estado: Completado Base: FASE-2-ANALISIS-DETALLADO.md


1. Estructura de Archivos

1.1 DDL Schemas

# Archivo Contenido
1 04-financial-ext-schema-ddl.sql Extensiones financieras
2 05-hr-ext-fase8-schema-ddl.sql Extensiones HR
3 06-inventory-ext-fase8-schema-ddl.sql Extensiones inventario
4 07-purchase-ext-fase8-schema-ddl.sql Extensiones compras
5 08-clinica-ext-fase8-schema-ddl.sql Extensiones clínica

1.2 Seed Data

# Archivo Contenido
1 seeds/fase8/00-removal-strategies.sql Estrategias de remoción
2 seeds/fase8/01-clinica-skills.sql Especialidades médicas
3 seeds/fase8/02-clinica-catalogos.sql Catálogos clínicos

2. Plan de Implementación

2.1 Fase A: Financial Extensions

Archivo: 04-financial-ext-schema-ddl.sql

1. CREATE SCHEMA IF NOT EXISTS financial
2. CREATE TYPE payment_method_type
3. CREATE TYPE reconcile_model_type
4. CREATE TABLE payment_term_lines
5. CREATE TABLE payment_methods
6. CREATE TABLE reconcile_models
7. CREATE TABLE reconcile_model_lines
8. CREATE INDEXES
9. ENABLE RLS
10. CREATE POLICIES

Tablas:

Tabla Campos RLS
payment_term_lines 10
payment_methods 11
reconcile_models 9
reconcile_model_lines 9

2.2 Fase B: HR Extensions

Archivo: 05-hr-ext-fase8-schema-ddl.sql

1. CREATE SCHEMA IF NOT EXISTS hr
2. CREATE TYPES (expense_status, resume_line_type, payslip_status)
3. CREATE TABLE work_locations
4. CREATE TABLE skill_types
5. CREATE TABLE skills
6. CREATE TABLE skill_levels
7. CREATE TABLE employee_skills
8. CREATE TABLE expense_sheets
9. CREATE TABLE expenses
10. CREATE TABLE employee_resume_lines
11. CREATE TABLE payslip_structures
12. CREATE TABLE payslips
13. CREATE TABLE payslip_lines
14. ALTER TABLE employees ADD COLUMNS (si existe)
15. CREATE INDEXES
16. ENABLE RLS
17. CREATE POLICIES

Tablas:

Tabla Campos RLS
work_locations 12
skill_types 4
skills 7
skill_levels 6
employee_skills 7
expense_sheets 12
expenses 15
employee_resume_lines 10
payslip_structures 7
payslips 15
payslip_lines 10

2.3 Fase C: Inventory Extensions

Archivo: 06-inventory-ext-fase8-schema-ddl.sql

1. CREATE SCHEMA IF NOT EXISTS inventory
2. CREATE TABLE package_types
3. CREATE TABLE packages
4. CREATE TABLE storage_categories
5. CREATE TABLE putaway_rules
6. CREATE TABLE removal_strategies
7. ALTER TABLE products ADD COLUMNS (si existe)
8. CREATE INDEXES
9. ENABLE RLS
10. CREATE POLICIES

Tablas:

Tabla Campos RLS
package_types 10
packages 12
storage_categories 12
putaway_rules 10
removal_strategies 5

2.4 Fase D: Purchase Extensions

Archivo: 07-purchase-ext-fase8-schema-ddl.sql

1. CREATE SCHEMA IF NOT EXISTS purchase
2. CREATE TABLE product_supplierinfo
3. CREATE FUNCTION action_create_stock_moves
4. ALTER TABLE purchase_orders ADD COLUMNS (si existe)
5. CREATE INDEXES
6. ENABLE RLS
7. CREATE POLICIES

Tablas:

Tabla Campos RLS
product_supplierinfo 14

2.5 Fase E: Clínica Extensions

Archivo: 08-clinica-ext-fase8-schema-ddl.sql

1. CREATE TABLE personal_clinica
2. CREATE TABLE ratings
3. CREATE INDEXES
4. ENABLE RLS
5. CREATE POLICIES

Tablas:

Tabla Campos RLS
personal_clinica 10
ratings 10

3. Orden de Ejecución

3.1 Secuencia DDL

# 1. Base schemas (si no existen)
psql -f database/init/01-extensions.sql
psql -f database/init/02-core-schema.sql

# 2. Clínica base
psql -f database/init/03-clinical-tables.sql

# 3. Extensiones FASE-8 (orden importante)
psql -f database/schemas/04-financial-ext-schema-ddl.sql
psql -f database/schemas/05-hr-ext-fase8-schema-ddl.sql
psql -f database/schemas/06-inventory-ext-fase8-schema-ddl.sql
psql -f database/schemas/07-purchase-ext-fase8-schema-ddl.sql
psql -f database/schemas/08-clinica-ext-fase8-schema-ddl.sql

# 4. Seeds (globales)
psql -f database/seeds/fase8/00-removal-strategies.sql

# 5. Seeds (requieren tenant_id)
# SET app.current_tenant_id = 'UUID';
psql -f database/seeds/fase8/01-clinica-skills.sql
psql -f database/seeds/fase8/02-clinica-catalogos.sql

3.2 Dependencias

04-financial-ext
    └── (independiente)

05-hr-ext
    └── (independiente)

06-inventory-ext
    └── (independiente)

07-purchase-ext
    ├── inventory.products (opcional)
    └── inventory.warehouses (opcional)

08-clinica-ext
    ├── clinica.consultations
    ├── clinica.patients
    ├── clinica.doctors
    └── hr.work_locations

4. Estimación de Objetos

4.1 Por Archivo

Archivo Tablas ENUMs Funciones Índices
04-financial-ext 4 2 0 6
05-hr-ext 11 3 0 18
06-inventory-ext 5 0 0 8
07-purchase-ext 1 0 1 4
08-clinica-ext 2 0 0 5
Total 23 5 1 41

4.2 Líneas Estimadas

Archivo Líneas
04-financial-ext ~130
05-hr-ext ~320
06-inventory-ext ~160
07-purchase-ext ~120
08-clinica-ext ~80
Seeds ~100
Total ~910

5. Consideraciones

5.1 Idempotencia

  • Usar IF NOT EXISTS para tablas
  • Usar CREATE OR REPLACE para funciones
  • Usar bloques de excepción para ENUMs
  • Usar DROP POLICY IF EXISTS antes de crear

5.2 Rollback

-- En orden inverso
DROP TABLE IF EXISTS clinica.ratings CASCADE;
DROP TABLE IF EXISTS clinica.personal_clinica CASCADE;
DROP TABLE IF EXISTS purchase.product_supplierinfo CASCADE;
-- ... etc

5.3 Validación

  • Verificar sintaxis con \i en psql
  • Verificar RLS con tests de tenant isolation
  • Verificar FKs con datos de prueba

6. Próximos Pasos

  1. Plan de implementación completado
  2. FASE 4: Validación del plan
  3. FASE 5: Análisis de dependencias
  4. FASE 6: Plan refinado
  5. FASE 7: Ejecución
  6. FASE 8: Validación final

Estado: FASE 3 COMPLETADA Siguiente: FASE 4 - Validación del Plan Fecha: 2026-01-04