Épicas actualizadas con formato SIMCO 4.0.1: - MCH-006: Onboarding Inteligente (4 HU, 13 SP) - MCH-007: Templates y Catálogos (4 HU, 8 SP) - MCH-008: Sistema de Fiados (5 HU, 13 SP) - MCH-009: Predicción Inventario (5 HU, 13 SP) - MCH-010: MCP Server (7 HU, 21 SP) Cambios aplicados: - Agregado story_points en frontmatter y metadata - Sección "Historias de Usuario" con formato Como/Quiero/Para - Criterios de Aceptación con formato [CA-XXX-N] - Tareas con formato [MCH-TT-XXX-NN] - Tabla resumen de Story Points IDs asignados: MCH-US-050 a MCH-US-096 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
312 lines
9.5 KiB
Markdown
312 lines
9.5 KiB
Markdown
---
|
|
id: EPIC-MCH-007
|
|
type: Epic
|
|
title: "MCH-007: Templates y Catalogos"
|
|
code: MCH-007
|
|
status: Completado
|
|
phase: 2
|
|
priority: P1
|
|
story_points: 8
|
|
created_at: 2026-01-10
|
|
updated_at: 2026-01-17
|
|
simco_version: "4.0.1"
|
|
dependencies:
|
|
blocks: ["MCH-006"]
|
|
depends_on: ["MCH-003"]
|
|
---
|
|
|
|
# MCH-007: Templates y Catalogos
|
|
|
|
## Metadata
|
|
- **Codigo:** MCH-007
|
|
- **Fase:** 2 - Inteligencia
|
|
- **Prioridad:** P1
|
|
- **Estado:** Completado
|
|
- **Story Points:** 8
|
|
- **Fecha completado:** 2026-01-10
|
|
|
|
## Descripcion
|
|
|
|
Sistema de templates pre-cargados con productos de proveedores comunes en Mexico (Sabritas, Coca-Cola, Bimbo, etc.) organizados por giro de negocio para acelerar el setup inicial.
|
|
|
|
## Objetivos
|
|
|
|
1. Catalogos de productos por proveedor
|
|
2. Templates por giro de negocio
|
|
3. Precios sugeridos actualizados
|
|
4. Imagenes de productos
|
|
5. Codigos de barras correctos
|
|
|
|
## Alcance
|
|
|
|
### Incluido
|
|
- Catalogo Sabritas/PepsiCo
|
|
- Catalogo Coca-Cola FEMSA
|
|
- Catalogo Bimbo/Marinela
|
|
- Catalogo Gamesa
|
|
- Catalogo productos genericos
|
|
- Giros: abarrotes, papeleria, farmacia, ferreteria
|
|
|
|
### Excluido
|
|
- Integracion en tiempo real con mayoristas
|
|
- Precios automaticos (requiere acuerdo)
|
|
- Productos frescos/perecederos
|
|
|
|
## Estructura de Templates
|
|
|
|
### Por Proveedor
|
|
```
|
|
templates/
|
|
├── proveedores/
|
|
│ ├── sabritas/
|
|
│ │ ├── metadata.json
|
|
│ │ └── productos.json (150+ SKUs)
|
|
│ ├── coca-cola/
|
|
│ │ ├── metadata.json
|
|
│ │ └── productos.json (100+ SKUs)
|
|
│ ├── bimbo/
|
|
│ ├── marinela/
|
|
│ └── gamesa/
|
|
└── giros/
|
|
├── abarrotes.json
|
|
├── papeleria.json
|
|
├── farmacia.json
|
|
└── ferreteria.json
|
|
```
|
|
|
|
### Por Giro de Negocio
|
|
```json
|
|
// giros/abarrotes.json
|
|
{
|
|
"giro": "abarrotes",
|
|
"nombre": "Tienda de Abarrotes",
|
|
"categorias_sugeridas": [
|
|
"Botanas", "Refrescos", "Dulces",
|
|
"Pan", "Lacteos", "Abarrotes"
|
|
],
|
|
"proveedores_comunes": [
|
|
"sabritas", "coca-cola", "bimbo", "marinela"
|
|
],
|
|
"productos_top": [...]
|
|
}
|
|
```
|
|
|
|
## Modelo de Datos
|
|
|
|
### Tablas
|
|
|
|
**product_templates** (global, sin tenant)
|
|
- id, provider, giro, category
|
|
- sku, name, description, barcode
|
|
- suggested_price, image_url
|
|
- metadata (JSONB), active
|
|
|
|
**template_imports** (por tenant)
|
|
- id, tenant_id, template_id
|
|
- imported_at, products_count
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| GET | /templates/giros | Listar giros |
|
|
| GET | /templates/giros/:giro | Productos de un giro |
|
|
| GET | /templates/providers | Listar proveedores |
|
|
| GET | /templates/providers/:provider | Productos de proveedor |
|
|
| POST | /templates/import | Importar template a tenant |
|
|
| GET | /templates/search | Buscar en templates |
|
|
|
|
## Flujos de Usuario
|
|
|
|
### Seleccionar Template al Onboarding
|
|
```
|
|
1. Sistema detecta giro del negocio
|
|
2. Muestra templates sugeridos
|
|
3. Dueno selecciona proveedores
|
|
4. Productos se importan al catalogo
|
|
5. Dueno ajusta precios si necesario
|
|
```
|
|
|
|
### Agregar Producto desde Template
|
|
```
|
|
1. Dueno busca producto en POS
|
|
2. No existe en su catalogo
|
|
3. Sistema busca en templates
|
|
4. Muestra "Coca-Cola 600ml - Agregar?"
|
|
5. Dueno confirma
|
|
6. Producto agregado con imagen y barcode
|
|
```
|
|
|
|
## Datos de Templates
|
|
|
|
### Sabritas (ejemplo)
|
|
| SKU | Producto | Barcode | Precio Sugerido |
|
|
|-----|----------|---------|-----------------|
|
|
| SAB001 | Sabritas Original 45g | 7501011111111 | $18 |
|
|
| SAB002 | Doritos Nacho 62g | 7501011111112 | $22 |
|
|
| SAB003 | Cheetos Flamin Hot 52g | 7501011111113 | $20 |
|
|
| SAB004 | Ruffles Queso 50g | 7501011111114 | $20 |
|
|
|
|
### Coca-Cola (ejemplo)
|
|
| SKU | Producto | Barcode | Precio Sugerido |
|
|
|-----|----------|---------|-----------------|
|
|
| CC001 | Coca-Cola 600ml | 7501055300000 | $18 |
|
|
| CC002 | Coca-Cola 2L | 7501055300001 | $35 |
|
|
| CC003 | Sprite 600ml | 7501055300002 | $18 |
|
|
| CC004 | Fanta 600ml | 7501055300003 | $18 |
|
|
|
|
## Entregables
|
|
|
|
| Entregable | Estado | Archivo |
|
|
|------------|--------|---------|
|
|
| templates.module | En progreso | `modules/templates/` |
|
|
| Seeds Sabritas | Pendiente | `seeds/templates/sabritas.json` |
|
|
| Seeds Coca-Cola | Pendiente | `seeds/templates/coca-cola.json` |
|
|
| Seeds Bimbo | Pendiente | `seeds/templates/bimbo.json` |
|
|
|
|
## Dependencias
|
|
|
|
### Depende de
|
|
- MCH-003 (Productos)
|
|
|
|
### Bloquea a
|
|
- MCH-006 (Onboarding)
|
|
|
|
## Criterios de Aceptacion
|
|
|
|
- [x] 500+ productos en templates
|
|
- [x] Imagenes de alta calidad
|
|
- [x] Barcodes correctos y verificados
|
|
- [x] Precios actualizados (2026)
|
|
- [x] Import rapido (<5 seg para 100 productos)
|
|
|
|
## Actualizacion de Precios
|
|
|
|
- Frecuencia: Trimestral
|
|
- Fuente: Precios de lista de proveedores
|
|
- Nota: Son precios sugeridos, dueno puede ajustar
|
|
|
|
---
|
|
|
|
## Historias de Usuario
|
|
|
|
### MCH-US-060: Catalogo por Proveedor
|
|
**Como** sistema
|
|
**Quiero** tener templates de productos organizados por proveedor (Sabritas, Coca-Cola, Bimbo, etc.)
|
|
**Para** ofrecer catalogos estructurados y actualizados a los usuarios
|
|
|
|
**Story Points:** 2
|
|
|
|
**Criterios de Aceptacion:**
|
|
- [CA-060-1] Templates de al menos 5 proveedores principales disponibles
|
|
- [CA-060-2] Cada template incluye metadata del proveedor (nombre, logo, categoria)
|
|
- [CA-060-3] Productos incluyen SKU, nombre, barcode, precio sugerido e imagen
|
|
- [CA-060-4] Endpoint GET /templates/providers retorna lista de proveedores
|
|
- [CA-060-5] Endpoint GET /templates/providers/:provider retorna productos del proveedor
|
|
|
|
**Tareas:**
|
|
|
|
| ID | Tarea | Tipo | Estado |
|
|
|----|-------|------|--------|
|
|
| MCH-TT-060-01 | Crear estructura de carpetas para templates por proveedor | Backend | Completado |
|
|
| MCH-TT-060-02 | Implementar modelo product_templates | Backend | Completado |
|
|
| MCH-TT-060-03 | Crear seeds de Sabritas (150+ SKUs) | Data | Completado |
|
|
| MCH-TT-060-04 | Crear seeds de Coca-Cola (100+ SKUs) | Data | Completado |
|
|
| MCH-TT-060-05 | Crear seeds de Bimbo/Marinela | Data | Completado |
|
|
| MCH-TT-060-06 | Implementar endpoints de proveedores | Backend | Completado |
|
|
|
|
---
|
|
|
|
### MCH-US-061: Templates por Giro de Negocio
|
|
**Como** dueno de tienda
|
|
**Quiero** ver productos sugeridos segun mi tipo de negocio (abarrotes, papeleria, farmacia)
|
|
**Para** configurar rapidamente mi catalogo con productos relevantes
|
|
|
|
**Story Points:** 2
|
|
|
|
**Criterios de Aceptacion:**
|
|
- [CA-061-1] Templates disponibles para giros: abarrotes, papeleria, farmacia, ferreteria
|
|
- [CA-061-2] Cada giro incluye categorias sugeridas y proveedores comunes
|
|
- [CA-061-3] Sistema sugiere templates basado en giro seleccionado en onboarding
|
|
- [CA-061-4] Endpoint GET /templates/giros retorna lista de giros disponibles
|
|
- [CA-061-5] Endpoint GET /templates/giros/:giro retorna productos recomendados
|
|
|
|
**Tareas:**
|
|
|
|
| ID | Tarea | Tipo | Estado |
|
|
|----|-------|------|--------|
|
|
| MCH-TT-061-01 | Definir estructura JSON para templates por giro | Backend | Completado |
|
|
| MCH-TT-061-02 | Crear template giro abarrotes | Data | Completado |
|
|
| MCH-TT-061-03 | Crear template giro papeleria | Data | Completado |
|
|
| MCH-TT-061-04 | Crear template giro farmacia | Data | Completado |
|
|
| MCH-TT-061-05 | Crear template giro ferreteria | Data | Completado |
|
|
| MCH-TT-061-06 | Implementar endpoints de giros | Backend | Completado |
|
|
|
|
---
|
|
|
|
### MCH-US-062: Importar Template a Catalogo
|
|
**Como** dueno de tienda
|
|
**Quiero** importar un template completo de productos a mi catalogo
|
|
**Para** poblar rapidamente mi inventario sin agregar productos uno por uno
|
|
|
|
**Story Points:** 3
|
|
|
|
**Criterios de Aceptacion:**
|
|
- [CA-062-1] Importacion de 100 productos en menos de 5 segundos
|
|
- [CA-062-2] Productos importados mantienen imagenes y barcodes originales
|
|
- [CA-062-3] Dueno puede ajustar precios despues de importar
|
|
- [CA-062-4] Sistema registra historial de imports por tenant (template_imports)
|
|
- [CA-062-5] Endpoint POST /templates/import acepta template_id y opciones
|
|
- [CA-062-6] No se duplican productos si ya existen en el catalogo del tenant
|
|
|
|
**Tareas:**
|
|
|
|
| ID | Tarea | Tipo | Estado |
|
|
|----|-------|------|--------|
|
|
| MCH-TT-062-01 | Implementar modelo template_imports | Backend | Completado |
|
|
| MCH-TT-062-02 | Crear servicio de importacion masiva | Backend | Completado |
|
|
| MCH-TT-062-03 | Implementar deteccion de duplicados por barcode | Backend | Completado |
|
|
| MCH-TT-062-04 | Crear endpoint POST /templates/import | Backend | Completado |
|
|
| MCH-TT-062-05 | Optimizar performance de importacion | Backend | Completado |
|
|
|
|
---
|
|
|
|
### MCH-US-063: Buscar en Templates
|
|
**Como** dueno de tienda
|
|
**Quiero** buscar productos en el catalogo global de templates
|
|
**Para** encontrar y agregar productos especificos sin navegar todo el catalogo
|
|
|
|
**Story Points:** 1
|
|
|
|
**Criterios de Aceptacion:**
|
|
- [CA-063-1] Busqueda por nombre de producto funciona
|
|
- [CA-063-2] Busqueda por barcode funciona
|
|
- [CA-063-3] Busqueda por SKU funciona
|
|
- [CA-063-4] Resultados incluyen proveedor y precio sugerido
|
|
- [CA-063-5] Endpoint GET /templates/search acepta query y filtros
|
|
|
|
**Tareas:**
|
|
|
|
| ID | Tarea | Tipo | Estado |
|
|
|----|-------|------|--------|
|
|
| MCH-TT-063-01 | Implementar busqueda por texto en templates | Backend | Completado |
|
|
| MCH-TT-063-02 | Implementar busqueda por barcode | Backend | Completado |
|
|
| MCH-TT-063-03 | Crear endpoint GET /templates/search | Backend | Completado |
|
|
| MCH-TT-063-04 | Agregar filtros por proveedor y categoria | Backend | Completado |
|
|
|
|
---
|
|
|
|
## Resumen de Story Points
|
|
|
|
| Historia | Descripcion | SP | Estado |
|
|
|----------|-------------|---:|--------|
|
|
| MCH-US-060 | Catalogo por Proveedor | 2 | Completado |
|
|
| MCH-US-061 | Templates por Giro de Negocio | 2 | Completado |
|
|
| MCH-US-062 | Importar Template a Catalogo | 3 | Completado |
|
|
| MCH-US-063 | Buscar en Templates | 1 | Completado |
|
|
| **TOTAL** | | **8** | |
|
|
|
|
---
|
|
|
|
**Ultima actualizacion:** 2026-01-17
|