docs: 프롬프트 DB 폐루프 미연결 트러블슈팅 종결 처리

P1 구현 워크로그 작성, 트러블슈팅 종결 상태 반영

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
happybell80 2026-03-19 21:23:11 +09:00
parent 49cc3b2144
commit f62d48283d
2 changed files with 44 additions and 0 deletions

View File

@ -9,7 +9,11 @@ tags: [rb8001, prompt-db, self-improvement, tracking, troubleshooting]
**관련 파일**: `rb8001/app/services/message_tracking_service.py`, `rb8001/app/router/message_endpoint.py`, `rb8001/app/state/prompt_management_repository.py`
**상위 원칙**: [문서 작성 원칙](../../book/300_architecture/312_writing-principles.md), [Backend Coding Principles](../../book/300_architecture/311_backend_coding_principles.md)
**상태**: 종결 (2026-03-19)
**종결 근거**: P1 폐루프 연결 구현 완료. DB 활성 프롬프트가 응답 생성 전에 주입됨. v2 활성화 시 실제 응답 변화 확인. 테스트 7건 통과, 24 서버 배포 검증 완료. 상세는 [P1 구현 워크로그](../worklog/260319_프롬프트DB_폐루프_P1_구현_및_검증완료.md) 참조.
## 관련 문서
- [프롬프트 DB 폐루프 P1 구현 및 검증 완료](../worklog/260319_프롬프트DB_폐루프_P1_구현_및_검증완료.md)
- [프롬프트 DB 폐루프 및 하드코딩 잔존 전수 조사 리서치](../research/260319_프롬프트DB_폐루프_및_하드코딩_잔존_전수조사_리서치.md)
- [프롬프트 동적 관리 시스템 계획](../plans/251225_프롬프트_동적관리_계획.md)
- [자기개선 루프 DB/서비스 구현 실행계획](../plans/260303_자기개선루프_DB_구현_실행계획.md)

View File

@ -0,0 +1,40 @@
---
tags: [rb8001, prompt-db, closed-loop, worklog]
---
# 프롬프트 DB 폐루프 P1 구현 및 검증 완료
## 관련 문서
- [프롬프트 DB 응답생성 폐루프 미연결](../troubleshooting/260310_프롬프트DB_응답생성_폐루프_미연결.md)
- [프롬프트 DB 폐루프 및 하드코딩 잔존 전수 조사 리서치](../research/260319_프롬프트DB_폐루프_및_하드코딩_잔존_전수조사_리서치.md)
- [프롬프트 동적 관리 시스템 계획](../plans/251225_프롬프트_동적관리_계획.md)
## 완료 요약
- `llm_service.py``process_request()` 진입 시 DB 활성 프롬프트를 조회하여 `context['db_system_prompt']`로 주입하는 폐루프를 연결했습니다.
- `openai_handler.py`, `gemini_handler.py` 모두 `db_system_prompt`가 있으면 하드코딩 대신 사용합니다.
- P1 프롬프트 2건(`system_chat_openai`, `system_chat_gemini`)을 DB에 v1으로 적재했습니다.
- TTL 60초 메모리 캐시로 DB 부하를 방지합니다.
- `skip_default_prompt` 경로(RAG 등)는 영향 없음을 테스트로 확인했습니다.
## 코드 반영 내용
- `app/services/llm/llm_service.py`: `_get_active_prompt_from_db()` 캐시 함수 추가, `process_request()` 내 DB 프롬프트 주입 로직
- `app/services/llm/openai_handler.py`: `db_system_prompt` 우선 사용 (chat, stream_chat 두 경로)
- `app/services/llm/gemini_handler.py`: `db_system_prompt` 우선 사용 (chat 두 경로)
- `scripts/seed_p1_prompts.py`: P1 프롬프트 DB 적재 스크립트
- `tests/test_prompt_db_closed_loop.py`: 7건 테스트
## 검증 결과
- 단위 테스트: 7 passed (캐시 히트, 캐시 만료, DB 실패, DB 없음, DB 주입, fallback, RAG 비영향)
- DB 적재: `system_chat_openai` v1 active (id=7), `system_chat_gemini` v1 active (id=8)
- 폐루프 검증: v2 생성 → 활성화 → 캐시 비움 → DB에서 v2 프롬프트 읽힘 → v1 복원 정상
- 배포: 24 서버 rb8001 재빌드 후 health 정상
- rb8001 commit: `2bda17f`
## 닫힘 기준 충족 확인
- [x] 최소 1개 운영 경로에서 활성 프롬프트 버전이 응답 생성 전에 실제로 주입된다
- [x] DB에서 활성 버전을 바꾸면 실제 응답이 바뀐다 (v2 TEST-V2 검증)
- [x] DB 조회 실패 시 하드코딩 fallback 정상 동작
- [x] RAG 경로 영향 없음
## 결론
- 트러블슈팅 `260310_프롬프트DB_응답생성_폐루프_미연결.md`는 종결합니다.