fix: params page cfg=None + hot-reload config chaque jour
dashboard/app.py:
load_sim_config() retourne None (pas {}) quand le fichier est absent
— {} est falsy en Python, masquait le formulaire même quand la config
était chargeable mais vide. None est explicitement distinguable.
load_all_modes() charge toujours depuis sim_001.json (référence 5 modes)
— sim_002 n'a qu'un seul mode dans son bloc 'modes', le tableau comparatif
était vide pour S2.
{% if cfg is not none %} dans le template au lieu de {% if cfg %}
Message d'avertissement sous le bouton save : prise en compte au prochain jour
Message d'erreur précis si fichier introuvable (path + hint mount Docker)
/params/save: vérification if cfg is None
run.py:
Hot-reload config à chaque tick==0 (frontière de jour) :
cfg.load(config_path, session_id=SESSION_ID)
effective_mode mis à jour depuis la config rechargée
tick_sleep recalculé (TICK_SLEEP_SEC env var prime toujours)
→ Changer mode/drain/encounter via dashboard prend effet le jour suivant
sans redémarrer le process
This commit is contained in:
+5
-1
@@ -77,8 +77,12 @@ def run(config_path: str | None = None):
|
||||
|
||||
day, current_tick = tick_engine.next_tick(day, current_tick)
|
||||
|
||||
# Réinit world_state au début de chaque nouveau jour
|
||||
# Début d'un nouveau jour : hot-reload config depuis le JSON (permet les changements dashboard)
|
||||
if current_tick == 0:
|
||||
cfg.load(config_path, session_id=SESSION_ID)
|
||||
effective_mode = cfg.mode() or db_mode
|
||||
tick_sleep = float(os.getenv("TICK_SLEEP_SEC",
|
||||
cfg.get("tick", {}).get("tick_sleep_sec", tick_sleep)))
|
||||
_init_world_state(SESSION_ID, day)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
|
||||
Reference in New Issue
Block a user