# diary_reflection_pipeline 워크플로우

## 목적
매일 새벽 2시에 전날의 로빙 일기를 자동 생성하고 Slack에 요약을 게시한다. 수동 트리거도 지원한다.

## 흐름
```
Daily at 2AM  ─┐
Manual Trigger ─┤→ Set Yesterday Date → Generate Diary (rb8001) → Get Diary Content → Post to Slack
```

## 주요 노드
| 노드 | 설명 |
|---|---|
| Daily at 2AM | cron `0 2 * * *` |
| Manual Trigger | `POST /admin/diary/trigger` (수동 실행용) |
| Set Yesterday Date | 전날 날짜(YYYY-MM-DD) 계산 |
| Generate Diary (rb8001) | `POST :8001/api/diary/generate` (timeout 300초) |
| Get Diary Content | `GET :8001/api/diary/{date}?robeing_id=rb8001` |
| Post to Slack | 일기 요약 + 감정 + 대시보드 링크를 Slack에 게시 |

## 엔드포인트
- 인바운드: `POST /admin/diary/trigger` (n8n webhook, 수동)
- 아웃바운드: `POST http://192.168.219.52:8001/api/diary/generate`
- 아웃바운드: `GET http://192.168.219.52:8001/api/diary/{date}`
- 아웃바운드: Slack `chat.postMessage`

## 260319 변경 영향

이 워크플로우는 rb8001의 `/api/diary/generate`를 호출한다. 내부적으로 `llm_service.process_request()`가 `task_type=chat`, `context={}`로 실행되므로:

- **프롬프트 DB v3 주입: 적용됨** -- DB `prompt_versions` 활성 프롬프트가 일기 생성 시 system prompt로 주입된다.
- **neutral 감정 constraints 생략: 적용됨** -- 일기 생성 시 감정이 neutral이면 감정 constraints가 생략된다.
- 이전(~260318)에는 하드코딩 프롬프트 + 모든 감정에 constraints 주입이었으므로, 일기 톤에 변화가 있을 수 있다.

## 관련 문서
- [service_health_check](./service_health_check.md)
