DOCS/journey/plans/251204_addressing_test_report.md

3.2 KiB

감정 기반 호칭 시스템 테스트 결과

작성일: 2025-12-04
작성자: happybell80
테스트 대상: 김종태 (UUID: 1a7ebe8c-1cfd-4acf-a821-2cc526313706, position: CTO)


테스트 결과: 6/7 성공 (85.7%)

성공한 시나리오

번호 메시지 감정 예상 호칭 실제 응답 결과
2 "너무 힘들어요... 스트레스 받아요" sadness CTO님 "CTO님, 얼마나 힘드신지..."
3 "오늘 날씨 어때요?" neutral CTO님 "CTO님, 오늘 날씨는..."
4 "감사합니다!" happiness CTO님 "CTO님, 제가 조금이라도..."
5 "화가 나요..." anger CTO님 "CTO님, 얼마나 힘든지..."
6 "불안하고 걱정돼요..." fear CTO님 "CTO님, 얼마나 불안하고..."
7 "좋은 아침이에요!" happiness CTO님 "CTO님, 좋은 아침입니다!"

실패한 시나리오

번호 메시지 감정 예상 호칭 실제 응답 결과
1 "고마워요! 오늘 일정 알려주세요" happiness CTO님 "12월 04일에 등록된 일정이 없습니다."

실패 원인: 일정 조회 의도로 분류되어 calendar 스킬로 라우팅, 해당 스킬에서 호칭 미사용


구현 완료 사항

신규 파일

  • app/services/addressing_service.py (95줄): 호칭 결정 비즈니스 로직

수정 파일

  • app/state/database.py: user 조회, 감정 평균 함수 추가 (108줄)
  • app/router/router.py: 감정 분석 후 호칭 결정 로직 통합 (4줄)
  • app/services/llm/llm_service.py: system_instruction에 호칭 지시 추가 (4줄)
  • DOCS/book/300_architecture/database/tables.md: short_name 필드 추가 (1줄)

총 코드 변경: 약 212줄

Git 커밋

  • a26e7b6: Add emotion-based addressing system
  • c8052f7: Fix SQL query: INTERVAL parameter binding

로그 검증

Emotion detected: happiness (confidence: 0.99)
Preferred name: CTO님

호칭 결정 로직 정상 작동 LLM에 호칭 전달 확인 응답에 호칭 포함 확인


계층 분리 원칙 준수

router.py (HTTP)
    ↓
addressing_service.py (비즈니스 로직)
    ↓
database.py (DB CRUD)

311_FastAPI_구조_원칙.md 준수 계층 간 책임 명확히 분리 순환 참조 없음


향후 개선 사항

  1. calendar 스킬 통합: 일정 조회 응답에도 호칭 포함
  2. nickname 테스트: metadata에 nickname 설정 후 테스트
  3. 감정 변화 테스트: 연속 대화에서 감정에 따른 호칭 변화 확인
  4. A/B 테스트: 사용자 만족도 비교 (호칭 on/off)

교훈

  1. API 응답 구조 확인 필수: 테스트 스크립트 작성 시 실제 응답 필드명 확인 필요
  2. SQL 파라미터 바인딩: INTERVAL 같은 SQL 키워드는 f-string으로 처리
  3. 로그 기반 디버깅: docker logs로 실제 동작 확인 (Preferred name 로그)
  4. TDD 효과: 시나리오 먼저 작성 → 코드 구현 → 테스트 → 버그 수정 흐름 효과적