michangarrito/docs/01-epicas/MCH-001-infraestructura-base.md
rckrdmrd e493017e86 [MCH-DOC-VAL] docs: Validacion documental inicial
Cambios aplicados:
- MASTER_INVENTORY.yml: Sincronizados conteos (tablas 47, controllers 20, entities 37)
- _inheritance.yml: Corregido stack tecnologico (NestJS, React 19.2.0)
- MCH-001: Estandarizada con HU formales (MCH-US-XXX), Story Points, Criterios de Aceptacion
- Creado PLAN-VALIDACION-DOCUMENTAL-2026-01-17.md con plan de tareas

Tarea: MCH-DOC-VAL-2026-01-17

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 04:19:07 -06:00

194 lines
5.3 KiB
Markdown

---
id: EPIC-MCH-001
type: Epic
title: "MCH-001: Infraestructura Base"
code: MCH-001
status: Completado
phase: 1
priority: P0
story_points: 8
created_at: 2026-01-04
updated_at: 2026-01-17
simco_version: "4.0.1"
dependencies:
blocks: ["MCH-002", "MCH-003", "MCH-010"]
depends_on: []
---
# MCH-001: Infraestructura Base
## Metadata
- **Codigo:** MCH-001
- **Fase:** 1 - MVP Core
- **Prioridad:** P0
- **Estado:** Completado
- **Story Points:** 8
- **Fecha inicio:** 2026-01-04
- **Fecha fin:** 2026-01-05
## Descripcion
Setup inicial del proyecto MiChangarrito incluyendo estructura monorepo, configuracion de base de datos PostgreSQL multi-tenant, pipelines CI/CD, y entornos de desarrollo.
## Objetivos
1. Establecer estructura de proyecto monorepo
2. Configurar PostgreSQL con multi-tenant (RLS)
3. Setup de entornos de desarrollo
4. Configurar CI/CD basico
## Alcance
### Incluido
- Estructura de carpetas monorepo (apps/, database/, docs/)
- PostgreSQL con schemas separados
- Scripts de recreacion de BD
- Docker Compose para desarrollo
- GitHub Actions basico
### Excluido
- Deployment a produccion
- Kubernetes (futuro)
- Monitoring avanzado
## Arquitectura
```
michangarrito/
├── apps/
│ ├── backend/ # NestJS API
│ ├── web/ # React Dashboard
│ ├── mobile/ # Expo App
│ ├── mcp-server/ # Gateway LLM
│ └── whatsapp-service/ # Bot WhatsApp
├── database/
│ ├── schemas/ # DDL files
│ ├── seeds/ # Data inicial
│ └── *.sh # Scripts
├── docs/
└── orchestration/
```
## Entregables
| Entregable | Estado | Archivo/Ubicacion |
|------------|--------|-------------------|
| Estructura monorepo | Completado | `projects/michangarrito/` |
| DDL base PostgreSQL | Completado | `database/schemas/00-02.sql` |
| Scripts BD | Completado | `database/*.sh` |
| Docker Compose | Completado | `docker-compose.yml` |
## Dependencias
### Depende de
- Ninguna (epica inicial)
### Bloquea a
- MCH-002 (Auth)
- MCH-003 (Productos)
- MCH-010 (MCP Server)
## Criterios de Aceptacion
- [x] Estructura de carpetas creada
- [x] PostgreSQL ejecutandose con schemas
- [x] Script drop-and-recreate funcional
- [x] Extensiones uuid-ossp, pgcrypto habilitadas
- [x] Funcion current_tenant_id() operativa
## Notas Tecnicas
- **Puerto PostgreSQL:** 5432
- **Puerto Redis:** 6379
- **Base de datos:** michangarrito_platform
- **Multi-tenant:** Via tenant_id + RLS
---
## Historias de Usuario
### MCH-US-001: Estructura Monorepo
**Como** desarrollador
**Quiero** una estructura de proyecto monorepo bien organizada
**Para** poder trabajar eficientemente en multiples apps del mismo proyecto
**Story Points:** 3
**Criterios de Aceptacion:**
- [CA-001-1] ✅ Carpeta apps/ con backend, web, mobile, mcp-server, whatsapp-service
- [CA-001-2] ✅ Carpeta database/ con schemas, seeds, scripts
- [CA-001-3] ✅ Carpeta docs/ con documentacion estructurada
- [CA-001-4] ✅ Carpeta orchestration/ con inventarios y trazas
- [CA-001-5] ✅ Archivo .env.example con variables requeridas
**Tareas:**
| ID | Tarea | Tipo | Estado |
|----|-------|------|--------|
| MCH-TT-001-01 | Crear estructura de carpetas | Setup | Completado |
| MCH-TT-001-02 | Configurar .gitignore | Setup | Completado |
| MCH-TT-001-03 | Crear .env.example | Setup | Completado |
---
### MCH-US-002: Base de Datos Multi-Tenant
**Como** arquitecto
**Quiero** PostgreSQL configurado con multi-tenant via RLS
**Para** asegurar aislamiento de datos entre negocios
**Story Points:** 3
**Criterios de Aceptacion:**
- [CA-002-1] ✅ PostgreSQL 16+ ejecutandose en puerto 5432
- [CA-002-2] ✅ Extensiones uuid-ossp, pgcrypto habilitadas
- [CA-002-3] ✅ 11 schemas creados (public, auth, catalog, sales, etc.)
- [CA-002-4] ✅ RLS habilitado en tablas con tenant_id
- [CA-002-5] ✅ Funcion current_tenant_id() operativa
**Tareas:**
| ID | Tarea | Tipo | Estado |
|----|-------|------|--------|
| MCH-TT-002-01 | DDL 00-extensions.sql | DDL | Completado |
| MCH-TT-002-02 | DDL 01-schemas.sql | DDL | Completado |
| MCH-TT-002-03 | DDL 02-functions.sql | DDL | Completado |
| MCH-TT-002-04 | DDL 03-public.sql (tenants) | DDL | Completado |
---
### MCH-US-003: Scripts de Base de Datos
**Como** DevOps
**Quiero** scripts para recrear la BD facilmente
**Para** poder resetear el ambiente de desarrollo rapidamente
**Story Points:** 2
**Criterios de Aceptacion:**
- [CA-003-1] ✅ Script create-database.sh funcional
- [CA-003-2] ✅ Script recreate-database.sh funcional
- [CA-003-3] ✅ Scripts ejecutables desde cualquier directorio
**Tareas:**
| ID | Tarea | Tipo | Estado |
|----|-------|------|--------|
| MCH-TT-003-01 | Crear script create-database.sh | DevOps | Completado |
| MCH-TT-003-02 | Crear script recreate-database.sh | DevOps | Completado |
| MCH-TT-003-03 | Documentar uso de scripts | Docs | Completado |
---
## Resumen de Story Points
| Historia | SP | Estado |
|----------|-----|--------|
| MCH-US-001: Estructura Monorepo | 3 | Completado |
| MCH-US-002: Base de Datos Multi-Tenant | 3 | Completado |
| MCH-US-003: Scripts de Base de Datos | 2 | Completado |
| **Total** | **8** | **100%** |
---
**Ultima actualizacion:** 2026-01-17
**Estandarizado por:** Validacion Documental MCH-DOC-VAL-2026-01-17