priorite fonctionne de base a tester
This commit is contained in:
15
a faire
15
a faire
@ -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 l’heure 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 :
|
||||
Lorsqu’une entrée est jugée « bonne », on doit l’écrire immédiatement dans la base de données,
|
||||
avant d’appliquer n’importe quelle autre validation.
|
||||
Parce que ces lectures doivent être conservées quoi qu’il arrive.
|
||||
Binary file not shown.
Binary file not shown.
@ -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
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -3,7 +3,7 @@ attention sur le serveur mysql le % devrais enlever
|
||||
|
||||
|
||||
|
||||
config
|
||||
config
|
||||
TABLE reader_config_detail — RÈGLES GÉNÉRALES
|
||||
---------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user