erp-core/orchestration/01-analisis/ANALISIS-DEPENDENCIAS-2026-01-06.md
rckrdmrd 4c4e27d9ba feat: Documentation and orchestration updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:35:20 -06:00

18 KiB

ANALISIS DE DEPENDENCIAS - FASE 4 (CAPVED)

Fecha: 2026-01-06 Fase: A (Analisis de Dependencias) Proyecto: ERP-Core Orquestador: Claude Code - Opus 4.5


1. ESTRUCTURA ACTUAL DEL PROYECTO

1.1 Backend - Estructura de Modulos

backend/src/
├── config/
│   ├── database.ts          # Configuracion TypeORM
│   ├── redis.ts             # Configuracion Redis (existe!)
│   ├── swagger.config.ts    # OpenAPI config
│   ├── typeorm.ts           # DataSource config
│   └── index.ts
│
├── shared/
│   ├── utils/logger.ts      # Winston logger
│   ├── types/index.ts       # Tipos compartidos
│   ├── services/base.service.ts  # Servicio base
│   ├── errors/index.ts      # Error handlers
│   └── middleware/
│       ├── auth.middleware.ts
│       ├── apiKeyAuth.middleware.ts
│       └── fieldPermissions.middleware.ts
│
├── modules/
│   ├── auth/                # MGN-001 ✅
│   │   ├── entities/        # 15 entidades
│   │   ├── services/        # auth, token, apiKeys
│   │   ├── *.controller.ts
│   │   └── *.routes.ts
│   │
│   ├── users/               # MGN-002 ✅
│   │   ├── users.service.ts
│   │   ├── users.controller.ts
│   │   └── users.routes.ts
│   │
│   ├── roles/               # MGN-003 ✅
│   ├── tenants/             # MGN-004 ✅
│   ├── companies/           # Parte de MGN-002 ✅
│   ├── partners/            # Parte de MGN-005 ✅
│   │
│   ├── financial/           # MGN-010 ⚠️ Parcial
│   ├── inventory/           # MGN-011 ⚠️ Parcial
│   ├── purchase/            # MGN-012 ⚠️ Scaffold
│   ├── sales/               # MGN-013 ⚠️ Scaffold
│   ├── projects/            # MGN-015 ⚠️ Scaffold
│   ├── crm/                 # MGN-014 ⚠️ Scaffold
│   ├── hr/                  # HR ⚠️ Scaffold
│   ├── reports/             # MGN-009 ⚠️ Scaffold
│   └── system/              # Notifications, etc ⚠️ Scaffold
│
└── app.ts, index.ts         # Entry points

1.2 Frontend - Estructura FSD

frontend/src/
├── app/
│   ├── layouts/             # DashboardLayout, AuthLayout
│   ├── providers/           # Context providers
│   └── router/              # React Router config
│
├── features/                # Features implementadas
│   ├── users/              # ✅ Completo
│   │   ├── api/
│   │   ├── components/
│   │   ├── hooks/
│   │   └── types/
│   ├── companies/          # ✅ Completo
│   ├── partners/           # ✅ Completo
│   └── tenants/            # ✅ Completo
│
├── pages/                  # 21 paginas
│   ├── auth/               # Login, Register, ForgotPassword
│   ├── dashboard/          # DashboardPage
│   ├── users/              # CRUD pages
│   ├── companies/          # CRUD pages
│   ├── partners/           # CRUD pages
│   └── tenants/            # CRUD pages
│
├── services/
│   └── api/                # Axios instance, interceptors
│
└── shared/
    ├── components/         # 23 componentes (atoms, molecules, organisms)
    ├── hooks/              # useDebounce, useLocalStorage, useMediaQuery
    ├── stores/             # 4 Zustand stores
    ├── types/              # Tipos compartidos
    └── utils/              # Formatters, cn()

1.3 Database - DDL Files

database/ddl/
├── 00-prerequisites.sql     # Extensions, functions base
├── 01-auth.sql              # Schema auth (tenants, users, roles)
├── 01-auth-extensions.sql   # OAuth, MFA, API Keys
├── 02-core.sql              # Schema core (partners, catalogs)
├── 03-analytics.sql         # Schema analytics (analytic accounts)
├── 04-financial.sql         # Schema financial (accounts, invoices)
├── 05-inventory.sql         # Schema inventory (products, stock)
├── 05-inventory-extensions.sql
├── 06-purchase.sql          # Schema purchase
├── 07-sales.sql             # Schema sales
├── 08-projects.sql          # Schema projects
├── 09-system.sql            # Schema system (notifications, activities)
├── 10-billing.sql           # Schema billing (SaaS)
├── 11-crm.sql               # Schema crm (leads, opportunities)
└── 12-hr.sql                # Schema hr (employees, contracts) ✅ EXISTE

NOTA IMPORTANTE: El HR Schema (12-hr.sql) YA EXISTE. El gap GAP-002 puede no ser valido.


2. DEPENDENCIAS ENTRE MODULOS

2.1 Backend - Grafo de Dependencias

                    ┌─────────────┐
                    │   config/   │
                    │  database   │
                    │   redis     │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │   shared/   │
                    │  services   │
                    │ middleware  │
                    └──────┬──────┘
                           │
        ┌──────────────────┼──────────────────┐
        │                  │                  │
        ▼                  ▼                  ▼
   ┌─────────┐        ┌─────────┐        ┌─────────┐
   │  auth   │◄───────│  users  │        │ tenants │
   │ MGN-001 │        │ MGN-002 │        │ MGN-004 │
   └────┬────┘        └────┬────┘        └────┬────┘
        │                  │                  │
        │                  │                  │
        └──────────────────┼──────────────────┘
                           │
                    ┌──────▼──────┐
                    │   roles     │
                    │   MGN-003   │
                    └──────┬──────┘
                           │
        ┌──────────────────┼──────────────────┐
        │                  │                  │
        ▼                  ▼                  ▼
   ┌─────────┐        ┌─────────┐        ┌─────────┐
   │partners │        │ core/   │        │catalogs │
   │ (core)  │        │countries│        │ MGN-005 │
   └────┬────┘        └─────────┘        └────┬────┘
        │                                     │
        └──────────────────┬──────────────────┘
                           │
                    ┌──────▼──────┐
                    │ financial   │
                    │  MGN-010    │
                    └──────┬──────┘
                           │
        ┌──────────────────┼──────────────────┐
        │                  │                  │
        ▼                  ▼                  ▼
   ┌─────────┐        ┌─────────┐        ┌─────────┐
   │inventory│        │ purchase│        │  sales  │
   │ MGN-011 │        │ MGN-012 │        │ MGN-013 │
   └─────────┘        └─────────┘        └─────────┘

2.2 Dependencias Criticas por Modulo

Modulo Depende de Usado por
config/ - Todos los modulos
shared/ config/ Todos los modulos
auth shared/, config/ users, roles, tenants, todos
users auth, shared/ roles, tenants
roles auth, users Todos (permisos)
tenants auth Todos (multi-tenancy)
partners auth, tenants financial, sales, purchase
catalogs auth, tenants inventory, financial, sales, purchase
financial auth, tenants, partners, catalogs sales, purchase
inventory auth, tenants, catalogs sales, purchase
sales auth, tenants, partners, catalogs, financial, inventory -
purchase auth, tenants, partners, catalogs, financial, inventory -

3. DEPENDENCIAS FRONTEND

3.1 Features Existentes vs Nuevas

EXISTENTES (reutilizables):
├── features/users/       → Base para features/catalogs/
├── features/companies/   → Patron similar
├── features/partners/    → Reutilizar estructura
└── features/tenants/     → Reutilizar estructura

NUEVAS A CREAR:
├── features/catalogs/    → Copiar estructura de features/users/
└── features/settings/    → Copiar estructura de features/tenants/

3.2 Componentes Compartidos Reutilizables

Componente Usado por Features Existentes Requerido por Features Nuevas
DataTable users, companies, partners, tenants catalogs, settings
Modal users, companies catalogs, settings
Form components Todos catalogs, settings
Badge users, partners, tenants catalogs
Select Todos catalogs (CurrencySelect, CountrySelect)
Pagination Todos catalogs, settings

3.3 Stores Existentes vs Nuevos

EXISTENTES:
  - useAuthStore        # Autenticacion
  - useCompanyStore     # Empresa actual
  - useNotificationStore # Notificaciones toast
  - useUIStore          # Tema, sidebar

NUEVOS A CREAR:
  - useCurrencyStore    # Moneda actual
  - useCatalogCacheStore # Cache de catalogos
  - useSettingsStore    # Configuraciones
  - useFeatureFlagsStore # Feature flags

4. DEPENDENCIAS DATABASE

4.1 Orden de Ejecucion DDL

El orden de archivos DDL es critico por las FK:

1. 00-prerequisites.sql  # Extensions, funciones base
         │
         ▼
2. 01-auth.sql           # Tenants, users, roles (base de todo)
         │
         ▼
3. 01-auth-extensions.sql # OAuth, MFA (extiende auth)
         │
         ▼
4. 02-core.sql           # Partners, countries, currencies
         │
         ▼
5. 03-analytics.sql      # Analytic accounts (referencia core)
         │
         ▼
6. 04-financial.sql      # Accounts, invoices (referencia core, auth)
         │
         ▼
7. 05-inventory.sql      # Products, stock (referencia core, auth)
         │
         ▼
8. 06-purchase.sql       # Purchase orders (ref: financial, inventory)
         │
         ▼
9. 07-sales.sql          # Sales orders (ref: financial, inventory)
         │
         ▼
10. 08-projects.sql      # Projects, tasks (ref: hr)
         │
         ▼
11. 09-system.sql        # Notifications, activities
         │
         ▼
12. 10-billing.sql       # SaaS billing
         │
         ▼
13. 11-crm.sql           # CRM (ref: partners, sales)
         │
         ▼
14. 12-hr.sql            # HR (ref: auth.users)

4.2 FK Cross-Schema

Origen FK a Schema Tabla Destino
core.partners auth auth.tenants
financial.invoices auth auth.users (created_by)
financial.invoices core core.partners
inventory.products core core.product_categories
purchase.orders core core.partners (vendor)
sales.orders core core.partners (customer)
hr.employees auth auth.users
projects.tasks hr hr.employees (assignee)

5. ARCHIVOS A MODIFICAR/CREAR POR SPRINT

5.1 Sprint 1 - Database + Tests Setup

Database:

VERIFICAR (ya existe):
- database/ddl/12-hr.sql       # Verificar contenido

CREAR:
- database/tests/rls-validation.sql
- database/tests/tenant-isolation.sql
- database/seeds/01-countries.sql
- database/seeds/02-currencies.sql
- database/seeds/03-states.sql
- database/seeds/04-uom.sql

MODIFICAR:
- database/ddl/09-system.sql   # Agregar track_field_changes()

Backend:

CREAR:
- backend/jest.config.js
- backend/tests/setup.ts
- backend/tests/factories/user.factory.ts
- backend/tests/factories/tenant.factory.ts
- backend/src/modules/auth/__tests__/auth.service.spec.ts
- backend/src/modules/auth/__tests__/auth.controller.spec.ts
- backend/src/modules/auth/__tests__/auth.integration.spec.ts

MODIFICAR:
- backend/package.json  # Agregar jest, supertest
- backend/tsconfig.json # Agregar paths para tests

Frontend:

CREAR:
- frontend/src/features/catalogs/
  ├── api/catalogs.api.ts
  ├── components/
  ├── hooks/
  ├── types/
  └── index.ts
- frontend/src/pages/catalogs/countries/

5.2 Sprint 2 - Tests + Frontend Catalogs

Backend:

CREAR:
- backend/src/modules/users/__tests__/
- backend/src/modules/roles/__tests__/
- backend/src/modules/tenants/__tests__/
- backend/src/modules/auth/services/permission-cache.service.ts

MODIFICAR:
- backend/src/config/redis.ts  # Ya existe, verificar
- backend/src/modules/auth/index.ts  # Exportar permission-cache

Frontend:

CREAR:
- frontend/src/pages/catalogs/currencies/
- frontend/src/pages/catalogs/uom/
- frontend/src/pages/catalogs/categories/
- frontend/src/shared/stores/useCurrencyStore.ts
- frontend/src/shared/stores/useCatalogCacheStore.ts

MODIFICAR:
- frontend/src/app/router/routes.tsx  # Agregar rutas catalogs

5.3 Sprint 3 - OAuth + Settings

Backend:

CREAR:
- backend/src/modules/auth/providers/google.provider.ts
- backend/src/modules/auth/providers/microsoft.provider.ts
- backend/src/modules/financial/__tests__/
- backend/src/modules/inventory/__tests__/

MODIFICAR:
- backend/src/modules/auth/auth.routes.ts  # Agregar rutas OAuth
- backend/src/modules/auth/auth.controller.ts  # Agregar endpoints OAuth

Frontend:

CREAR:
- frontend/src/features/settings/
  ├── api/
  ├── components/
  ├── hooks/
  ├── types/
  └── index.ts
- frontend/src/pages/settings/SystemSettingsPage.tsx

MODIFICAR:
- frontend/src/app/router/routes.tsx  # Agregar rutas settings

5.4 Sprint 4 - 2FA + Settings Completion

Backend:

CREAR:
- backend/src/modules/auth/services/mfa.service.ts
- backend/src/modules/auth/services/email-verification.service.ts
- backend/src/shared/services/email.service.ts

MODIFICAR:
- backend/src/modules/auth/auth.routes.ts  # Agregar rutas MFA
- backend/src/modules/auth/auth.controller.ts  # Agregar endpoints MFA

Frontend:

CREAR:
- frontend/src/pages/settings/TenantSettingsPage.tsx
- frontend/src/pages/settings/UserPreferencesPage.tsx
- frontend/src/pages/settings/FeatureFlagsPage.tsx
- frontend/src/shared/stores/useSettingsStore.ts
- frontend/src/shared/stores/useFeatureFlagsStore.ts
- frontend/src/shared/components/organisms/ThemeSelector.tsx

MODIFICAR:
- frontend/src/shared/stores/useUIStore.ts  # Integrar ThemeSelector

6. IMPACTO DE CAMBIOS

6.1 Archivos de Alto Impacto (Modificar con cuidado)

Archivo Impacto Razon
backend/src/app.ts ALTO Entry point, routing
backend/src/modules/auth/entities/*.ts ALTO Entidades compartidas
frontend/src/app/router/routes.tsx ALTO Routing global
frontend/src/shared/stores/useAuthStore.ts ALTO Estado de autenticacion
database/ddl/01-auth.sql ALTO Schema base

6.2 Archivos de Bajo Riesgo (Safe to modify)

Archivo Impacto Razon
backend/src/modules//tests/.ts BAJO Solo tests
frontend/src/features/catalogs/* BAJO Nuevo feature
frontend/src/features/settings/* BAJO Nuevo feature
database/seeds/*.sql BAJO Datos iniciales

7. RESUMEN DE DEPENDENCIAS

7.1 Dependencias Externas (npm packages)

Backend - Ya instalados:

  • express, typescript, typeorm, pg
  • jsonwebtoken, bcryptjs
  • zod, class-validator
  • winston

Backend - A instalar:

  • jest, supertest, ts-jest (tests)
  • ioredis (Redis client - verificar si ya existe)
  • otplib (TOTP for 2FA)
  • nodemailer (email)
  • passport, passport-google-oauth20, passport-microsoft (OAuth)

Frontend - Ya instalados:

  • react, react-dom, react-router-dom
  • zustand, axios
  • react-hook-form, zod
  • tailwindcss, lucide-react

Frontend - A instalar:

  • Ninguno adicional requerido

7.2 Variables de Entorno Requeridas

# Existentes (verificar)
DATABASE_URL=
JWT_SECRET=
REDIS_URL=

# Nuevas a agregar
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
SMTP_HOST=
SMTP_PORT=
SMTP_USER=
SMTP_PASS=

8. CONCLUSIONES

8.1 Hallazgos Importantes

  1. HR Schema YA EXISTE (12-hr.sql) - El gap GAP-002 puede no ser valido
  2. Redis config YA EXISTE (config/redis.ts) - Facilita permission cache
  3. Estructura FSD consistente - Facilita crear nuevos features
  4. Dependencias bien definidas - Orden de implementacion claro

8.2 Recomendaciones para Ejecucion

  1. Verificar 12-hr.sql antes de crear HR Schema
  2. Verificar redis.ts antes de implementar permission cache
  3. Seguir estructura existente para nuevos features
  4. Respetar orden de DDL en cualquier cambio de base de datos

8.3 Siguiente Fase

Proceder con FASE 5: Refinamiento del Plan incorporando estos hallazgos.


Documento generado por: ORQUESTADOR (Claude Code Opus 4.5) Sistema: SIMCO + CAPVED Fase actual: A (Analisis de Dependencias) - COMPLETADA Proxima fase: FASE 5 - Refinamiento del Plan