erp-core/orchestration/directivas/DIRECTIVA-DOCUMENTACION-PRE-DESARROLLO.md

458 lines
13 KiB
Markdown

# DIRECTIVA: Documentacion Pre-Desarrollo
**Proyecto:** ERP Core - Base Generica Reutilizable
**Version:** 1.0.0
**Fecha:** 2025-12-05
**Aplicable a:** ERP Core y todas las verticales
**Autoridad:** Tech Lead / Arquitecto de Solucion
**Estado:** OBLIGATORIO - Politica permanente
---
## PRINCIPIO FUNDAMENTAL
> **"Primero documentar, despues desarrollar"**
Ningun desarrollo puede iniciarse sin la documentacion completa definida y aprobada. La documentacion es el contrato que guia la implementacion.
---
## ALCANCE
Esta directiva aplica a:
- ERP Core (modulos genericos)
- Todas las verticales (construccion, vidrio-templado, mecanicas-diesel, clinicas, retail)
- Cualquier extension o personalizacion
---
## FASES DE DOCUMENTACION PRE-DESARROLLO
### FASE 1: Definicion de Requerimientos
**Entregables obligatorios:**
```
docs/01-requerimientos/
├── RF-{modulo}/ # Requerimientos Funcionales
│ ├── RF-{modulo}-001.md # Requerimiento individual
│ └── INDICE-RF-{modulo}.md # Indice del modulo
├── RNF-{modulo}/ # Requerimientos No Funcionales
└── MATRIZ-TRAZABILIDAD.md # Trazabilidad RF -> Modulo -> Historia
```
**Contenido minimo RF-{modulo}-NNN.md:**
```markdown
# RF-{modulo}-NNN: [Titulo descriptivo]
## Identificacion
| Campo | Valor |
|-------|-------|
| ID | RF-{modulo}-NNN |
| Prioridad | P0/P1/P2/P3 |
| Complejidad | Alta/Media/Baja |
| Modulo | {nombre_modulo} |
| Dependencias | RF-xxx, RF-yyy |
## Descripcion
[Descripcion clara del requerimiento]
## Criterios de Aceptacion
- [ ] Criterio 1
- [ ] Criterio 2
- [ ] Criterio 3
## Reglas de Negocio
1. RN-001: [descripcion]
2. RN-002: [descripcion]
## Impacto en Capas
- **Database:** [tablas/schemas afectados]
- **Backend:** [modulos/services afectados]
- **Frontend:** [paginas/componentes afectados]
## Referencias
- Vertical aplicable: [core/construccion/vidrio/etc]
- Referencia Odoo: [si aplica]
```
---
### FASE 2: Modelado de Base de Datos
**Entregables obligatorios:**
```
docs/02-modelado/
├── database-design/
│ ├── ERD-{modulo}.md # Diagrama ER en Mermaid
│ ├── DDL-SPEC-{schema}.md # Especificacion detallada
│ └── DICCIONARIO-DATOS.md # Diccionario de datos
├── domain-models/
│ ├── DM-{modulo}.md # Modelo de dominio
│ └── AGREGADOS-{modulo}.md # Agregados DDD
└── especificaciones-tecnicas/
├── ET-{modulo}-database.md # Spec tecnica DB
└── ET-{modulo}-api.md # Spec tecnica API
```
**Contenido minimo DDL-SPEC-{schema}.md:**
```markdown
# Especificacion DDL: Schema {nombre}
## Resumen
| Metrica | Valor |
|---------|-------|
| Tablas | N |
| Funciones | N |
| Triggers | N |
| Vistas | N |
## Diagrama ER
```mermaid
erDiagram
TABLA_A ||--o{ TABLA_B : tiene
TABLA_A {
uuid id PK
varchar nombre
timestamp created_at
}
```
## Tablas
### {nombre_tabla}
| Columna | Tipo | Nullable | Default | Descripcion |
|---------|------|----------|---------|-------------|
| id | UUID | NOT NULL | gen_random_uuid() | PK |
| tenant_id | UUID | NOT NULL | - | FK a tenants |
| ... | ... | ... | ... | ... |
**Indices:**
- `idx_{tabla}_tenant` ON (tenant_id)
- `idx_{tabla}_{columna}` ON (columna)
**Constraints:**
- `pk_{tabla}` PRIMARY KEY (id)
- `fk_{tabla}_tenant` FOREIGN KEY (tenant_id) REFERENCES tenants(id)
- `uq_{tabla}_{columna}` UNIQUE (tenant_id, columna)
**Triggers:**
- `trg_{tabla}_updated_at` - Actualiza updated_at en UPDATE
- `trg_{tabla}_audit` - Registra en audit_log
**RLS Policies:**
- `tenant_isolation_{tabla}` - Filtro por tenant_id
```
---
### FASE 3: Historias de Usuario
**Entregables obligatorios:**
```
docs/03-user-stories/
├── {MGN-NNN}/ # Modulo generico
│ ├── US-{MGN-NNN}-001.md # Historia de usuario
│ ├── US-{MGN-NNN}-002.md
│ └── BACKLOG-{MGN-NNN}.md # Backlog del modulo
├── {MAI-NNN}/ # Modulo vertical (ej: construccion)
│ ├── US-{MAI-NNN}-001.md
│ └── BACKLOG-{MAI-NNN}.md
└── BACKLOG-MAESTRO.md # Backlog consolidado
```
**Contenido minimo US-{modulo}-NNN.md:**
```markdown
# US-{modulo}-NNN: [Titulo]
## Identificacion
| Campo | Valor |
|-------|-------|
| ID | US-{modulo}-NNN |
| Modulo | {nombre_modulo} |
| Prioridad | P0/P1/P2/P3 |
| Story Points | N |
| Sprint | Sprint N |
## Historia
**Como** [rol de usuario]
**Quiero** [accion/funcionalidad]
**Para** [beneficio/valor]
## Criterios de Aceptacion (Gherkin)
### Escenario 1: [nombre]
```gherkin
Given [contexto inicial]
When [accion del usuario]
Then [resultado esperado]
And [resultado adicional]
```
## Mockups/Wireframes
[Referencia a figma/imagen o descripcion de UI]
## Notas Tecnicas
- API Endpoints requeridos
- Validaciones especiales
- Integraciones
## Dependencias
- US-xxx (bloqueante)
- US-yyy (relacionada)
## Trazabilidad
- RF: RF-{modulo}-NNN
- Tabla: {schema}.{tabla}
- API: [endpoint]
```
---
### FASE 4: Especificaciones Tecnicas
**Entregables obligatorios:**
```
docs/02-modelado/especificaciones-tecnicas/
├── ET-{modulo}-database.md # Backend especificacion
├── ET-{modulo}-backend.md # Backend especificacion
├── ET-{modulo}-frontend.md # Frontend especificacion
└── ET-{modulo}-integration.md # Integracion entre capas
```
**Contenido minimo ET-{modulo}-backend.md:**
```markdown
# Especificacion Tecnica Backend: {modulo}
## Resumen de Implementacion
### Estructura de Modulo
```
modules/{modulo}/
├── {modulo}.module.ts
├── {modulo}.controller.ts
├── {modulo}.service.ts
├── entities/
│ └── {entidad}.entity.ts
├── dto/
│ ├── create-{entidad}.dto.ts
│ ├── update-{entidad}.dto.ts
│ └── query-{entidad}.dto.ts
└── __tests__/
└── {modulo}.service.spec.ts
```
## API Endpoints
### GET /api/{modulo}
- **Descripcion:** Lista paginada de {entidad}
- **Query params:** page, limit, sort, filter[campo]
- **Response:** `{ data: [], meta: { total, page, limit } }`
- **Permisos:** `{modulo}:read`
### POST /api/{modulo}
- **Descripcion:** Crear {entidad}
- **Body:** CreateDto
- **Response:** `{ data: {entidad} }`
- **Permisos:** `{modulo}:create`
[... mas endpoints]
## DTOs
### Create{Entidad}Dto
```typescript
{
nombre: string; // required, 3-100 chars
codigo?: string; // optional, unique per tenant
descripcion?: string; // optional, max 500 chars
}
```
## Validaciones
| Campo | Regla | Mensaje Error |
|-------|-------|---------------|
| nombre | required, 3-100 | "Nombre es requerido (3-100 caracteres)" |
| codigo | unique per tenant | "Codigo ya existe" |
## Manejo de Errores
| Codigo | Situacion | Response |
|--------|-----------|----------|
| 400 | Validacion fallida | `{ error: "VALIDATION_ERROR", details: [...] }` |
| 404 | No encontrado | `{ error: "NOT_FOUND", message: "..." }` |
| 409 | Conflicto | `{ error: "CONFLICT", message: "..." }` |
```
---
### FASE 5: Plan de Pruebas
**Entregables obligatorios:**
```
docs/04-test-plans/
├── TP-{modulo}.md # Plan de pruebas del modulo
├── TC-{modulo}/ # Casos de prueba
│ ├── TC-{modulo}-001.md
│ └── TC-{modulo}-002.md
└── ESTRATEGIA-TESTING.md # Estrategia global
```
**Contenido minimo TP-{modulo}.md:**
```markdown
# Plan de Pruebas: {modulo}
## Alcance
- Pruebas unitarias: Services, DTOs
- Pruebas integracion: Controllers, Database
- Pruebas E2E: Flujos criticos
## Cobertura Minima
| Capa | Cobertura |
|------|-----------|
| Services | 80% |
| Controllers | 70% |
| Frontend | 60% |
## Casos de Prueba Criticos
### TC-001: CRUD basico
- Crear entidad valida
- Leer entidad existente
- Actualizar campos
- Eliminar (soft delete)
### TC-002: Validaciones
- Campos requeridos vacios
- Formatos invalidos
- Unicidad violada
### TC-003: Permisos
- Sin autenticacion (401)
- Sin permiso (403)
- Tenant incorrecto (404)
```
---
## CHECKLIST PRE-DESARROLLO
Antes de iniciar cualquier desarrollo, verificar:
### Requerimientos
- [ ] RF documentado con criterios de aceptacion
- [ ] Reglas de negocio definidas
- [ ] Dependencias identificadas
- [ ] Prioridad asignada
### Base de Datos
- [ ] Diagrama ER actualizado
- [ ] DDL-SPEC con todas las tablas
- [ ] Diccionario de datos completo
- [ ] Indices y constraints definidos
- [ ] RLS policies especificadas
### Backend
- [ ] Especificacion tecnica completa
- [ ] Endpoints definidos con request/response
- [ ] DTOs especificados con validaciones
- [ ] Permisos definidos
### Frontend
- [ ] Wireframes/mockups aprobados
- [ ] Componentes identificados
- [ ] Flujos de navegacion
- [ ] Estados de UI (loading, error, empty)
### Testing
- [ ] Plan de pruebas creado
- [ ] Casos de prueba criticos definidos
- [ ] Cobertura minima establecida
---
## PROCESO DE APROBACION
```
┌─────────────────────────────────────────────────────────────┐
│ 1. CREAR DOCUMENTACION │
│ Desarrollador/Analista crea docs segun templates │
└─────────────┬───────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 2. REVISION TECNICA │
│ Tech Lead revisa consistencia y completitud │
└─────────────┬───────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 3. VALIDACION NEGOCIO │
│ PO valida que refleja requerimientos correctamente │
└─────────────┬───────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 4. APROBACION FINAL │
│ ✅ Marcar docs como "APROBADO" │
│ ✅ Crear tarea en backlog con referencia a docs │
└─────────────┬───────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 5. INICIAR DESARROLLO │
│ Solo con documentacion APROBADA │
└─────────────────────────────────────────────────────────────┘
```
---
## ESTRUCTURA DOCS POR VERTICAL
Cada vertical debe mantener su propia documentacion que EXTIENDE la del core:
```
apps/verticales/{vertical}/docs/
├── 00-vision-general/
│ └── VISION-{VERTICAL}.md
├── 01-requerimientos/
│ └── RF-{MAI-NNN}/ # Modulos especificos de vertical
├── 02-modelado/
│ ├── database-design/
│ │ └── DDL-SPEC-{schema}.md # Schemas propios de vertical
│ └── especificaciones-tecnicas/
├── 03-user-stories/
│ └── {MAI-NNN}/
├── 04-test-plans/
└── 90-transversal/
└── MAPEO-CORE-VERTICAL.md # Mapeo de modulos core usados
```
---
## REFERENCIAS
### Directivas Relacionadas
- `core/orchestration/directivas/DIRECTIVA-DOCUMENTACION-OBLIGATORIA.md`
- `core/orchestration/directivas/DIRECTIVA-FLUJO-5-FASES.md`
- `core/orchestration/directivas/DIRECTIVA-VALIDACION-DOCUMENTACION.md`
### Templates
- `core/orchestration/templates/TEMPLATE-ANALISIS.md`
- `core/orchestration/templates/TEMPLATE-PLAN.md`
### Patrones de Referencia
- Odoo Enterprise modules structure
- `knowledge-base/patterns/` (patrones de Odoo)
---
## CONSECUENCIAS DE NO DOCUMENTAR
1. **Desarrollo rechazado:** No se puede iniciar sin docs aprobados
2. **Regresion:** Si se descubre falta de docs, se pausa desarrollo
3. **Deuda tecnica:** Docs incompletos generan deuda tecnica critica
4. **Impacto en verticales:** Afecta a todas las verticales que heredan
---
**Version:** 1.0.0
**Ultima actualizacion:** 2025-12-05
**Estado:** ACTIVA Y OBLIGATORIA