michangarrito/orchestration/_archive/analisis/F3-PLAN-CORRECCIONES-INTEGRIDAD-2026-01-10.md
Adrian Flores Cortes 2fb9f3f6b5
Some checks are pending
CI/CD Pipeline / Backend CI (push) Waiting to run
CI/CD Pipeline / Frontend CI (push) Waiting to run
CI/CD Pipeline / WhatsApp Service CI (push) Waiting to run
CI/CD Pipeline / Mobile CI (push) Waiting to run
CI/CD Pipeline / Docker Build (./apps/backend, ./apps/backend/Dockerfile, backend) (push) Blocked by required conditions
CI/CD Pipeline / Docker Build (./apps/frontend, ./apps/frontend/Dockerfile, frontend) (push) Blocked by required conditions
CI/CD Pipeline / Docker Build (./apps/whatsapp-service, ./apps/whatsapp-service/Dockerfile, whatsapp-service) (push) Blocked by required conditions
CI/CD Pipeline / Deploy to Production (push) Blocked by required conditions
[ESTANDAR-ORCHESTRATION] refactor: Consolidate to standard structure
- 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>
2026-01-24 14:38:04 -06:00

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:

  1. Inventarios: Git checkout del archivo modificado
  2. Entity nueva: Eliminar archivo y remover import
  3. 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

  1. F4: Validar este plan contra el analisis F2
  2. F5: Analizar dependencias de archivos afectados
  3. F6: Refinar plan si es necesario
  4. F7: Ejecutar correcciones
  5. F8: Validar ejecucion

Documento generado: 2026-01-10 Agente: Orquestador (PERFIL-ORQUESTADOR) Sistema: SIMCO v3.8.0 + CAPVED Proxima Fase: F4 - Validacion del Plan