Update emotion addressing plan: add services layer (follow 311 principles)
This commit is contained in:
parent
817a619fd3
commit
51e9930b98
@ -45,31 +45,47 @@ LLM 역할: 결정된 호칭 자연스럽게 사용만
|
||||
**부정 감정**: fear, anger, sadness, disgust
|
||||
**감정 소스**: emotion_readings 최근 10분 평균 (현재 메시지 가중치 2배)
|
||||
|
||||
## 구현
|
||||
## 구현 (계층 분리 원칙 준수)
|
||||
|
||||
### 1. database.py
|
||||
**추가**: `get_user_preferred_name(user_id, current_emotion) -> str`
|
||||
- user 테이블에서 name, metadata 조회
|
||||
- emotion_readings 최근 10분 평균 계산
|
||||
- 규칙 적용하여 호칭 반환
|
||||
### 계층 구조
|
||||
```
|
||||
router.py (감정 분석 후)
|
||||
↓
|
||||
services/addressing_service.py (신규, 호칭 결정 비즈니스 로직)
|
||||
↓
|
||||
state/database.py (DB CRUD만)
|
||||
```
|
||||
|
||||
### 2. router.py:264-283
|
||||
**추가**:
|
||||
### 1. services/addressing_service.py (신규)
|
||||
**기능**: 호칭 결정 비즈니스 로직
|
||||
- `get_preferred_name(user_id: str, current_emotion: str) -> str`
|
||||
- state 호출: user 정보, 최근 감정 조회
|
||||
- 호칭 규칙 적용 (직책 → 긍정감정=nickname → 부정감정=정식이름)
|
||||
- 약 100줄 예상
|
||||
|
||||
### 2. state/database.py
|
||||
**기존 함수 확인 후**:
|
||||
- 없으면 추가: `get_user_basic_info(user_id)` - name, metadata 반환
|
||||
- 없으면 추가: `get_recent_emotions(user_id, minutes=10)` - 감정 평균
|
||||
- DB CRUD만, 비즈니스 로직 금지
|
||||
|
||||
### 3. router.py:264-283
|
||||
**수정**: 감정 분석 후 addressing_service 호출
|
||||
```python
|
||||
# 감정 분석 후
|
||||
preferred_name = await get_user_preferred_name(user_id, user_emotion)
|
||||
from app.services.addressing_service import get_preferred_name
|
||||
preferred_name = await get_preferred_name(user_id, user_emotion)
|
||||
context['preferred_name'] = preferred_name
|
||||
```
|
||||
|
||||
### 3. llm_service.py:131-132
|
||||
**수정**: system_instruction에 호칭 지시 추가
|
||||
### 4. llm_service.py:131-132
|
||||
**수정**: system_instruction에 호칭 지시
|
||||
```python
|
||||
preferred_name = enhanced_context.get('preferred_name', '사용자')
|
||||
system_instruction += f"사용자를 '{preferred_name}'으로 호칭하세요. "
|
||||
```
|
||||
|
||||
### 4. tables.md
|
||||
**추가**: user 테이블 metadata 컬럼 설명
|
||||
### 5. tables.md
|
||||
**추가**: user.metadata 컬럼 문서화
|
||||
```
|
||||
| metadata | JSONB | YES | nickname, position, short_name, preferences |
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user