Files
creator2/backend/auto_loop.py
2026-07-10 15:43:11 +02:00

28 lines
1.0 KiB
Python

"""QA→Repair-Loop-Primitiv, DB-frei. Drei Abbruchbedingungen (Lektion 77):
Ziel erreicht / echter Stillstand (nichts bewegt UND keine Verbesserung) / hartes
Limit. Transiente Verschlechterung ist erlaubt — eine bewegte Runde darf die Note
kurzfristig senken."""
import logging
from config import LOOP_MAX_ITER
log = logging.getLogger("creator2.auto_loop")
VOLL = 10.0
async def auto_repair_loop(ebene: str, erst_note: float, reparieren,
max_iter: int = LOOP_MAX_ITER) -> tuple[float, str]:
"""reparieren() → (neue_note, bewegt). → (note, grund fertig|stillstand|limit)."""
note = erst_note
for i in range(max_iter):
if note >= VOLL:
return note, "fertig"
neue_note, bewegt = await reparieren()
log.info("%s: Iteration %d — Note %.1f%.1f, bewegt=%s", ebene, i + 1, note, neue_note, bewegt)
if not bewegt and neue_note <= note:
return neue_note, "stillstand"
note = neue_note
return note, "fertig" if note >= VOLL else "limit"