diff --git a/CLAUDE.md b/CLAUDE.md index c7abe20..e240fba 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,6 +25,10 @@ python -m venv .venv SECRET_KEY= ./start.sh ``` +## Variables d'environnement + +- `SECRET_KEY` : requis en production (défaut `dev-secret-change-in-prod` en dev) + ## Architecture Flask app using the factory pattern (`create_app()` in `app/__init__.py`). The DB is SQLite via SQLAlchemy, stored in `instance/worklog.db`. All vehicle/journey/tax configuration lives in `config.toml` (loaded at startup into `app.config["TOML"]`), not in the database. @@ -47,3 +51,9 @@ Flask app using the factory pattern (`create_app()` in `app/__init__.py`). The D **Auth:** Handled entirely by HAProxy upstream. The app has no authentication. **Tests:** `tests/conftest.py` provides `app` and `client` fixtures using an in-memory SQLite DB and a temporary TOML config file. Business logic tests (`test_time_calc.py`, `test_travel_calc.py`) have no Flask dependencies and need no fixtures. + +## Gotchas + +- **Pas de migration de schéma** : l'app utilise `db.create_all()` uniquement (pas d'Alembic). Tout changement de modèle nécessite de supprimer `instance/worklog.db` en dev, ou une migration manuelle en prod. +- **Barème kilométrique** : les tranches dans `config.toml` sont à mettre à jour manuellement chaque année (section `[bareme_kilometrique.YYYY]`). +- **`datetime.utcnow()` deprecated** : les modèles utilisent `datetime.utcnow` (warning sur Python 3.14+). À remplacer par `datetime.now(UTC)` lors d'une prochaine évolution des modèles.