depurada la conexion

This commit is contained in:
2025-06-11 23:10:00 -06:00
parent 2dc118dc19
commit 7f4bfff8cb
8 changed files with 214 additions and 69 deletions

3
.gitignore vendored
View File

@@ -25,8 +25,7 @@ coverage/
.DS_Store .DS_Store
# Editor directories and files # Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea/ .idea/
*.suo *.suo
*.ntvs* *.ntvs*

5
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"task.allowAutomaticTasks": "on",
"task.autoDetect": "on",
"task.quickOpen.showAll": true
}

60
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,60 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "planilla-api",
"type": "shell",
"command": "make api",
"problemMatcher": [],
"presentation": {
"panel": "dedicated",
"reveal": "always"
}
},
{
"label": "planilla-mcp",
"type": "shell",
"command": "make mcp",
"problemMatcher": [],
"presentation": {
"panel": "dedicated",
"reveal": "always"
}
},
{
"label": "planilla-ui",
"type": "shell",
"command": "make UI",
"problemMatcher": [],
"presentation": {
"panel": "dedicated",
"reveal": "always"
}
},
{
"label": "planilla-agent",
"type": "shell",
"command": "make agent",
"problemMatcher": [],
"presentation": {
"panel": "dedicated",
"reveal": "always"
}
},
{
"label": "planilla-dev",
"dependsOn": [
"planilla-api",
"planilla-mcp",
"planilla-ui",
"planilla-agent"
],
"dependsOrder": "parallel",
"problemMatcher": [],
"presentation": {
"reveal": "always"
}
}
]
}

View File

@@ -57,3 +57,19 @@ api:
# If no name is provided, it defaults to "new_migration". # If no name is provided, it defaults to "new_migration".
prisma-migrate-dev: prisma-migrate-dev:
cd api && npx prisma migrate deploy cd api && npx prisma migrate deploy
# --- Git helper para cambiar de rama por nombre directo ---
.PHONY: git-branch
git-branch:
@if not "$(BRANCH)"=="" ( \
git fetch github && \
git checkout $(BRANCH) \
) else ( \
echo USO: make git-branch BRANCH=nombre/rama && exit /b 1 \
)

View File

@@ -1,6 +1,5 @@
C:\no guardar\nucleo V3\planilla\agent C:\no guardar\nucleo V3\planilla\agent
C:\no guardar\nucleo V3\planilla\api C:\no guardar\nucleo V3\planilla\api
C:\no guardar\nucleo V3\planilla\core
C:\no guardar\nucleo V3\planilla\dev C:\no guardar\nucleo V3\planilla\dev
C:\no guardar\nucleo V3\planilla\mcp C:\no guardar\nucleo V3\planilla\mcp
C:\no guardar\nucleo V3\planilla\ui C:\no guardar\nucleo V3\planilla\ui
@@ -10,30 +9,28 @@ C:\no guardar\nucleo V3\planilla\docker-compose.yml
C:\no guardar\nucleo V3\planilla\estructura.txt C:\no guardar\nucleo V3\planilla\estructura.txt
C:\no guardar\nucleo V3\planilla\Makefile C:\no guardar\nucleo V3\planilla\Makefile
C:\no guardar\nucleo V3\planilla\README.md C:\no guardar\nucleo V3\planilla\README.md
C:\no guardar\nucleo V3\planilla\agent\example webhooksEvents C:\no guardar\nucleo V3\planilla\agent\src
C:\no guardar\nucleo V3\planilla\agent\processMessage C:\no guardar\nucleo V3\planilla\agent\.dockerignore
C:\no guardar\nucleo V3\planilla\agent\respuestas C:\no guardar\nucleo V3\planilla\agent\.env
C:\no guardar\nucleo V3\planilla\agent\utils
C:\no guardar\nucleo V3\planilla\agent\config.js
C:\no guardar\nucleo V3\planilla\agent\Dockerfile C:\no guardar\nucleo V3\planilla\agent\Dockerfile
C:\no guardar\nucleo V3\planilla\agent\gemini.js C:\no guardar\nucleo V3\planilla\agent\package-lock.json
C:\no guardar\nucleo V3\planilla\agent\handlers.js
C:\no guardar\nucleo V3\planilla\agent\index.js
C:\no guardar\nucleo V3\planilla\agent\logger.js
C:\no guardar\nucleo V3\planilla\agent\package.json C:\no guardar\nucleo V3\planilla\agent\package.json
C:\no guardar\nucleo V3\planilla\agent\routes.js C:\no guardar\nucleo V3\planilla\agent\tsconfig.json
C:\no guardar\nucleo V3\planilla\agent\whatsapp.js C:\no guardar\nucleo V3\planilla\agent\src\cognition
C:\no guardar\nucleo V3\planilla\agent\example webhooksEvents\exampleOnAnyMessage.txt C:\no guardar\nucleo V3\planilla\agent\src\llm
C:\no guardar\nucleo V3\planilla\agent\processMessage\processVideoMessage.js C:\no guardar\nucleo V3\planilla\agent\src\index.ts
C:\no guardar\nucleo V3\planilla\agent\respuestas\respuestaBrave.js C:\no guardar\nucleo V3\planilla\agent\src\systemPrompt copy.ts
C:\no guardar\nucleo V3\planilla\agent\respuestas\respuestaMCP.js C:\no guardar\nucleo V3\planilla\agent\src\systemPrompt.ts
C:\no guardar\nucleo V3\planilla\agent\respuestas\respuestaNormal.js C:\no guardar\nucleo V3\planilla\agent\src\types.ts
C:\no guardar\nucleo V3\planilla\agent\utils\decryptMediaContent.js C:\no guardar\nucleo V3\planilla\agent\src\cognition\executeTools.ts
C:\no guardar\nucleo V3\planilla\agent\utils\processMessage.js C:\no guardar\nucleo V3\planilla\agent\src\cognition\generatePlan.ts
C:\no guardar\nucleo V3\planilla\agent\utils\saveMedia.js C:\no guardar\nucleo V3\planilla\agent\src\cognition\index.ts
C:\no guardar\nucleo V3\planilla\agent\src\cognition\normalResponse.ts
C:\no guardar\nucleo V3\planilla\agent\src\llm\gemini.ts
C:\no guardar\nucleo V3\planilla\api\dev C:\no guardar\nucleo V3\planilla\api\dev
C:\no guardar\nucleo V3\planilla\api\prisma C:\no guardar\nucleo V3\planilla\api\prisma
C:\no guardar\nucleo V3\planilla\api\routes C:\no guardar\nucleo V3\planilla\api\routes
C:\no guardar\nucleo V3\planilla\api\sse
C:\no guardar\nucleo V3\planilla\api\.env C:\no guardar\nucleo V3\planilla\api\.env
C:\no guardar\nucleo V3\planilla\api\.env.example C:\no guardar\nucleo V3\planilla\api\.env.example
C:\no guardar\nucleo V3\planilla\api\Dockerfile C:\no guardar\nucleo V3\planilla\api\Dockerfile
@@ -58,6 +55,7 @@ C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\index.d.ts
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\index.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\index.js
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\package.json C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\package.json
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\query_engine-windows.dll.node C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\query_engine-windows.dll.node
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\query_engine-windows.dll.node.tmp26660
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\schema.prisma C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\schema.prisma
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.d.ts C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.d.ts
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.js
@@ -70,31 +68,62 @@ C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\library.js
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\react-native.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\react-native.js
C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\wasm.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\wasm.js
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250530222717_init
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250609211800_notify_others_sse
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\migration_lock.toml C:\no guardar\nucleo V3\planilla\api\prisma\migrations\migration_lock.toml
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init\migration.sql C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init\migration.sql
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250530222717_init\migration.sql
C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250609211800_notify_others_sse\migration.sql
C:\no guardar\nucleo V3\planilla\api\routes\asistencias
C:\no guardar\nucleo V3\planilla\api\routes\empleados
C:\no guardar\nucleo V3\planilla\api\routes\planillas
C:\no guardar\nucleo V3\planilla\api\routes\tareas
C:\no guardar\nucleo V3\planilla\api\routes\clientesRandom.js C:\no guardar\nucleo V3\planilla\api\routes\clientesRandom.js
C:\no guardar\nucleo V3\planilla\api\routes\asistencias\asistencias.js
C:\no guardar\nucleo V3\planilla\api\routes\empleados\empleados.js
C:\no guardar\nucleo V3\planilla\api\routes\planillas\planillas.js
C:\no guardar\nucleo V3\planilla\api\routes\tareas\tareas.js
C:\no guardar\nucleo V3\planilla\api\sse\index.js
C:\no guardar\nucleo V3\planilla\dev\scripts C:\no guardar\nucleo V3\planilla\dev\scripts
C:\no guardar\nucleo V3\planilla\dev\scripts\estructura.ps1 C:\no guardar\nucleo V3\planilla\dev\scripts\estructura.ps1
C:\no guardar\nucleo V3\planilla\mcp\lib
C:\no guardar\nucleo V3\planilla\mcp\modules
C:\no guardar\nucleo V3\planilla\mcp\createServer.js
C:\no guardar\nucleo V3\planilla\mcp\Dockerfile C:\no guardar\nucleo V3\planilla\mcp\Dockerfile
C:\no guardar\nucleo V3\planilla\mcp\index.js C:\no guardar\nucleo V3\planilla\mcp\index.js
C:\no guardar\nucleo V3\planilla\mcp\package-lock.json C:\no guardar\nucleo V3\planilla\mcp\package-lock.json
C:\no guardar\nucleo V3\planilla\mcp\package.json C:\no guardar\nucleo V3\planilla\mcp\package.json
C:\no guardar\nucleo V3\planilla\mcp\README.md
C:\no guardar\nucleo V3\planilla\mcp\lib\api.js
C:\no guardar\nucleo V3\planilla\mcp\modules\asistencias.js
C:\no guardar\nucleo V3\planilla\mcp\modules\empleados.js
C:\no guardar\nucleo V3\planilla\mcp\modules\planillas.js
C:\no guardar\nucleo V3\planilla\mcp\modules\tareas.js
C:\no guardar\nucleo V3\planilla\ui\public C:\no guardar\nucleo V3\planilla\ui\public
C:\no guardar\nucleo V3\planilla\ui\src C:\no guardar\nucleo V3\planilla\ui\src
C:\no guardar\nucleo V3\planilla\ui\.env
C:\no guardar\nucleo V3\planilla\ui\Dockerfile C:\no guardar\nucleo V3\planilla\ui\Dockerfile
C:\no guardar\nucleo V3\planilla\ui\index.html C:\no guardar\nucleo V3\planilla\ui\index.html
C:\no guardar\nucleo V3\planilla\ui\nginx.conf
C:\no guardar\nucleo V3\planilla\ui\package-lock.json C:\no guardar\nucleo V3\planilla\ui\package-lock.json
C:\no guardar\nucleo V3\planilla\ui\package.json C:\no guardar\nucleo V3\planilla\ui\package.json
C:\no guardar\nucleo V3\planilla\ui\postcss.config.js
C:\no guardar\nucleo V3\planilla\ui\README.md C:\no guardar\nucleo V3\planilla\ui\README.md
C:\no guardar\nucleo V3\planilla\ui\README.ms
C:\no guardar\nucleo V3\planilla\ui\runtime-env.sh
C:\no guardar\nucleo V3\planilla\ui\tailwind.config.js
C:\no guardar\nucleo V3\planilla\ui\vite.config.js C:\no guardar\nucleo V3\planilla\ui\vite.config.js
C:\no guardar\nucleo V3\planilla\ui\public\vite.svg C:\no guardar\nucleo V3\planilla\ui\public\vite.svg
C:\no guardar\nucleo V3\planilla\ui\src\assets C:\no guardar\nucleo V3\planilla\ui\src\assets
C:\no guardar\nucleo V3\planilla\ui\src\components C:\no guardar\nucleo V3\planilla\ui\src\components
C:\no guardar\nucleo V3\planilla\ui\src\constants
C:\no guardar\nucleo V3\planilla\ui\src\layouts C:\no guardar\nucleo V3\planilla\ui\src\layouts
C:\no guardar\nucleo V3\planilla\ui\src\router C:\no guardar\nucleo V3\planilla\ui\src\router
C:\no guardar\nucleo V3\planilla\ui\src\stores C:\no guardar\nucleo V3\planilla\ui\src\stores
C:\no guardar\nucleo V3\planilla\ui\src\tests C:\no guardar\nucleo V3\planilla\ui\src\tests
C:\no guardar\nucleo V3\planilla\ui\src\utils
C:\no guardar\nucleo V3\planilla\ui\src\views C:\no guardar\nucleo V3\planilla\ui\src\views
C:\no guardar\nucleo V3\planilla\ui\src\apiClient.js
C:\no guardar\nucleo V3\planilla\ui\src\App.vue C:\no guardar\nucleo V3\planilla\ui\src\App.vue
C:\no guardar\nucleo V3\planilla\ui\src\main.js C:\no guardar\nucleo V3\planilla\ui\src\main.js
C:\no guardar\nucleo V3\planilla\ui\src\style.css C:\no guardar\nucleo V3\planilla\ui\src\style.css
@@ -103,40 +132,67 @@ C:\no guardar\nucleo V3\planilla\ui\src\components\asistencias
C:\no guardar\nucleo V3\planilla\ui\src\components\chat C:\no guardar\nucleo V3\planilla\ui\src\components\chat
C:\no guardar\nucleo V3\planilla\ui\src\components\empleados C:\no guardar\nucleo V3\planilla\ui\src\components\empleados
C:\no guardar\nucleo V3\planilla\ui\src\components\planillas C:\no guardar\nucleo V3\planilla\ui\src\components\planillas
C:\no guardar\nucleo V3\planilla\ui\src\components\realtime
C:\no guardar\nucleo V3\planilla\ui\src\components\tareas C:\no guardar\nucleo V3\planilla\ui\src\components\tareas
C:\no guardar\nucleo V3\planilla\ui\src\components\ui C:\no guardar\nucleo V3\planilla\ui\src\components\ui
C:\no guardar\nucleo V3\planilla\ui\src\components\HelloWorld.vue C:\no guardar\nucleo V3\planilla\ui\src\components\HelloWorld.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\asistencias\cardAsistencia.vue C:\no guardar\nucleo V3\planilla\ui\src\components\asistencias\cardAsistencia.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\asistencias\tablaAsistencias.vue C:\no guardar\nucleo V3\planilla\ui\src\components\asistencias\tablaAsistencias.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\chat\CanvasChat.vue C:\no guardar\nucleo V3\planilla\ui\src\components\chat\CanvasChat.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\chat\FloatingChat.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\empleados\cardEmpleado.vue C:\no guardar\nucleo V3\planilla\ui\src\components\empleados\cardEmpleado.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\empleados\tablaEmpleados.vue C:\no guardar\nucleo V3\planilla\ui\src\components\empleados\tablaEmpleados.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\cardPlanilla.vue C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\cardPlanilla.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\tablaPlanillas.vue C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\tablaPlanillas.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\realtime\RealtimeEventCard.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\cardTarea.vue C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\cardTarea.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\tablaTareas.vue C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\tablaTareas.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\navBar.vue C:\no guardar\nucleo V3\planilla\ui\src\components\ui\NavBar.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\sideDrawer.vue C:\no guardar\nucleo V3\planilla\ui\src\components\ui\NucleoDataCard.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\NucleoTable.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\README.md
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\SideDrawer.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\SnackbarContainer.vue
C:\no guardar\nucleo V3\planilla\ui\src\components\ui\TopBar.vue
C:\no guardar\nucleo V3\planilla\ui\src\constants\moduleInfo.js
C:\no guardar\nucleo V3\planilla\ui\src\router\index.js C:\no guardar\nucleo V3\planilla\ui\src\router\index.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\stores\useAsistencias.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useAsistencias.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useChat.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useChat.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useEmpleados.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useEmpleados.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\usePlanillas.js C:\no guardar\nucleo V3\planilla\ui\src\stores\usePlanillas.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useRealtime.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useSnackbar.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useTareas.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useTareas.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\useUi.js
C:\no guardar\nucleo V3\planilla\ui\src\stores\__tests__\useUi.spec.js
C:\no guardar\nucleo V3\planilla\ui\src\utils\formatters.js
C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias
C:\no guardar\nucleo V3\planilla\ui\src\views\empleados C:\no guardar\nucleo V3\planilla\ui\src\views\empleados
C:\no guardar\nucleo V3\planilla\ui\src\views\planillas C:\no guardar\nucleo V3\planilla\ui\src\views\planillas
C:\no guardar\nucleo V3\planilla\ui\src\views\tareas C:\no guardar\nucleo V3\planilla\ui\src\views\tareas
C:\no guardar\nucleo V3\planilla\ui\src\views\ChatView.vue C:\no guardar\nucleo V3\planilla\ui\src\views\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\views\HomeView.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\NotFound.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\RealtimeFeedView.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\SettingsView.vue C:\no guardar\nucleo V3\planilla\ui\src\views\SettingsView.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciaForm.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciasIndex.vue C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciasIndex.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\__tests__\AsistenciasIndex.spec.js
C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\EmpleadoForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\EmpleadoForm.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\EmpleadosIndex.vue C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\EmpleadosIndex.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\empleados\__tests__\EmpleadosIndex.spec.js
C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillaForm.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillasIndex.vue C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillasIndex.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\__tests__\PlanillasIndex.spec.js
C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\__tests__
C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareaForm.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareasIndex.vue C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareasIndex.vue
C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\__tests__\TareasIndex.spec.js
C:\no guardar\nucleo V3\planilla\ui\src\views\__tests__\SettingsView.spec.js
C:\no guardar\nucleo V3\planilla\worker\cron C:\no guardar\nucleo V3\planilla\worker\cron
C:\no guardar\nucleo V3\planilla\worker\prisma C:\no guardar\nucleo V3\planilla\worker\prisma
C:\no guardar\nucleo V3\planilla\worker\.env C:\no guardar\nucleo V3\planilla\worker\.env
@@ -144,6 +200,7 @@ C:\no guardar\nucleo V3\planilla\worker\cron-worker.js
C:\no guardar\nucleo V3\planilla\worker\Dockerfile C:\no guardar\nucleo V3\planilla\worker\Dockerfile
C:\no guardar\nucleo V3\planilla\worker\package-lock.json C:\no guardar\nucleo V3\planilla\worker\package-lock.json
C:\no guardar\nucleo V3\planilla\worker\package.json C:\no guardar\nucleo V3\planilla\worker\package.json
C:\no guardar\nucleo V3\planilla\worker\sync-empleados.js
C:\no guardar\nucleo V3\planilla\worker\cron\15min C:\no guardar\nucleo V3\planilla\worker\cron\15min
C:\no guardar\nucleo V3\planilla\worker\cron\15min\hello.sh C:\no guardar\nucleo V3\planilla\worker\cron\15min\hello.sh
C:\no guardar\nucleo V3\planilla\worker\prisma\schema.prisma C:\no guardar\nucleo V3\planilla\worker\prisma\schema.prisma

View File

@@ -43,7 +43,7 @@ function handleKey (e) {
onMounted(() => { onMounted(() => {
if (!chat.items.length) { if (!chat.items.length) {
chat.add({ type: 'text', owner: 'bot', text: '¡Hola! Probá /empleados, /tareas, etc.' }) chat.add({ type: 'chat', owner: 'bot', text: '¡Hola! Probá /empleados, /tareas, etc.' })
} }
scrollBottom() scrollBottom()
}) })
@@ -58,7 +58,7 @@ watch(() => chat.items.length, scrollBottom)
<div ref="list" class="flex-1 min-h-0 overflow-auto p-6 space-y-4 custom-scroll"> <div ref="list" class="flex-1 min-h-0 overflow-auto p-6 space-y-4 custom-scroll">
<template v-for="(m,i) in chat.items" :key="i"> <template v-for="(m,i) in chat.items" :key="i">
<!-- mensaje de texto --> <!-- mensaje de texto -->
<div :class="m.owner==='user' ? 'flex justify-end' : 'flex justify-start'" v-if="m.type==='text'"> <div :class="m.owner==='user' ? 'flex justify-end' : 'flex justify-start'" v-if="m.type==='chat'">
<div <div
class="max-w-lg rounded-lg px-4 py-2 shadow break-words" class="max-w-lg rounded-lg px-4 py-2 shadow break-words"
:class="m.owner === 'user' ? '' : ''" :class="m.owner === 'user' ? '' : ''"

View File

@@ -9,6 +9,7 @@ import './style.css' // Tailwind o tus estilos globales
console.log(`VITE_API_EVENTS_URL: ${import.meta.env.VITE_API_EVENTS_URL || window?.RUNTIME_CONFIG?.VITE_API_EVENTS_URL || 'no definida'}`); console.log(`VITE_API_EVENTS_URL: ${import.meta.env.VITE_API_EVENTS_URL || window?.RUNTIME_CONFIG?.VITE_API_EVENTS_URL || 'no definida'}`);
console.log(`VITE_API_DB_URL: ${import.meta.env.VITE_API_DB_URL || window?.RUNTIME_CONFIG?.VITE_API_DB_URL || 'no definida'}`); console.log(`VITE_API_DB_URL: ${import.meta.env.VITE_API_DB_URL || window?.RUNTIME_CONFIG?.VITE_API_DB_URL || 'no definida'}`);
console.log(`VITE_CONVERSATION_LAYER_ROUTER_URL: ${import.meta.env.VITE_CONVERSATION_LAYER_ROUTER_URL || window?.RUNTIME_CONFIG?.VITE_CONVERSATION_LAYER_ROUTER_URL || 'no definida'}`);
const apiBaseURL = const apiBaseURL =
import.meta.env.VITE_API_DB_URL || window?.RUNTIME_CONFIG?.VITE_API_DB_URL || 'no definida'; import.meta.env.VITE_API_DB_URL || window?.RUNTIME_CONFIG?.VITE_API_DB_URL || 'no definida';

View File

@@ -15,6 +15,8 @@ export const useChat = defineStore('chat', {
actions: { actions: {
add (item) { add (item) {
console.log('agregado');
this.items.push(item) this.items.push(item)
}, },
@@ -38,86 +40,91 @@ export const useChat = defineStore('chat', {
} }
}, },
async sendMessage (text) { async sendMessage(text) {
const routerUrl = window.RUNTIME_CONFIG?.VITE_CONVERSATION_LAYER_ROUTER_URL || 'http://localhost:8080/fallback-router'; // Fallback or error const routerUrl =
if (!window.RUNTIME_CONFIG?.VITE_CONVERSATION_LAYER_ROUTER_URL) { import.meta.env.VITE_CONVERSATION_LAYER_ROUTER_URL ||
console.error('VITE_CONVERSATION_LAYER_ROUTER_URL is not defined in window.RUNTIME_CONFIG. Using fallback or please check your configuration.'); window?.RUNTIME_CONFIG?.VITE_CONVERSATION_LAYER_ROUTER_URL ||
} 'http://localhost:8080/fallback-router';
const msgId = `planilla-UI-${Date.now()}`;
const ts = Math.floor(Date.now() / 1000);
const messagePayload = { const messagePayload = {
id: `planilla-UI-${Date.now()}`, // Simple unique ID for now chatId: 'planilla-UI',
id: msgId,
from: 'planilla-UI', from: 'planilla-UI',
to: 'Nucleo', to: 'Nucleo',
ts: Math.floor(Date.now() / 1000), // Timestamp in seconds ts,
type: 'chat', type: 'chat',
text: text, // User's message text text,
mediaUrl: null, // Assuming no media for now mediaUrl: null,
mentions: null, // Assuming no mentions for now mentions: null,
meta: { meta: {
ack: 1, // Or 0 if acknowledgement is handled by the router ack: 1,
hasReaction: false, hasReaction: false,
isQuoted: false, isQuoted: false,
}, },
}; };
// Optimistically add message to chat // Agregar solo para mostrar en UI mientras llega la respuesta
this.add({ this.items.push({
id: messagePayload.id, // Use the same ID id: msgId,
type: 'chat', type: 'chat',
owner: 'user', // Or a more specific identifier if available owner: 'user',
text: text, text,
ts: messagePayload.ts ts,
}); });
try { try {
const response = await axios.post(routerUrl, messagePayload); const response = await axios.post(routerUrl, { data: messagePayload });
console.log('Message sent, raw response:', response.data); // Log raw response
const conversation = response.data; const conversation = response.data;
if (conversation && Array.isArray(conversation.messages)) { if (conversation && Array.isArray(conversation.messages)) {
conversation.messages.forEach(msg => { const newItems = [];
let owner = 'bot'; // Default to bot
if (msg.from === 'planilla-UI') {
owner = 'user';
// NOTE: This might add a duplicate if the optimistic message's ID
// is different from the ID assigned by the router for the echoed message.
// The current instructions are to render all messages from the router.
// Refinement for deduplication can be done later if needed.
} else if (msg.from === 'Nucleo') {
owner = 'bot';
}
// else, it could be from another participant
this.add({ conversation.messages.forEach(msg => {
// Evitar re-agregar el mensaje optimista
newItems.push({
id: msg.id, id: msg.id,
type: msg.type || 'chat', // Default to 'chat' if type is not present type: msg.type || 'chat',
owner: owner, owner: msg.from === 'planilla-UI' ? 'user' : 'bot',
text: msg.text, text: msg.text,
ts: msg.ts, ts: msg.ts,
// mediaUrl: msg.mediaUrl, // Uncomment if mediaUrl is expected
}); });
}); });
// Agregamos de nuevo el mensaje del usuario al principio, ya que fue omitido
// newItems.unshift({
// id: msgId,
// type: 'chat',
// owner: 'user',
// text,
// ts,
// });
this.items = newItems;
} else { } else {
console.error('Invalid conversation response format:', conversation); console.error('Invalid conversation response format:', conversation);
this.add({ this.items.push({
id: `error-${Date.now()}`, id: `error-${Date.now()}`,
type: 'error', type: 'error',
owner: 'system', owner: 'system',
text: 'Error processing server response. Invalid format.', text: 'Error: respuesta inválida del servidor.',
ts: Math.floor(Date.now() / 1000) ts: Math.floor(Date.now() / 1000),
}); });
} }
} catch (error) { } catch (error) {
console.error('Error sending message:', error); console.error('Error sending message:', error);
this.add({ this.items.push({
id: `error-send-${Date.now()}`, id: `error-send-${Date.now()}`,
type: 'error', type: 'error',
owner: 'system', owner: 'system',
text: `Error sending message: ${error.message}`, text: `Error al enviar: ${error.message}`,
ts: Math.floor(Date.now() / 1000) ts: Math.floor(Date.now() / 1000),
}); });
} }
} }
}, },
}) })