farentsen 715a6ca370 fix(api): tolerate column aliases (procedure_name → procedure) + Spanish value mappings
El LLM de watsonx Orchestrate estaba alucinando nombres de columnas
(procedure_name en lugar de procedure) y los valores de procedimientos
en español sin traducir. Dos fixes:

1. Backend (benefits_api.py): mapas _COLUMN_ALIASES y _VALUE_ALIASES
   resuelven aliases comunes (procedure_name, name, plan, etc.) y
   traducciones ES→EN (radiografía → X Ray, resonancia → MRI, etc.)
   antes de aplicar el filtro. Mensajes de error ahora listan columnas
   válidas para que el agente se corrija solo.

2. OpenAPI spec (yaml + json): description de cada operación ahora
   enumera explícitamente las columnas válidas y los valores válidos
   del campo procedure, más una sección VALUE MAPPING ES→EN para que
   el LLM no tenga que adivinar.
2026-05-13 14:51:31 +00:00

taller-wox.fitlabs.dev

Portal + API para el Bootcamp Agentic AI con watsonx Orchestrate de FactorIT.

  • Landing público: /
  • Registro + descargas: /register, /descargas?token=…, /download/{file}?token=…
  • API del taller (consumida por agentes de watsonx Orchestrate):
    • POST /api/historical-procedures
    • POST /api/available-procedures
    • GET /api/member-insights
    • GET /api/schedule
    • POST /api/reports/generate-report
  • Admin (HTTP Basic): /admin/leads.json, /admin/leads.csv, /admin/stats

Local dev

python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --port 8000

Visitar http://localhost:8000/.

Tests:

pytest -v

Deploy en Coolify

  1. Crear nueva aplicación → tipo Dockerfile → source Gitea → repo farentsen/taller-wox.
  2. FQDN: taller-wox.fitlabs.dev. HTTPS automático con Let's Encrypt.
  3. Volúmenes persistentes:
    • /app/leads.db (bind file)
    • /app/app/data/reports_output (bind dir)
    • /app/material (bind dir)
  4. Variables de entorno:
    • SECRET_KEY (string aleatorio largo)
    • ADMIN_USER=admin
    • ADMIN_PASS=fit2026
    • BASE_URL=https://taller-wox.fitlabs.dev
    • TOKEN_EXPIRY_HOURS=24
  5. Subir los 2 ZIPs (taller-wox-tecnico.zip, taller-wox-funcional.zip) al volumen /app/material/ vía SFTP o el file manager de Coolify (sin redeploy).
  6. Deploy → Coolify buildea + arranca.

Estructura

app/
  main.py            FastAPI bootstrap
  config.py          env vars
  db.py              SQLite
  security.py        tokens + basic auth
  frontend.py        / · /register · /descargas · /download
  benefits_api.py    endpoints 1-4
  reports_api.py     endpoint 5
  admin.py           /admin/*
  data/              datasets de los endpoints
  templates/         jinja2
static/              CSS, JS, imágenes
material/            ZIPs descargables (volumen persistente en prod)
tests/               pytest
Dockerfile

Spec y diseño

  • Spec: SPEC_taller_wox_fitlabs.md
  • Diseño: docs/superpowers/specs/2026-05-12-taller-wox-design.md
  • Plan: docs/superpowers/plans/2026-05-12-taller-wox.md
Description
Portal + API para Bootcamp Agentic AI con watsonx Orchestrate (FactorIT)
Readme 26 MiB
Languages
Python 37.6%
Jupyter Notebook 25.8%
HTML 19.1%
CSS 16.2%
JavaScript 0.7%
Other 0.6%