Versión: 1.0.0
Fecha: 2026-01-12
Proyecto: Sistema de Asistente Conversacional con RAG y Acceso a Datos
Assistant/
├── RCE/ → Componentes Core (Repositorio de Conocimiento)
│ ├── Core/ → Validación RCE y gestión de conceptos
│ ├── DocumentProcessing/ → Extractores de documentos (ASPX/Word)
│ ├── Chunking/ → Generación de chunks para embeddings
│ └── Configuration/ → Configuración centralizada
│ ├── AssistantConstants.vb → ✅ Constantes del sistema
│ └── assistant.config.json → ✅ Configuración principal
│
├── RAG/ → Sistema RAG (Retrieval-Augmented Generation)
│ ├── Ingestion/ → Motores de ingesta de documentos
│ ├── Retrieval/ → Búsqueda vectorial y recuperación
│ └── ExternalServices/ → Clientes APIs (Voyage, Qdrant, Claude)
│ ├── VoyageClient.vb → ✅ Cliente Voyage AI (embeddings)
│ ├── QdrantClient.vb → ✅ Cliente Qdrant (vector DB)
│ └── ClaudeClient.vb → ✅ Cliente Claude API (LLM)
│
├── DataAccess/ → Acceso seguro a datos operativos
│ ├── QueryCatalog/ → Gestión de catálogo de queries
│ │ └── QueryCatalogManager.vb → ✅ Gestor del catálogo
│ ├── Executors/ → Ejecución segura de queries
│ │ └── SafeQueryExecutor.vb → ✅ Ejecutor con tenant isolation
│ └── Catalogs/ → ✅ JSONs de queries predefinidas
│ ├── ventas_queries.json → Queries de Ventas
│ ├── compras_queries.json → Queries de Compras
│ ├── rrhh_queries.json → Queries de RRHH
│ ├── inventario_queries.json → Queries de Inventario
│ └── finanzas_queries.json → Queries de Finanzas
│
├── Conversation/ → Lógica conversacional
│ ├── IntentClassifier.vb → ✅ Clasificador de intención
│ └── ConversationManager.vb → ✅ Gestor de conversaciones
│
├── UI/ → Interfaz de usuario (futuro)
├── Admin/ → Herramientas de administración
├── Logs/ → Logs del sistema
│ ├── ingestion/ → Logs de ingesta
│ ├── queries/ → Logs de queries
│ └── errors/ → Logs de errores
├── Data/ → Datos estáticos
└── Scripts/ → Scripts Python/SQL auxiliares
- AssistantConstants.vb: Constantes globales del sistema
- assistant.config.json: Configuración centralizada (APIs, colecciones, features)
Archivos stub básicos creados para empezar el desarrollo:
- RCE/Core/RCEValidator.vb
- RCE/Core/ConceptsCatalog.vb
- RCE/DocumentProcessing/IDocumentExtractor.vb
- RCE/DocumentProcessing/DocumentStructure.vb
- RAG/ExternalServices/VoyageClient.vb
- RAG/ExternalServices/QdrantClient.vb
- RAG/ExternalServices/ClaudeClient.vb
- DataAccess/QueryCatalog/QueryCatalogManager.vb
- DataAccess/Executors/SafeQueryExecutor.vb
- Conversation/IntentClassifier.vb
- Conversation/ConversationManager.vb
Catálogos de ejemplo con queries predefinidas:
- ventas_queries.json (7 queries de ejemplo)
- compras_queries.json
- rrhh_queries.json
- inventario_queries.json
- finanzas_queries.json
Extrae este ZIP en la raíz de tu proyecto ASIGH.WEB.
Edita Assistant/RCE/Configuration/assistant.config.json y añade tus API keys:
{
"apis": {
"voyage": {
"api_key": "TU_VOYAGE_API_KEY_AQUI"
},
"qdrant": {
"endpoint": "https://TU_CLUSTER.qdrant.io:6333",
"api_key": "TU_QDRANT_API_KEY_AQUI"
},
"claude": {
"api_key": "TU_CLAUDE_API_KEY_AQUI"
}
}
}- Abre tu proyecto ASIGH.WEB en Visual Studio
- Añade los archivos .vb a tu proyecto
- Configura los Namespaces:
ASIGH_IW.RCE.CoreASIGH_IW.RCE.ConfigurationASIGH_IW.RAG.ExternalServicesASIGH_IW.DataAccess.QueryCatalogASIGH_IW.DataAccess.ExecutorsASIGH_IW.Conversation
Install-Package Newtonsoft.Json
Install-Package System.Net.Http
En Global.asax.vb:
Sub Application_Start(sender As Object, e As EventArgs)
' Cargar configuración del asistente
Dim configPath = Server.MapPath("~/Assistant/RCE/Configuration/assistant.config.json")
AssistantConfig.Load(configPath)
End SubImports ASIGH_IW.Core
If conceptType = AssistantConstants.CONCEPT_TYPE_TEMA Then
' Procesar tema
End IfDim collection = AssistantConstants.COLLECTION_AYUDAS
Dim results = qdrantClient.Search(collection, vector, 5)Logger.Log(AssistantConstants.LOG_LEVEL_INFO, "Proceso completado")Incluido en este ZIP:
- Estructura de carpetas completa
- Archivos de constantes
- Configuración centralizada
- Stubs básicos
A desarrollar:
- AspxExtractor completo
- AspxIngestionEngine
- Integración con Voyage AI
- Integración con Qdrant
A desarrollar:
- WordExtractor
- WordIngestionEngine
- Script Python extract_word.py
A desarrollar:
- SafeQueryExecutor completo
- IntentClassifier completo
- ConversationManager completo
- Interfaz de usuario (ChatControl.ascx)
Las carpetas vacías contienen archivos .gitkeep para mantener la estructura en Git.
Todos los archivos usan el namespace ASIGH_IW.* para mantener consistencia con tu proyecto.
Los archivos stub contienen Throw New NotImplementedException() como placeholder. Reemplaza esto con la lógica real durante el desarrollo.
El archivo assistant.config.json contiene valores de ejemplo. NO comitees este archivo con API keys reales a control de versiones.
- Nunca comitees
assistant.config.jsoncon API keys reales - Usa variables de entorno o Azure Key Vault en producción
- Todas las queries SQL deben incluir
ClienteId = @ClienteId - SafeQueryExecutor validará esto automáticamente
- Los logs NO deben contener información sensible
- Usa niveles apropiados (DEBUG solo en desarrollo)
Para dudas sobre la estructura o implementación, consulta:
ARQUITECTURA-UNIFICADA.md(documento de diseño completo)ESTRUCTURA-CARPETAS-ASIGH-WEB.md(explicación detallada)
Este código es parte del proyecto ASIGH.WEB
© 2026 Advanced Business Consulting Systems SL
¡Listo para empezar el desarrollo! 🚀