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)
|
#### 2.5.0 (29 janvier 2026)
|
||||||
|
|
||||||
- Refonte graphique et amélioration des textes d'aide
|
- Refonte graphique et amélioration des textes d'aide
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# decp.info
|
# decp.info
|
||||||
|
|
||||||
> v2.5.0
|
> v2.5.1
|
||||||
> Outil d'exploration et de téléchargement des données essentielles de la commande publique.
|
> Outil d'exploration et de téléchargement des données essentielles de la commande publique.
|
||||||
|
|
||||||
=> [decp.info](https://decp.info)
|
=> [decp.info](https://decp.info)
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "decp.info"
|
name = "decp.info"
|
||||||
description = "Interface d'exploration et d'analyse des marchés publics français."
|
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"
|
requires-python = ">= 3.10"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Colin Maudry", email = "colin@colmo.tech" }
|
{ name = "Colin Maudry", email = "colin@colmo.tech" }
|
||||||
|
|||||||
@@ -91,9 +91,6 @@ def get_yearly_statistics(statistics, today_str) -> html.Div:
|
|||||||
page_size=10,
|
page_size=10,
|
||||||
sort_action="none",
|
sort_action="none",
|
||||||
filter_action="none",
|
filter_action="none",
|
||||||
style_cell={
|
|
||||||
"border": "solid 1px rgb(179, 56, 33)",
|
|
||||||
},
|
|
||||||
style_header={
|
style_header={
|
||||||
"border": "solid 1px rgb(179, 56, 33)",
|
"border": "solid 1px rgb(179, 56, 33)",
|
||||||
"backgroundColor": "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:
|
def get_title(acheteur_id: str = None) -> str:
|
||||||
acheteur_nom = (
|
df_acheteur = df_acheteurs.filter(pl.col("acheteur_id") == acheteur_id).select(
|
||||||
df_acheteurs.filter(pl.col("acheteur_id") == acheteur_id)
|
"acheteur_nom"
|
||||||
.select("acheteur_nom")
|
|
||||||
.item()
|
|
||||||
)
|
)
|
||||||
|
acheteur_nom = df_acheteur.item(0, 0)
|
||||||
|
|
||||||
return f"Marchés publics attribués par {acheteur_nom} | decp.info"
|
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
|
raise ValueError
|
||||||
|
|
||||||
org_nom = (
|
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
|
return org_nom, verbe
|
||||||
|
|||||||
+2
-2
@@ -199,8 +199,8 @@ def update_marche_info(marche, titulaires):
|
|||||||
for titulaire in titulaires:
|
for titulaire in titulaires:
|
||||||
if titulaire["titulaire_typeIdentifiant"] == "SIRET":
|
if titulaire["titulaire_typeIdentifiant"] == "SIRET":
|
||||||
categorie = titulaire.get("titulaire_categorie", "")
|
categorie = titulaire.get("titulaire_categorie", "")
|
||||||
if titulaire.get("titulaire_categorie"):
|
if titulaire.get("titulaire_distance"):
|
||||||
distance = str(titulaire.get("titulaire_categorie")) + " km"
|
distance = str(titulaire.get("titulaire_distance")) + " km"
|
||||||
else:
|
else:
|
||||||
distance = ""
|
distance = ""
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ def get_title(titulaire_id: str = None) -> str:
|
|||||||
titulaire_nom = (
|
titulaire_nom = (
|
||||||
df_titulaires.filter(pl.col("titulaire_id") == titulaire_id)
|
df_titulaires.filter(pl.col("titulaire_id") == titulaire_id)
|
||||||
.select("titulaire_nom")
|
.select("titulaire_nom")
|
||||||
.item()
|
.item(0, 0)
|
||||||
)
|
)
|
||||||
return f"Marchés publics remportés par {titulaire_nom} | decp.info"
|
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 = (
|
||||||
dff.with_columns(token_matches + [match_score])
|
dff.with_columns(token_matches + [match_score])
|
||||||
.filter(pl.col("match_score") == len(tokens))
|
.filter(pl.col("match_score") == len(tokens))
|
||||||
.sort("Marchés", descending=True)
|
|
||||||
.drop([f"token_{token}" for token in tokens])
|
.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.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
|
return dff
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user