Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 68a87985c7 | |||
| 776aa271f1 | |||
| fe7277ce26 | |||
| b68fa3872f | |||
| b7ff04c69c | |||
| ccee27baee | |||
| 47e17c48e7 |
@@ -1,3 +1,7 @@
|
||||
##### 2.5.1 (29 janvier 2026)
|
||||
|
||||
- Mise en production un peu hâtive ([#67](https://github.com/ColinMaudry/decp.info/issues/67), [#68](https://github.com/ColinMaudry/decp.info/issues/68))
|
||||
|
||||
#### 2.5.0 (29 janvier 2026)
|
||||
|
||||
- Refonte graphique et amélioration des textes d'aide
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# decp.info
|
||||
|
||||
> v2.5.0
|
||||
> v2.5.1
|
||||
> Outil d'exploration et de téléchargement des données essentielles de la commande publique.
|
||||
|
||||
=> [decp.info](https://decp.info)
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "decp.info"
|
||||
description = "Interface d'exploration et d'analyse des marchés publics français."
|
||||
version = "2.5.0"
|
||||
version = "2.5.1"
|
||||
requires-python = ">= 3.10"
|
||||
authors = [
|
||||
{ name = "Colin Maudry", email = "colin@colmo.tech" }
|
||||
|
||||
@@ -91,9 +91,6 @@ def get_yearly_statistics(statistics, today_str) -> html.Div:
|
||||
page_size=10,
|
||||
sort_action="none",
|
||||
filter_action="none",
|
||||
style_cell={
|
||||
"border": "solid 1px rgb(179, 56, 33)",
|
||||
},
|
||||
style_header={
|
||||
"border": "solid 1px rgb(179, 56, 33)",
|
||||
"backgroundColor": "rgb(179, 56, 33)",
|
||||
|
||||
@@ -21,11 +21,11 @@ from src.utils import (
|
||||
|
||||
|
||||
def get_title(acheteur_id: str = None) -> str:
|
||||
acheteur_nom = (
|
||||
df_acheteurs.filter(pl.col("acheteur_id") == acheteur_id)
|
||||
.select("acheteur_nom")
|
||||
.item()
|
||||
df_acheteur = df_acheteurs.filter(pl.col("acheteur_id") == acheteur_id).select(
|
||||
"acheteur_nom"
|
||||
)
|
||||
acheteur_nom = df_acheteur.item(0, 0)
|
||||
|
||||
return f"Marchés publics attribués par {acheteur_nom} | decp.info"
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ def make_org_nom_verbe(org_type, org_id) -> tuple:
|
||||
raise ValueError
|
||||
|
||||
org_nom = (
|
||||
df.filter(pl.col(f"{org_type}_id") == org_id).select(f"{org_type}_nom").item()
|
||||
df.filter(pl.col(f"{org_type}_id") == org_id)
|
||||
.select(f"{org_type}_nom")
|
||||
.item(0, 0)
|
||||
)
|
||||
|
||||
return org_nom, verbe
|
||||
|
||||
+2
-2
@@ -199,8 +199,8 @@ def update_marche_info(marche, titulaires):
|
||||
for titulaire in titulaires:
|
||||
if titulaire["titulaire_typeIdentifiant"] == "SIRET":
|
||||
categorie = titulaire.get("titulaire_categorie", "")
|
||||
if titulaire.get("titulaire_categorie"):
|
||||
distance = str(titulaire.get("titulaire_categorie")) + " km"
|
||||
if titulaire.get("titulaire_distance"):
|
||||
distance = str(titulaire.get("titulaire_distance")) + " km"
|
||||
else:
|
||||
distance = ""
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ def get_title(titulaire_id: str = None) -> str:
|
||||
titulaire_nom = (
|
||||
df_titulaires.filter(pl.col("titulaire_id") == titulaire_id)
|
||||
.select("titulaire_nom")
|
||||
.item()
|
||||
.item(0, 0)
|
||||
)
|
||||
return f"Marchés publics remportés par {titulaire_nom} | decp.info"
|
||||
|
||||
|
||||
+2
-1
@@ -551,7 +551,6 @@ def search_org(dff: pl.DataFrame, query: str, org_type: str) -> pl.DataFrame:
|
||||
dff = (
|
||||
dff.with_columns(token_matches + [match_score])
|
||||
.filter(pl.col("match_score") == len(tokens))
|
||||
.sort("Marchés", descending=True)
|
||||
.drop([f"token_{token}" for token in tokens])
|
||||
)
|
||||
|
||||
@@ -567,6 +566,8 @@ def search_org(dff: pl.DataFrame, query: str, org_type: str) -> pl.DataFrame:
|
||||
)
|
||||
|
||||
dff = dff.select(f"{org_type}_id", f"{org_type}_nom", "Département", "Marchés")
|
||||
dff = dff.group_by(f"{org_type}_id", f"{org_type}_nom", "Département").sum()
|
||||
dff = dff.sort("Marchés", descending=True)
|
||||
|
||||
return dff
|
||||
|
||||
|
||||
Reference in New Issue
Block a user