- 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>
6.5 KiB
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 EXISTSpara tablas - Usar
CREATE OR REPLACEpara funciones - Usar bloques de excepción para ENUMs
- Usar
DROP POLICY IF EXISTSantes 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
\ien psql - Verificar RLS con tests de tenant isolation
- Verificar FKs con datos de prueba
6. Próximos Pasos
- ✅ Plan de implementación completado
- ⏳ FASE 4: Validación del plan
- ⏳ FASE 5: Análisis de dependencias
- ⏳ FASE 6: Plan refinado
- ⏳ FASE 7: Ejecución
- ⏳ FASE 8: Validación final
Estado: FASE 3 COMPLETADA Siguiente: FASE 4 - Validación del Plan Fecha: 2026-01-04