- troubleshooting/260127_news_history_api_implementation.md 추가 - plans/250906_news_system_integration.md 업데이트 (완료 표시)
2.0 KiB
2.0 KiB
뉴스 게시 이력 조회 API 구현 완료
날짜: 2026-01-27 작성자: happybell80 관련 파일:
rb8001/app/router/news_endpoint.pyrb8001/app/services/news_service.pyrb8001/app/state/repositories/news_repository.pyrb8001/app/schemas/news_schema.pyrb8001/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 진행
- 테스트 작성 → 구현 → 실제 테스트 순서로 진행하여 문제 조기 발견