Files
variet-agent/_test_foreman.py

65 lines
1.8 KiB
Python

"""Foreman 목표 분해 로컬 테스트."""
import asyncio
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
sys.path.insert(0, ".")
from core.foreman import Foreman, ForemanSession
async def main():
foreman = Foreman()
# 세션 생성 (가짜 thread/user id)
session = foreman.create_session(
goal="개인 블로그 만들기",
thread_id=99999,
user_id=11111,
)
print(f"[1] 세션 생성: id={session.id}, goal={session.goal}")
# 목표 분해
print("[2] 목표 분해 중...")
try:
result = await foreman.decompose_goal(session)
print(f"[2] 분해 결과 ({len(result)}자):")
print(result[:500])
except Exception as e:
print(f"[2] 분해 실패: {e}")
return
# 현황 확인
print("\n[3] 현황:")
status = foreman._show_status(session)
print(status[:500])
# 태스크 수
total = 0
for t in session.tasks:
total += len(t.to_flat_list())
print(f"\n[4] 총 태스크: {total}")
# 자유형식 대화 (수정 요청)
print("\n[5] 수정 요청: '프론트는 Next.js로 해줘'...")
try:
freeform_result = await foreman.handle_freeform(session, "프론트는 Next.js로 해줘")
print(f"[5] 수정 결과 ({len(freeform_result)}자):")
print(freeform_result[:500])
except Exception as e:
print(f"[5] 수정 실패: {e}")
# 확정 (Vikunja 등록은 스킵 — 실제 등록은 Discord에서)
print("\n[6] 확정 (Vikunja 등록 시도)...")
try:
confirm_result = await foreman.handle_command(session, "확정", "")
print(f"[6] 확정 결과: {confirm_result[:300]}")
except Exception as e:
print(f"[6] 확정 실패: {e}")
print("\n=== 테스트 완료 ===")
asyncio.run(main())