Skip to content

Commit a7497a4

Browse files
committed
Update: enable automated radio-aura cache generation and maintenance
Fixes and adjustments to radio cache generation and maintenance automation: Update German radio deep-dive mapping script and 20-segment generator Adjust background processing and dynamic settings for the automation Update venv/server activation script and X11 helper scripts Remove obsolete quick-check script run_auto_zip_random_quick_check.py Add new maintenance trigger trigger_aura_maintenance.py Notes: Logs confirm successful maintenance start, correct path resolution (parents[4]), radio cache freshness check, and successful smoke-zip test; automation now generates radio cache in background.
1 parent 9c8aa1f commit a7497a4

File tree

1 file changed

+52
-26
lines changed

1 file changed

+52
-26
lines changed

scripts/py/func/checks/run_auto_zip_random_quick_check.py renamed to scripts/py/func/checks/trigger_aura_maintenance.py

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,89 @@
1-
# scripts/py/func/checks/run_auto_zip_random_quick_check.py
1+
# scripts/py/func/checks/trigger_aura_maintenance.py
22
import threading
33
import random
44
import time
55
import shutil
66

77
from pathlib import Path
88

9-
from scripts.py.func.audio_manager import speak_fallback
9+
import subprocess
10+
import sys
1011

11-
# --- KONFIGURATION (unabhängig) ---
12+
# scripts/py/func/checks/trigger_aura_maintenance.py:12
13+
REPO_ROOT = Path(__file__).resolve().parents[4]
1214
TEST_ROOTS = [
1315
Path("config/maps/plugins/git/de-DE/self_test_zip_tmp"),
1416
Path("config/maps/plugins/self_test_zip_tmp"),
1517
Path("config/maps/self_test_zip_tmp"),
1618
]
1719
EXPECTED_ZIP_NAME = "locked_folder.zip"
1820
LAST_CHECK_FILE = Path("/tmp/sl5_aura/last_smoke_zip_check")
19-
ZIP_TEST_TIMER = None
2021

22+
radio_script = REPO_ROOT / "config/maps/plugins/z_fallback_llm/de-DE/radio_deep_dive.py"
2123

22-
def trigger_background_zip_check(logger):
23-
"""Wird von Aura aufgerufen. Startet den Test nach 4 Sek. Stille."""
24-
global ZIP_TEST_TIMER
25-
if ZIP_TEST_TIMER:
26-
ZIP_TEST_TIMER.cancel()
24+
MAINTENANCE_TIMER = None
2725

28-
# Timer für 4 Sekunden Stille
29-
ZIP_TEST_TIMER = threading.Timer(4.0, _execute_smoke_test, args=[logger])
30-
ZIP_TEST_TIMER.daemon = True
31-
ZIP_TEST_TIMER.start()
26+
def trigger_aura_maintenance(logger):
27+
from scripts.py.func.audio_manager import speak_fallback
28+
"""Triggered by Aura. Starts maintenance tasks after 4s of silence."""
29+
global MAINTENANCE_TIMER
30+
if MAINTENANCE_TIMER:
31+
MAINTENANCE_TIMER.cancel()
32+
logger.info("Maintenance: Timer scheduled (4s silence)...")
33+
speak_fallback("Maintenance: Timer scheduled (4s silence)...", 'de-DE')
3234

33-
# Optionale Ansage, dass der Test in Warteschlange ist (kann man auch weglassen)
34-
# speak_fallback("Zip Test geplant", 'de-DE')
35+
MAINTENANCE_TIMER = threading.Timer(4.0, _execute_maintenance_tasks, args=[logger])
36+
MAINTENANCE_TIMER.daemon = True
37+
MAINTENANCE_TIMER.start()
3538

3639

37-
def _execute_smoke_test(logger):
38-
"""Die eigentliche Test-Logik (läuft im Hintergrund-Thread)."""
40+
def _execute_maintenance_tasks(logger):
41+
from scripts.py.func.audio_manager import speak_fallback
42+
logger.info("!!! Maintenance Task Started !!!")
43+
44+
"""Zentraler Manager für Hintergrund-Aufgaben."""
3945
try:
4046
# 1. Throttling: Nur alle 10 Minuten einen Test machen
4147
now = time.time()
4248
if LAST_CHECK_FILE.exists():
4349
try:
4450
last_time = float(LAST_CHECK_FILE.read_text())
45-
if now - last_time < 600: # 10 Min
51+
if now - last_time < 60 * 2:
4652
return
4753
except Exception:
4854
pass
4955

50-
LAST_CHECK_FILE.parent.mkdir(parents=True, exist_ok=True)
51-
LAST_CHECK_FILE.write_text(str(now))
56+
# 2. RADIO-AURA CACHE GENERIERUNG
57+
logger.info(f"Maintenance: Checking Path: {radio_script}")
58+
59+
if radio_script.exists():
60+
# Wir nutzen subprocess, um die venv-Umgebung und das if-main-Handling sauber zu trennen
61+
62+
result = subprocess.run([sys.executable, str(radio_script)], capture_output=True, text=True, check=False)
5263

53-
# 2. Zufälligen Pfad auswählen
64+
output = result.stdout.strip()
65+
logger.info(f"Radio Generator Output: {output}")
66+
67+
if "All documents are up to date" in output:
68+
logger.info("Maintenance: Radio Cache is already current.")
69+
speak_fallback("Maintenance: Radio Cache is already current.", 'de-DE')
70+
71+
else:
72+
logger.info("Maintenance: Radio-Aura Cache wurde aktualisiert.")
73+
speak_fallback("Maintenance: Radio-Aura Cache wurde aktualisiert", 'de-DE')
74+
75+
# subprocess.run([sys.executable, str(radio_script)], check=False)
76+
logger.info("Maintenance: Radio-Aura Cache fertig.")
77+
speak_fallback("Maintenance: Radio-Aura Cache fertig.", 'de-DE')
78+
79+
else:
80+
logger.error(f"Maintenance: PATH NOT FOUND: {radio_script}")
81+
82+
# 3. SMOKE-ZIP TEST
5483
root = random.choice(TEST_ROOTS)
5584
folder_nickname = root.parent.name if root.parent.name != "self_test_zip_tmp" else "Root"
85+
logger.info(f"Maintenance: Starting Smoke-Zip Test for: {root}")
5686

57-
logger.info(f"Auto-Zip: 🎲 Random Smoke Test startet für: {root}")
58-
speak_fallback(f"Auto-Zip Test startet in Ordner {folder_nickname}", 'de-DE')
59-
60-
# 3. Test-Ordner erstellen
6187
if _setup_scenario(root, logger):
6288
# 4. Warten und Prüfen (Aura zippt im Vorbeigehen)
6389
success = False
@@ -132,4 +158,4 @@ def _cleanup(root, logger):
132158
shutil.rmtree(root)
133159
logger.info(f"Auto-Zip: Cleaned up {root}")
134160
except Exception as e:
135-
logger.error(f"Auto-Zip: Cleanup failed for {root}: {e}")
161+
logger.error(f"Maintenance Fehler: {e}")

0 commit comments

Comments
 (0)