# 뉴스 게시 이력 조회 API 구현 완료 **날짜**: 2026-01-27 **작성자**: happybell80 **관련 파일**: - `rb8001/app/router/news_endpoint.py` - `rb8001/app/services/news_service.py` - `rb8001/app/state/repositories/news_repository.py` - `rb8001/app/schemas/news_schema.py` - `rb8001/app/services/skills/news_posting_skill.py` --- ## 문제 상황 - 사용자가 게시한 뉴스 이력을 조회할 수 있는 API 부재 - `rb_news` 테이블에 `selected_by_user_id`, `slack_user_id` 컬럼 없음 - UUID 변환 로직 없어 Slack ID가 그대로 저장됨 ## 해결 방안 ### 1. DB 스키마 수정 - `migrate_rb_news_add_user_columns.sql`: `selected_by_user_id`, `selected_at`, `slack_user_id` 컬럼 추가 - conversation_log 패턴 준수: UUID와 Slack ID 이중 저장 ### 2. 기존 코드 수정 - `news_posting_skill.py:handle_publish_action()`: Slack ID → UUID 변환 로직 추가 (`get_user_uuid_by_slack_id()` 사용) - `news_posting_skill.py:update_news_published_status()`: `user_uuid`, `slack_user_id` 파라미터 추가, DB 업데이트 ### 3. 계층별 구현 (TDD) - Repository: `news_repository.py` - 페이지네이션, 필터링 지원 - Schema: `news_schema.py` - `NewsHistoryResponse`, `NewsHistoryItem` - Service: `news_service.py` - UUID 검증, 기본값 설정 - Router: `news_endpoint.py` - `GET /api/news/history` 엔드포인트 ## 구현 완료 - 커밋: `b54a577` (2026-01-27) - API 테스트: 정상 동작 확인 - DB 마이그레이션: 완료 ## 교훈 ### DB 스키마 확인 필수 - 계획 문서의 스키마와 실제 DB 스키마 불일치 (`squarespace_post_id` 컬럼 없음) - 구현 전 실제 DB 스키마 확인 후 쿼리 작성 필요 ### conversation_log 패턴 준수 - UUID 변환 실패 시에도 원본 보존을 위해 `slack_user_id` 컬럼 필수 - 이중 저장 패턴으로 호환성 확보 ### TDD 진행 - 테스트 작성 → 구현 → 실제 테스트 순서로 진행하여 문제 조기 발견 ---