# Inventarios - ERP Core

**Ubicacion Canonica:** `orchestration/inventarios/`
**Proyecto:** ERP Suite - erp-core
**Ultima actualizacion:** 2025-12-05

---

## Proposito

Este directorio contiene los **inventarios operacionales canonicos** del proyecto.
Todos los objetos (tablas, endpoints, componentes) deben estar registrados aqui
para evitar duplicacion y mantener trazabilidad.

---

## Inventarios Disponibles

| Archivo | Descripcion | Objetos |
|---------|-------------|---------|
| [MASTER_INVENTORY.yml](./MASTER_INVENTORY.yml) | Inventario maestro consolidado | Resumen global |
| [DATABASE_INVENTORY.yml](./DATABASE_INVENTORY.yml) | Objetos de base de datos | Schemas, tablas, funciones |
| [BACKEND_INVENTORY.yml](./BACKEND_INVENTORY.yml) | Modulos backend NestJS | Services, controllers, endpoints |
| [FRONTEND_INVENTORY.yml](./FRONTEND_INVENTORY.yml) | Componentes frontend React | Pages, components, stores |
| [DEPENDENCY_GRAPH.yml](./DEPENDENCY_GRAPH.yml) | Grafo de dependencias | Relaciones entre modulos |
| [TRACEABILITY_MATRIX.yml](./TRACEABILITY_MATRIX.yml) | Matriz de trazabilidad global | RF -> ET -> US -> Codigo |
| [SEEDS_INVENTORY.yml](./SEEDS_INVENTORY.yml) | Datos semilla | Catalogos, usuarios demo |
| [TEST_COVERAGE.yml](./TEST_COVERAGE.yml) | Cobertura de tests | Unit, integration, e2e |

---

## Uso

### Antes de crear un nuevo objeto:

1. **Verificar que no exista** en el inventario correspondiente
2. **Verificar nombre** no colisione con existentes
3. **Registrar** el nuevo objeto inmediatamente despues de crearlo

### Al modificar un objeto existente:

1. **Actualizar** el inventario con los cambios
2. **Verificar dependencias** en DEPENDENCY_GRAPH.yml
3. **Actualizar trazabilidad** si cambia RF/ET/US

### Comandos utiles:

```bash
# Buscar si una tabla existe
grep -r "table_name" orchestration/inventarios/DATABASE_INVENTORY.yml

# Buscar si un endpoint existe
grep -r "POST /api/v1/auth" orchestration/inventarios/BACKEND_INVENTORY.yml

# Ver dependencias de un modulo
grep -A 10 "module: auth" orchestration/inventarios/DEPENDENCY_GRAPH.yml
```

---

## Estructura de Archivos

```yaml
# Ejemplo DATABASE_INVENTORY.yml
schemas:
  - name: core_auth
    tables:
      - name: users_auth
        columns: [id, email, password_hash, ...]
        indexes: [idx_users_email]
        rls_policies: [tenant_isolation]
    functions:
      - name: validate_password
        params: [user_id, password]
        returns: boolean
```

```yaml
# Ejemplo BACKEND_INVENTORY.yml
modules:
  - name: auth
    path: src/modules/auth/
    services:
      - name: AuthService
        methods: [login, logout, refresh]
    controllers:
      - name: AuthController
        endpoints:
          - method: POST
            path: /api/v1/auth/login
            dto: LoginDto
            response: TokenResponseDto
```

---

## Responsabilidades

| Rol | Responsabilidad |
|-----|-----------------|
| Database-Agent | Mantener DATABASE_INVENTORY.yml |
| Backend-Agent | Mantener BACKEND_INVENTORY.yml |
| Frontend-Agent | Mantener FRONTEND_INVENTORY.yml |
| Architecture-Analyst | Mantener DEPENDENCY_GRAPH.yml, TRACEABILITY_MATRIX.yml |
| Requirements-Analyst | Validar trazabilidad RF -> Codigo |

---

## Validacion

Antes de cada merge a develop:

1. [ ] Todos los objetos nuevos estan en inventarios
2. [ ] No hay duplicados de nombres
3. [ ] Dependencias actualizadas
4. [ ] Trazabilidad completa

---

**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-05
