Spaces:
Sleeping
Sleeping
Commit History
-
Merge pull request #4 from josesalazar2025/refactor/ajustes-clinicos-en-json
Jose SalazarUnverified signatureRefactor/ajustes clinicos en json142a8d4
-
El suelo de seguridad se recalcula en el servidor
Jose Salazar +1: Claude Opus 5ARCHITECTURE_REVIEW §1.1. El motor determinista del que depende toda la historia de seguridad corre en el NAVEGADOR, y el backend aceptaba su veredicto como un hecho: los `hallazgos` llegaban como campos de la petición y el docstring del esquema lo decía por escrito («El backend NO recalcula»). Un cliente que mandara `hallazgos: []` desactivaba de una sola petición el suelo de derivación obligatoria y la detección de analitos fabricados. No hacía falta un ataque —era el contrato documentado de la API— y bastaba un bundle cacheado de ayer para que el servidor aplicara una seguridad distinta de la que creía aplicar. QUÉ SE PORTA. Sólo lo que sostiene el suelo: rangos ajustados por edad y raza, y clasificación de gravedad (~250 líneas de las 1062). La detección de patrones se queda en el cliente porque ninguna decisión de seguridad cuelga de ella; portarla habría creado una segunda implementación del motor validado por veterinario. Se descartó meter Node en la imagen de producción: depen…c205c6b -
CI: disparo manual (workflow_dispatch) en ambas puertas
Jose Salazar +1: Claude Opus 5Una cola atascada no se puede relanzar: GitHub sólo ofrece "Re-run jobs" sobre ejecuciones TERMINADAS. Durante la caída de Actions del 2026-08-06 (incidente crítico desde las 15:22Z; runs creados y nunca recogidos por un runner) los dos PR se fusionaron sin que ninguna comprobación llegara a ejecutarse, y la única forma de volver a probar era abrir otro PR. Con `workflow_dispatch` se relanza desde la pestaña Actions. Aparece en la UI sólo cuando el workflow está en la rama por defecto. Co-Authored-By: Claude Opus 5 <[email protected]>b0a3b8f -
CI: puerta de código en todos los PR (ruff, pytest, tsc, eslint)
Jose Salazar +1: Claude Opus 5Antes, un PR que tocara sólo `backend/app/security/` o `backend/app/routers/` no disparaba NINGÚN workflow: el único que existía filtraba por rutas y nombraba `backend/app/ai/**` y `backend/app/rag/**`. Toda la superficie de autenticación, sesiones, CSRF e ingesta de laboratorio se fusionaba sin que nadie ejecutara `backend/tests/`, que nunca ha corrido en CI pese a estar en `make backend-test`. `ci.yml` corre en todos los PR, sin filtro: ruff + pytest (backend) y tsc --noEmit + eslint (frontend). El alcance de ruff es el de `make lint` (evals/ y bridge/ fuera a propósito). Sin `--group rag`: las dos suites que lo necesitan ya se auto-omiten y los grupos pesados costarían GBs por una prueba sintética. `evals.yml` conserva su filtro —es la puerta cara— pero se amplía a `backend/**` y `frontend/**`: el anterior dejaba fuera `schemas.py`, que define la forma misma que las evals puntúan, y `config.py`. Co-Authored-By: Claude Opus 5 <[email protected]>523cb7e