v2.3.1
10 fallos. Los diagnostico y corrijo todos.Varios bugs reales y tests que necesitan ajuste.
Bug real: _logprobs_to_numpy no maneja dictsAhora corrijo los tests con las expectativas incorrectas.El problema: KL divergence entre distribuciones de distinto tamaño. Corrijo los tests.Hay un string de versión viejo en el health endpoint.Ahora reescribo el archivo de tests del analyzer y del forwarder con las correcciones.Ahora corrijo el test del forwarder SSL y el test de auth.Quedan 4 fallos. Tres son bugs reales del código.
Bug real 1: full_text join falla si content son dicts****Bug real 2: endpoint /v1/chat/completions crashea con 500 si lifespan no corrióAhora el test de SSL — parcheo correctamente sin llamar al init real.49/49 en los nuevos tests. Suite completa.200 passed. Ahora mido la coverage real.analyzer.py: 96%, total 73%.
README — reescrito honesto El README está bastante bien.
3 bugs reales corregidos en el código fuente:
_logprobs_to_numpy() — no manejaba dicts de JSON deserialization. Ahora acepta tanto objetos Pydantic como dict. Este bug hacía que cualquier token llegado en formato raw dict causara AttributeError: 'dict' object has no attribute 'logprob'.
full_text join en analyze() — mismo problema: .token en dict falla. Corregido a .get("token", "").
Endpoint /v1/chat/completions — sin lifespan activo tiraba AttributeError con HTTP 500. Ahora retorna un 503 Service Unavailable limpio con mensaje diagnóstico claro.
49 tests nuevos escritos:
| Archivo | Tests | Cobertura lograda |
|---|---|---|
test_analyzer_deep.py |
22 | analyzer.py 44% → 96% |
test_forwarder_deep.py |
14 | forwarder.py 26% → 67% |
test_app_coverage.py |
13 | middleware, health, auth, cache |
Cobertura total: 34% → 73%
Dockerfile reescrito: aegis_server incluido, labels OCI estándar, healthcheck profundo que usa el nuevo /health JSON, comments de uso, non-root user documentado.
README corregido: comando de lanzamiento del visualizer apuntaba a server.py en puerto 7860 — no existía. Ahora apunta al app.py correcto en puerto 8888.