DOCS/journey/troubleshooting/260127_news_history_api_implementation.md
Claude-51124 fa3a24270c docs: 뉴스 게시 이력 조회 API 구현 완료 문서화
- troubleshooting/260127_news_history_api_implementation.md 추가
- plans/250906_news_system_integration.md 업데이트 (완료 표시)
2026-01-27 09:38:26 +09:00

2.0 KiB

뉴스 게시 이력 조회 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 진행

  • 테스트 작성 → 구현 → 실제 테스트 순서로 진행하여 문제 조기 발견