Source: erp-core (checksum: 39a6e229055a21158b63cc4eb4dd232f) Priority: P0 - CRITICAL divergence resolution Context: TASK-2026-01-25-SISTEMA-REUTILIZACION Before: Diverged version with project-specific adaptations After: Synced with canonical Changes: - Complete ai module synchronized from erp-core - 24 TypeScript files updated - Unified role-based AI configuration - Consistent AI behavior across all ERP projects Note: Project-specific role adaptations (if needed) can be re-applied as documented extensions after this sync. Benefits: - Single source of truth for AI functionality - Reduced maintenance burden - Token savings from code reuse - Consistent behavior baseline Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
AI Module
Descripcion
Modulo de integracion con modelos de Inteligencia Artificial. Proporciona capacidades de chat conversacional, completions, embeddings y gestion de bases de conocimiento. Soporta multiples proveedores (OpenAI, Anthropic, Google, Azure) a traves de OpenRouter, con control de acceso basado en roles y gestion de cuotas por tenant.
Entidades
| Entidad | Schema | Descripcion |
|---|---|---|
AIModel |
ai.models | Catalogo de modelos de IA disponibles (GPT-4, Claude, etc.) con configuracion de costos y capacidades |
AIPrompt |
ai.prompts | Templates de prompts versionados con variables y configuracion de modelo |
AIConversation |
ai.conversations | Conversaciones de chat con historial, contexto y estadisticas |
AIMessage |
ai.messages | Mensajes individuales dentro de una conversacion |
AICompletion |
ai.completions | Registros de completions individuales (no conversacionales) |
AIEmbedding |
ai.embeddings | Vectores de embeddings para busqueda semantica |
AIKnowledgeBase |
ai.knowledge_base | Articulos de conocimiento con embeddings para RAG |
AIUsageLog |
ai.usage_logs | Registro detallado de uso por request |
AITenantQuota |
ai.tenant_quotas | Cuotas mensuales de tokens, requests y costos por tenant |
Servicios
| Servicio | Responsabilidades |
|---|---|
AIService |
Servicio base: CRUD de modelos, prompts, conversaciones, mensajes; registro de uso; gestion de cuotas |
RoleBasedAIService |
Extension con control de acceso basado en roles ERP; integracion con OpenRouter; ejecucion de tools |
Endpoints
| Method | Path | Descripcion |
|---|---|---|
| GET | /models |
Lista todos los modelos activos |
| GET | /models/:id |
Obtiene modelo por ID |
| GET | /models/code/:code |
Obtiene modelo por codigo |
| GET | /models/provider/:provider |
Lista modelos por proveedor |
| GET | /models/type/:type |
Lista modelos por tipo (chat/embedding/etc) |
| GET | /prompts |
Lista prompts del tenant |
| GET | /prompts/:id |
Obtiene prompt por ID |
| GET | /prompts/code/:code |
Obtiene prompt por codigo |
| POST | /prompts |
Crea nuevo prompt |
| PATCH | /prompts/:id |
Actualiza prompt existente |
| GET | /conversations |
Lista conversaciones del tenant |
| GET | /conversations/:id |
Obtiene conversacion con mensajes |
| GET | /conversations/user/:userId |
Lista conversaciones de usuario |
| POST | /conversations |
Crea nueva conversacion |
| PATCH | /conversations/:id |
Actualiza conversacion |
| POST | /conversations/:id/archive |
Archiva conversacion |
| GET | /conversations/:conversationId/messages |
Lista mensajes de conversacion |
| POST | /conversations/:conversationId/messages |
Agrega mensaje a conversacion |
| GET | /conversations/:conversationId/tokens |
Obtiene conteo de tokens |
| POST | /usage |
Registra uso de IA |
| GET | /usage/stats |
Obtiene estadisticas de uso |
| GET | /quotas |
Obtiene cuota del tenant |
| PATCH | /quotas |
Actualiza cuota del tenant |
| GET | /quotas/check |
Verifica disponibilidad de cuota |
Dependencias
common- Utilidades compartidasauth- Autenticacion y tenant context- OpenRouter API (proveedor externo)
Configuracion
| Variable | Descripcion | Requerida |
|---|---|---|
OPENROUTER_API_KEY |
API key para OpenRouter | Si |
APP_URL |
URL de la aplicacion (para HTTP-Referer) | No |
Roles ERP Soportados
El RoleBasedAIService soporta prompts y accesos diferenciados por rol:
admin- Acceso completosupervisor- Acceso a reportes y analisisoperator- Acceso a operaciones basicascustomer- Acceso limitado a consultas