michangarrito/docs/00-vision-general/REQUERIMIENTOS-FUNCIONALES.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

19 KiB

id title type status priority module version created_date updated_date total_requirements implemented pending owner tags
RF-MCH-001 Requerimientos Funcionales MiChangarrito Requirement Approved P0 core 1.1.0 2026-01-04 2026-01-10 20 15 5 Product Team
requerimientos
funcional
saas

MiChangarrito - Requerimientos Funcionales

Campo Valor
ID RF-MCH-001
Tipo Requirement Specification
Estado Approved
Total Requisitos 20
Implementados 15 (75%)
Pendientes 5
Version 1.1.0

Indice de Requerimientos

ID Nombre Prioridad Estado Epica
RF-001 Punto de Venta (POS) P0 Implementado MCH-004
RF-002 Catalogo de Productos P0 Implementado MCH-003
RF-003 Inventario P0 Implementado MCH-009
RF-004 Sistema de Fiados P1 Implementado MCH-008
RF-005 Clientes P1 Implementado MCH-014
RF-006 Pedidos de Clientes P1 Implementado MCH-015
RF-007 Asistente IA (LLM) P0 Implementado MCH-010
RF-008 WhatsApp Business P0 Implementado MCH-011
RF-009 Pagos y Suscripciones P0 Implementado MCH-005
RF-010 Reportes y Analytics P1 Implementado MCH-021
RF-011 Notificaciones P1 Implementado MCH-017
RF-012 Modo Offline P1 Implementado MCH-022
RF-013 Integraciones Terminal P0 Implementado MCH-005
RF-014 Onboarding P1 Implementado MCH-006
RF-015 Seguridad y Acceso P0 Implementado MCH-002
RF-016 Programa de Referidos P2 Pendiente MCH-023
RF-017 Soporte P2 Parcial -
RF-018 Audit Logs P1 Pendiente -
RF-019 Feature Flags P1 Pendiente -
RF-020 Rate Limiting P1 Pendiente -

RF-001: Punto de Venta (POS)

Campo Valor
ID RF-001
Prioridad P0
Estado Implementado
Epica MCH-004

RF-001.1: Registro de Ventas

  • Agregar productos manualmente o por búsqueda
  • Escanear código de barras (cámara del celular)
  • Ajustar cantidad de productos
  • Aplicar descuentos (porcentaje o monto fijo)
  • Calcular total automáticamente
  • Mostrar desglose de productos

RF-001.2: Métodos de Cobro

  • Efectivo: Ingresar monto recibido, calcular cambio
  • Tarjeta Mercado Pago: Conexión Bluetooth con terminal
  • Tarjeta Clip: Conexión Bluetooth con terminal
  • CoDi: Generar QR de cobro, esperar confirmación
  • Transferencia SPEI: Mostrar CLABE virtual, confirmar manual
  • Fiado/Crédito: Registrar deuda a cliente

RF-001.3: Tickets y Comprobantes

  • Generar ticket digital (imagen/PDF)
  • Enviar por WhatsApp al cliente
  • Imprimir en impresora térmica Bluetooth (opcional)
  • Historial de tickets

RF-001.4: Corte de Caja

  • Corte parcial (sin cerrar día)
  • Corte de día completo
  • Resumen por método de pago
  • Diferencia efectivo esperado vs real
  • Enviar resumen por WhatsApp

Criterios de Aceptacion

Feature: RF-001 - Punto de Venta (POS)

  Scenario: Registrar venta con efectivo
    Given el usuario esta autenticado como dueno
    And tiene productos en el carrito por $150 MXN
    When selecciona "Efectivo" como metodo de pago
    And ingresa $200 como monto recibido
    Then el sistema calcula cambio de $50 MXN
    And genera ticket de venta
    And actualiza inventario

  Scenario: Corte de caja
    Given hay ventas registradas en el dia
    When el usuario solicita "Corte de caja"
    Then muestra resumen por metodo de pago
    And calcula diferencia esperado vs real
    And envia resumen por WhatsApp

RF-002: Catalogo de Productos

RF-002.1: Gestión de Productos

  • Crear producto (nombre, precio, código de barras)
  • Editar producto
  • Eliminar/desactivar producto
  • Categorizar productos
  • Foto del producto (opcional)
  • Precio de compra (para calcular margen)

RF-002.2: Importación de Productos

  • Desde foto (OCR de lista de precios)
  • Desde archivo Excel/CSV
  • Desde templates predefinidos (Bimbo, Coca-Cola, etc.)
  • Desde audio (transcripción y procesamiento IA)
  • Copia de otro negocio similar (con permiso)

RF-002.3: Templates de Proveedores

  • Bimbo: Pan, galletas, pastelitos
  • Coca-Cola/FEMSA: Refrescos, jugos, agua
  • PepsiCo: Sabritas, Gamesa, bebidas
  • Modelo/Corona: Cervezas (donde aplique)
  • Ricolino: Dulces, chocolates
  • Genéricos: Productos básicos de abarrotes
  • Giros específicos: Taquería, fonda, nevería

RF-002.4: Variantes y Presentaciones

  • Mismo producto, diferentes tamaños
  • Precios por presentación
  • Código de barras por variante

RF-003: Inventario

RF-003.1: Control de Stock

  • Stock actual por producto
  • Stock mínimo configurable
  • Alertas de stock bajo (WhatsApp y push)
  • Historial de movimientos

RF-003.2: Entradas de Inventario

  • Registro de compras a proveedor
  • Entrada desde foto de nota/factura (OCR)
  • Ajustes manuales (merma, robo, etc.)

RF-003.3: Predicción de Resurtido

  • Análisis de ventas históricas
  • Sugerencia de cuánto comprar
  • Alertas proactivas: "En 3 días se te acaba la Coca"

RF-004: Sistema de Fiados/Crédito

RF-004.1: Registro de Fiados

  • Fiar a cliente identificado
  • Monto máximo de crédito por cliente
  • Fecha límite de pago (opcional)
  • Notas del fiado

RF-004.2: Gestión de Cobros

  • Lista de fiados pendientes por cliente
  • Total de fiados del negocio
  • Marcar como pagado (parcial o total)
  • Recordatorios automáticos por WhatsApp al cliente

RF-004.3: Historial

  • Historial de fiados por cliente
  • Clientes morosos
  • Reporte de fiados

RF-005: Clientes

RF-005.1: Registro de Clientes

  • Nombre, teléfono (WhatsApp)
  • Dirección (para entregas)
  • Notas
  • Registro automático desde WhatsApp

RF-005.2: Historial de Cliente

  • Compras realizadas
  • Fiados pendientes y pagados
  • Productos frecuentes
  • Total gastado

RF-005.3: Comunicación

  • Enviar mensaje por WhatsApp
  • Notificaciones de promociones
  • Recordatorios de fiado

RF-006: Pedidos de Clientes

RF-006.1: Recepción de Pedidos

  • Cliente envía pedido por WhatsApp
  • LLM interpreta y estructura el pedido
  • Notificación push al dueño
  • Vista de pedidos pendientes

RF-006.2: Procesamiento

  • Aceptar/rechazar pedido
  • Modificar pedido
  • Confirmar disponibilidad de productos
  • Calcular total

RF-006.3: Cobro de Pedido

  • Link de pago (Stripe)
  • Pago presencial con terminal
  • Pago en efectivo al entregar
  • CoDi

RF-006.4: Entregas a Domicilio

  • Marcar pedido como "para entrega"
  • Dirección del cliente
  • Costo de envío configurable
  • Estado: preparando, en camino, entregado

RF-007: Asistente IA (LLM)

Campo Valor
ID RF-007
Prioridad P0
Estado Implementado
Epica MCH-010

RF-007.1: Canales de Comunicacion

  • WhatsApp (principal)
  • Chat in-app
  • Comandos de voz (futuro)

RF-007.2: Capacidades para Dueño del Negocio

  • Consultar ventas: "¿Cuánto vendí hoy/esta semana/este mes?"
  • Consultar ganancias: "¿Cuál es mi utilidad de hoy?"
  • Consultar inventario: "¿Cuántas Coca-Colas tengo?"
  • Alertas: "¿Qué me falta por resurtir?"
  • Predicciones: "¿Cuándo debo comprar más pan?"
  • Registrar venta por chat: "Vendí 2 refrescos y una torta"
  • Agregar producto: "Agrega un producto nuevo: Doritos a $18"
  • Generar reportes: "Mándame el reporte de la semana"
  • Configurar: "Cambia el precio de la Coca a $22"

RF-007.3: Capacidades para Clientes

  • Identificación: Detectar que es cliente (no dueño)
  • Consultar productos: "¿Tienen refrescos?"
  • Hacer pedido: "Quiero 3 tacos y una Coca"
  • Preguntar precios: "¿A cómo el kilo de tortilla?"
  • Estado de pedido: "¿Ya está mi pedido?"
  • Horarios: "¿A qué hora abren?"

RF-007.4: MCP Server - Herramientas

TOOLS DISPONIBLES:

# Ventas
- registrar_venta(productos, metodo_pago, cliente?)
- obtener_ventas(periodo, filtros?)
- generar_corte_caja()
- calcular_ganancias(periodo)

# Productos
- buscar_producto(query)
- crear_producto(datos)
- actualizar_producto(id, datos)
- obtener_precio(producto)

# Inventario
- consultar_stock(producto?)
- registrar_entrada(productos)
- obtener_alertas_stock()
- predecir_resurtido(producto?)

# Clientes
- buscar_cliente(telefono)
- crear_cliente(datos)
- historial_cliente(cliente_id)
- enviar_mensaje_cliente(cliente_id, mensaje)

# Fiados
- registrar_fiado(cliente_id, monto, descripcion)
- obtener_fiados(cliente_id?)
- marcar_fiado_pagado(fiado_id, monto?)

# Pedidos
- crear_pedido(cliente_id, productos)
- obtener_pedidos(estado?)
- actualizar_pedido(pedido_id, estado)
- enviar_link_pago(pedido_id)

# Reportes
- generar_reporte(tipo, periodo, formato)
- enviar_reporte_whatsapp(reporte, destino)
- exportar_excel(datos)

# Configuracion
- obtener_configuracion(clave?)
- actualizar_configuracion(clave, valor)
- obtener_horarios()
- actualizar_horarios(horarios)

Criterios de Aceptacion

Feature: RF-007 - Asistente IA (LLM)

  Scenario: Dueno consulta ventas por WhatsApp
    Given el usuario es el dueno del negocio
    And el negocio tiene saldo de tokens > 0
    When envia mensaje "Cuanto vendi hoy?"
    Then el LLM detecta intencion de consulta de ventas
    And ejecuta tool obtener_ventas(periodo="hoy")
    And responde con total de ventas del dia
    And descuenta tokens utilizados

  Scenario: Cliente hace pedido por WhatsApp
    Given el usuario es un cliente (no dueno)
    When envia mensaje "Quiero 3 tacos y una coca"
    Then el LLM detecta que es cliente
    And detecta intencion de pedido
    And estructura el pedido con productos
    And notifica al dueno del negocio
    And responde al cliente con confirmacion

  Scenario: Sin saldo de tokens
    Given el negocio tiene saldo de tokens = 0
    When el dueno envia mensaje por WhatsApp
    Then el sistema responde con mensaje de saldo agotado
    And ofrece opciones de recarga

RF-008: WhatsApp Business

Campo Valor
ID RF-008
Prioridad P0
Estado Implementado
Epica MCH-011

RF-008.1: Configuracion de Numero

  • Opción A: WhatsApp Business propio del negocio

    • Conexión vía Meta Business API
    • Verificación del número
  • Opción B: Número compartido de la plataforma

    • Un número para múltiples negocios
    • Detección de negocio por contexto
    • "Hola, busco [Nombre Negocio]"

RF-008.2: Detección de Rol

  • Identificar si es dueño o cliente
  • Dueño: Acceso completo a gestión
  • Cliente: Solo consultas y pedidos

RF-008.3: Mensajes Automatizados

  • Bienvenida
  • Fuera de horario
  • Confirmación de pedido
  • Recordatorio de fiado
  • Alertas de inventario

RF-008.4: Multimedia

  • Recibir y procesar fotos (OCR)
  • Recibir y transcribir audios
  • Enviar tickets/reportes como imagen
  • Enviar documentos PDF

RF-009: Pagos y Suscripciones

RF-009.1: Suscripción del Negocio

  • Plan Changarrito ($99/mes)
  • Plan Tiendita ($199/mes)
  • Cambio de plan
  • Cancelación

RF-009.2: Métodos de Pago de Suscripción

  • Tarjeta (Stripe) - Recurrente
  • OXXO (Stripe) - Referencia única
  • Play Store In-App Purchase
  • App Store In-App Purchase

RF-009.3: Paquetes de Tokens IA

  • Compra de paquetes
  • Visualización de saldo
  • Historial de consumo
  • Alertas de saldo bajo

RF-009.4: Facturación (Opcional)

  • Solicitar factura
  • Datos fiscales del negocio
  • Descarga de facturas

RF-010: Reportes y Analytics

RF-010.1: Dashboard Web

  • Ventas del día/semana/mes
  • Gráficas de tendencia
  • Productos más vendidos
  • Comparativas de periodos

RF-010.2: Reportes Generables

  • Ventas por periodo
  • Inventario actual
  • Productos por agotarse
  • Fiados pendientes
  • Ganancias y márgenes
  • Cortes de caja históricos

RF-010.3: Formatos de Exportación

  • PDF
  • Excel
  • Imagen (para WhatsApp)

RF-011: Notificaciones

RF-011.1: Push Notifications

  • Nuevo pedido de cliente
  • Fiado por vencer
  • Stock bajo
  • Pago recibido

RF-011.2: WhatsApp

  • Resumen diario de ventas
  • Alertas de inventario
  • Recordatorios configurables

RF-011.3: Configuración

  • Activar/desactivar por tipo
  • Horarios de no molestar
  • Frecuencia

RF-012: Modo Offline

RF-012.1: Funcionalidad Sin Internet

  • Registrar ventas
  • Consultar productos y precios
  • Agregar productos al carrito
  • Ver historial local

RF-012.2: Sincronización

  • Automática al recuperar conexión
  • Manual forzada
  • Resolución de conflictos
  • Indicador de datos pendientes

RF-013: Integraciones de Terminal

RF-013.1: Mercado Pago

  • Pareado Bluetooth con terminal
  • Envío de monto a cobrar
  • Recepción de confirmación
  • Manejo de errores/rechazos

RF-013.2: Clip

  • Pareado Bluetooth con terminal
  • Envío de monto a cobrar
  • Recepción de confirmación
  • Manejo de errores/rechazos

RF-013.3: CoDi

  • Generación de QR
  • Polling de confirmación
  • Timeout y reintentos

RF-014: Onboarding

RF-014.1: Registro de Negocio

  • Nombre del negocio
  • Giro (abarrotes, comida, etc.)
  • Ubicación (colonia, ciudad)
  • Teléfono del dueño

RF-014.2: Configuración Inicial Guiada

  • Vía WhatsApp con LLM
  • Paso a paso en app
  • Cargar productos iniciales
  • Seleccionar templates

RF-014.3: Tutorial

  • Primeros pasos interactivo
  • Videos cortos
  • Tips por WhatsApp los primeros días

RF-015: Seguridad y Acceso

RF-015.1: Autenticación

  • Login con teléfono + OTP (SMS/WhatsApp)
  • PIN de acceso rápido
  • Biométrico (huella/face)

RF-015.2: Roles (Futuro)

  • Dueño: Acceso total
  • Empleado: Solo ventas
  • Contador: Solo reportes

RF-015.3: Datos

  • Encriptación en tránsito (HTTPS)
  • Encriptación en reposo
  • Backups automáticos

RF-016: Programa de Referidos

RF-016.1: Mecánica

  • Código/link único por negocio
  • Beneficio por referido: 1 mes gratis (ambos)
  • Tracking de referidos

RF-016.2: Comunicación

  • Compartir por WhatsApp
  • Ver referidos activos
  • Historial de beneficios

RF-017: Soporte

RF-017.1: Autoservicio

  • FAQ en app
  • Videos tutoriales
  • Asistente IA para dudas

RF-017.2: Humano (Escalación)

  • Chat con soporte (cuando IA no resuelve)
  • Teléfono de emergencia
  • Horario de atención

RF-018: Sistema de Audit Logs

Campo Valor
ID RF-018
Prioridad P1
Estado Pendiente
Epica Pendiente de asignar
Referencia SaaS SAAS-008 (template-saas)

RF-018.1: Registro de Eventos

  • Log de acciones de usuario (login, logout, cambios)
  • Log de operaciones de negocio (ventas, cambios de precio)
  • Log de eventos de sistema (errores, integraciones)
  • Metadata: timestamp, user_id, tenant_id, ip, action, details

RF-018.2: Consulta de Logs

  • Filtros por fecha, usuario, tipo de accion
  • Busqueda full-text en detalles
  • Exportacion CSV/JSON
  • Retencion configurable (90 dias default)

Criterios de Aceptacion

Feature: RF-018 - Audit Logs

  Scenario: Registrar accion de venta
    Given un usuario realiza una venta
    When la transaccion se completa
    Then se registra log con action="sale_created"
    And incluye tenant_id, user_id, timestamp
    And incluye detalles de la venta

  Scenario: Consultar logs por fecha
    Given existen logs de los ultimos 30 dias
    When el admin filtra por fecha "2026-01-10"
    Then muestra solo logs de esa fecha
    And permite exportar a CSV

RF-019: Feature Flags por Plan

Campo Valor
ID RF-019
Prioridad P1
Estado Pendiente
Epica Pendiente de asignar
Referencia SaaS SAAS-009 (template-saas)

RF-019.1: Configuracion de Flags

  • Flags globales (on/off para todos)
  • Flags por plan (Changarrito vs Tiendita)
  • Flags por tenant (override individual)
  • UI de administracion para superadmin

RF-019.2: Evaluacion de Flags

  • SDK para evaluar flag en backend
  • Hook para evaluar flag en frontend
  • Cache de evaluaciones
  • Default values seguros

Criterios de Aceptacion

Feature: RF-019 - Feature Flags

  Scenario: Feature habilitada por plan
    Given el tenant tiene plan "Tiendita"
    And feature "advanced_reports" esta habilitada para plan Tiendita
    When el frontend evalua el flag
    Then devuelve enabled=true
    And muestra la funcionalidad

  Scenario: Feature deshabilitada por plan
    Given el tenant tiene plan "Changarrito"
    And feature "advanced_reports" NO esta habilitada para plan Changarrito
    When el frontend evalua el flag
    Then devuelve enabled=false
    And oculta la funcionalidad
    And muestra mensaje de upgrade

RF-020: Rate Limiting por Plan

Campo Valor
ID RF-020
Prioridad P1
Estado Pendiente
Epica Pendiente de asignar
Referencia SaaS SAAS-005 (template-saas)

RF-020.1: Limites por Plan

Limite Changarrito Tiendita
Transacciones/dia 200 Ilimitadas
Productos 500 5,000
Tokens IA/mes 500 base 2,000 base
Storage (MB) 100 500
Usuarios 1 3

RF-020.2: Enforcement

  • Middleware de validacion en cada request
  • Contadores en Redis
  • Reset diario/mensual segun tipo
  • Mensajes claros al alcanzar limite
  • Upgrade path (link a subir plan)

Criterios de Aceptacion

Feature: RF-020 - Rate Limiting

  Scenario: Tenant alcanza limite de transacciones
    Given el tenant tiene plan "Changarrito"
    And ha registrado 200 transacciones hoy
    When intenta registrar transaccion 201
    Then recibe error "Limite diario alcanzado"
    And muestra opcion de upgrade a plan Tiendita

  Scenario: Reset de limite diario
    Given el tenant alcanzo limite ayer
    When inicia nuevo dia (00:00 UTC)
    Then el contador de transacciones se resetea a 0
    And puede registrar nuevas transacciones

Referencias

Documentos Relacionados

Documento Relacion
VISION-PROYECTO.md Contexto de negocio
ARQUITECTURA-TECNICA.md Implementacion tecnica
Epicas Implementacion por epica

Inventarios

Inventario Contenido
MASTER_INVENTORY Estado consolidado
BACKEND_INVENTORY Modulos y endpoints

Patrones de Referencia (template-saas)

Patron Modulo
SAAS-008 Audit Logs (RF-018)
SAAS-009 Feature Flags (RF-019)
SAAS-005 Plans/Limits (RF-020)

Sistema: SIMCO v3.7.0 Documento: RF-MCH-001 v1.1.0