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é # Règle de priorité
# ------------------------------------------------- # -------------------------------------------------
#status, reason_code, reason_ref_id, forced_tour = resolve_priority( status, reason_code, reason_ref_id, forced_tour = regles.resolve_priority(
# cur, cnx, detail_table, tp_id, dossard, timestamp, prio, det_id, tp_config cur, cnx, detail_table, tp_id, dossard, timestamp, prio, detail_id, tp_config
#) )

View File

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

View File

@ -37,3 +37,20 @@ TABLE reader_config_detail — RÈGLES GÉNÉRALES
7) Source unique 7) Source unique
- Toutes les informations de configuration (TP et course) doivent provenir de reader_config_detail. - 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. - 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