기존 Stock/Music 에이전트 패턴을 따라 2개 신규 에이전트 도입. - Blog 에이전트 (10:00 매일): 트렌드 키워드 1개 자동 선택 → blog-lab 파이프라인 전체 (research→generate→market→review) 자동 실행 → 평가 점수와 본문 요약을 텔레그램 승인 요청으로 푸시 → 승인 시 published 전환, 거절 시 작업 종료 - Realestate 에이전트 (09:15 매일): realestate-lab 수집 트리거 → 신규 매칭 상위 5건 + 대시보드를 텔레그램 리포트 → 조회한 매칭은 자동 읽음 처리 - service_proxy: blog-lab/realestate-lab REST 호출 래퍼 추가 - agents 레지스트리 + DB 시드 + 스케줄러 3개 잡 등록 - docker-compose: agent-office에 BLOG_LAB_URL/REALESTATE_LAB_URL 주입 - README: 에이전트 구성 표 + 명령어 + 스케줄러 잡 정리 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
import asyncio
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
|
|
from .agents import AGENT_REGISTRY
|
|
|
|
scheduler = AsyncIOScheduler(timezone="Asia/Seoul")
|
|
|
|
async def _check_idle_breaks():
|
|
for agent in AGENT_REGISTRY.values():
|
|
await agent.check_idle_break()
|
|
|
|
async def _run_stock_schedule():
|
|
agent = AGENT_REGISTRY.get("stock")
|
|
if agent:
|
|
await agent.on_schedule()
|
|
|
|
async def _run_realestate_schedule():
|
|
agent = AGENT_REGISTRY.get("realestate")
|
|
if agent:
|
|
await agent.on_schedule()
|
|
|
|
async def _run_blog_schedule():
|
|
agent = AGENT_REGISTRY.get("blog")
|
|
if agent:
|
|
await agent.on_schedule()
|
|
|
|
def init_scheduler():
|
|
scheduler.add_job(_run_stock_schedule, "cron", hour=8, minute=0, id="stock_news")
|
|
scheduler.add_job(_run_realestate_schedule, "cron", hour=9, minute=15, id="realestate_report")
|
|
scheduler.add_job(_run_blog_schedule, "cron", hour=10, minute=0, id="blog_pipeline")
|
|
scheduler.add_job(_check_idle_breaks, "interval", seconds=60, id="idle_check")
|
|
scheduler.start()
|