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
- 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>
348 lines
13 KiB
Markdown
348 lines
13 KiB
Markdown
# Plan de Implementación - MiChangarrito
|
|
|
|
**Versión**: 3.3.0
|
|
**Última actualización**: 2026-01-10
|
|
**Responsable**: @PERFIL_DEVENV
|
|
|
|
---
|
|
|
|
## Resumen del Proyecto
|
|
|
|
MiChangarrito es un POS inteligente para micro-negocios con asistente IA vía WhatsApp.
|
|
|
|
---
|
|
|
|
## Fases de Implementación
|
|
|
|
### FASE 1: Infraestructura Base ✅ COMPLETADA
|
|
|
|
**Objetivo**: Establecer la base técnica del sistema.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Diseño de base de datos multi-tenant | ✅ Completado | 2026-01-04 |
|
|
| Implementación de 9 schemas DDL | ✅ Completado | 2026-01-04 |
|
|
| Seeds de datos iniciales | ✅ Completado | 2026-01-04 |
|
|
| Scripts de gestión de BD | ✅ Completado | 2026-01-05 |
|
|
| Backend NestJS con 12 módulos | ✅ Completado | 2026-01-05 |
|
|
| WhatsApp Service | ✅ Completado | 2026-01-05 |
|
|
| MCP Server con 15 herramientas | ✅ Completado | 2026-01-05 |
|
|
| Frontend React con 9 páginas | ✅ Completado | 2026-01-05 |
|
|
|
|
**Entregables:**
|
|
- Base de datos: 29 tablas en 9 schemas
|
|
- Backend: Puerto 3141
|
|
- WhatsApp Service: Puerto 3143
|
|
- Frontend: Puerto 3140
|
|
- MCP Server: stdio transport
|
|
|
|
---
|
|
|
|
### FASE 2: Integración y Pruebas ✅ COMPLETADA
|
|
|
|
**Objetivo**: Conectar todos los componentes y validar flujos.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Configurar TypeORM en backend | ✅ Completado | 2026-01-06 |
|
|
| Conectar frontend con API | ✅ Completado | 2026-01-06 |
|
|
| Configurar WhatsApp webhook en Meta | ⏳ Pendiente | - |
|
|
| Pruebas de flujo de pedidos | ✅ Completado | 2026-01-06 |
|
|
| Pruebas de flujo de fiado | ✅ Completado | 2026-01-06 |
|
|
| Pruebas E2E completas | ⏳ Pendiente | - |
|
|
|
|
**Nota**: Webhooks de WhatsApp requieren cuenta Business de Meta (config externa).
|
|
|
|
---
|
|
|
|
### FASE 3: Mobile App ✅ COMPLETADA
|
|
|
|
**Objetivo**: Desarrollar aplicación móvil con Expo.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Setup Expo con TypeScript | ✅ Completado | 2026-01-06 |
|
|
| Pantalla de login | ✅ Completado | 2026-01-06 |
|
|
| Dashboard móvil | ✅ Completado | 2026-01-06 |
|
|
| Punto de venta rápido | ✅ Completado | 2026-01-06 |
|
|
| Escaneo de código de barras | ✅ Completado | 2026-01-07 |
|
|
| Modo offline con sync | ✅ Completado | 2026-01-07 |
|
|
|
|
**Entregables Mobile (10 pantallas):**
|
|
- LoginScreen: Autenticación con PIN de 4 dígitos
|
|
- DashboardScreen: KPIs, ventas del día, alertas
|
|
- SalesScreen: POS con carrito y cobro rápido
|
|
- BarcodeScannerScreen: Escaneo de productos (expo-barcode-scanner)
|
|
- ProductsScreen: CRUD completo de productos con categorías
|
|
- InventoryScreen: Control de stock con ajustes rápidos
|
|
- CustomersScreen: Gestión de clientes con fiado
|
|
- ReportsScreen: Reportes por período con métricas
|
|
- SettingsScreen: Preferencias y configuración
|
|
- MoreScreen: Navegación adicional
|
|
|
|
**Servicios implementados:**
|
|
- ApiService: Cliente axios con interceptors y refresh token
|
|
- OfflineStorage: AsyncStorage para datos offline
|
|
- OfflineSyncContext: Sincronización automática al reconectarse
|
|
|
|
---
|
|
|
|
### FASE 4: Monetización ✅ COMPLETADA
|
|
|
|
**Objetivo**: Implementar sistema de pagos y suscripciones.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Integración Stripe | ✅ Completado | 2026-01-07 |
|
|
| Planes de suscripción | ✅ Completado | 2026-01-07 |
|
|
| Sistema de tokens | ✅ Completado | 2026-01-07 |
|
|
| Paquetes de recarga | ✅ Completado | 2026-01-07 |
|
|
|
|
**Módulo Billing implementado:**
|
|
- BillingService: Gestión de suscripciones y tokens
|
|
- StripeService: SDK de Stripe para pagos
|
|
- WebhooksController: Procesamiento de eventos Stripe
|
|
- BillingController: Endpoints REST para billing
|
|
|
|
**Endpoints disponibles:**
|
|
- GET /billing/plans - Listar planes
|
|
- GET /billing/subscription - Obtener suscripción actual
|
|
- POST /billing/subscribe - Crear suscripción
|
|
- POST /billing/cancel - Cancelar suscripción
|
|
- GET /billing/tokens/balance - Balance de tokens
|
|
- POST /billing/tokens/consume - Consumir tokens
|
|
- POST /billing/tokens/recharge - Recargar tokens
|
|
- POST /billing/webhooks - Webhooks de Stripe
|
|
|
|
**Esquema de BD subscriptions:**
|
|
- plans: 4 planes (gratuito, emprendedor, negocio, enterprise)
|
|
- subscriptions: Suscripciones de tenants con Stripe
|
|
- tenant_token_balance: Balance de tokens por tenant
|
|
- token_usage: Historial de consumo de tokens
|
|
- token_packages: Paquetes de recarga disponibles
|
|
|
|
---
|
|
|
|
### FASE 5: Despliegue ✅ COMPLETADA
|
|
|
|
**Objetivo**: Preparar para producción.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Docker Compose completo | ✅ Completado | 2026-01-07 |
|
|
| CI/CD con GitHub Actions | ✅ Completado | 2026-01-07 |
|
|
| Dockerfiles para cada servicio | ✅ Completado | 2026-01-07 |
|
|
| Nginx reverse proxy | ✅ Completado | 2026-01-07 |
|
|
| Scripts de deployment | ✅ Completado | 2026-01-07 |
|
|
| Documentación de despliegue | ✅ Completado | 2026-01-07 |
|
|
|
|
**Entregables de Despliegue:**
|
|
|
|
Archivos Docker:
|
|
- `docker-compose.yml` - Orquestación de todos los servicios
|
|
- `apps/backend/Dockerfile` - Multi-stage build NestJS
|
|
- `apps/frontend/Dockerfile` - Build React + nginx
|
|
- `apps/whatsapp-service/Dockerfile` - Multi-stage build NestJS
|
|
- `.env.docker` - Template de variables de entorno
|
|
|
|
CI/CD:
|
|
- `.github/workflows/ci.yml` - Pipeline completo (lint, test, build, deploy)
|
|
- Publicación automática de imágenes a GitHub Container Registry
|
|
- Deploy automático en push a main
|
|
|
|
Nginx:
|
|
- `deploy/nginx/nginx.conf` - Configuración principal
|
|
- `deploy/nginx/conf.d/default.conf` - Reverse proxy con rate limiting
|
|
|
|
Scripts:
|
|
- `deploy/scripts/deploy.sh` - Script de despliegue
|
|
- `deploy/scripts/backup.sh` - Backup y restore de BD
|
|
|
|
Documentación:
|
|
- `docs/90-transversal/GUIA-DESPLIEGUE.md` - Guía completa
|
|
|
|
---
|
|
|
|
### FASE 5.1: Integraciones Multi-Tenant ✅ COMPLETADA
|
|
|
|
**Objetivo**: Permitir a cada tenant configurar sus propias credenciales de integraciones (WhatsApp, LLM) con fallback a plataforma.
|
|
|
|
| Tarea | Estado | Fecha |
|
|
|-------|--------|-------|
|
|
| Schema BD tenant_integration_credentials | ✅ Completado | 2026-01-07 |
|
|
| Entidades TypeORM para integraciones | ✅ Completado | 2026-01-07 |
|
|
| TenantIntegrationsService con fallback | ✅ Completado | 2026-01-07 |
|
|
| Endpoints CRUD de credenciales | ✅ Completado | 2026-01-07 |
|
|
| API interna para whatsapp-service | ✅ Completado | 2026-01-07 |
|
|
| Refactorización WhatsApp Service | ✅ Completado | 2026-01-07 |
|
|
| Refactorización LLM Service | ✅ Completado | 2026-01-07 |
|
|
| Resolución de tenant en webhooks | ✅ Completado | 2026-01-07 |
|
|
| Documentación de arquitectura | ✅ Completado | 2026-01-07 |
|
|
|
|
**Componentes implementados:**
|
|
|
|
Backend (apps/backend/src/modules/integrations/):
|
|
- `entities/tenant-integration-credential.entity.ts` - Entidad de credenciales con enums
|
|
- `entities/tenant-whatsapp-number.entity.ts` - Mapeo phoneNumberId → tenantId
|
|
- `services/tenant-integrations.service.ts` - CRUD + resolución con fallback
|
|
- `controllers/integrations.controller.ts` - API REST para tenants
|
|
- `controllers/internal-integrations.controller.ts` - API interna protegida
|
|
- `dto/integration-credentials.dto.ts` - DTOs de validación
|
|
|
|
WhatsApp Service (apps/whatsapp-service/src/):
|
|
- `common/credentials-provider.service.ts` - Cache de credenciales con TTL
|
|
- `common/common.module.ts` - Módulo global
|
|
- Refactorización de `whatsapp.service.ts` - tenantId en todos los métodos
|
|
- Refactorización de `llm.service.ts` - Config LLM por tenant
|
|
- Refactorización de `webhook.service.ts` - Resolución de tenant
|
|
|
|
Base de datos:
|
|
- `database/schemas/12-integrations.sql` - ENUMs + tablas + índices
|
|
|
|
**Endpoints disponibles:**
|
|
|
|
Públicos (requieren JWT):
|
|
- `GET /integrations/status` - Estado de todas las integraciones
|
|
- `GET /integrations/whatsapp` - Config de WhatsApp
|
|
- `PUT /integrations/whatsapp` - Configurar WhatsApp propio
|
|
- `DELETE /integrations/whatsapp` - Eliminar WhatsApp propio
|
|
- `GET /integrations/llm` - Config de LLM
|
|
- `PUT /integrations/llm` - Configurar LLM propio
|
|
- `DELETE /integrations/llm/:provider` - Eliminar LLM
|
|
|
|
Internos (requieren X-Internal-Key):
|
|
- `GET /internal/integrations/:tenantId/whatsapp` - Credenciales WhatsApp
|
|
- `GET /internal/integrations/:tenantId/llm` - Config LLM
|
|
- `GET /internal/integrations/resolve-tenant/:phoneNumberId` - Resolver tenant
|
|
|
|
**Proveedores LLM soportados:**
|
|
- OpenAI (gpt-4o, gpt-4o-mini)
|
|
- OpenRouter (acceso a múltiples modelos)
|
|
- Anthropic (Claude)
|
|
- Azure OpenAI
|
|
- Ollama (local)
|
|
|
|
Documentación:
|
|
- `docs/90-transversal/ARQUITECTURA-MULTI-TENANT-INTEGRACIONES.md`
|
|
|
|
---
|
|
|
|
## Arquitectura Técnica
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ CLIENTES │
|
|
├──────────────┬──────────────┬──────────────┬───────────────┤
|
|
│ Mobile App │ Web Admin │ WhatsApp │ MCP Tools │
|
|
│ (Expo) │ (React) │ (Meta) │ (Claude) │
|
|
│ :8081 │ :3140 │ │ │
|
|
└──────┬───────┴──────┬───────┴──────┬───────┴───────┬───────┘
|
|
│ │ │ │
|
|
└──────────────┼──────────────┼───────────────┘
|
|
│ │
|
|
┌───────▼───────┐ ┌────▼────┐
|
|
│ Backend API │ │WhatsApp │
|
|
│ (NestJS) │ │ Service │
|
|
│ :3141 │ │ :3143 │
|
|
└───────┬───────┘ └────┬────┘
|
|
│ │
|
|
└──────┬───────┘
|
|
│
|
|
┌──────▼──────┐
|
|
│ PostgreSQL │
|
|
│ :5432 │
|
|
│ (9 schemas) │
|
|
└─────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Métricas de Progreso
|
|
|
|
| Fase | Completado | Pendiente | % |
|
|
|------|------------|-----------|---|
|
|
| Fase 1: Infraestructura | 8 | 0 | 100% |
|
|
| Fase 2: Integración | 4 | 2 | 67% |
|
|
| Fase 3: Mobile | 6 | 0 | 100% |
|
|
| Fase 4: Monetización | 4 | 0 | 100% |
|
|
| Fase 5: Despliegue | 6 | 0 | 100% |
|
|
| Fase 5.1: Multi-Tenant Integraciones | 9 | 0 | 100% |
|
|
| **TOTAL** | **37** | **2** | **95%** |
|
|
|
|
---
|
|
|
|
## Dependencias Externas
|
|
|
|
| Servicio | Estado | Notas |
|
|
|----------|--------|-------|
|
|
| PostgreSQL 15 | ✅ Disponible | localhost:5432 (9 schemas, 29 tablas) |
|
|
| Redis 7 | ✅ Disponible | localhost:6379 DB 8 |
|
|
| Meta WhatsApp API | ⏳ Pendiente | Requiere cuenta Business verificada |
|
|
| Stripe | ✅ Integrado | Requiere API keys en .env |
|
|
| OpenRouter/OpenAI | ✅ Multi-tenant | Soporte para credenciales por tenant |
|
|
|
|
---
|
|
|
|
### FASE 6: Configuracion Externa (Consecuente)
|
|
|
|
**Objetivo**: Configurar servicios externos para produccion.
|
|
|
|
**Estado**: Pendiente (requiere accion del usuario)
|
|
|
|
| Tarea | Estado | Dependencia | Perfil |
|
|
|-------|--------|-------------|--------|
|
|
| Configurar Meta Business para WhatsApp | ⏳ Pendiente | Cuenta Business verificada | @PERFIL_DEVOPS |
|
|
| Configurar Stripe produccion | ⏳ Pendiente | Cuenta Stripe activada | @PERFIL_DEVOPS |
|
|
| Configurar LLM Provider | ⏳ Pendiente | API key del proveedor | @PERFIL_BACKEND |
|
|
| Desplegar en servidor produccion | ⏳ Pendiente | Servidor con Docker | @PERFIL_DEVOPS |
|
|
|
|
**Documentacion detallada**: [TAREAS-PENDIENTES-INTEGRACIONES.md](./trazas/TAREAS-PENDIENTES-INTEGRACIONES.md)
|
|
|
|
**Script de validacion**:
|
|
```bash
|
|
./database/scripts/validate-integrations.sh
|
|
```
|
|
|
|
**Notas**:
|
|
- Estas tareas requieren configuracion externa que depende del usuario
|
|
- Se recomienda completar en orden: Servidor -> Stripe -> Meta -> LLM
|
|
- Ver documento de tareas pendientes para instrucciones paso a paso
|
|
- Usar script de validacion para verificar configuraciones
|
|
|
|
---
|
|
|
|
## Proximas Acciones
|
|
|
|
1. **Inmediato**: Configurar servidor de produccion con Docker
|
|
2. **Corto plazo**: Obtener cuenta Business de Meta para WhatsApp
|
|
3. **Corto plazo**: Configurar Stripe API keys en produccion
|
|
4. **Opcional**: Pruebas E2E automatizadas
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- [Contexto del Proyecto](./00-guidelines/CONTEXTO-PROYECTO.md)
|
|
- [Environment Inventory](./environment/ENVIRONMENT-INVENTORY.yml)
|
|
- [Reporte de Implementacion](./reportes/REPORTE-IMPLEMENTACION-2026-01-07.md)
|
|
- [Tareas Pendientes Integraciones](./trazas/TAREAS-PENDIENTES-INTEGRACIONES.md)
|
|
- [Arquitectura Database](../docs/02-especificaciones/ARQUITECTURA-DATABASE.md)
|
|
- [Especificacion de Componentes](../docs/02-especificaciones/ESPECIFICACION-COMPONENTES.md)
|
|
|
|
---
|
|
|
|
## Historial de Cambios
|
|
|
|
| Version | Fecha | Cambios |
|
|
|---------|-------|---------|
|
|
| 1.0.0 | 2026-01-05 | Version inicial con FASE 1 completada |
|
|
| 2.0.0 | 2026-01-07 | Actualizacion con FASES 2, 3 y 4 completadas |
|
|
| 3.0.0 | 2026-01-07 | FASE 5 completada - Docker, CI/CD, deployment |
|
|
| 3.1.0 | 2026-01-07 | FASE 5.1 - Integraciones Multi-Tenant (WhatsApp/LLM por tenant) |
|
|
| 3.2.0 | 2026-01-07 | Validacion builds, BD, y documentacion FASE 6 consecuente |
|
|
| 3.3.0 | 2026-01-10 | Sincronizacion con inventarios v2.0.0 (9 schemas, 29 tablas, 12 modulos, 9 paginas) |
|
|
|
|
---
|
|
|
|
**Fin del Plan**
|