diff --git a/_test_foreman.py b/_test_foreman.py new file mode 100644 index 0000000..2c80c8b --- /dev/null +++ b/_test_foreman.py @@ -0,0 +1,64 @@ +"""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())