docs: 로빙 일기 시스템 구현 완료 문서 작성 및 계획 문서 업데이트
This commit is contained in:
parent
4da0326034
commit
d2318baac2
@ -184,21 +184,32 @@ CREATE INDEX idx_activity_log_type ON activity_log(activity_type);
|
||||
|
||||
1. ✅ **DB 테이블 생성**: `robeing_diary`, `activity_log` 테이블 생성 완료 (`rb8001/app/state/diary_repository.py`)
|
||||
2. ⏳ **활동 로그 기록**: 스킬 실행 시 `activity_log`에 자동 기록 로직 추가
|
||||
3. ⏳ **Diary Aggregator 구현**: `rb8001/app/services/diary/aggregator.py` 생성, 모든 데이터 소스 집계
|
||||
4. ⏳ **일기 생성 로직**: `rb8001/app/services/diary/generator.py` 생성, LLM으로 일기 텍스트 생성
|
||||
5. ⏳ **스케줄러 등록**: `rb8001/app/scheduler/jobs/diary_generator.py` 생성, `main.py`에 등록
|
||||
6. ⏳ **API 엔드포인트**: `rb8001/app/router/diary.py` 생성, `/api/diary/{date}` 구현
|
||||
7. ⏳ **관리자 대시보드**: admin-dashboard에 일기 목록/상세 페이지 추가
|
||||
3. ✅ **Diary Aggregator 구현**: `rb8001/app/services/diary/aggregator.py` 생성, 모든 데이터 소스 집계 완료
|
||||
4. ✅ **일기 생성 로직**: `rb8001/app/services/diary/generator.py` 생성, LLM으로 일기 텍스트 생성 완료
|
||||
5. ✅ **스케줄러 등록**: `rb8001/app/scheduler/jobs/diary_generator.py` 생성, `main.py`에 등록 완료
|
||||
6. ✅ **API 엔드포인트**: `rb8001/app/router/diary_endpoint.py` 생성, `/api/diary/{date}` 구현 완료
|
||||
7. ✅ **관리자 대시보드**: admin-dashboard에 일기 목록/상세 페이지 추가 완료
|
||||
8. ⏳ **DOCS 동기화 스크립트**: 선택적으로 별도 스크립트로 DOCS 동기화
|
||||
|
||||
## 진행 상황
|
||||
## 구현 완료
|
||||
|
||||
**완료 (2025-12-09)**:
|
||||
- DB 테이블 스키마 정의 및 생성 (`_ensure_tables()`)
|
||||
- Repository 함수 구현 (`save_diary`, `get_diary`, `save_activity_log`)
|
||||
- 테스트 완료 (더미 데이터 저장/조회 검증)
|
||||
**완료일**: 2025-12-23
|
||||
|
||||
**다음 단계**: Diary Aggregator 및 일기 생성 로직 구현
|
||||
**구현 완료 문서**: [로빙 일기 시스템 구현 완료](../../journey/troubleshooting/251223_로빙_일기_시스템_구현_완료.md)
|
||||
|
||||
**주요 완료 사항**:
|
||||
- ✅ DB 테이블 스키마 정의 및 생성 (`_ensure_tables()`)
|
||||
- ✅ Repository 함수 구현 (`save_diary`, `get_diary`, `save_activity_log`)
|
||||
- ✅ Diary Aggregator 구현 (대화/활동/감정/성장/이슈 데이터 집계)
|
||||
- ✅ LLM 일기 생성 로직 구현 (Gemini 사용)
|
||||
- ✅ 스케줄러 등록 (매일 오전 2시 자동 생성)
|
||||
- ✅ API 엔드포인트 구현 (`GET /api/diary/{date}`)
|
||||
- ✅ Admin Dashboard 일기 페이지 추가 (목록/상세 조회)
|
||||
- ✅ 일기 클릭 시 본문 표시 버그 수정
|
||||
|
||||
**미구현 항목**:
|
||||
- ⏳ 스킬 실행 시 `activity_log` 자동 기록 로직 (수동 기록 가능)
|
||||
- ⏳ DOCS 동기화 스크립트 (선택적)
|
||||
|
||||
---
|
||||
|
||||
|
||||
143
journey/troubleshooting/251223_로빙_일기_시스템_구현_완료.md
Normal file
143
journey/troubleshooting/251223_로빙_일기_시스템_구현_완료.md
Normal file
@ -0,0 +1,143 @@
|
||||
# 로빙 일기 시스템 구현 완료
|
||||
|
||||
**날짜**: 2025-12-23
|
||||
**작성자**: Claude
|
||||
**관련 문서**: [로빙 일기 시스템 계획](../plans/251117_claude_robeing_diary_시스템_계획.md)
|
||||
|
||||
---
|
||||
|
||||
## 구현 완료 사항
|
||||
|
||||
### 1. 백엔드 구현 (rb8001)
|
||||
|
||||
**파일 위치**:
|
||||
- `rb8001/app/state/diary_repository.py` - DB 테이블 및 저장/조회 함수
|
||||
- `rb8001/app/services/diary/aggregator.py` - 데이터 집계
|
||||
- `rb8001/app/services/diary/generator.py` - LLM 일기 생성
|
||||
- `rb8001/app/router/diary_endpoint.py` - API 엔드포인트
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py` - 스케줄러 작업
|
||||
- `rb8001/main.py` - 스케줄러 등록
|
||||
|
||||
**기능**:
|
||||
- 매일 오전 2시 자동 일기 생성 (APScheduler cron)
|
||||
- 데이터 집계: 대화 로그, 활동 로그, 감정 데이터, 성장 데이터, 이슈 데이터
|
||||
- LLM(Gemini)으로 마크다운 형식 일기 생성
|
||||
- PostgreSQL `robeing_diary` 테이블에 저장
|
||||
- API: `GET /api/diary/{date}?robeing_id=rb8001`
|
||||
|
||||
### 2. Admin Dashboard 구현
|
||||
|
||||
**파일 위치**:
|
||||
- `admin-dashboard/frontend/index.html` - 일기 페이지 UI
|
||||
- `admin-dashboard/frontend/app.js` - 일기 목록/상세 로드 함수
|
||||
- `admin-dashboard/backend/admin_routes.py` - 일기 API 프록시
|
||||
- `admin-dashboard/frontend/styles.css` - 일기 스타일
|
||||
|
||||
**기능**:
|
||||
- 일기 목록 조회 (최근 30일)
|
||||
- 일기 상세 조회 (날짜별)
|
||||
- 날짜 입력으로 조회
|
||||
- rb8001 API 프록시 (`/admin/api/diary/list`, `/admin/api/diary/{date}`)
|
||||
|
||||
### 3. 버그 수정
|
||||
|
||||
**문제**: 일기 목록에서 항목 클릭 시 본문이 표시되지 않음
|
||||
|
||||
**원인**: `loadDiaryByDate` 함수가 IIFE 내부에 있어 전역 스코프에서 접근 불가
|
||||
|
||||
**해결**: `loadDiary`, `loadDiaryByDate` 함수를 IIFE 밖으로 이동하여 전역 함수로 노출
|
||||
|
||||
**커밋**: `d734322` - fix: 일기 클릭 시 본문 표시 안 되는 문제 수정 (전역 함수로 노출)
|
||||
|
||||
---
|
||||
|
||||
## 알려진 이슈
|
||||
|
||||
### robeing 테이블 스키마 불일치
|
||||
|
||||
**문제**: `DiaryAggregator._get_growth()` 함수에서 `robeing_id` 컬럼을 조회하나 실제 테이블에는 해당 컬럼이 없음
|
||||
|
||||
**영향**: 성장 데이터 조회 실패 (일기 생성에는 영향 없음, 빈 stats로 저장)
|
||||
|
||||
**해결 필요**: `robeing` 테이블 스키마 확인 후 쿼리 수정 또는 테이블 스키마 수정
|
||||
|
||||
---
|
||||
|
||||
## 테스트 결과
|
||||
|
||||
### 일기 생성 테스트 (2025-12-22)
|
||||
|
||||
```bash
|
||||
docker exec rb8001 python /code/scripts/generate_diary_manual.py
|
||||
```
|
||||
|
||||
**결과**:
|
||||
- ✅ 일기 생성 성공
|
||||
- ✅ DB 저장 성공
|
||||
- ✅ API 조회 정상 동작
|
||||
- ⚠️ 성장 데이터 조회 실패 (robeing_id 컬럼 없음)
|
||||
|
||||
### API 테스트
|
||||
|
||||
```bash
|
||||
curl "http://localhost:8001/api/diary/2025-12-22?robeing_id=rb8001"
|
||||
```
|
||||
|
||||
**응답**:
|
||||
```json
|
||||
{
|
||||
"date": "2025-12-22",
|
||||
"robeing_id": "rb8001",
|
||||
"content": "# 로빙 일기 – 2025-12-22\n\n## 오늘 한 일\n...",
|
||||
"summary": "# 로빙 일기 – 2025-12-22",
|
||||
"dominant_emotion": "surprise",
|
||||
"stats": {}
|
||||
}
|
||||
```
|
||||
|
||||
### 브라우저 UI 테스트
|
||||
|
||||
- ✅ 일기 탭 표시 확인
|
||||
- ✅ 일기 목록 로드 확인
|
||||
- ✅ 일기 클릭 시 본문 표시 확인 (수정 후)
|
||||
|
||||
---
|
||||
|
||||
## 구현 단계별 완료 현황
|
||||
|
||||
1. ✅ **DB 테이블 생성**: `robeing_diary`, `activity_log` 테이블 생성 완료
|
||||
2. ⏳ **활동 로그 기록**: 스킬 실행 시 자동 기록 로직 미구현 (수동 기록 가능)
|
||||
3. ✅ **Diary Aggregator 구현**: 모든 데이터 소스 집계 완료
|
||||
4. ✅ **일기 생성 로직**: LLM으로 일기 텍스트 생성 완료
|
||||
5. ✅ **스케줄러 등록**: 매일 오전 2시 자동 생성 등록 완료
|
||||
6. ✅ **API 엔드포인트**: `/api/diary/{date}` 구현 완료
|
||||
7. ✅ **관리자 대시보드**: 일기 목록/상세 페이지 추가 완료
|
||||
8. ⏳ **DOCS 동기화 스크립트**: 미구현 (선택적)
|
||||
|
||||
---
|
||||
|
||||
## 교훈
|
||||
|
||||
### 1. 전역 함수 노출 필요성
|
||||
- `onclick` 핸들러에서 호출하는 함수는 전역 스코프에 있어야 함
|
||||
- IIFE 내부 함수는 외부에서 접근 불가
|
||||
- **해결**: 필요한 함수는 IIFE 밖으로 분리하여 전역 함수로 노출
|
||||
|
||||
### 2. API 응답 필드명 일관성
|
||||
- 백엔드 API는 `content` 필드 사용
|
||||
- 프론트엔드에서 `content || full_content`로 호환 처리
|
||||
- **권장**: API 스펙 문서화 및 필드명 통일
|
||||
|
||||
### 3. DB 스키마 검증
|
||||
- ORM 모델과 실제 테이블 스키마 불일치 가능성
|
||||
- **권장**: 테이블 생성 시 스키마 검증 로직 추가 또는 마이그레이션 스크립트 사용
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- [로빙 일기 시스템 계획](../plans/251117_claude_robeing_diary_시스템_계획.md)
|
||||
- `rb8001/app/services/diary/aggregator.py` - 데이터 집계 로직
|
||||
- `rb8001/app/services/diary/generator.py` - LLM 일기 생성 로직
|
||||
- `admin-dashboard/frontend/app.js` - 일기 UI 로직
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user