priorite fonctionne de base a tester

This commit is contained in:
2025-12-12 16:57:06 -05:00
parent f271cea42c
commit 6300495929
6 changed files with 37 additions and 31 deletions

15
a faire
View File

@ -1,15 +0,0 @@
Notes pour correction du moteur Python
Les priorités ne fonctionnent pas.
La logique actuelle doit être revue.
La validation des intervalles est mal faite.
Elle doit être basée directement sur lheure pour obtenir un rapprochement plus uniforme.
Les tours ne fonctionnent pas.
Le calcul du tour et du temps de tour doit être revu complètement.
Concept général à corriger :
Lorsquune entrée est jugée « bonne », on doit lécrire immédiatement dans la base de données,
avant dappliquer nimporte quelle autre validation.
Parce que ces lectures doivent être conservées quoi quil arrive.

View File

@ -168,9 +168,9 @@ def process_course(cur, cnx, con_id: int):
# -------------------------------------------------
# Règle de priorité
# -------------------------------------------------
#status, reason_code, reason_ref_id, forced_tour = resolve_priority(
# cur, cnx, detail_table, tp_id, dossard, timestamp, prio, det_id, tp_config
#)
status, reason_code, reason_ref_id, forced_tour = regles.resolve_priority(
cur, cnx, detail_table, tp_id, dossard, timestamp, prio, detail_id, tp_config
)

View File

@ -14,7 +14,7 @@ def resolve_priority(
dossard,
new_timestamp,
new_priority,
det_id,
detail_id,
tp_config
):
@ -34,7 +34,7 @@ def resolve_priority(
except:
backup_window = 0
log_debug(f"[resolve_priority] backup_window={backup_window}")
# -------------------------------------------------
# Si backup_window = 0 → toujours accepter
@ -51,9 +51,12 @@ def resolve_priority(
WHERE tp_id = %s
AND cla_info_dossard = %s
AND status = 1
AND detail_id <> %s
AND ABS(timestamp_read - %s) <= %s
LIMIT 1
""", (tp_id, dossard, str(new_timestamp), backup_window))
""", (tp_id, dossard, detail_id, new_timestamp, backup_window))
row = cur.fetchone()
@ -61,6 +64,7 @@ def resolve_priority(
# Aucun doublon → accepter
# -------------------------------------------------
if not row:
log_debug(f"[resolve_priority] pas de doublon backup_window={backup_window}")
return 1, None, None, None
old_id = row["detail_id"]
@ -70,10 +74,10 @@ def resolve_priority(
# -------------------------------------------------
# Comparaison des priorités
# -------------------------------------------------
log_debug(f"[resolve_priority] detail_id={detail_id} old_id={old_id} backup_window={backup_window}")
# Nouvelle lecture moins prioritaire → rejet
if new_priority > old_priority:
return 0, "LOWER_PRIORITY", det_id, None
return 0, "LOWER_PRIORITY", detail_id, None
@ -88,7 +92,7 @@ def resolve_priority(
reason_code = 'REPLACED_BY_HIGHER_PRIORITY',
reason_ref_id = %s
WHERE detail_id = %s
""", (det_id, old_id))
""", (detail_id, old_id))
cnx.commit()
@ -97,7 +101,7 @@ def resolve_priority(
# Même priorité → rejet
return 0, "EQUAL_PRIORITY", det_id, None
return 0, "EQUAL_PRIORITY", detail_id, None
# -------------------------------------------------
# Regle interval

View File

@ -37,3 +37,20 @@ TABLE reader_config_detail — RÈGLES GÉNÉRALES
7) Source unique
- Toutes les informations de configuration (TP et course) doivent provenir de reader_config_detail.
- Aucune autre source de règle ne doit être utilisée dans le moteur.
Notes pour correction du moteur Python
Les priorités ne fonctionnent pas.
voir si les priorité devrais etre a la fin
La logique actuelle doit être revue.
valider les multiple interval
Concept général à corriger :
si ca plente pendant la validatione des regles
valider premier tours