- Move 7 non-standard folders to _archive/ - Archive 3 extra root files - Update _MAP.md with standardized structure Standard: SIMCO-ESTANDAR-ORCHESTRATION v1.0.0 Level: CONSUMER (L2) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.1 KiB
FASE 3: PLAN DE CORRECCIONES DE INTEGRIDAD
Planeacion Detallada de Validacion y Correcciones
Version: 1.0.0 Fecha: 2026-01-10 Ejecutado por: Agente Orquestador (PERFIL-ORQUESTADOR) Sistema: SIMCO v3.8.0 + CAPVED
1. RESUMEN DE HALLAZGOS
Del Analisis F2
| Prioridad | Cantidad | Descripcion |
|---|---|---|
| P0 (Criticos) | 0 | Sin problemas criticos |
| P1 (Altos) | 2 | Discrepancias en inventarios |
| P2 (Medios) | 2 | Entity faltante, inventario incompleto |
| P3 (Bajos) | 1 | Rol de BD opcional |
2. PLAN DE CORRECCIONES
BLOQUE A: Correccion de Inventarios (P1)
A.1 DATABASE_INVENTORY.yml
Archivo: orchestration/inventarios/DATABASE_INVENTORY.yml
Correccion 1: Linea 22, cambiar total_tablas: 53 a total_tablas: 47
# ANTES
resumen:
total_schemas: 11
total_tablas: 53 # <-- INCORRECTO
# DESPUES
resumen:
total_schemas: 11
total_tablas: 47 # <-- CORRECTO
Justificacion: La base de datos real tiene 47 tablas, no 53. Las notas del mismo inventario (linea 903) ya dicen correctamente 47.
A.2 BACKEND_INVENTORY.yml
Archivo: orchestration/inventarios/BACKEND_INVENTORY.yml
Correccion 2: Linea 39, cambiar total_entities: 35 a total_entities: 37
# ANTES
resumen:
total_modulos: 17
total_controllers: 20
total_services: 22
total_entities: 35 # <-- INCORRECTO
# DESPUES
resumen:
total_modulos: 17
total_controllers: 20
total_services: 22
total_entities: 37 # <-- CORRECTO
Correccion 3: Agregar entidades faltantes en modulo marketplace (linea ~409)
# ANTES (modulo marketplace)
entities:
- Supplier (entities/supplier.entity.ts)
- SupplierProduct (entities/supplier-product.entity.ts)
- SupplierOrder (entities/supplier-order.entity.ts)
# DESPUES
entities:
- Supplier (entities/supplier.entity.ts)
- SupplierProduct (entities/supplier-product.entity.ts)
- SupplierOrder (entities/supplier-order.entity.ts)
- SupplierOrderItem (entities/supplier-order-item.entity.ts)
- SupplierReview (entities/supplier-review.entity.ts)
BLOQUE B: Entity Faltante (P2)
Archivo a crear: apps/backend/src/modules/marketplace/entities/supplier-favorites.entity.ts
Contenido:
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn, Unique } from 'typeorm';
import { Supplier } from './supplier.entity';
@Entity({ name: 'supplier_favorites', schema: 'marketplace' })
@Unique(['tenant_id', 'supplier_id'])
export class SupplierFavorites {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column('uuid')
tenant_id: string;
@Column('uuid')
supplier_id: string;
@CreateDateColumn()
created_at: Date;
@ManyToOne(() => Supplier)
@JoinColumn({ name: 'supplier_id' })
supplier: Supplier;
}
Registro en marketplace.module.ts:
Agregar SupplierFavorites al array de entities en TypeOrmModule.forFeature([...])
BLOQUE C: Rol de Base de Datos (P3 - Opcional)
Opcion 1: Crear rol (recomendado si se usara)
-- Agregar a 01-schemas.sql o crear nuevo archivo
CREATE ROLE michangarrito_app WITH LOGIN PASSWORD 'secure_password';
GRANT USAGE ON SCHEMA marketplace TO michangarrito_app;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA marketplace TO michangarrito_app;
Opcion 2: Remover referencias (si no se usara)
En 16-marketplace.sql, remover o comentar las lineas:
-- GRANT SELECT ON marketplace.suppliers TO michangarrito_app;
-- GRANT SELECT ON marketplace.supplier_products TO michangarrito_app;
Recomendacion: Postergar para cuando se implemente control de acceso granular.
3. ORDEN DE EJECUCION
| Orden | Bloque | Archivo | Accion | Dependencia |
|---|---|---|---|---|
| 1 | A.1 | DATABASE_INVENTORY.yml | Editar total_tablas | Ninguna |
| 2 | A.2 | BACKEND_INVENTORY.yml | Editar total_entities | Ninguna |
| 3 | A.2 | BACKEND_INVENTORY.yml | Agregar entities marketplace | Ninguna |
| 4 | B | supplier-favorites.entity.ts | Crear archivo | Ninguna |
| 5 | B | marketplace.module.ts | Registrar entity | Paso 4 |
| 6 | A.2 | BACKEND_INVENTORY.yml | Agregar SupplierFavorites | Paso 4 |
4. CHECKPOINTS DE VALIDACION
Checkpoint 1: Post-Inventarios (Bloques A.1, A.2)
- DATABASE_INVENTORY.yml tiene total_tablas: 47
- BACKEND_INVENTORY.yml tiene total_entities: 37
- BACKEND_INVENTORY.yml lista 5 entities en marketplace
Checkpoint 2: Post-Entity (Bloque B)
- supplier-favorites.entity.ts existe
- marketplace.module.ts importa SupplierFavorites
- BACKEND_INVENTORY.yml lista SupplierFavorites
Checkpoint 3: Validacion Final
- Inventarios sincronizados con realidad
- Backend compila sin errores
- Todas las entidades corresponden a tablas
5. RIESGOS Y MITIGACIONES
| Riesgo | Probabilidad | Impacto | Mitigacion |
|---|---|---|---|
| Error de sintaxis YAML | Baja | Media | Validar con yamllint |
| Entity mal formateada | Baja | Media | Copiar patron existente |
| Import circular | Muy Baja | Alta | Revisar dependencias |
| Falta de registro en module | Media | Alta | Verificar forFeature([]) |
6. ROLLBACK
Si algo falla durante la ejecucion:
- Inventarios: Git checkout del archivo modificado
- Entity nueva: Eliminar archivo y remover import
- Module: Revertir cambio en forFeature
7. TIEMPO ESTIMADO
| Bloque | Archivos | Cambios | Tiempo |
|---|---|---|---|
| A | 2 | 3 ediciones menores | ~5 min |
| B | 2 | 1 archivo nuevo + 1 edicion | ~10 min |
| C | 1 | Opcional | ~5 min |
| Total | 5 | ~5 cambios | ~20 min |
8. PROXIMOS PASOS
- F4: Validar este plan contra el analisis F2
- F5: Analizar dependencias de archivos afectados
- F6: Refinar plan si es necesario
- F7: Ejecutar correcciones
- F8: Validar ejecucion
Documento generado: 2026-01-10 Agente: Orquestador (PERFIL-ORQUESTADOR) Sistema: SIMCO v3.8.0 + CAPVED Proxima Fase: F4 - Validacion del Plan