docs: router 리팩터링 관련 문서 추가

This commit is contained in:
Claude-51124 2025-12-23 23:06:24 +09:00
parent b94e60d87b
commit 08c02ec1bf
2 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,75 @@
# 짧은 후속 질문 LLM 우선 해결 계획
**작성일**: 2025-12-23
**목표**: 실패하는 질문 18개를 LLM 우선 접근 원칙으로 해결
**원칙**: `311_FastAPI_구조_원칙.md` 섹션 13 참고
**테스트 결과**: `rb8001/tests/test_failed_questions_results.md`
---
## 문제
**실패한 질문 18개** (총 23개 중 78%):
- 짧은 후속: "어디서?", "언제?", "누구랑?", "뭐야?"
- 맥락 의존: "그거 어떻게 됐어?", "결과는?", "그럼 어떻게 할까?"
- 모호한: "어떻게 생각해?", "괜찮아?"
- 부정/거부: "안 해도 돼", "취소해줘", "보내지 마"
- 비교/선택: "어느 게 나아?", "A와 B 중에 뭐가 좋아?"
- 시간 모호: "언제 했어?"
- 상태 확인: "지금 뭐 하고 있어?", "작업 끝났어?"
- 정보 요청: "너는 뭘 할 수 있어?"
**현재 문제**: CONTEXT_FOLLOWUP Intent 구현되어 있으나 패턴 매칭 미작동, 규칙 기반 접근으로 정확도 저하
---
## 아키텍처
### 워크플로우
```
사용자 질문
FastPath (명확한 케이스만) → 성공 시 즉시 처리
↓ 실패
짧은 질문 감지 (len <= 10 또는 확신도 < 0.7)
LLM 질문 확장 (맥락 포함)
LLM 의도 분류 (맥락 포함)
LangGraph 워크플로우 (엔티티 추출 → 스킬 선택)
스킬 실행
```
### 필요 작업
1. ✅ LLM 질문 확장 기능 추가 (완료)
2. ✅ LLM 의도 분류 맥락 포함 강화 (완료)
3. ✅ LangGraph 기반 워크플로우 구현 (완료, 기본 활성화)
4. ✅ 세션 맥락 LLM 전달 (완료)
---
## 구현 단계
| Phase | 작업 | 상태 |
|-------|------|------|
| 1 | LLM 질문 확장 구현 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` |
| 2 | LLM 의도 분류 강화 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` |
| 3 | LangGraph 워크플로우 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` |
| 4 | 세션 맥락 통합 | ✅ 완료 → `troubleshooting/251223_짧은_후속_질문_LLM_Phase1234_구현.md` |
---
## 목표
- 실패한 질문 18개 → 3개 이하 (78% → 13%)
- 짧은 후속 질문 정확도: 30% → 90% 이상
- 맥락 의존 질문 정확도: 30% → 85% 이상
---
## 참고
- `311_FastAPI_구조_원칙.md` (섹션 13: LLM 우선 접근 원칙)
- `context_followup_question_solutions.md` (연구 문서)

View File

@ -0,0 +1,33 @@
# router._call_internal_llm 서비스 계층 이동
**날짜**: 2025-12-23
**작성자**: happybell80
**관련 파일**: `app/router/router.py:321`, `app/services/llm/internal_llm_service.py`
---
## 문제 상황
- `router.py``_call_internal_llm` 메서드가 비즈니스 로직 포함
- 계층 분리 원칙 위반: router는 HTTP 처리만, 비즈니스 로직은 services에
## 해결 방안
- `app/services/llm/internal_llm_service.py` 생성
- `call_internal_llm` 함수로 이동 (감정 분석, 윤리 확인, 이모지 제거 포함)
- 호출부 수정: `message_service.py:500,616`, `main.py:121,536,583`, `llm_endpoint.py:35,73,104`, `dm_skill.py:337`
- `router.py:321-442`에서 `_call_internal_llm` 제거
## 구현 완료
- 서비스 생성 완료
- 모든 호출부 수정 완료
- router에서 제거 완료
- 테스트 통과 확인
## 교훈
- 계층 분리 원칙 준수: router는 라우팅만, 비즈니스 로직은 services로
- TDD 접근: 테스트 작성 → 구현 → 리팩토링 순서로 진행
- 문서 작성 원칙 준수: 파일명:줄번호로 위치 명시, 핵심만 간결하게