Colin Maudry
5586db23aa
feat(observatoire): afficher la tuile considérations après Type d'achat
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 18:17:27 +02:00
Colin Maudry
a85baca408
feat(observatoire): calcul et rendu tuile considérations sociales/env
...
Ajoute compute_considerations_stats (dédoublonnage par uid, regex
Clause|Critère|Marché réservé, colonne absente → 0%) et
get_considerations_card_content (deux dbc.Progress colorés Safe).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 18:16:34 +02:00
Colin Maudry
e44af8add8
Dans les résultats de recherche, le contenu de la colonne Département wrappe le texte #77
2026-06-22 17:55:53 +02:00
Colin Maudry
992f6d4f93
Recherche dans les tableaux insensible aux accents #79
2026-06-22 17:46:31 +02:00
Colin Maudry
c264c36684
fix(api): next=null sur dernière page en mode agrégation ( #78 )
...
Si la page retournée est partielle (len < page_size), on sait qu'on est
sur la dernière page → next=null, parité data.gouv.fr.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 14:23:09 +02:00
Colin Maudry
70ee819a51
feat(api): sort supporté sur colonnes groupby en mode agrégation ( #78 )
...
Testé contre tabular-api data.gouv.fr : sort sur une colonne groupby
est honoré (200), sort sur un alias d'agrégat retourne 400 (colonne
inconnue). aggregate_marches reçoit order_by ; doc Swagger mise à jour.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 14:20:02 +02:00
Colin Maudry
b87eb4328c
docs(api): documente les opérateurs (filtres + agrégation) dans Swagger ( #78 )
...
Remplace la description du paramètre <colonne>__<opérateur> par une
documentation complète listant tous les opérateurs de filtre (exact, differs,
contains, notcontains, in, notin, less, greater, strictly_less,
strictly_greater, isnull, isnotnull, sort) et les agrégations (groupby, count,
sum, avg, min, max).
Met à jour le docstring de data() pour documenter le mode agrégation et les
paramètres réservés.
Ajoute test_openapi_doc.py qui valide la présence des mots-clés clés dans
l'OpenAPI généré.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 14:09:34 +02:00
Colin Maudry
7c9a95355b
feat(api): mode agrégation sur /data (groupby + agrégats) ( #78 )
2026-06-22 14:06:44 +02:00
Colin Maudry
28709a162a
feat(db): aggregate_marches pour les requêtes GROUP BY ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 14:04:08 +02:00
Colin Maudry
9324a734d4
feat(api): parsing des opérateurs d'agrégation (groupby/count/sum/avg/min/max) ( #78 )
2026-06-22 13:59:50 +02:00
Colin Maudry
2a8e82ccd6
feat(api): ajoute l'opérateur de filtre differs (IS DISTINCT FROM) ( #78 )
...
Implémente l'opérateur de filtre `differs` qui génère un fragment SQL
`IS DISTINCT FROM` pour exclure des valeurs en tenant compte des NULL.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 13:55:18 +02:00
Colin Maudry
f5db674e22
feat(api): renomme le param réservé count en count_results ( #78 )
...
- Renomme RESERVED_PARAMS dans src/api/filters.py
- Fait passer le paramètre de 'count' à 'count_results' dans src/api/routes.py
- Met à jour la documentation swagger pour le nouveau nom
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-22 13:50:12 +02:00
Colin Maudry
ffaf200c07
api/v1/schema n'est plus auth, schema renvoie table schema, adaptation des tests #78
2026-06-16 17:03:14 +02:00
Colin Maudry
fede22f314
Plus d'options dans swagger UI pour Try it out #78
2026-06-16 11:06:46 +02:00
Colin Maudry
b8d73c7f7b
fix: omettre temporalCoverage si date inconnue + TimeoutException explicite ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 17:58:23 +02:00
Colin Maudry
cb93dbe05a
feat: chargements de pages best-effort au boot (tableau, sources) ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 13:58:50 +02:00
Colin Maudry
fa2709b38c
fix: re-vérifier db_path.exists() dans le handler et assertion return value ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 13:50:57 +02:00
Colin Maudry
bba53d81e1
feat: réutiliser le DuckDB existant si le bootstrap échoue ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 13:48:32 +02:00
Colin Maudry
5a6aa31c86
fix: robustesse schéma — TransportError, validation name, ValueError cache ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 13:28:36 +02:00
Colin Maudry
42ba73cd36
feat: schéma résilient URL→cache + suppression DATA_SCHEMA_LOCAL ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 13:26:03 +02:00
Colin Maudry
1aea71be7f
Merge branch 'main' into feature/78_api
2026-06-12 09:33:59 +02:00
Colin Maudry
ed32b0f66b
Réduction des petites erreurs qui polluent les logs
2026-06-07 18:56:16 +02:00
Colin Maudry
4d3e8ac344
feat(etapes): fiches cliquables sur les barres et vue mobile
2026-06-04 22:15:10 +02:00
Colin Maudry
ab74717679
feat(etapes): suppression légende, JAL à la place de Journaux d'annonces légales
2026-06-04 22:04:31 +02:00
Colin Maudry
c9a97fe9d2
feat(etapes): référencement de /etapes dans le sitemap
2026-06-04 21:51:30 +02:00
Colin Maudry
b8db0cddf8
feat(etapes): styles du graphique étapes/seuils
2026-06-04 21:48:28 +02:00
Colin Maudry
4c60fed0c2
feat(etapes): vue mobile liste par étape
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-04 21:45:25 +02:00
Colin Maudry
070a91fed1
feat(etapes): graphique données par étape et par seuil
2026-06-04 21:42:33 +02:00
Colin Maudry
e638ce45be
feat(etapes): squelette de la page /etapes
2026-06-04 21:38:50 +02:00
Colin Maudry
e55f3447db
Possibilité de charger les données depuis une URL, memoisation de last_modified
2026-06-04 21:34:36 +02:00
Colin Maudry
7d4df0e6ad
Récupération de schéma plus robuste et changelog
2026-05-18 12:16:03 +02:00
Colin Maudry
8dc5287918
Ajouts à flask #78
2026-05-18 11:47:05 +02:00
Colin Maudry
63f51d7b98
API: mention sur la page À propos ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:47:03 +02:00
Colin Maudry
2f0cbada34
API: corriger flush() et isolation test compteur ( #78 )
2026-05-13 14:45:26 +02:00
Colin Maudry
c683034e2b
API: documentation OpenAPI et CHANGELOG ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:37:21 +02:00
Colin Maudry
985af0fdc7
API: envoi Matomo fire-and-forget en async ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:34:52 +02:00
Colin Maudry
912507b1d9
API: compteur de consommation SQLite asynchrone ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:31:22 +02:00
Colin Maudry
6c591aeb08
API: endpoint /data avec pagination et filtres ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:15:19 +02:00
Colin Maudry
6f4e7f1853
API: endpoint /schema ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:10:20 +02:00
Colin Maudry
686218c639
API: branchement init_api dans l'app Dash ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 14:07:47 +02:00
Colin Maudry
f24d0ba168
API: blueprint flask-smorest + endpoint /health ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 13:52:06 +02:00
Colin Maudry
f12ada2fac
API: décorateur @require_token ( #78 )
2026-05-13 13:49:01 +02:00
Colin Maudry
a3cfad3d8f
API: parser de filtres et génération SQL paramétré ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 13:45:55 +02:00
Colin Maudry
4b67cde147
API: CLI tokens_cli (create/list/revoke) ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 13:34:05 +02:00
Colin Maudry
ca44b99016
API: tokens_db SQLite CRUD ( #78 )
2026-05-13 13:19:50 +02:00
Colin Maudry
bc3b09e2a9
API: dépendances et squelette de package ( #78 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 13:04:09 +02:00
Colin Maudry
0c9666204b
Autorisation du HTML dans les annonces
2026-05-11 10:34:06 +02:00
Colin Maudry
8a2f7f620c
Suppression des mentions sur les profils d'acheteurs qui ne publient pas de données
...
Omnikles publie via l'API DUME de l'AIFE, ne reste que Klekoon. Mais bon, ça fait des mauvaises vibes sur la page de le préciser :)
2026-05-11 10:26:16 +02:00
Colin Maudry
3a73cdf4b9
P dans les announcements plus compacts
2026-05-05 15:43:08 +02:00
Colin Maudry
755b8c13ab
Bug nom colonne, amélioration test #76
2026-05-05 14:56:59 +02:00