erp-core/orchestration/templates/TEMPLATE-USER-STORY.md

280 lines
7.0 KiB
Markdown

# US-{MODULO}-{NNN}: {Titulo de la Historia}
> **INSTRUCCIONES:** Copiar este template para cada historia de usuario.
> Eliminar esta seccion antes de guardar.
---
## Identificacion
| Campo | Valor |
|-------|-------|
| **ID** | US-{MODULO}-{NNN} |
| **Modulo** | {MGN-NNN / MAI-NNN} |
| **Epica** | {Nombre de la epica} |
| **Prioridad** | {P0 / P1 / P2 / P3} |
| **Story Points** | {1 / 2 / 3 / 5 / 8 / 13} |
| **Sprint** | Sprint {N} |
| **Estado** | {Backlog / Ready / In Progress / Done} |
| **Autor** | {nombre} |
| **Fecha** | {YYYY-MM-DD} |
---
## Historia de Usuario
**Como** {rol de usuario}
**Quiero** {accion o funcionalidad deseada}
**Para** {beneficio o valor que obtiene}
### Contexto
{Descripcion adicional del contexto de negocio. Por que es importante esta historia?}
---
## Criterios de Aceptacion
### Escenario 1: {Nombre del escenario - Happy Path}
```gherkin
Feature: {Nombre de la funcionalidad}
Scenario: {Descripcion del escenario}
Given {contexto inicial / precondiciones}
And {otra precondicion si aplica}
When {accion que realiza el usuario}
And {otra accion si aplica}
Then {resultado esperado}
And {otro resultado si aplica}
```
### Escenario 2: {Escenario alternativo}
```gherkin
Scenario: {Descripcion}
Given {contexto}
When {accion}
Then {resultado}
```
### Escenario 3: {Manejo de errores}
```gherkin
Scenario: {Error handling}
Given {contexto que causa error}
When {accion}
Then {mensaje de error mostrado}
And {sistema permanece en estado consistente}
```
---
## Mockups / Wireframes
### Pantalla Principal
> Incluir referencia a Figma o descripcion visual
```
+------------------------------------------------------------------+
| Header: {Titulo de la pantalla} [Boton Accion]|
+------------------------------------------------------------------+
| |
| +-------------------------------------------------------------+ |
| | Componente 1 | |
| | - Elemento A | |
| | - Elemento B | |
| +-------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------+ |
| | Tabla / Lista | |
| | | Col 1 | Col 2 | Col 3 | Acciones | | |
| | | dato | dato | dato | [E] [X] | | |
| +-------------------------------------------------------------+ |
| |
| [Cancelar] [Guardar Borrador] |
| [Guardar] |
+------------------------------------------------------------------+
```
### Estados de UI
| Estado | Comportamiento |
|--------|----------------|
| Loading | Mostrar skeleton/spinner |
| Empty | Mensaje "No hay {recursos}" + CTA |
| Error | Toast con mensaje de error |
| Success | Toast de confirmacion |
---
## Flujo de Usuario
```mermaid
flowchart TD
A[Usuario accede a pantalla] --> B{Tiene permisos?}
B -->|No| C[Mostrar error 403]
B -->|Si| D[Cargar lista de recursos]
D --> E{Hay datos?}
E -->|No| F[Mostrar estado vacio]
E -->|Si| G[Mostrar tabla]
G --> H[Usuario selecciona accion]
H --> I{Tipo de accion}
I -->|Crear| J[Abrir formulario]
I -->|Editar| K[Cargar datos y abrir formulario]
I -->|Eliminar| L[Confirmar y eliminar]
J --> M[Validar y guardar]
K --> M
M -->|Exito| N[Toast success + Refrescar lista]
M -->|Error| O[Toast error]
```
---
## Notas Tecnicas
### API Endpoints Involucrados
| Metodo | Endpoint | Proposito |
|--------|----------|-----------|
| GET | `/api/v1/{recursos}` | Listar |
| POST | `/api/v1/{recursos}` | Crear |
| PATCH | `/api/v1/{recursos}/:id` | Actualizar |
| DELETE | `/api/v1/{recursos}/:id` | Eliminar |
### Componentes Frontend
| Componente | Tipo | Descripcion |
|------------|------|-------------|
| `{Nombre}Page` | Page | Pagina principal |
| `{Nombre}Table` | Component | Tabla de datos |
| `{Nombre}Form` | Component | Formulario crear/editar |
| `{Nombre}Modal` | Component | Modal de confirmacion |
### Store (Zustand)
```typescript
interface {Nombre}Store {
// Estado
items: {Nombre}[];
loading: boolean;
error: string | null;
selectedItem: {Nombre} | null;
// Acciones
fetchAll: () => Promise<void>;
create: (dto: Create{Nombre}Dto) => Promise<void>;
update: (id: string, dto: Update{Nombre}Dto) => Promise<void>;
remove: (id: string) => Promise<void>;
setSelected: (item: {Nombre} | null) => void;
}
```
### Validaciones Frontend
| Campo | Regla | Mensaje |
|-------|-------|---------|
| `name` | required, min 3 | "Nombre es requerido (min 3 caracteres)" |
| `email` | valid email | "Email invalido" |
| `{campo}` | {regla} | "{mensaje}" |
---
## Dependencias
### Historias Bloqueantes
| ID | Historia | Estado |
|----|----------|--------|
| US-{MOD}-{NNN} | {Titulo} | {Estado} |
### Historias Relacionadas
| ID | Historia | Relacion |
|----|----------|----------|
| US-{MOD}-{NNN} | {Titulo} | {Tipo: depende/habilita/relacionada} |
---
## Trazabilidad
### Requerimientos
| ID | Requerimiento |
|----|---------------|
| RF-{MOD}-{NNN} | {Titulo del requerimiento} |
### Casos de Prueba
| ID | Caso de Prueba | Tipo |
|----|----------------|------|
| TC-{MOD}-{NNN} | {Descripcion} | {Unit/Integration/E2E} |
---
## Estimacion por Capa
| Capa | Story Points | Horas Estimadas | Notas |
|------|--------------|-----------------|-------|
| Database | {N} | {N}h | {consideraciones} |
| Backend | {N} | {N}h | {consideraciones} |
| Frontend | {N} | {N}h | {consideraciones} |
| Testing | {N} | {N}h | {consideraciones} |
| **Total** | **{N}** | **{N}h** | |
---
## Definition of Done
- [ ] Codigo implementado y revisado (code review)
- [ ] Tests unitarios pasando (>80% coverage)
- [ ] Tests de integracion pasando
- [ ] Documentacion actualizada
- [ ] Swagger actualizado
- [ ] Sin errores de lint
- [ ] Funcionalidad verificada en ambiente de desarrollo
- [ ] Criterios de aceptacion cumplidos
- [ ] Product Owner aprobo
---
## Notas y Decisiones
### Decisiones Tomadas
- {Decision 1}: {Razon}
- {Decision 2}: {Razon}
### Riesgos Identificados
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| {Riesgo 1} | {Alta/Media/Baja} | {Alto/Medio/Bajo} | {Accion} |
### Preguntas Abiertas
- [ ] {Pregunta 1}
- [ ] {Pregunta 2}
---
## Historial de Cambios
| Version | Fecha | Autor | Cambios |
|---------|-------|-------|---------|
| 1.0 | {YYYY-MM-DD} | {nombre} | Creacion inicial |
---
## Aprobaciones
| Rol | Nombre | Fecha | Aprobado |
|-----|--------|-------|----------|
| Tech Lead | | | [ ] |
| Product Owner | | | [ ] |
| QA Lead | | | [ ] |
---
*Template version 1.0 - ERP Suite*