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

View File

@ -90,7 +90,7 @@ def process_course(cur, cnx, con_id: int):
rcourse_id = int(lec["rcourse_id"])
chr_loc = lec["chrinfo_location"]
timestamp = Decimal(lec["chrinfo_time"])
max_id = max(max_id, rcourse_id)
dt_utc = regles.ts_to_utc(timestamp)
@ -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
@ -49,11 +49,14 @@ def resolve_priority(
SELECT detail_id, controller_priority, timestamp_read, tour
FROM `{detail_table}`
WHERE tp_id = %s
AND cla_info_dossard = %s
AND status = 1
AND ABS(timestamp_read - %s) <= %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,17 +74,17 @@ 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
# Nouvelle lecture plus prioritaire → remplacer
if new_priority < old_priority:
cur.execute(f"""
UPDATE `{detail_table}`
SET
@ -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