Los archivos de claude code modificados

This commit is contained in:
2026-05-14 20:50:12 -03:00
parent e95cfc42ac
commit f8f33a65c7
4 changed files with 753 additions and 112 deletions

View File

@@ -5,11 +5,12 @@
| Atributo | Valor |
|---|---|
| Versión del documento | 0.1.0 |
| Versión del documento | 0.2.0 |
| Fecha | Mayo 2026 |
| Estado | Draft — Fase 0 (MVP "Noche Cero") en construcción |
| Estado | Fase 0 completada · Sprint 1 (ROI) en construcción |
| Autor | Equipo fundador + Claude (arquitectura) |
| Alcance | MVP de esta noche + Norte V1.0 (1218 meses) |
| Alcance | MVP completado + Sprint 1 + Norte V1.0 (1218 meses) |
| Deploy actual | https://process-cost-platform.pages.dev (v0.1.0-mvp) |
---
@@ -18,14 +19,15 @@
1. [Contexto y Propuesta de Valor](#1-contexto-y-propuesta-de-valor)
2. [Glosario y Convenciones](#2-glosario-y-convenciones)
3. [Norte Estratégico — Visión V1.0](#3-norte-estratégico--visión-v10)
4. [Fase 0 — MVP "Noche Cero"](#4-fase-0--mvp-noche-cero)
5. [Roadmap de Evolución](#5-roadmap-de-evolución)
6. [Arquitectura Técnica](#6-arquitectura-técnica)
7. [Modelo de Dominio](#7-modelo-de-dominio)
8. [Decisiones Arquitectónicas (ADRs)](#8-decisiones-arquitectónicas-adrs)
9. [Atributos de Calidad](#9-atributos-de-calidad)
10. [Riesgos y Mitigaciones](#10-riesgos-y-mitigaciones)
11. [Anexos](#11-anexos)
4. [Fase 0 — MVP "Noche Cero" (COMPLETADO)](#4-fase-0--mvp-noche-cero)
5. [Fase 1 — Sprint 1: ROI y Escenarios de Automatización](#5-fase-1--sprint-1-roi-y-escenarios-de-automatización)
6. [Roadmap de Evolución](#6-roadmap-de-evolución)
7. [Arquitectura Técnica](#7-arquitectura-técnica)
8. [Modelo de Dominio](#8-modelo-de-dominio)
9. [Decisiones Arquitectónicas (ADRs)](#9-decisiones-arquitectónicas-adrs)
10. [Atributos de Calidad](#10-atributos-de-calidad)
11. [Riesgos y Mitigaciones](#11-riesgos-y-mitigaciones)
12. [Anexos](#12-anexos)
---
@@ -55,12 +57,20 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
### 1.4 Audiencia objetivo
**MVP (Fase 0)**: el propio fundador como consultor de automatización de procesos.
**MVP (Fase 0 - COMPLETADO)**: el propio fundador como consultor de automatización de procesos.
**Sprint 1 (en curso)**: el **equipo de InQuality** como herramienta interna de consultoría y **pre-venta de proyectos de automatización con cálculo de ROI**.
**V1.0**: consultores independientes y boutique de procesos, gerentes de operaciones de pymes LATAM, equipos de Project/Process Office.
**V2+**: estudiantes y entusiastas de eficiencia operativa (tier educativo gratuito).
### 1.4.1 Casos de uso confirmados (Sprint 1)
1. **Análisis de costos operativos**: el consultor de InQuality releva el proceso del cliente, lo modela en BPMN, configura costos/tiempos/recursos y entrega un reporte cuantitativo del costo operativo.
2. **Pre-venta de automatización con ROI**: el consultor identifica actividades automatizables, define costos automatizados estimados y el costo de inversión del proyecto. El sistema calcula payback, ahorro anual y ROI %, generando un reporte ejecutivo que sirve como propuesta comercial cuantificada.
### 1.5 Lo que NO somos
- ❌ NO somos un BPMS (motor de ejecución de procesos).
@@ -164,9 +174,11 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
---
## 4. Fase 0 — MVP "Noche Cero"
## 4. Fase 0 — MVP "Noche Cero" ✅ COMPLETADA
### 4.1 Hipótesis a validar
> **Estado**: ✅ Entregada el 13 de mayo de 2026. Tag `v0.1.0-mvp`. Deployada en https://process-cost-platform.pages.dev. **268 tests unit/integration + 5 E2E + 4/4 validación con gradiente real**. Bundle inicial 59.75 KB gzip. 0 vulnerabilidades.
### 4.1 Hipótesis validada
> Un consultor de procesos puede transformar un archivo `.bpmn` en un reporte visualmente deslumbrante de costos operativos en menos de 15 minutos, y usarlo al día siguiente en una reunión real con un cliente.
@@ -264,43 +276,193 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
---
## 5. Roadmap de Evolución
## 5. Fase 1 — Sprint 1: ROI y Escenarios de Automatización
> **Estado**: en construcción.
> **Audiencia primaria**: equipo de InQuality (consultora de procesos).
> **Caso de uso estrella**: pre-venta de proyectos de automatización con ROI cuantificado.
### 5.1 Hipótesis a validar
> Un consultor de InQuality puede modelar un proceso, identificar las actividades automatizables, configurar costos del escenario actual vs automatizado, y obtener en minutos un reporte ejecutivo de ROI (payback, ahorro anual, ROI %) que sirve como propuesta comercial cuantificada para vender un proyecto de automatización.
### 5.2 Alcance del Sprint 1
| # | Capacidad | Detalle |
|---|---|---|
| S1.1 | **Volumetría del proceso** | Frecuencia anual de ejecución + horizonte de análisis (años) configurables por proceso |
| S1.2 | **Marcado de actividades automatizables** | Toggle por actividad + campos de costo y tiempo automatizados |
| S1.3 | **Inversión en automatización** | Campo único agregado a nivel proceso (sin desglose) |
| S1.4 | **Motor dual de simulación** | Mismo motor recibe `scenario: 'actual' \| 'automated'` y aplica los campos correspondientes |
| S1.5 | **Sección de ROI en reporte** | Tabs en el reporte: Actual / Automatizado / Comparación + ROI |
| S1.6 | **5 KPIs de ROI** | Ahorro por ejecución · Ahorro anual · Payback (meses) · Ahorro acumulado a N años · ROI % anualizado |
| S1.7 | **Tabla comparativa** | Actividad por actividad: costos actual vs automatizado, ahorro $ y % |
| S1.8 | **Gráficos de ROI** | Ahorro acumulado en el tiempo + Top 5 actividades con mayor ahorro |
| S1.9 | **Mecanismo de transparencia** | Detecta valores cero/inversión cero y los expone en sección visible pero discreta |
| S1.10 | **Migración Dexie v1 → v2** | Preserva datos existentes, agrega los nuevos campos con defaults |
| S1.11 | **Export PDF/CSV ampliado** | El PDF incluye páginas de ROI; el CSV de ROI exporta comparación completa |
| S1.12 | **Documento metodológico** | Anexo en el repo: cómo calcular correctamente el costo automatizado por ejecución |
### 5.3 Decisiones arquitectónicas del Sprint 1
#### Modelo de escenarios — Modelo A (dos campos por actividad)
`Activity` gana 3 campos:
- `automatable: boolean` (default false)
- `automatedCostFixed: number` (default 0)
- `automatedTimeMinutes: number` (default 0)
`Process` gana 3 campos:
- `annualFrequency: number` (default 1000)
- `analysisHorizonYears: number` (default 3)
- `automationInvestment: number` (default 0)
**Justificación de Modelo A**:
- Trazabilidad actividad-por-actividad sin sincronización entre diagramas
- Un solo BPMN simplifica el flujo del consultor
- Migración a Modelo B (escenarios como entidad) queda pendiente para Sprint 3-4 si InQuality lo demanda
#### Volumetría — Multiplicador en el reporte
El motor sigue siendo determinístico ("costo de una ejecución"). La volumetría se aplica en el reporte:
```
costoAnual = costoUnitario × annualFrequency
costoHorizonte = costoAnual × analysisHorizonYears
```
No se introduce VPN, TIR ni Monte Carlo en este sprint. **Razón estratégica**: el cliente promedio de InQuality entiende payback nominal; el VPN abre discusiones sobre la tasa que distraen.
#### Fórmulas de ROI (en `domain/roi.ts`, función pura testeable)
```typescript
savingsPerExecution = costPerExecutionActual - costPerExecutionAutomated
savingsPerExecutionPercent = (savingsPerExecution / costPerExecutionActual) * 100
annualSavings = savingsPerExecution × annualFrequency
paybackMonths = (automationInvestment / annualSavings) × 12
paybackYears = paybackMonths / 12
cumulativeSavingsHorizon = (annualSavings × horizonYears) - automationInvestment
breaksEvenInHorizon = paybackYears <= horizonYears
roiAnnualPercent = (annualSavings / automationInvestment) * 100
```
**Edge cases manejados explícitamente**:
- `annualSavings <= 0`: `paybackMonths = Infinity`, `breaksEvenInHorizon = false`
- `automationInvestment === 0 && annualSavings > 0`: `paybackMonths = 0`, `roiAnnualPercent = Infinity` (display "N/A" o "∞")
- `costPerExecutionActual === 0`: `savingsPerExecutionPercent = 0` (evitar div/0)
#### Transparencia metodológica
Si el reporte detecta:
- Actividades marcadas como automatizables pero con `automatedCostFixed = 0` Y `automatedTimeMinutes = 0`
- `automationInvestment = 0` con payback < 1 mes
- Otros valores sospechosos
Muestra una sección **"Transparencia metodológica"** con:
- Lista de valores no informados
- Texto introductorio explicando el motivo del listado
- Fondo gris claro, no rojo/alarmante
- Aparece en pantalla y en PDF
**Filosofía**: convierte una posible debilidad en señal de seriedad profesional. El cliente final entiende que el consultor fue transparente sobre los supuestos.
### 5.4 Lo que NO entra en el Sprint 1
❌ Múltiples escenarios (más de 2) — viene en Sprint 3-4 si se demanda
❌ Escenarios como entidad separada (Modelo B)
❌ VPN, TIR, tasa de descuento
❌ Desglose de la inversión (licencias, dev, infra) — un único campo por ahora
❌ Análisis de sensibilidad
❌ Distribuciones probabilísticas
❌ Bots como recursos con capacidad finita
❌ Multi-tenant, login, colaboración, versionado, IA, modo oscuro, i18n, PWA
### 5.5 Definition of Done — Sprint 1
- [ ] Migración Dexie v1 → v2 con preservación de datos existentes
- [ ] Workspace permite marcar actividades como automatizables y configurar costos automatizados
- [ ] Workspace permite configurar volumetría e inversión a nivel proceso
- [ ] Motor de simulación acepta `scenario` y devuelve resultados correctos para ambos casos
- [ ] Reporte tiene 3 tabs (Actual / Automatizado / Comparación + ROI)
- [ ] Sección "Comparación + ROI" muestra 5 KPIs grandes correctamente formateados
- [ ] Tabla comparativa funcional con ordenamiento
- [ ] Gráfico de ahorro acumulado con marcador de payback
- [ ] Gráfico Top 5 actividades con mayor ahorro
- [ ] Sección "Transparencia metodológica" aparece cuando corresponde
- [ ] Cálculos de `domain/roi.ts` cubiertos por tests (≥ 10 casos incluyendo edge cases)
- [ ] Test E2E del flujo completo de ROI con Playwright
- [ ] PDF de ROI incluye las páginas adicionales con KPIs y gráficos
- [ ] CSV de ROI exporta comparación completa
- [ ] Documento `METHODOLOGY_AUTOMATED_COST.md` en raíz del repo
- [ ] Bundle no crece más de 20 KB gzip respecto al MVP
- [ ] Todos los tests previos (268 unit + 5 E2E) siguen verdes
- [ ] Deploy a producción exitoso
- [ ] Smoke test post-deploy verde
---
## 6. Roadmap de Evolución
```
┌────────────┬──────────────────────────────────────────────────────┐
│ FASE │ CAPACIDADES │
├────────────┼──────────────────────────────────────────────────────┤
│ Fase 0 │ MVP client-side: importar, configurar, simular, │
│ (1 noche) │ reportear, exportar PDF/CSV
├────────────┼──────────────────────────────────────────────────────┤
Fase 1 + Backend mínimo + Auth + Persistencia en la nube
│ (1-2 sem) │ + i18n (es/en/pt-BR) + PWA installable
├────────────┼──────────────────────────────────────────────────────┤
Fase 2 │ + Editor BPMN (no solo lectura) + Validador
(1 mes) │ + Glosario integrado + Recursos avanzados
├────────────┼──────────────────────────────────────────────────────┤
Fase 3 │ + Estructura organizacional + Multi-tenant
(1 mes) │ + RBAC + Versionado lineal
├────────────┼──────────────────────────────────────────────────────┤
Fase 4 │ + Colaboración en tiempo real (Yjs/CRDT)
(1-2 mes) │ + Presencia + Comentarios
├────────────┼──────────────────────────────────────────────────────┤
Fase 5 │ + Distribuciones probabilísticas + Riesgos
(1 mes) │ + Costeo ABC completo + Gobernanza RACI
├────────────┼──────────────────────────────────────────────────────┤
│ Fase 6 │ + IA: detección de cuellos de botella │
(1-2 mes) │ + Elementos RPA/Agente IA en paleta
├────────────┼──────────────────────────────────────────────────────┤
Fase 7 │ + Marketplace comunitario de plantillas
(continuo) │ + Tutoriales interactivos + Modo educativo
└────────────┴──────────────────────────────────────────────────────┘
┌──────────────┬──────────────────────────────────────────────────────┐
│ FASE │ CAPACIDADES │
├──────────────┼──────────────────────────────────────────────────────┤
│ Fase 0 │ MVP client-side: importar, configurar, simular, │
│ (completa) │ reportear, exportar PDF/CSV. v0.1.0-mvp en prod.
├──────────────┼──────────────────────────────────────────────────────┤
Sprint 1 🔄ROI + escenarios de automatización:
│ (en curso) │ · Volumetría del proceso
│ │ · Marcado de actividades automatizables │
│ · Inversión de automatización
│ · Motor dual: actual vs automatizado
│ │ · 5 KPIs de ROI + tabla comparativa + gráficos │
│ · Transparencia metodológica
│ · Migración Dexie v1 → v2
├──────────────┼──────────────────────────────────────────────────────┤
Sprint 2 │ Productividad de carga:
│ · Grilla de edición masiva (TanStack Table)
│ │ · Pegado desde Excel │
│ · Recursos con costo/hora + asignación múltiple
│ · Cálculo de costo esperado en vivo
│ │ · Edición inline de nombre proceso/cliente │
├──────────────┼──────────────────────────────────────────────────────┤
Sprint 3-4 │ Multi-escenario y reportes ejecutivos:
│ │ · Escenarios como entidad (modelo B) si demandado │
│ · Reporte ejecutivo (PDF 1-2 páginas) separado
│ · Branding InQuality
│ │ · Export Excel multi-hoja │
│ │ · Comparación de simulaciones (historial) │
├──────────────┼──────────────────────────────────────────────────────┤
│ Fase 2 │ Backend + colaboración básica: │
│ (1-2 meses) │ · Backend NestJS + Postgres + Auth │
│ │ · Multi-tenant + RBAC │
│ │ · Versionado lineal │
│ │ · Editor BPMN (no solo lectura) │
│ │ · Validador + Glosario │
│ │ · i18n (es/en/pt-BR) │
│ │ · PWA installable │
├──────────────┼──────────────────────────────────────────────────────┤
│ Fase 3 │ Colaboración avanzada y modelado fino: │
│ (1-2 meses) │ · Colaboración en tiempo real (Yjs/CRDT) │
│ │ · Presencia + Comentarios │
│ │ · Distribuciones probabilísticas │
│ │ · Riesgos │
│ │ · Costeo ABC completo │
│ │ · Gobernanza RACI │
├──────────────┼──────────────────────────────────────────────────────┤
│ Fase 4 │ Inteligencia y comunidad: │
│ (1-2 meses) │ · IA: detección de cuellos de botella │
│ │ · Elementos RPA/Agente IA en paleta │
│ │ · Marketplace comunitario de plantillas │
│ │ · Tutoriales interactivos │
│ │ · Modo educativo │
└──────────────┴──────────────────────────────────────────────────────┘
```
---
## 6. Arquitectura Técnica
## 7. Arquitectura Técnica
### 6.1 Vista de alto nivel — MVP (Fase 0)
### 7.1 Vista de alto nivel — MVP (Fase 0)
```
┌─────────────────────────────────────────────────────────────┐
@@ -340,7 +502,7 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
(estático, gratis, global)
```
### 6.2 Vista de alto nivel — V1.0
### 7.2 Vista de alto nivel — V1.0
```
┌──────────────────┐ ┌──────────────────────────────┐
@@ -381,7 +543,7 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
vía Docker Compose
```
### 6.3 Stack tecnológico
### 7.3 Stack tecnológico
#### 6.3.1 Stack MVP (Fase 0)
@@ -423,7 +585,7 @@ Las consultoras, gerentes de operaciones y profesionales de eficiencia operativa
| i18n | i18next + react-i18next | Estándar de facto |
| E2E testing | Playwright | Estándar moderno |
### 6.4 Arquitectura de carpetas (MVP)
### 7.4 Arquitectura de carpetas (MVP)
```
process-cost-platform/
@@ -496,7 +658,7 @@ process-cost-platform/
└── e2e/ ← post-MVP
```
### 6.5 Modelo conceptual del motor de simulación (MVP)
### 7.5 Modelo conceptual del motor de simulación (MVP + Sprint 1)
El motor de simulación del MVP es **determinístico y agregado**. NO es discrete event simulation. Su contrato:
@@ -556,7 +718,7 @@ interface SimulationResult {
5. Costo indirecto = `costoDirectoTotal × overheadPercentage`.
6. Agregar totales y rankings.
### 6.6 Integración bpmn-js + heatmap
### 7.6 Integración bpmn-js + heatmap
`bpmn-js` expone:
- Un `viewer` (read-only) ideal para MVP.
@@ -571,7 +733,7 @@ El heatmap se implementa así:
3. Registrar handler `element.click` para drill-down.
4. Mostrar tooltip con detalle al hover.
### 6.7 Deployment del MVP
### 7.7 Deployment
**Esta noche**:
1. `npm run build` → genera `dist/` estático.
@@ -582,9 +744,9 @@ El heatmap se implementa así:
---
## 7. Modelo de Dominio
## 8. Modelo de Dominio
### 7.1 Entidades núcleo (MVP)
### 8.1 Entidades núcleo (estado al Sprint 1)
**Distinción fundamental de capas:**
- `ProcessGraph` (en memoria, reconstruido del XML cada vez): TODOS los nodos del diagrama incluidos gateways, eventos, flujos. Vive solo en el parser/motor, no se persiste.
@@ -592,6 +754,8 @@ El heatmap se implementa así:
- `GatewayConfig` (persistido en IndexedDB): probabilidades por flujo saliente de gateways divergentes (XOR/OR). Los gateways convergentes (merge) no tienen config — el motor suma probabilidades entrantes.
- El heatmap **solo colorea nodos con Activity**. Los gateways conservan estilo BPMN neutro.
**Campos añadidos en Sprint 1** marcados con 🆕.
```
┌─────────────────────────────────────────────────────────────┐
│ Process │
@@ -602,6 +766,9 @@ El heatmap se implementa así:
│ + bpmnXml: string (raw XML) │
│ + currency: string (ISO 4217) │
│ + overheadPercentage: number (0..1) │
│ + annualFrequency: number 🆕 default 1000 │
│ + analysisHorizonYears: number 🆕 default 3 │
│ + automationInvestment: number 🆕 default 0 │
│ + createdAt, updatedAt │
└─────────────────────────────────────────────────────────────┘
│ 1 │ 1
@@ -622,8 +789,13 @@ El heatmap se implementa así:
│ number │ │ probability: number │
│ + executionTimeMinutes: │ │ }> │
│ number │ │ (paralelo: todas 1.0, │
└─────────────────────────┘ │ exclusivo: suma = 1.0) │
│ N └──────────────────────────────┘
│ + automatable: boolean │🆕 │ exclusivo: suma = 1.0) │
│ + automatedCostFixed: │🆕 └──────────────────────────────┘
│ number │
│ + automatedTimeMinutes: │🆕
│ number │
└─────────────────────────┘
│ N
│ M
┌─────────────────────────────────────────────────────────────┐
@@ -657,13 +829,13 @@ El heatmap se implementa así:
└─────────────────────────────────────────────────────────────┘
```
### 7.2 Modelo extendido (V1.0)
### 8.2 Modelo extendido (V1.0)
Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `ProcessOwnership` (RACI), `Risk`, `RiskProcessLink`, `ProcessVersion`, `Comment`, `Notification`, `Template`.
---
## 8. Decisiones Arquitectónicas (ADRs)
## 9. Decisiones Arquitectónicas (ADRs)
### ADR-001 — MVP client-side sin backend
- **Contexto**: tiempo de entrega = una noche, presupuesto cero.
@@ -716,11 +888,48 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
- **Decisión**: Cloudflare Pages mientras sea estático; migración a VPS al introducir backend.
- **Justificación**: $0 al inicio, latencia global, sin operación. Migrar cuando haya backend.
### ADR-012 — Escenarios como dos pares de campos por actividad (Modelo A), no entidad separada
- **Contexto Sprint 1**: necesidad de modelar costo "actual" vs "automatizado" por actividad.
- **Decisión**: Modelo A — agregar `automatable`, `automatedCostFixed`, `automatedTimeMinutes` a `Activity`. El motor recibe un parámetro `scenario` y elige qué campos usar.
- **Alternativa descartada**: Modelo B (entidad `Scenario` con N configuraciones independientes) — más complejo, no necesario hasta que haya demanda real de >2 escenarios.
- **Justificación**:
- Trazabilidad actividad-a-actividad para la tabla comparativa (pieza más persuasiva del reporte).
- Un solo diagrama → consultor no mantiene 2 BPMNs sincronizados.
- Migración A→B es directa cuando llegue el momento.
- **Cuándo revisar**: Sprint 3-4 si InQuality necesita >2 escenarios o flujos distintos post-automatización.
### ADR-013 — Volumetría aplicada en el reporte, no en el motor
- **Contexto Sprint 1**: necesidad de anualizar costos para calcular ROI.
- **Decisión**: el motor sigue siendo determinístico ("costo de una ejecución"). La volumetría (frecuencia anual + horizonte) es metadata del proceso y se aplica como multiplicador en la capa de reporte.
- **Alternativa descartada**: correr Monte Carlo o múltiples instancias en el motor.
- **Justificación**:
- El motor es determinístico → correrlo N veces da el mismo resultado × N (perder ciclos).
- Mantiene separación de concerns: motor calcula costo unitario, reporte hace análisis temporal.
- Cuando lleguen distribuciones probabilísticas (Fase 3), ahí tiene sentido Monte Carlo.
### ADR-014 — ROI nominal sin VPN ni tasa de descuento en Sprint 1
- **Contexto Sprint 1**: cálculo de payback y ahorro acumulado para pre-venta.
- **Decisión**: usar fórmulas nominales simples (payback = inversión / ahorro anual × 12, acumulado = ahorro × años - inversión). NO incluir VPN, TIR ni tasa de descuento.
- **Justificación**:
- El cliente promedio de InQuality entiende payback nominal.
- VPN abre discusiones sobre la tasa que distraen del mensaje principal.
- Si en el futuro un cliente sofisticado lo pide, se agrega como opción.
- **Cuándo revisar**: cuando un cliente concreto pida VPN/TIR.
### ADR-015 — Transparencia metodológica como feature, no bug
- **Contexto Sprint 1**: riesgo de que consultores carguen valores incompletos (costos automatizados en 0, inversión en 0) generando ROIs irreales.
- **Decisión**: detectar estos casos y exponerlos en sección visible pero discreta del reporte ("Transparencia metodológica").
- **Justificación**:
- Anticipar limitaciones es señal de seriedad profesional.
- El cliente final confía más en consultores transparentes sobre supuestos que en cifras "perfectas".
- Protege la credibilidad de InQuality y la herramienta.
- **Mecanismo**: banner amarillo informativo (no rojo de error) + lista de valores no informados.
---
## 9. Atributos de Calidad
## 10. Atributos de Calidad
### 9.1 Performance
### 10.1 Performance
| Métrica | MVP | V1.0 |
|---|---|---|
@@ -730,7 +939,7 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
| Render mapa de calor | < 200ms | < 200ms |
| Export PDF | < 5s | < 5s |
### 9.2 Mantenibilidad
### 10.2 Mantenibilidad
- **TypeScript strict** activado.
- **ESLint + Prettier** configurados.
@@ -738,7 +947,7 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
- **Dominio puro separado** de UI (en `/src/domain`) — testeable sin React.
- **Sin lógica de negocio en componentes** — siempre en hooks o domain.
### 9.3 Seguridad (V1.0)
### 10.3 Seguridad (V1.0)
- TLS obligatorio (Cloudflare en MVP, Caddy en VPS).
- Auth con tokens cortos + refresh.
@@ -747,7 +956,7 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
- CSP estricto en producción.
- Backups cifrados (V1.0).
### 9.4 Accesibilidad
### 10.4 Accesibilidad
- WCAG 2.1 AA como objetivo V1.0.
- Contraste mínimo 4.5:1 en texto.
@@ -756,7 +965,7 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
---
## 10. Riesgos y Mitigaciones
## 11. Riesgos y Mitigaciones
| # | Riesgo | Probabilidad | Impacto | Mitigación |
|---|---|---|---|---|
@@ -772,9 +981,9 @@ Añade: `Tenant`, `User`, `Role`, `OrganizationUnit` (jerárquica recursiva), `P
---
## 11. Anexos
## 12. Anexos
### 11.1 Comandos de arranque para Claude Code (MVP)
### 12.1 Comandos de arranque para Claude Code (MVP)
```bash
# Inicialización
@@ -798,11 +1007,11 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom
npm install -D eslint prettier
```
### 11.2 BPMN XML de prueba sugerido
### 12.2 BPMN XML de prueba sugerido
Para testing inicial, usar el BPMN público de ejemplo de bpmn.io: https://github.com/bpmn-io/bpmn-js-examples
### 11.3 Recursos de referencia
### 12.3 Recursos de referencia
- **bpmn-js docs**: https://bpmn.io/toolkit/bpmn-js/
- **BPMN 2.0 spec**: https://www.omg.org/spec/BPMN/2.0/
@@ -811,7 +1020,7 @@ Para testing inicial, usar el BPMN público de ejemplo de bpmn.io: https://githu
- **Zustand**: https://zustand-demo.pmnd.rs/
- **Dexie.js**: https://dexie.org/
### 11.4 Definition of Done — MVP "Noche Cero"
### 12.4 Definition of Done — MVP "Noche Cero"
- [ ] El usuario puede importar un archivo `.bpmn` por drag & drop
- [ ] El diagrama se renderiza correctamente en el canvas