60 Commits

Author SHA1 Message Date
a27f282b69 feat(presence): ajoute le service métier de présence et ses tests
Étape 3 validée du service métier de présence : implémentation de
app/business/presence_service.py et couverture par
tests/test_presence_service.py.

Co-authored-by: OpenAI/GPT-5.6-Luna-Pro <vibecoder@antoineve.me>
2026-08-13 18:54:33 +02:00
e9f73c7562 feat: persister les événements de présence et activer les clés étrangères SQLite
Ajoute le modèle WorkplacePresenceEvent pour stocker les événements de
présence reçus de Home Assistant, avec clé d'idempotence unique, lien vers
une journée et, facultativement, une plage horaire. Active les contraintes
de clés étrangères sur chaque connexion SQLite et documente le schéma dans
l'onboarding. Couvre le tout par des tests de modèle et de factory.

Co-authored-by: OpenAI/GPT-5.6-Luna-Pro <vibecoder@antoineve.me>
2026-08-13 17:36:26 +02:00
c30bd1c0c5 fix(tests): isolate SQLite test databases
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
2026-08-13 17:25:48 +02:00
85e6e502e5 feat(config): ajouter la configuration Home Assistant (étape 1)
Ajoute la section [home_assistant] au TOML et sa validation au chargement
via get_home_assistant_config(). La section est facultative pour préserver
la compatibilité avec les configurations existantes, mais si elle est
présente elle doit être complète et référencer un type de journée, un
trajet et un véhicule à moteur existants, sous peine de refuser le
démarrage de l'application. La configuration validée est exposée dans
app.config['HOME_ASSISTANT'].

Co-authored-by: OpenAI/GPT-5.6-Luna-Pro <vibecoder@antoineve.me>
2026-08-13 16:13:18 +02:00
525d38224c docs: planifier l'API REST Home Assistant
Co-authored-by: OpenAI/GPT-5.6-Luna-Pro <vibecoder@antoineve.me>
2026-08-13 15:57:32 +02:00
c5bcbf51bc docs: utiliser db.engine au lieu de db.get_engine() déprécié
Co-authored-by: OpenAI/GPT-5.6-terra <vibecoder@antoineve.me>
2026-08-13 15:28:43 +02:00
1a679ea1c7 refactor: migrer datetime.utcnow() vers datetime.now(UTC)
Co-authored-by: OpenAI/GPT-5.6-terra <vibecoder@antoineve.me>
2026-08-13 15:23:09 +02:00
b6fa09a709 doc: improve contributor guidance
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: Google/Gemini-3.5-Flash <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 12:25:08 +02:00
e9977f5a1b doc: clarify Python version requirement
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 12:02:15 +02:00
fd128dd09b chore: resolve final review findings
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Pro <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 11:48:38 +02:00
21fd877d7a doc: add developer onboarding guide
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: Google/Gemini-3.5-Flash <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 11:38:04 +02:00
bd5bc496eb doc: document configuration and application routes
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: Google/Gemini-3.5-Flash <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 11:05:10 +02:00
2d85fffd8d doc: document models and business rules
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: Google/Gemini-3.5-Flash <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Pro <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 10:58:49 +02:00
c7a0a77d1f chore: fix python style violations
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: OpenAI/GPT-5.6-Luna <vibecoder@antoineve.me>
Co-authored-by: MiniMax/MiniMax-M3 <vibecoder@antoineve.me>
Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
2026-08-13 10:14:21 +02:00
82beb6241f chore: configure python quality tooling
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me>
Co-authored-by: OpenAI/GPT-5.6-Luna <vibecoder@antoineve.me>
2026-08-13 10:08:13 +02:00
bfa48ee8a8 Add bulk CSV import script for work entries
- Add scripts/import_csv.py for direct SQLite database import
- Handle date conflicts with warnings (existing data preserved)
- Support multiple time slots per entry (semicolon-separated)
- Validate day_type, journey_profile_id, and motor_vehicle_id
- Update README.md with usage instructions
2026-05-13 18:45:27 +02:00
0956b22986 Add 2026 kilometer rate scale (unchanged from 2025) 2026-05-13 18:21:13 +02:00
8fe13615d0 CLAUDE.md -> AGENTS.md 2026-05-13 18:12:54 +02:00
7e2f158c09 Merge pull request 'feat: statistiques mensuelles dans la page rapports' (#2) from monthly-stats-reports into master
Reviewed-on: #2
2026-03-13 14:42:37 +01:00
cc664b3555 feat: section détail mensuel dans la page rapports 2026-03-13 14:36:32 +01:00
59d64885d4 feat: calcul stats mensuelles dans reports (km + médianes) 2026-03-13 14:35:18 +01:00
6d5e58273f feat: monthly_stats() — médiane journalière et hebdomadaire 2026-03-13 14:34:49 +01:00
d768156e0d docs: plan d'implémentation statistiques mensuelles 2026-03-13 14:16:31 +01:00
e781c06593 docs: design statistiques mensuelles dans la page rapports 2026-03-13 14:16:27 +01:00
d97565f1a1 Merge pull request 'feat: increase RTT from 18 to 19' (#1) from increase-rtt-to-19 into master
Reviewed-on: #1
2026-03-13 13:50:12 +01:00
4c0093c2b0 feat: increase RTT from 18 to 19
- Update LeaveBalance model default rtt_total to 19
- Update all tests to verify 19 RTT instead of 18
- Update documentation (design and technical plan)
- Update run.py to bind to 0.0.0.0 for external access
- Update CLAUDE.md deployment instructions

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-13 13:45:19 +01:00
bb0e57dbc6 docs: ajout service systemd et instructions de déploiement
- tableau-de-bord-pro.service : service Gunicorn pour www-data
- README : section production avec systemctl edit --full

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:55:38 +01:00
abbce5e799 docs: ajout README, LICENSE MIT, mise à jour CLAUDE.md
- README.md : introduction, installation, configuration, mention vibe coding
- LICENSE.md : licence MIT (Antoine Van-Elstraete)
- CLAUDE.md : barème kilométrique, filtres Jinja2, gotcha tests de routes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:47:28 +01:00
24d9a92a5a feat: carte répartition par type de jour dans le rapport 2026-03-11 20:32:08 +01:00
a2077e640a feat: count_day_types — compte les jours par type 2026-03-11 20:31:16 +01:00
859d94bfb1 fix: afficher les noms lisibles des types de jours et des véhicules
- Filtre Jinja2 day_type_fr (WORK→Travail, TT→Télétravail, etc.)
- Appliqué dans entry_list.html et dashboard.html
- Passage de vehicles au template dashboard pour afficher vehicle.name
- Mise à jour du test test_entry_list en conséquence
- Ajout du plan docs/plans/2026-03-11-bareme-kilometrique.md
2026-03-11 20:27:07 +01:00
68ae347311 fix: barème kilométrique 2025 — tranches et CV corrects, toutes puissances 2026-03-11 20:07:26 +01:00
51673f4959 feat: get_bareme par CV individuel, majoration électrique dans reports 2026-03-11 20:06:54 +01:00
0362836a63 feat: compute_frais_reels supporte la majoration +20% électrique 2026-03-11 20:04:47 +01:00
d9ad854ede docs: update CLAUDE.md with frontend design system and test gotchas 2026-03-11 18:48:16 +01:00
c3a7bdfef7 design: refonte UI — journal de bord (Playfair + JetBrains Mono, palette encre/crème/ambre) 2026-03-11 18:46:04 +01:00
23dbc3f870 docs: update CLAUDE.md with session learnings 2026-03-11 18:36:23 +01:00
9e40c7b876 fix: affichage des dates en français via filtre Jinja2 date_fr 2026-03-11 18:34:36 +01:00
b6d5754c98 fix: use db.engine instead of deprecated db.get_engine() 2026-03-11 17:53:22 +01:00
96694e2de4 test: update integration tests for motor vehicle selection 2026-03-11 17:53:00 +01:00
ffbbf2da44 feat: motor vehicle selector in entry form and routes 2026-03-11 17:52:13 +01:00
9a37bc444d feat: compute_km_for_entry resolves generic moteur key to specific vehicle 2026-03-11 17:50:29 +01:00
489d28c4a0 feat: add motor_vehicle_id to WorkEntry with auto-migration 2026-03-11 17:49:26 +01:00
b5ff8de0e4 feat: add get_motor_vehicles() and journey_has_motor() to config_loader 2026-03-11 17:48:13 +01:00
9f3c953b31 refactor: rename vehicle keys to generic moteur/type in config 2026-03-11 17:47:25 +01:00
ab27d7a345 docs: add implementation plan for multi-vehicle selection 2026-03-11 17:01:35 +01:00
b6c142dc5b docs: improve CLAUDE.md with env vars and gotchas section 2026-03-11 16:47:40 +01:00
cadc4d783c docs: add CLAUDE.md with architecture and commands 2026-03-11 16:45:24 +01:00
4846db2d76 test: integration tests for all routes 2026-03-11 16:44:00 +01:00
73904cd99a feat: Gunicorn config and startup script 2026-03-11 16:43:31 +01:00