# Estándar de Estructura de Documentación

## Objetivo

Definir la estructura estándar para la documentación de proyectos dentro del workspace, basada en las mejores prácticas del proyecto Gamilit.

---

## Estructura de Carpetas `docs/`

### Principio de Numeración

La numeración sigue un esquema jerárquico:
- **00-09**: Visión general y contexto
- **01-0N**: Fases del proyecto (secuenciales)
- **90-99**: Documentación transversal y referencia

```
docs/
├── 00-vision-general/           # Visión, arquitectura, contexto
├── 01-fase-{nombre}/            # Primera fase del proyecto
├── 02-fase-{nombre}/            # Segunda fase del proyecto
├── ...                          # Fases adicionales según necesidad
├── 0N-fase-{nombre}/            # N-ésima fase
│
├── 90-transversal/              # Documentación que cruza todas las fases
├── 95-guias-desarrollo/         # Guías técnicas de desarrollo
├── 96-quick-reference/          # Referencias rápidas (cheatsheets)
├── 97-adr/                      # Architecture Decision Records
├── 98-standards/                # Estándares del proyecto
├── 99-finiquito/                # Documentación de cierre/entrega
│
├── {feature-especifica}/        # Carpetas de features sin numeración
└── README.md                    # Índice maestro de documentación
```

---

## Reglas de Numeración

### Fases del Proyecto (01-0N)

Las fases representan etapas cronológicas o lógicas del proyecto:

| Prefijo | Uso | Ejemplo |
|---------|-----|---------|
| `01-fase-` | Primera fase | `01-fase-alcance-inicial/` |
| `02-fase-` | Segunda fase | `02-fase-robustecimiento/` |
| `03-fase-` | Tercera fase | `03-fase-extensiones/` |
| `04-fase-` | Fase de backlog | `04-fase-backlog/` |

**Nomenclatura:** `{NN}-fase-{nombre-descriptivo}/`

### Documentación Transversal (90-99)

Reservada para documentación que no pertenece a una fase específica:

| Prefijo | Propósito |
|---------|-----------|
| `90-transversal/` | Cruza todas las fases (APIs, BD, componentes) |
| `95-guias-desarrollo/` | Guías técnicas para desarrolladores |
| `96-quick-reference/` | Cheatsheets, referencias rápidas |
| `97-adr/` | Architecture Decision Records |
| `98-standards/` | Estándares y convenciones del proyecto |
| `99-finiquito/` | Manuales de usuario, entrega final |

### Carpetas sin Numeración

Para features o módulos específicos que no son fases:

```
├── sistema-recompensas/         # Feature específica
├── student-portal/              # Portal específico
├── database/                    # Documentación de BD
└── frontend/                    # Documentación de frontend
```

---

## Estructura Interna de Fases

Cada fase debe contener:

```
01-fase-{nombre}/
├── README.md                    # Índice de la fase
├── _MAP.md                      # Mapa de archivos (opcional)
├── {EPICA-001}/                 # Épica o feature principal
│   ├── README.md
│   ├── requerimientos/
│   │   └── US-{XXX}-{nombre}.md
│   ├── especificaciones/
│   │   └── SPEC-{nombre}.md
│   └── implementacion/
│       └── IMPL-{nombre}.md
└── {EPICA-002}/
    └── ...
```

---

## Archivo README.md Principal

El README.md de docs/ debe incluir:

1. **Encabezado del Proyecto**
   - Nombre, versión, período, estado

2. **Alcance** (MVP vs Backlog)
   - Tabla clara de qué está incluido vs pendiente

3. **Mapa de Navegación**
   - Árbol de estructura con descripción de cada carpeta

4. **Resumen por Fase**
   - Objetivo, épicas, resultados, métricas

5. **Navegación por Dominio**
   - Acceso rápido por área funcional

6. **Métricas y Estado**
   - Completitud, coverage, KPIs

---

## Ejemplos por Tipo de Proyecto

### Proyecto con Fases Cronológicas (Gamilit)

```
docs/
├── 00-vision-general/
├── 01-fase-alcance-inicial/     # Mes 1
├── 02-fase-robustecimiento/     # Mes 2
├── 03-fase-extensiones/         # Mes 3-4
├── 04-fase-backlog/             # Futuro
├── 90-transversal/
├── 95-guias-desarrollo/
├── 96-quick-reference/
├── 97-adr/
├── 98-standards/
└── 99-finiquito/
```

### Proyecto con Módulos (ERP)

```
docs/
├── 00-vision-general/
├── 01-modulo-contabilidad/
├── 02-modulo-inventarios/
├── 03-modulo-ventas/
├── 04-modulo-compras/
├── 90-transversal/
├── 95-guias-desarrollo/
├── 97-adr/
└── 98-standards/
```

### Proyecto Nuevo (Minimal)

```
docs/
├── 00-vision-general/
│   └── README.md                # Visión inicial
├── 01-fase-mvp/
│   └── README.md                # Pendiente de definir
├── 95-guias-desarrollo/
│   └── README.md
└── README.md
```

---

## Anti-patrones

### NO hacer:

1. **Duplicar numeración**
   ```
   # INCORRECTO
   ├── 01-requerimientos/
   ├── 01-fase-inicial/          # Conflicto de numeración
   ```

2. **Mezclar niveles**
   ```
   # INCORRECTO
   ├── 01-fase-inicial/
   ├── componentes/              # Sin numeración junto con numerados
   ├── 02-fase-desarrollo/
   ```

3. **Numeración no secuencial**
   ```
   # INCORRECTO
   ├── 01-fase-inicial/
   ├── 05-fase-final/            # Salto de numeración
   ```

### SÍ hacer:

1. **Numeración consistente**
   ```
   # CORRECTO
   ├── 01-fase-mvp/
   ├── 02-fase-consolidacion/
   ├── 03-fase-expansion/
   ```

2. **Features sin numerar van al final**
   ```
   # CORRECTO
   ├── 01-fase-mvp/
   ├── 02-fase-consolidacion/
   ├── 90-transversal/
   ├── sistema-pagos/            # Feature específica
   └── integraciones/            # Feature específica
   ```

---

## Migración de Proyectos Existentes

Cuando se migra documentación existente:

1. **Identificar estructura actual**
2. **Mapear a la estructura estándar**
3. **Eliminar duplicados de numeración**
4. **Preservar contenido original**
5. **Actualizar referencias internas**

---

## Validación

El script `validate-structure.sh` verifica:
- Existencia de `docs/README.md`
- Carpeta `docs/` presente
- Sin carpetas con numeración duplicada

---

*Estándar basado en el proyecto Gamilit - Sistema NEXUS*
*Última actualización: 2025-12-05*
