farentsen 0f175ab138 fix(data): shift dates +1y in non-Charlie rows so 'last year' queries hit data
Today is 2026-05-13 but the dataset was calibrated for early 2025.
'Last year' queries (date > 2025-05-13) returned 0 rows because all
records were 2023-2025-04.

Shifted year by +1 for 46/50 rows. Kept old dates for 4 Charlie rows
that drive the overdue_procedures narrative in member_insights.json
(Annual Physical 2024-05-15, Dental Cleaning 2025-01-10, Vision Exam
2023-08-22, Blood Test 2024-11-04 — these MUST stay old to remain overdue).

Charlie's X Ray (2025-03-28 → 2026-03-28) is now recent, so 'last year
at City Hospital' returns Charlie + Diana + Frank + Bob + Ethan + Henry +
Isabel + Maria with recent visits.
2026-05-13 14:58:08 +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%