1.8 KiB
1.8 KiB
main.py 엔드포인트 라우터 이동
작성일: 2025-12-23
문제: main.py에 16개 엔드포인트가 직접 정의되어 원칙 위반
해결: 모든 엔드포인트를 app/router/로 이동
문제
main.py에 @app.post(), @app.get() 데코레이터로 직접 정의된 엔드포인트 16개 존재.
원칙 문서(311_FastAPI_구조_원칙.md)에 따르면 main.py는 "앱 실행, 라우터 등록만" 담당해야 함.
해결
이동 계획
- feedback_endpoint.py (신규):
/api/feedback/chat - llm_endpoint.py (확장):
/api/llm/extract추가 - llm_complete_endpoint.py (신규):
/complete(skill-slack 호환성) - slack_endpoint.py (확장):
/api/slack/interactive추가 - system_endpoint.py (신규):
/health,/stats,/api/config - schedule_endpoint.py (신규):
/api/schedule/* - dm_endpoint.py (확장):
/send-email-summary추가, JWT 인증 추가 - history_endpoint.py (신규):
/api/history
의존성 주입 패턴
system_endpoint.py:set_router_instance()로 router 인스턴스 주입schedule_endpoint.py:set_scheduler()로 scheduler 인스턴스 주입
작업 방식
TDD로 진행:
- 각 엔드포인트별 테스트 파일 작성
- router 파일 생성/확장
- main.py에서 엔드포인트 제거 및 라우터 등록
결과
- main.py에 남은
@app.데코레이터는@app.on_event()만 남음 (이벤트 핸들러) - 모든 엔드포인트가 router로 분리 완료
- e2e 테스트 통과 확인
- 기존 기능 정상 동작 확인
교훈
- 원칙 준수: main.py는 라우터 등록만 담당하도록 엄격히 분리
- 의존성 주입: router, scheduler 등 인스턴스는 함수로 주입하는 패턴 사용
- TDD: 테스트 먼저 작성 후 구현하여 안정성 확보