innercontext/backend
Piotr Oleszczyk 914c6087bd fix(products): work around Gemini int-enum schema rejection in parse-text
Gemini API rejects int-valued enums (StrengthLevel) in response_schema,
raising a validation error before any request is sent. Fix by introducing
AIActiveIngredient (inherits ActiveIngredient, overrides strength_level and
irritation_potential as Optional[int]) and ProductParseLLMResponse used only
as the Gemini schema. The two-step validation converts ints back to StrengthLevel
via Pydantic coercion. Adds a test covering the numeric strength level path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 22:00:48 +01:00
..
alembic fix(llm): log and handle non-STOP finish_reason from Gemini 2026-03-01 20:08:22 +01:00
innercontext fix(products): work around Gemini int-enum schema rejection in parse-text 2026-03-01 22:00:48 +01:00
tests fix(products): work around Gemini int-enum schema rejection in parse-text 2026-03-01 22:00:48 +01:00
.env.example fix: load .env via python-dotenv; SQLite default for local dev 2026-02-26 20:51:13 +01:00
.python-version Initial commit: backend API, data models, and test suite 2026-02-26 15:10:24 +01:00
alembic.ini feat(backend): add Alembic migrations 2026-02-28 20:14:57 +01:00
db.py Initial commit: backend API, data models, and test suite 2026-02-26 15:10:24 +01:00
main.py feat(routines): add minoxidil beard/mustache option to routine suggestions 2026-03-01 19:46:07 +01:00
pyproject.toml feat(backend): add Alembic migrations 2026-02-28 20:14:57 +01:00
README.md Initial commit: backend API, data models, and test suite 2026-02-26 15:10:24 +01:00
skincare.yaml Initial commit: backend API, data models, and test suite 2026-02-26 15:10:24 +01:00
uv.lock feat(backend): add Alembic migrations 2026-02-28 20:14:57 +01:00

See the root README for setup and usage instructions.