feat(ai_trade): poll_loop가 매 cycle 끝에 expired signal purge (F5 part 4)

Phase 5 consumer(agent-office /signal)가 안 붙은 상태에서도 state.signals가
무한 누적되지 않도록 매 cycle 끝에 state.purge_expired_signals(now) 호출.
expires_at < now인 signal 자동 제거.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-25 20:01:40 +09:00
parent e4d02b8059
commit ac6409605c
2 changed files with 66 additions and 0 deletions

View File

@@ -54,6 +54,11 @@ async def poll_loop(
generate_signals(state, dedup, settings)
except Exception:
logger.exception("generate_signals failed")
# F5: cycle 끝에 expired signal purge (consumer 미사용 케이스 보호)
try:
state.purge_expired_signals(datetime.now(KST))
except Exception:
logger.exception("purge_expired_signals failed")
interval = _next_interval(now)
try:
await asyncio.wait_for(shutdown.wait(), timeout=interval)