Jose Salazar
Merge pull request #4 from josesalazar2025/refactor/ajustes-clinicos-en-json
142a8d4 unverified
Raw
History Blame Contribute Delete
3.09 kB
name: ci
# Puerta de calidad del CÓDIGO (rápida). La puerta clínica —motor determinista y evals— vive
# en `evals.yml`, que sí filtra por rutas porque su coste es otro.
#
# Este workflow NO lleva filtro `paths` a propósito: antes, un PR que tocara sólo
# `backend/app/security/` o `backend/app/routers/` no disparaba NINGÚN workflow, así que toda
# la superficie de autenticación, sesiones, CSRF y ingesta de laboratorio se fusionaba sin que
# nadie ejecutara `backend/tests/`. Cualquier PR corre esto.
on:
pull_request:
push:
branches: [main]
# Disparo manual desde la pestaña Actions ("Run workflow"). Existe porque una cola atascada
# NO se puede relanzar: GitHub sólo ofrece "Re-run jobs" sobre ejecuciones TERMINADAS, así
# que tras la caída de Actions del 2026-08-06 (runs creados y nunca recogidos por un runner)
# la única forma de volver a probar era abrir otro PR. Con esto se relanza a voluntad.
# Requiere que el workflow esté en la rama por defecto para aparecer en la UI.
workflow_dispatch:
jobs:
backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
# Node aquí no es para el frontend: `test_paridad_motor.py` ejecuta el motor TS real
# (evals/engine_runner.ts) y lo compara con el puerto Python del suelo de seguridad. Sin
# Node esa prueba se OMITE en silencio, que es justo como se pierden las dos
# implementaciones de vista.
- uses: actions/setup-node@v4
with:
node-version: "22"
- name: Sincronizar backend
working-directory: backend
# Sin `--group rag`: los grupos pesados son opt-in (ver pyproject) y las dos suites que
# dependen de LanceDB/sentence-transformers ya se auto-omiten
# (`test_retriever_integracion.py`, `test_alcance_corpus.py`). Instalarlos aquí añadiría
# GBs y minutos a cambio de una prueba de integración sintética. Si algún día la
# recuperación regresa sin que nadie se entere, ese es el momento de añadirlos.
run: uv sync
- name: Ruff (backend + scripts)
working-directory: backend
# Mismo alcance que `make lint`: evals/ y bridge/ quedan fuera a propósito, aún no
# están saneados bajo estas reglas.
run: uv run ruff check . ../scripts
- name: Pruebas del backend
working-directory: backend
run: uv run pytest -q
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Instalar frontend
working-directory: frontend
run: npm ci
- name: Tipos (tsc --noEmit)
working-directory: frontend
# `npm run build` ya lo corría, pero nada ejecutaba el build en CI.
run: npm run typecheck
- name: ESLint
working-directory: frontend
run: npm run lint