- Move all email layout to Jinja2 templates (4 files: admin_new, admin_update, parent_confirmation html+txt) - Extract pure helper/context-builder functions to context.py (format_types, calculate_age, format_dob, calculate_monthly_fee, format_days, build_admin_new_context, build_admin_update_context, build_parent_context) - Move i18n label strings out of Python into YAML locale files (i18n/de.yaml, i18n/en.yaml) — admin-editable without code changes - Add renderer.py as thin Jinja2 wrapper (render_template) - Reduce notifier.py to routing + SMTP dispatch only - Update tests to call context functions directly and render templates via renderer instead of calling private builder methods - Add jinja2 and pyyaml as explicit dependencies in pyproject.toml https://claude.ai/code/session_01LjjK7RjKVnC8bETtccfgna
39 lines
832 B
TOML
39 lines
832 B
TOML
[project]
|
|
name = "meister-eder"
|
|
version = "0.1.0"
|
|
description = "AI-powered conversational registration agent for Spielgruppe Pumuckl"
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
# LLM access — supports any provider (Anthropic, OpenAI, Gemini, …)
|
|
"litellm>=1.0.0",
|
|
# Configuration
|
|
"python-dotenv>=1.0.0",
|
|
# Registration schema validation
|
|
"jsonschema>=4.23.0",
|
|
"chainlit>=2.9.6",
|
|
"qrbill>=1.2.0",
|
|
"pillow>=12.1.1",
|
|
"jinja2>=3.0.0",
|
|
"pyyaml>=6.0.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
meister-eder = "main:main"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src"]
|
|
|
|
[tool.uv]
|
|
dev-dependencies = [
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=1.3.0",
|
|
"pytest-mock>=3.14.0",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|