michangarrito/backups/orchestration-backup-2026-01-10/orchestration/analisis/PLAN-REFINADO-FINAL-2026-01-06.md
rckrdmrd 97f407c661 [MIGRATION-V2] feat: Migrar michangarrito a estructura v2
- Prefijo v2: MCH
- TRACEABILITY-MASTER.yml creado
- Listo para integracion como submodulo

Workspace: v2.0.0 | SIMCO: v4.0.0
2026-01-10 11:28:54 -06:00

331 lines
9.4 KiB
Markdown

# Plan Refinado Final - MiChangarrito FASE 2
**Fecha**: 2026-01-06
**Version**: 2.0 (Refinado)
**Basado en**: Analisis FASE 1-4
---
## RESUMEN EJECUTIVO
Plan de implementacion refinado que incorpora:
- Tareas adicionales identificadas en validacion
- Orden de ejecucion basado en dependencias
- Estimaciones ajustadas (+25%)
- Criterios de aceptacion completos
- Rollback plan definido
---
## 1. TAREAS CONSOLIDADAS Y ORDENADAS
### BLOQUE A: Backend-Database (Dia 1)
| # | ID | Tarea | Prioridad | Horas | Checkpoint |
|---|-----|-------|-----------|-------|------------|
| 1 | A0 | Crear/verificar .env con credenciales DB | P0 | 0.5 | - |
| 2 | A1 | Configurar TypeORM en app.module.ts | P0 | 2 | - |
| 3 | A2 | Verificar entidades vs schemas DDL | P0 | 3 | - |
| 4 | A3 | Crear tenant.middleware.ts (RLS) | P0 | 3 | - |
| 5 | A4 | Registrar middleware en main.ts | P0 | 1 | - |
| 6 | A5 | Actualizar puerto a 3141 | P0 | 0.5 | - |
| 7 | A6 | Verificar conexion y seeds | P0 | 1 | CP1 |
| 8 | A7 | **Configurar CORS** (nuevo) | P0 | 1 | - |
**Subtotal Bloque A**: 12 horas
### BLOQUE B: Frontend-Backend (Dias 2-3)
| # | ID | Tarea | Prioridad | Horas | Checkpoint |
|---|-----|-------|-----------|-------|------------|
| 9 | B0 | Crear .env frontend con API_URL | P0 | 0.5 | - |
| 10 | B1 | Configurar proxy en vite.config.ts | P0 | 0.5 | - |
| 11 | B2 | Actualizar api.ts con interceptors | P0 | 1 | - |
| 12 | B3.1 | **Crear AuthContext.tsx** (nuevo) | P0 | 2 | - |
| 13 | B3.2 | **Crear Login.tsx** (nuevo) | P0 | 2 | - |
| 14 | B3.3 | **Crear Register.tsx** (nuevo) | P0 | 2 | - |
| 15 | B3.4 | Actualizar App.tsx con rutas auth | P0 | 1 | - |
| 16 | B3.5 | Actualizar Layout.tsx con auth nav | P0 | 1 | CP2 |
| 17 | B4 | Conectar Dashboard con API real | P1 | 2 | - |
| 18 | B5 | Conectar Products con API real | P1 | 2 | - |
| 19 | B6 | Conectar Orders con API real | P1 | 2 | - |
| 20 | B7 | Conectar Customers con API real | P1 | 2 | - |
| 21 | B8 | Conectar Fiado con API real | P1 | 2 | - |
| 22 | B9 | Conectar Inventory con API real | P1 | 2 | - |
| 23 | B10 | Conectar Settings con API real | P2 | 1 | - |
| 24 | B11 | **Manejo token expirado** (nuevo) | P1 | 1 | CP3 |
**Subtotal Bloque B**: 24 horas
### BLOQUE C: WhatsApp Service (Dia 4)
| # | ID | Tarea | Prioridad | Horas | Checkpoint |
|---|-----|-------|-----------|-------|------------|
| 25 | C0 | Actualizar .env con BACKEND_API_URL | P0 | 0.5 | - |
| 26 | C1 | Actualizar puerto a 3143 en main.ts | P0 | 0.5 | - |
| 27 | C2 | Implementar fetch productos | P1 | 2 | - |
| 28 | C3 | Implementar fetch categorias | P1 | 1 | - |
| 29 | C4 | Implementar fetch ordenes | P1 | 2 | - |
| 30 | C5 | Implementar fetch fiado | P1 | 2 | - |
| 31 | C6 | Implementar creacion ordenes | P1 | 3 | CP4 |
**Subtotal Bloque C**: 11 horas
### BLOQUE D: MCP Server (Dia 4)
| # | ID | Tarea | Prioridad | Horas | Checkpoint |
|---|-----|-------|-----------|-------|------------|
| 32 | D0 | Crear/actualizar .env | P0 | 0.5 | - |
| 33 | D1 | Actualizar BACKEND_URL en index.ts | P0 | 0.5 | - |
| 34 | D2 | Probar tools con backend real | P1 | 3 | - |
| 35 | D3 | Ajustar endpoints si necesario | P1 | 2 | - |
| 36 | D4 | Documentar estado final | P2 | 1 | CP5 |
**Subtotal Bloque D**: 7 horas
### BLOQUE E: Pruebas Integracion (Dia 5)
| # | ID | Tarea | Prioridad | Horas | Checkpoint |
|---|-----|-------|-----------|-------|------------|
| 37 | E1 | Test flujo registro tenant | P0 | 1 | - |
| 38 | E2 | Test flujo login/logout | P0 | 1 | - |
| 39 | E3 | Test CRUD producto | P1 | 1 | - |
| 40 | E4 | Test crear venta (POS) | P1 | 2 | - |
| 41 | E5 | Test crear pedido | P1 | 1 | - |
| 42 | E6 | Test flujo fiado | P1 | 2 | - |
| 43 | E7 | Test WhatsApp -> pedido | P1 | 2 | - |
| 44 | E8 | Test MCP tools completo | P1 | 2 | - |
| 45 | E9 | **Test error handling** (nuevo) | P1 | 1 | CP6 |
**Subtotal Bloque E**: 13 horas
---
## 2. RESUMEN ESTIMACIONES
| Bloque | Tareas | Horas | Dias (8h) |
|--------|--------|-------|-----------|
| A: Backend-DB | 8 | 12 | 1.5 |
| B: Frontend | 16 | 24 | 3 |
| C: WhatsApp | 7 | 11 | 1.5 |
| D: MCP | 5 | 7 | 1 |
| E: Testing | 9 | 13 | 1.5 |
| **TOTAL** | **45** | **67** | **8.5** |
**Con buffer 20%**: 80 horas = **10 dias habiles**
---
## 3. CRONOGRAMA DETALLADO
### Semana 1
| Dia | Tareas | Checkpoint |
|-----|--------|------------|
| Lun | A0-A7 | CP1: Backend conectado |
| Mar | B0-B3.5 | CP2: Auth funcional |
| Mie | B4-B11 | CP3: Frontend conectado |
| Jue | C0-C6, D0-D4 | CP4, CP5: Servicios conectados |
| Vie | E1-E9 | CP6: Tests completados |
### Semana 2 (Buffer)
| Dia | Actividad |
|-----|-----------|
| Lun | Correccion de bugs |
| Mar | Documentacion final |
| Mie | Review y ajustes |
---
## 4. DEFINICION DE CHECKPOINTS
### CP1: Backend Conectado (Fin Dia 1)
Criterios:
- [ ] Backend inicia en puerto 3141
- [ ] GET /health retorna 200
- [ ] Query a tenants retorna datos
- [ ] RLS middleware activo
Comando verificacion:
```bash
curl http://localhost:3141/health
curl http://localhost:3141/api/v1/products
```
### CP2: Auth Funcional (Fin Dia 2 AM)
Criterios:
- [ ] Pagina /login renderiza
- [ ] Pagina /register renderiza
- [ ] POST /auth/login retorna token
- [ ] Token se guarda en localStorage
Comando verificacion:
```bash
curl -X POST http://localhost:3141/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"phone":"5512345678","pin":"1234"}'
```
### CP3: Frontend Conectado (Fin Dia 3)
Criterios:
- [ ] Dashboard muestra datos reales
- [ ] Products lista desde API
- [ ] Orders muestra pedidos
- [ ] Error 401 redirige a login
### CP4: WhatsApp Conectado (Fin Dia 4 AM)
Criterios:
- [ ] Webhook responde GET
- [ ] Mensaje "hola" funciona
- [ ] Consulta productos funciona
### CP5: MCP Conectado (Fin Dia 4 PM)
Criterios:
- [ ] list_products retorna datos
- [ ] create_order funciona
- [ ] get_fiado_balance funciona
### CP6: Tests Completados (Fin Dia 5)
Criterios:
- [ ] 100% tests E1-E9 pasando
- [ ] Sin errores 500 en logs
- [ ] Flujos documentados
---
## 5. ARCHIVOS A CREAR (NUEVOS)
| Archivo | Contenido |
|---------|-----------|
| apps/backend/.env | Credenciales DB |
| apps/backend/src/common/middleware/tenant.middleware.ts | RLS middleware |
| apps/frontend/.env | API URL |
| apps/frontend/src/contexts/AuthContext.tsx | Estado auth |
| apps/frontend/src/pages/Login.tsx | Pagina login |
| apps/frontend/src/pages/Register.tsx | Pagina registro |
| apps/mcp-server/.env | Backend URL |
---
## 6. ARCHIVOS A MODIFICAR
| Archivo | Cambios |
|---------|---------|
| apps/backend/src/app.module.ts | TypeORM config |
| apps/backend/src/main.ts | Puerto, CORS, middleware |
| apps/frontend/vite.config.ts | Proxy config |
| apps/frontend/src/lib/api.ts | Interceptors, baseURL |
| apps/frontend/src/App.tsx | Rutas protegidas |
| apps/frontend/src/components/Layout.tsx | Auth nav |
| apps/frontend/src/pages/*.tsx | API real |
| apps/whatsapp-service/src/main.ts | Puerto |
| apps/whatsapp-service/src/webhook/webhook.service.ts | Backend calls |
| apps/mcp-server/src/index.ts | Backend URL |
---
## 7. CRITERIOS DE ACEPTACION FINALES
### 7.1 Funcionales
- [ ] Usuario puede registrar nuevo negocio
- [ ] Usuario puede hacer login con PIN
- [ ] Usuario puede ver y crear productos
- [ ] Usuario puede registrar ventas
- [ ] Usuario puede ver pedidos
- [ ] Usuario puede gestionar fiados
- [ ] WhatsApp puede recibir y procesar mensajes
- [ ] MCP tools funcionan con datos reales
### 7.2 Tecnicos
- [ ] Backend conectado a PostgreSQL
- [ ] RLS funcionando (aislamiento tenant)
- [ ] JWT autenticacion funcional
- [ ] Proxy frontend->backend funcional
- [ ] Sin errores en consola (excepto warnings menores)
- [ ] Tiempo respuesta API < 500ms
### 7.3 Documentacion
- [ ] .env.example actualizado
- [ ] README con instrucciones setup
- [ ] Endpoints documentados en Swagger
---
## 8. RIESGOS Y MITIGACIONES
| Riesgo | Prob | Impacto | Mitigacion |
|--------|------|---------|------------|
| Entidades no sincronizan | Alta | Alto | Revisar uno por uno |
| CORS bloquea requests | Media | Medio | Configurar origins |
| JWT invalido | Media | Alto | Logs detallados |
| WhatsApp sin cuenta | Alta | Alto | Mock para desarrollo |
| Performance lenta | Baja | Medio | Indices DB |
---
## 9. DECISION POINTS
### 9.1 Pre-ejecucion
**Requiere respuesta del usuario**:
1. Hay una base de datos PostgreSQL disponible con los schemas creados?
2. Se tiene acceso a cuenta WhatsApp Business o se usa mock?
3. Se tiene API key de OpenAI/LLM o se desactiva temporalmente?
### 9.2 Durante ejecucion
Si falla CP1:
- Opcion A: Revisar credenciales y reintentar
- Opcion B: Escalar a DBA
Si falla CP2:
- Opcion A: Revisar AuthContext y reintentar
- Opcion B: Simplificar auth (solo token sin refresh)
---
## 10. ENTREGABLES FINALES
Al completar FASE 2 se entregara:
1. **Codigo funcional** - Backend, Frontend, WhatsApp, MCP integrados
2. **Documentacion** - README actualizado, .env.example
3. **Reporte de pruebas** - E1-E9 documentados
4. **Reporte de implementacion** - REPORTE-FASE2-COMPLETA.md
5. **Lista de pendientes** - Para FASE 3 (Mobile)
---
## 11. PROXIMOS PASOS
Una vez aprobado este plan:
1. **Confirmar prerrequisitos** (DB, API keys)
2. **Crear branch** `feature/fase2-integration`
3. **Ejecutar Bloque A** (Backend-DB)
4. **Commit CP1**
5. **Continuar secuencialmente**
---
**FIN DEL PLAN REFINADO**
---
**Estado**: PENDIENTE APROBACION USUARIO
**Para aprobar y ejecutar, responder con**: "Aprobar y ejecutar FASE 2"
**Para modificar**: Indicar cambios requeridos