# Contexto del Proyecto: ERP Core

## Metadatos

| Campo | Valor |
|-------|-------|
| **Nombre** | ERP Core - Base Genérica Reutilizable |
| **Tipo** | Módulo Base / Foundation |
| **Estado** | En desarrollo |
| **Progreso** | 60% |
| **Versión** | 0.1.0 |
| **Workspace** | `/home/isem/workspace/projects/erp-suite/apps/erp-core/` |

## Descripción

ERP Core es la base genérica que proporciona el 60-70% del código compartido para todas las verticales del ERP Suite. Incluye módulos fundamentales como autenticación, usuarios, roles, catálogos maestros, y funcionalidades comunes.

**Verticales que extienden este core:**
- `construccion/` - ERP Construcción INFONAVIT (35%)
- `vidrio-templado/` - ERP Vidrio Templado (0%)
- `mecanicas-diesel/` - ERP Talleres Mecánicos (0%)
- `retail/` - ERP Punto de Venta (0%)
- `clinicas/` - ERP Clínicas (0%)

---

## Stack Tecnológico

### Backend (`/backend`)
| Tecnología | Versión | Propósito |
|------------|---------|-----------|
| Node.js | 20+ | Runtime |
| Express.js | 4.x | Framework HTTP |
| TypeScript | 5.3+ | Lenguaje |
| TypeORM | 0.3.17 | ORM |
| JWT + bcryptjs | - | Autenticación |
| Zod, class-validator | - | Validación |
| Winston | - | Logger |
| Helmet, CORS | - | Seguridad HTTP |

### Frontend (`/frontend`)
| Tecnología | Versión | Propósito |
|------------|---------|-----------|
| React | 18 | Framework UI |
| Vite | 5.x | Build tool |
| TypeScript | 5.3+ | Lenguaje |
| Zustand | - | State management |
| Tailwind CSS | 4.x | Styling |

### Base de Datos (`/database`)
| Tecnología | Versión | Propósito |
|------------|---------|-----------|
| PostgreSQL | 15+ | Motor BD |
| RLS | - | Row-Level Security |
| uuid-ossp | - | Generación UUIDs |
| pg_trgm | - | Búsqueda fuzzy |

---

## Paths del Proyecto

```
/home/isem/workspace/projects/erp-suite/apps/erp-core/
├── backend/
│   ├── src/
│   │   ├── modules/           # Módulos de negocio (auth, users, etc.)
│   │   ├── shared/            # Código compartido (utils, types, constants)
│   │   ├── config/            # Configuración (database, jwt, cors)
│   │   └── middleware/        # Middlewares (auth, validation, error)
│   ├── package.json
│   ├── tsconfig.json
│   └── .env.example
│
├── frontend/
│   ├── src/
│   │   ├── components/        # Componentes reutilizables
│   │   ├── pages/             # Páginas/Vistas
│   │   ├── stores/            # Estado global (Zustand)
│   │   ├── services/          # API clients
│   │   └── hooks/             # Custom hooks
│   ├── package.json
│   └── vite.config.ts
│
├── database/
│   ├── ddl/                   # CREATE TABLE statements
│   ├── migrations/            # Migraciones incrementales
│   ├── seeds/                 # Datos iniciales (idempotentes)
│   └── scripts/               # Scripts de utilidad
│
├── docs/                      # 517 archivos de documentación
│   ├── 00-vision-general/
│   ├── 00-analisis-referencias/
│   ├── 01-definicion-modulos/
│   ├── 02-modelado/
│   │   ├── database-design/
│   │   ├── domain-models/
│   │   └── especificaciones-tecnicas/
│   ├── 03-user-stories/       # 15 módulos MGN-*
│   ├── 90-transversal/
│   ├── 95-guias-desarrollo/
│   └── 97-adr/
│
└── orchestration/             # Sistema NEXUS
    ├── 00-guidelines/
    │   ├── CONTEXTO-PROYECTO.md      # Este archivo
    │   └── HERENCIA-DIRECTIVAS.md    # Mapeo de directivas
    ├── 01-analisis/           # Análisis de tareas
    ├── 02-planeacion/         # Planes detallados
    ├── 03-tareas/             # Descomposición de work
    ├── 04-ejecucion-logs/     # Logs de ejecución
    ├── 05-validaciones/       # Validaciones (pre/durante/post)
    │   ├── pre/
    │   ├── durante/
    │   └── post/
    ├── 06-subagentes/         # Gestión de subagentes
    ├── agentes/               # Ejecuciones por agente
    ├── directivas/            # Directivas específicas
    ├── estados/               # Estado actual de agentes
    ├── inventarios/           # Inventarios YAML
    ├── prompts/               # Prompts específicos
    ├── reportes/              # Reportes de ciclos
    ├── trazas/                # Historial de tareas
    ├── templates/             # Templates proyecto
    └── PROXIMA-ACCION.md      # Siguiente tarea
```

---

## Módulos Core (MGN-*)

Referencia: `/docs/03-user-stories/`

| Código | Módulo | Estado | Descripción |
|--------|--------|--------|-------------|
| MGN-001 | auth | En desarrollo | Autenticación JWT, OAuth, sessions |
| MGN-002 | users | En desarrollo | Gestión de usuarios CRUD |
| MGN-003 | roles | Planificado | Roles y permisos (RBAC) |
| MGN-004 | tenants | Planificado | Multi-tenancy, aislamiento |
| MGN-005 | catalogs | Planificado | Catálogos maestros genéricos |
| MGN-006 | settings | Planificado | Configuración del sistema |
| MGN-007 | audit | Planificado | Auditoría y logs |
| MGN-008 | notifications | Planificado | Sistema de notificaciones |
| MGN-009 | reports | Planificado | Reportes genéricos |
| MGN-010 | financial | Planificado | Contabilidad básica |
| MGN-011 | inventory | Planificado | Inventario básico |
| MGN-012 | purchasing | Planificado | Compras básicas |
| MGN-013 | crm | Planificado | CRM básico |
| MGN-014 | integration | Planificado | APIs de integración |

---

## Convenciones de Código

### Base de Datos (DDL)
```
Schemas:    core_{nombre}           (ej: core_auth, core_users)
Tablas:     {schema}.{nombre_plural} (ej: core_auth.users)
Columnas:   snake_case              (ej: created_at, user_id)
Índices:    idx_{tabla}_{columnas}  (ej: idx_users_email)
FK:         fk_{origen}_to_{destino} (ej: fk_users_to_tenants)
Triggers:   trg_{tabla}_{accion}    (ej: trg_users_audit)
```

**Columnas de auditoría (obligatorias):**
- `id` UUID PRIMARY KEY
- `tenant_id` UUID NOT NULL (multi-tenant)
- `created_at` TIMESTAMPTZ DEFAULT NOW()
- `updated_at` TIMESTAMPTZ DEFAULT NOW()
- `created_by` UUID REFERENCES users(id)
- `updated_by` UUID REFERENCES users(id)
- `is_active` BOOLEAN DEFAULT TRUE

### Backend (TypeScript)
```
Archivos:   kebab-case.tipo.ts      (ej: user-auth.service.ts)
Clases:     PascalCase + sufijo     (ej: UserAuthService, UserEntity)
Variables:  camelCase               (ej: userId, isActive)
Constantes: UPPER_SNAKE_CASE        (ej: MAX_LOGIN_ATTEMPTS)
Métodos:    camelCase + verbo       (ej: findById, createUser)
Interfaces: IPascalCase             (ej: IUserService)
Types:      TPascalCase             (ej: TUserRole)
```

**Estructura de módulo:**
```
modules/{nombre}/
├── {nombre}.module.ts
├── {nombre}.controller.ts
├── {nombre}.service.ts
├── {nombre}.entity.ts
├── dto/
│   ├── create-{nombre}.dto.ts
│   └── update-{nombre}.dto.ts
└── __tests__/
    └── {nombre}.service.spec.ts
```

### Frontend (React/TypeScript)
```
Componentes: PascalCase.tsx         (ej: UserProfile.tsx)
Páginas:     PascalCasePage.tsx     (ej: DashboardPage.tsx)
Hooks:       useCamelCase.ts        (ej: useAuth.ts)
Stores:      camelCase.store.ts     (ej: auth.store.ts)
Services:    camelCase.service.ts   (ej: api.service.ts)
Types:       camelCase.types.ts     (ej: user.types.ts)
```

---

## Herencia de Directivas

**Ver detalle completo en:** `HERENCIA-DIRECTIVAS.md`

### Orden de Precedencia
1. **Globales (CORE):** `/home/isem/workspace/core/orchestration/directivas/`
2. **ERP-Suite:** `/home/isem/workspace/projects/erp-suite/orchestration/directivas/`
3. **ERP-Core:** `./directivas/`

### Directivas Críticas
- `DIRECTIVA-FLUJO-5-FASES.md` - Flujo de trabajo obligatorio
- `DIRECTIVA-VALIDACION-DOCUMENTACION.md` - Validar contra /docs/
- `POLITICAS-USO-AGENTES.md` - Uso de agentes NEXUS
- `DIRECTIVA-DISENO-BASE-DATOS.md` - Diseño de BD

---

## Principios Core (Obligatorios)

1. **Independencia:** Todo módulo debe ser independiente y desacoplado
2. **Extensibilidad:** Las verticales EXTIENDEN, nunca modifican el core
3. **Multi-tenant:** TODA consulta debe filtrar por `tenant_id`
4. **Documentación:** Documentar ANTES de implementar
5. **Trazabilidad:** Registrar TODA tarea en `/orchestration/trazas/`
6. **Validación:** Usar flujo de 5 fases para toda tarea

---

## Flujo de 5 Fases (Obligatorio)

Toda tarea debe seguir:

| Fase | Carpeta | Entregable |
|------|---------|------------|
| 1. Análisis | `01-analisis/` | ANÁLISIS.md |
| 2. Planeación | `02-planeacion/` | PLAN.md |
| 3. Validación | `05-validaciones/pre/` | VALIDACIÓN.md |
| 4. Ejecución | `04-ejecucion-logs/` | LOGS.md |
| 5. Cierre | `05-validaciones/post/` | CIERRE.md |

---

## Referencias

| Recurso | Path |
|---------|------|
| Directivas globales | `/home/isem/workspace/core/orchestration/directivas/` |
| Prompts base | `/home/isem/workspace/core/orchestration/prompts/base/` |
| Patrones Odoo | `/home/isem/workspace/knowledge-base/patterns/` |
| Gamilit (referencia) | `/home/isem/workspace/projects/gamilit/` |
| Estándar docs | `/home/isem/workspace/core/standards/ESTANDAR-ESTRUCTURA-DOCUMENTACION.md` |

---
*Última actualización: Diciembre 2025*
