- 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>
7.1 KiB
7.1 KiB
FASE 6: Plan Refinado - ERP Clínicas
Proyecto: erp-clinicas Fecha: 2026-01-04 Estado: Completado Base: FASE-5-ANALISIS-DEPENDENCIAS.md
1. Estructura Final de Archivos
1.1 DDL Schemas
| # | Archivo | Líneas | Tablas | ENUMs |
|---|---|---|---|---|
| 1 | 04-financial-ext-schema-ddl.sql |
~130 | 4 | 2 |
| 2 | 05-hr-ext-fase8-schema-ddl.sql |
~320 | 11 | 3 |
| 3 | 06-inventory-ext-fase8-schema-ddl.sql |
~160 | 5 | 0 |
| 4 | 07-purchase-ext-fase8-schema-ddl.sql |
~120 | 1 | 0 |
| 5 | 08-clinica-ext-fase8-schema-ddl.sql |
~80 | 2 | 0 |
| Total | ~810 | 23 | 5 |
1.2 Seed Data
| # | Archivo | Registros | Tipo |
|---|---|---|---|
| 1 | 00-removal-strategies.sql |
4 | Global |
| 2 | 01-clinica-skills.sql |
~40 | Tenant |
| 3 | 02-clinica-catalogos.sql |
~25 | Tenant |
| Total | ~69 |
2. Contenido Detallado por Archivo
2.1 04-financial-ext-schema-ddl.sql
Schemas: financial
ENUMs:
- payment_method_type (inbound, outbound)
- reconcile_model_type (writeoff_button, writeoff_suggestion, invoice_matching)
Tablas:
1. payment_term_lines
- id, tenant_id, payment_term_id, value_type, value, days
- day_of_month, applies_to, sequence, created_at
2. payment_methods
- id, tenant_id, name, code, payment_type
- aplica_seguro, requiere_factura, porcentaje_seguro
- active, created_at
3. reconcile_models
- id, tenant_id, name, rule_type, auto_reconcile
- match_partner, match_amount, tolerance
- created_at
4. reconcile_model_lines
- id, tenant_id, model_id, sequence, account_id
- amount_type, amount_value, label
- created_at
RLS: payment_methods, payment_term_lines, reconcile_models
Índices: 6
2.2 05-hr-ext-fase8-schema-ddl.sql
Schemas: hr
ENUMs:
- expense_status (draft, submitted, approved, posted, paid, rejected)
- resume_line_type (experience, education, certification, internal)
- payslip_status (draft, verify, done, cancel)
Tablas:
1. work_locations (12 campos)
2. skill_types (4 campos)
3. skills (7 campos) + codigo_ssa, requiere_cedula
4. skill_levels (6 campos)
5. employee_skills (7 campos)
6. expense_sheets (12 campos) + paciente_id, cita_id
7. expenses (15 campos)
8. employee_resume_lines (10 campos)
9. payslip_structures (7 campos) + tipo_pago
10. payslips (15 campos) + consultorio_id
11. payslip_lines (10 campos)
RLS: work_locations, skill_types, skills, skill_levels,
expense_sheets, expenses, payslip_structures, payslips
Índices: 18
2.3 06-inventory-ext-fase8-schema-ddl.sql
Schemas: inventory
ENUMs: (ninguno)
Tablas:
1. package_types (10 campos)
2. packages (12 campos) + lote, fecha_caducidad, laboratorio, registro_sanitario
3. storage_categories (12 campos) + requiere_refrigeracion, temperatura, es_controlado
4. putaway_rules (10 campos)
5. removal_strategies (5 campos)
RLS: package_types, packages, storage_categories, putaway_rules
Índices: 8
2.4 07-purchase-ext-fase8-schema-ddl.sql
Schemas: purchase
ENUMs: (ninguno)
Tablas:
1. product_supplierinfo (14 campos)
- Extensiones: aplica_iva, requiere_receta, tiempo_entrega_dias
Funciones:
1. action_create_stock_moves(UUID)
RLS: product_supplierinfo
Índices: 4
2.5 08-clinica-ext-fase8-schema-ddl.sql
Schemas: clinica (extensión)
ENUMs: (ninguno)
Tablas:
1. personal_clinica
- id, tenant_id, employee_id, consultorio_id
- rol, vigencia_desde, vigencia_hasta
- es_titular, horario, created_at
2. ratings
- id, tenant_id, consultation_id, patient_id, doctor_id
- rating, feedback, rated_at
- created_at
RLS: personal_clinica, ratings
Índices: 5
3. Seeds Detallados
3.1 00-removal-strategies.sql
INSERT INTO inventory.removal_strategies (code, name, description)
VALUES
('fifo', 'First In First Out', 'Por fecha de entrada'),
('lifo', 'Last In First Out', 'Por fecha más reciente'),
('fefo', 'First Expired First Out', 'Por fecha de caducidad'),
('closest', 'Closest Location', 'Por ubicación más cercana')
ON CONFLICT (code) DO NOTHING;
3.2 01-clinica-skills.sql
-- Tipos de habilidad médica
skill_types: Especialidad, Certificación, Subespecialidad, Curso, Idioma
-- Niveles
skill_levels: Residente, Especialista, Subespecialista, Fellow (4 x 5 tipos)
-- Skills específicos por tipo
Especialidad: Medicina General, Pediatría, Ginecología, Cardiología, etc.
Certificación: COFEPRIS, SSA, Consejo de Especialidad
3.3 02-clinica-catalogos.sql
-- Categorías de almacén
storage_categories: Farmacia General, Refrigerados, Controlados, Material Quirúrgico
-- Tipos de paquete
package_types: Caja Medicamentos, Blister, Frasco, Ampolleta, Bolsa Suero
-- Métodos de pago
payment_methods: Efectivo, Tarjeta, Transferencia, Seguro GMM, Seguro GMA
-- Estructuras de nómina
payslip_structures: Nómina Quincenal, Honorarios, Guardia
4. Orden de Ejecución Refinado
4.1 Script de Ejecución
#!/bin/bash
# ejecutar-fase8-clinicas.sh
DB_NAME="erp_clinicas"
SCRIPTS_DIR="database/schemas"
SEEDS_DIR="database/seeds/fase8"
echo "=== FASE 8: ERP Clínicas ==="
# DDL Schemas
echo "1. Financial extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/04-financial-ext-schema-ddl.sql
echo "2. HR extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/05-hr-ext-fase8-schema-ddl.sql
echo "3. Inventory extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/06-inventory-ext-fase8-schema-ddl.sql
echo "4. Purchase extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/07-purchase-ext-fase8-schema-ddl.sql
echo "5. Clinica extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/08-clinica-ext-fase8-schema-ddl.sql
# Seeds globales
echo "6. Seeds globales..."
psql -d $DB_NAME -f $SEEDS_DIR/00-removal-strategies.sql
echo "=== Seeds por tenant (requiere tenant_id) ==="
# SET app.current_tenant_id = 'UUID';
# psql -d $DB_NAME -f $SEEDS_DIR/01-clinica-skills.sql
# psql -d $DB_NAME -f $SEEDS_DIR/02-clinica-catalogos.sql
echo "=== COMPLETADO ==="
5. Validación Pre-Ejecución
5.1 Checklist
- Schemas base existen
- Tablas core existen (opcional)
- Tablas clinica base existen
- Usuario tiene permisos DDL
- Conexión a base de datos
- Backups realizados
5.2 Comandos de Verificación
-- Verificar schemas
SELECT schema_name FROM information_schema.schemata
WHERE schema_name IN ('financial', 'hr', 'inventory', 'purchase', 'clinica');
-- Verificar tablas clinica existentes
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'clinica';
-- Verificar tenant_id
SELECT current_setting('app.current_tenant_id', true);
6. Métricas Finales
| Métrica | Valor |
|---|---|
| Archivos DDL | 5 |
| Archivos seed | 3 |
| Tablas nuevas | 23 |
| ENUMs nuevos | 5 |
| Funciones nuevas | 1 |
| Índices nuevos | 41 |
| RLS policies | 18 |
| Líneas SQL totales | ~900 |
7. Próximos Pasos
- ✅ Plan refinado completado
- ⏳ FASE 7: Crear archivos DDL y seed
- ⏳ FASE 8: Validación final
Estado: FASE 6 COMPLETADA Siguiente: FASE 7 - Ejecución Fecha: 2026-01-04