init
This commit is contained in:
27
backend/auto_loop.py
Normal file
27
backend/auto_loop.py
Normal file
@@ -0,0 +1,27 @@
|
||||
"""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"
|
||||
Reference in New Issue
Block a user