michangarrito/backups/docs-backup-2026-01-10/docs/02-especificaciones/PLAN-DESARROLLO.md
rckrdmrd 928eb795e6 [SIMCO-V38] feat: Actualizar a SIMCO v3.8.0 + cambios apps
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Cambios en backend y frontend

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:05 -06:00

775 lines
18 KiB
Markdown

# MiChangarrito - Plan de Desarrollo
## Estrategia General
### Base de Codigo
- **Reutilizar:** POS-Micro como base (80% del backend)
- **Extender:** Schema de BD con nuevas tablas
- **Adaptar:** Trading-Platform LLM patterns a TypeScript
- **Nuevo:** WhatsApp Service, MCP Server, Mobile App
### Timeline Estimado
- **MVP Fase 1:** 8-10 semanas
- **Fase 2 Inteligencia:** 4-6 semanas
- **Fase 3 Asistente IA:** 6-8 semanas
- **Total MVP Completo:** 18-24 semanas (~5-6 meses)
---
## FASE 1: MVP CORE
### MCH-001: Infraestructura Base
**Duracion estimada:** 1-2 semanas
**Prioridad:** P0
**Dependencias:** Ninguna
#### Tareas Backend
- [ ] Copiar estructura de POS-Micro a michangarrito/apps/backend
- [ ] Actualizar package.json con nombre y dependencias
- [ ] Configurar TypeORM para PostgreSQL 5432 (instancia compartida workspace)
- [ ] Configurar Redis 6379/DB8 (instancia compartida workspace)
- [ ] Implementar health checks
- [ ] Configurar Swagger/OpenAPI
- [ ] Setup Docker Compose (db, redis, mailhog)
- [ ] Configurar ESLint + Prettier
#### Tareas Database
- [ ] Crear script de inicializacion (database/init/)
- [ ] Implementar schema `public` (tenants, tenant_configs)
- [ ] Implementar schema `auth` (users, sessions, otp_codes)
- [ ] Implementar RLS policies basicas
- [ ] Crear funciones utilitarias (generate_ticket_number, update_updated_at)
- [ ] Seeds de datos de prueba
#### Tareas DevOps
- [ ] Crear .env.example completo
- [ ] Documentar proceso de setup
- [ ] Configurar scripts npm (dev, build, test, migration)
#### Entregables
- Backend NestJS corriendo en puerto 3141
- Base de datos con schemas public y auth
- Docker Compose funcional
- Documentacion de setup
---
### MCH-002: Autenticacion
**Duracion estimada:** 1 semana
**Prioridad:** P0
**Dependencias:** MCH-001
#### Tareas Backend
- [ ] Adaptar AuthModule de POS-Micro
- [ ] Implementar registro de tenant + usuario owner
- [ ] Implementar login con OTP (SMS/WhatsApp)
- [ ] Implementar PIN de acceso rapido
- [ ] Configurar JWT con refresh tokens
- [ ] Implementar biometrico (preparar endpoints)
- [ ] Guards para roles (owner, employee)
- [ ] Middleware de tenant isolation
#### Tareas Database
- [ ] Verificar tablas auth.users, auth.sessions, auth.otp_codes
- [ ] Indices para busqueda por telefono
#### Integraciones
- [ ] Servicio de envio OTP (placeholder, luego WhatsApp)
#### Entregables
- Endpoints: POST /auth/register, POST /auth/login, POST /auth/verify-otp
- Endpoints: POST /auth/set-pin, POST /auth/login-pin
- Endpoints: POST /auth/refresh, POST /auth/logout
- Guards funcionando
---
### MCH-003: Catalogo de Productos
**Duracion estimada:** 1 semana
**Prioridad:** P0
**Dependencias:** MCH-002
#### Tareas Backend
- [ ] Copiar ProductsModule de POS-Micro
- [ ] Copiar CategoriesModule de POS-Micro
- [ ] Adaptar DTOs para MiChangarrito
- [ ] Implementar busqueda por nombre (full-text)
- [ ] Implementar busqueda por codigo de barras
- [ ] Endpoint de importacion masiva
- [ ] Endpoint de templates de proveedores
#### Tareas Database
- [ ] Implementar schema `catalog`
- [ ] Tabla catalog.categories
- [ ] Tabla catalog.products
- [ ] Tabla catalog.product_templates
- [ ] Seeds de templates (Bimbo, Coca-Cola, Sabritas)
#### Entregables
- CRUD completo de categorias
- CRUD completo de productos
- Busqueda y filtrado
- Templates de proveedores cargados
---
### MCH-004: Punto de Venta Basico
**Duracion estimada:** 1.5 semanas
**Prioridad:** P0
**Dependencias:** MCH-003
#### Tareas Backend
- [ ] Copiar SalesModule de POS-Micro
- [ ] Adaptar para multiples metodos de pago
- [ ] Implementar generacion de ticket
- [ ] Implementar corte de caja
- [ ] Calculos de totales, impuestos, cambio
- [ ] Cancelacion de ventas
#### Tareas Database
- [ ] Implementar schema `sales`
- [ ] Tabla sales.sales
- [ ] Tabla sales.sale_items
- [ ] Tabla sales.payments
- [ ] Tabla sales.daily_closures
#### Tareas Frontend Web
- [ ] Inicializar proyecto React + Vite en apps/web
- [ ] Configurar TailwindCSS
- [ ] Copiar componentes base de POS-Micro frontend
- [ ] Adaptar POSPage
- [ ] Adaptar CartPanel
- [ ] Adaptar CheckoutModal
- [ ] Implementar login screen
- [ ] Implementar dashboard basico
#### Entregables
- Registro de ventas completo
- Corte de caja funcional
- UI web basica de POS
---
### MCH-005: Integraciones de Pago
**Duracion estimada:** 2 semanas
**Prioridad:** P0
**Dependencias:** MCH-004
#### Tareas Backend - Efectivo
- [ ] Registro de pago en efectivo
- [ ] Calculo de cambio
- [ ] Validacion de montos
#### Tareas Backend - Stripe
- [ ] Configurar SDK de Stripe
- [ ] Crear PaymentsModule para suscripciones
- [ ] Implementar creacion de customer
- [ ] Implementar webhook handler
- [ ] Endpoint para pago con OXXO
#### Tareas Backend - Mercado Pago (Basico)
- [ ] Configurar API de Mercado Pago
- [ ] Implementar creacion de payment intent
- [ ] Implementar webhook handler
- [ ] Manejo de estados de pago
#### Tareas Database
- [ ] Completar tabla sales.payments con todos los campos
- [ ] Indices para referencias externas
#### Entregables
- Pago en efectivo funcionando
- Stripe configurado (suscripciones preparadas)
- Mercado Pago basico funcionando
---
## FASE 2: INTELIGENCIA
### MCH-006: Onboarding Inteligente
**Duracion estimada:** 1.5 semanas
**Prioridad:** P1
**Dependencias:** MCH-002, MCH-003
#### Tareas Backend
- [ ] Crear OnboardingModule
- [ ] Flujo de registro guiado
- [ ] Procesamiento de imagenes (OCR)
- [ ] Procesamiento de audios (transcripcion)
- [ ] Seleccion de templates por giro
- [ ] Estado de onboarding por tenant
#### Integraciones
- [ ] Google Cloud Vision para OCR
- [ ] OpenAI Whisper para audio
#### Entregables
- Flujo de onboarding paso a paso
- Carga de productos desde fotos
- Carga de productos desde audio
---
### MCH-007: Templates y Catalogos
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-003
#### Tareas Backend
- [ ] CRUD de templates administrativo
- [ ] Endpoint de busqueda de templates
- [ ] Importacion de template a tenant
- [ ] Precios sugeridos por region
#### Tareas Database
- [ ] Ampliar catalog.product_templates
- [ ] Seeds extensivos de proveedores
#### Entregables
- Catalogo de 500+ productos template
- Busqueda por proveedor/categoria
- Importacion one-click
---
### MCH-008: Sistema de Fiados
**Duracion estimada:** 1.5 semanas
**Prioridad:** P1
**Dependencias:** MCH-004
#### Tareas Backend
- [ ] Crear CustomersModule
- [ ] Crear FiadosModule
- [ ] CRUD de clientes
- [ ] Registro de fiado al vender
- [ ] Abonos a fiados
- [ ] Recordatorios automaticos
- [ ] Reporte de fiados pendientes
#### Tareas Database
- [ ] Implementar schema `customers`
- [ ] Tabla customers.customers
- [ ] Tabla customers.fiados
- [ ] Tabla customers.fiado_payments
- [ ] Trigger para balance de cliente
#### Entregables
- Gestion completa de clientes
- Sistema de fiados funcional
- Recordatorios configurables
---
### MCH-009: Prediccion de Inventario
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-004
#### Tareas Backend
- [ ] Crear InventoryModule
- [ ] Movimientos de inventario automaticos (ventas)
- [ ] Registro de compras/entradas
- [ ] Alertas de stock bajo
- [ ] Prediccion basica (promedio movil)
- [ ] Sugerencias de resurtido
#### Tareas Database
- [ ] Implementar schema `inventory`
- [ ] Tabla inventory.inventory_movements
- [ ] Tabla inventory.stock_alerts
#### Entregables
- Control de inventario automatico
- Alertas de stock bajo
- Sugerencias de compra basicas
---
## FASE 3: ASISTENTE IA
### MCH-010: MCP Server
**Duracion estimada:** 2 semanas
**Prioridad:** P0
**Dependencias:** MCH-004, MCH-008, MCH-009
#### Tareas MCP Server
- [ ] Inicializar proyecto en apps/mcp-server
- [ ] Configurar MCP SDK TypeScript
- [ ] Implementar transporte stdio
- [ ] Implementar tools basicos:
- [ ] buscar_producto
- [ ] registrar_venta
- [ ] obtener_ventas
- [ ] consultar_stock
- [ ] registrar_fiado
- [ ] obtener_fiados
- [ ] generar_reporte_ventas
- [ ] Implementar autenticacion por tenant
- [ ] Implementar rate limiting
- [ ] Logging de tool calls
#### Tareas Backend
- [ ] Cliente HTTP para MCP Server
- [ ] Tracking de uso de tokens
#### Entregables
- MCP Server corriendo en puerto 3142
- 10+ tools funcionales
- Documentacion de tools
---
### MCH-011: WhatsApp Service
**Duracion estimada:** 2 semanas
**Prioridad:** P0
**Dependencias:** MCH-002
#### Tareas WhatsApp Service
- [ ] Inicializar proyecto NestJS en apps/whatsapp-service
- [ ] Configurar Meta Cloud API
- [ ] Implementar verificacion de webhook
- [ ] Implementar recepcion de mensajes
- [ ] Implementar envio de mensajes (texto, template, botones)
- [ ] Implementar envio de multimedia
- [ ] Deteccion de tipo de usuario (owner vs customer)
- [ ] Persistencia de conversaciones
#### Tareas Database
- [ ] Implementar schema `messaging`
- [ ] Tabla messaging.conversations
- [ ] Tabla messaging.messages
- [ ] Tabla messaging.notifications
#### Integraciones
- [ ] Meta WhatsApp Cloud API
#### Entregables
- WhatsApp Service corriendo en puerto 3143
- Webhook funcional
- Envio/recepcion de mensajes
- Deteccion de roles
---
### MCH-012: Chat LLM Dueno
**Duracion estimada:** 1.5 semanas
**Prioridad:** P1
**Dependencias:** MCH-010, MCH-011
#### Tareas Backend
- [ ] Crear LLMModule
- [ ] Cliente agnostico de LLM (OpenRouter/OpenAI/Claude)
- [ ] System prompts para dueno
- [ ] Integracion con MCP tools
- [ ] Contexto de conversacion
- [ ] Tracking de tokens
#### Tareas WhatsApp
- [ ] Flujo de mensaje de dueno -> LLM -> respuesta
- [ ] Manejo de tool calls
- [ ] Respuestas con formato amigable
#### Entregables
- Dueno puede consultar via WhatsApp:
- "Cuanto vendi hoy?"
- "Que me falta por resurtir?"
- "Registra una venta de 2 cocas"
---
### MCH-013: Chat LLM Cliente
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-012
#### Tareas Backend
- [ ] System prompts para cliente
- [ ] Tools limitados para cliente
- [ ] Deteccion de intencion (consulta, pedido, precio)
#### Tareas WhatsApp
- [ ] Flujo de mensaje cliente -> LLM -> respuesta
- [ ] Notificacion a dueno de pedidos
#### Entregables
- Cliente puede consultar via WhatsApp:
- "Tienen refrescos?"
- "A como el kilo de tortilla?"
- "Quiero pedir 3 tacos para llevar"
---
## FASE 4: PEDIDOS Y CLIENTES
### MCH-014: Gestion de Clientes
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-008
#### Tareas Backend
- [ ] Extender CustomersModule
- [ ] Historial de compras por cliente
- [ ] Productos frecuentes
- [ ] Comunicacion directa por WhatsApp
#### Tareas Frontend
- [ ] Pantalla de clientes
- [ ] Detalle de cliente
- [ ] Historial de compras
#### Entregables
- Gestion completa de clientes en web
- Historial y estadisticas
---
### MCH-015: Pedidos via WhatsApp
**Duracion estimada:** 1.5 semanas
**Prioridad:** P1
**Dependencias:** MCH-013
#### Tareas Backend
- [ ] Crear OrdersModule
- [ ] Recepcion de pedidos desde LLM
- [ ] Estados de pedido
- [ ] Notificaciones push de nuevo pedido
#### Tareas Database
- [ ] Implementar schema `orders`
- [ ] Tabla orders.orders
- [ ] Tabla orders.order_items
#### Tareas Frontend
- [ ] Vista de pedidos pendientes
- [ ] Aceptar/rechazar pedido
- [ ] Cobrar pedido
#### Entregables
- Flujo completo de pedidos
- Notificaciones en tiempo real
---
### MCH-016: Entregas a Domicilio
**Duracion estimada:** 1 semana
**Prioridad:** P2
**Dependencias:** MCH-015
#### Tareas Backend
- [ ] Configuracion de zonas de entrega
- [ ] Costos de envio
- [ ] Estados de entrega
- [ ] Tracking basico
#### Entregables
- Configuracion de delivery
- Estados de pedido con entrega
---
### MCH-017: Notificaciones
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-011
#### Tareas Backend
- [ ] Crear NotificationsModule
- [ ] Integracion Firebase FCM
- [ ] Programacion de notificaciones
- [ ] Resumen diario automatico
- [ ] Alertas de stock
#### Integraciones
- [ ] Firebase Cloud Messaging
#### Entregables
- Push notifications funcionales
- Resumen diario por WhatsApp
- Alertas configurables
---
## FASE 5: MONETIZACION
### MCH-018: Planes y Suscripciones
**Duracion estimada:** 1.5 semanas
**Prioridad:** P0
**Dependencias:** MCH-005
#### Tareas Backend
- [ ] Crear SubscriptionsModule
- [ ] Definicion de planes (Changarrito, Tiendita)
- [ ] Creacion de suscripcion en Stripe
- [ ] Manejo de webhooks de suscripcion
- [ ] Cambio de plan
- [ ] Cancelacion
#### Tareas Database
- [ ] Implementar schema `subscriptions`
- [ ] Tabla subscriptions.plans
- [ ] Tabla subscriptions.subscriptions
#### Entregables
- Planes configurados en Stripe
- Suscripcion funcional
---
### MCH-019: Tienda de Tokens
**Duracion estimada:** 1 semana
**Prioridad:** P1
**Dependencias:** MCH-018
#### Tareas Backend
- [ ] Paquetes de tokens
- [ ] Compra de tokens (Stripe)
- [ ] Balance de tokens por tenant
- [ ] Consumo de tokens en cada llamada LLM
#### Tareas Database
- [ ] Tabla subscriptions.token_packages
- [ ] Tabla subscriptions.token_usage
- [ ] Tabla subscriptions.tenant_token_balance
#### Entregables
- Tienda de tokens funcional
- Tracking de consumo
---
### MCH-020: Pagos Suscripcion
**Duracion estimada:** 1 semana
**Prioridad:** P0
**Dependencias:** MCH-018
#### Tareas Backend
- [ ] Pago con OXXO (referencia)
- [ ] Preparar IAP iOS (endpoints)
- [ ] Preparar IAP Android (endpoints)
#### Entregables
- Multiples metodos de pago para suscripcion
---
### MCH-021: Dashboard Web
**Duracion estimada:** 2 semanas
**Prioridad:** P1
**Dependencias:** MCH-004, MCH-008
#### Tareas Frontend
- [ ] Dashboard principal con metricas
- [ ] Graficas de ventas
- [ ] Productos mas vendidos
- [ ] Reportes descargables
- [ ] Configuracion de negocio
- [ ] Gestion de suscripcion
#### Entregables
- Dashboard web completo
- Reportes PDF/Excel
---
## FASE 6: CRECIMIENTO
### MCH-022: Modo Offline
**Duracion estimada:** 2 semanas
**Prioridad:** P1
**Dependencias:** MCH-004
#### Tareas Mobile
- [ ] SQLite local
- [ ] Sync de productos
- [ ] Registro offline de ventas
- [ ] Cola de sincronizacion
- [ ] Resolucion de conflictos
#### Entregables
- App funcional sin internet
- Sincronizacion automatica
---
### MCH-023: Programa Referidos
**Duracion estimada:** 1 semana
**Prioridad:** P2
**Dependencias:** MCH-018
#### Tareas Backend
- [ ] Generacion de codigos de referido
- [ ] Tracking de referidos
- [ ] Aplicacion de beneficios
#### Entregables
- Sistema de referidos funcional
---
### MCH-024: CoDi y SPEI
**Duracion estimada:** 1.5 semanas
**Prioridad:** P2
**Dependencias:** MCH-005
#### Tareas Backend
- [ ] Integracion con Openpay para CoDi
- [ ] Generacion de QR
- [ ] CLABE virtual (si disponible)
#### Entregables
- Cobro con CoDi funcional
---
### MCH-025: Widgets y Atajos
**Duracion estimada:** 1 semana
**Prioridad:** P2
**Dependencias:** MCH-004
#### Tareas Mobile
- [ ] Android widget de venta rapida
- [ ] iOS quick actions
- [ ] Deep links
#### Entregables
- Widgets funcionales
---
## APP MOBILE (Paralelo a Fases 3-5)
### Desarrollo React Native
**Duracion estimada:** 8-10 semanas (paralelo)
**Prioridad:** P0
#### Semanas 1-2: Setup
- [ ] Inicializar proyecto Expo en apps/mobile
- [ ] Configurar navegacion (React Navigation)
- [ ] Configurar estado global (Zustand)
- [ ] Configurar API client
- [ ] Pantalla de login
#### Semanas 3-4: Core
- [ ] Pantalla de POS
- [ ] Componente de carrito
- [ ] Checkout modal
- [ ] Scanner de codigo de barras
#### Semanas 5-6: Features
- [ ] Pantalla de productos
- [ ] Pantalla de clientes
- [ ] Pantalla de fiados
- [ ] Pantalla de pedidos
#### Semanas 7-8: Integraciones
- [ ] Push notifications (Expo Notifications)
- [ ] Bluetooth para terminal (si aplica)
- [ ] Deep linking
#### Semanas 9-10: Polish
- [ ] UI/UX refinamiento
- [ ] Performance optimization
- [ ] Testing
- [ ] Build para TestFlight/Play Console
---
## Cronograma Visual
```
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| | | | | | | | | | | | | | | | | |
MCH-001 ████
MCH-002 ██
MCH-003 ██
MCH-004 ███
MCH-005 ████
--- MVP FASE 1 COMPLETADO (Semana 7) ---
MCH-006 ███
MCH-007 ██
MCH-008 ███
MCH-009 ██
--- FASE 2 COMPLETADA (Semana 11) ---
MCH-010 ████
MCH-011 ████
MCH-012 ███
MCH-013 ██
--- FASE 3 COMPLETADA (Semana 15) ---
MCH-014 ██
MCH-015 ███
MCH-017 ██
--- FASE 4 BASICA COMPLETADA (Semana 18) ---
MOBILE |███████████████████████████████████████████████████|
| Setup | Core | Features | Integ | Polish |
```
---
## Metricas de Exito por Fase
### Fase 1 - MVP Core
- [ ] Registro de ventas funcional
- [ ] 3 metodos de pago (efectivo, Stripe, MP)
- [ ] Corte de caja diario
- [ ] UI web basica
### Fase 2 - Inteligencia
- [ ] Onboarding < 10 minutos
- [ ] 500+ productos en templates
- [ ] Sistema de fiados completo
- [ ] Alertas de stock automaticas
### Fase 3 - Asistente IA
- [ ] Respuesta LLM < 3 segundos
- [ ] 10+ tools MCP funcionales
- [ ] Deteccion de rol 95%+ precision
- [ ] Costo < $0.01 por interaccion
### Fase 4 - Pedidos
- [ ] Flujo pedido->cobro < 2 minutos
- [ ] Push notifications funcionando
- [ ] 0 pedidos perdidos
### Fase 5 - Monetizacion
- [ ] Suscripciones activas
- [ ] Tokens comprables
- [ ] Retencion > 80% mes 2
---
## Riesgos y Mitigaciones
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Bloqueo WhatsApp API | Media | Alto | Usar API oficial, seguir guidelines |
| Costos LLM elevados | Media | Medio | OpenRouter, modelos economicos, cache |
| Integracion terminal compleja | Media | Medio | Priorizar una terminal primero |
| Adopcion usuario mayor | Alta | Alto | UX extremadamente simple, WhatsApp-first |
| Competencia | Media | Medio | Diferenciacion por IA y simplicidad |
---
## Equipo Sugerido
| Rol | Cantidad | Enfoque |
|-----|----------|---------|
| Backend Developer | 2 | NestJS, integraciones, MCP |
| Frontend Developer | 1 | React web + React Native |
| DevOps | 0.5 | CI/CD, infraestructura |
| Product/PM | 0.5 | Prioridades, testing |
**Total:** 4 FTEs
---
**Version:** 1.0.0
**Fecha:** 2026-01-04