2.2 KiB
2.2 KiB
rb8001 계층 분리 리팩토링 계획
날짜: 2025-11-23
참고: 311_FastAPI_구조_원칙.md
목적
중복 대화 저장 버그 해결 및 계층 분리 원칙 준수
Phase 1: 중복 저장 해결 (완료)
문제: router.py + main.py 이중 저장
해결: troubleshooting/250924_대화저장_오류.md 참조
Phase 2: 계층 건너뛰기 해결 (부분 완료)
구현 완료: troubleshooting/251123_rb8001_endpoint_service_separation.md 참조
- main.py 엔드포인트 → routers/로 이동
- router → services 호출 구조 일부 정리
미완료 위반 사항:
- router/feedback_handler.py:58 - SessionLocal() 직접 사용 (원칙:164)
- router/intent_review_endpoint.py:21 - SessionLocal() 직접 사용
- router/slack_handler.py:77,202,361 - SessionLocal() 직접 사용
- services/startup_valuation.py:475 - asyncpg.connect() 직접 사용
- services/intent_bayes.py:57,117,160 - psycopg2.connect() 직접 사용
- services/coldmail_filter.py:182,208,255 - asyncpg.connect() 직접 사용
필요 작업:
- state/repositories/ 폴더 생성
- DB 접근 로직을 repositories로 분리
- services에서 repositories 호출
Phase 3: 폴더 구조 정리 (미착수)
현재 구조
app/
├── brain/ # services/brain/으로 이동 필요
├── llm/ # services/llm/으로 이동 필요
├── memory/ # services/memory/로 이동 필요
├── router/ # routers/로 이름 변경 필요
├── services/
└── state/
목표 구조 (311_FastAPI_구조_원칙.md:28-42)
app/
├── routers/ # 엔드포인트만
├── services/ # 비즈니스 로직
├── state/
│ ├── models/ # ORM 모델
│ └── repositories/ # DB 접근
└── schemas/ # Pydantic 모델
Phase 4: 파일 크기 제한 (미착수)
초과 파일 (300줄 기준):
- router.py: 915줄
- main.py: 747줄
- calendar_handler.py: 800줄+
분리 계획:
- 파일별 기능 단위로 분할
- 단일 책임 원칙 적용
참고
311_FastAPI_구조_원칙.mdtroubleshooting/250924_대화저장_오류.mdtroubleshooting/251123_rb8001_endpoint_service_separation.md