78 lines
2.5 KiB
Markdown
78 lines
2.5 KiB
Markdown
# Company-X 뉴스 시스템 구현 완료
|
|
|
|
## 작성일: 2025-09-07
|
|
## 작성자: Claude & happybell80
|
|
## 목적: Company-X 뉴스 포스팅 시스템 구현 내역 기록
|
|
|
|
## 1. 구현 완료 사항
|
|
|
|
### 1.1 Slack Interactive 시스템
|
|
- news_posting_skill.py: Company-X 뉴스 채널 포스팅 기능 구현
|
|
- Block Kit 메시지 형식 (버튼 포함)
|
|
- 홈페이지 게시 / 건너뛰기 버튼
|
|
- skill-publish 연동 코드
|
|
- JSON 기반 상태 관리
|
|
|
|
### 1.2 Interactive Endpoint
|
|
- main.py: /api/slack/interactive 엔드포인트 추가
|
|
- slack_handler.py: handle_interactive() 함수 구현
|
|
- Slack 서명 검증
|
|
- 버튼 액션 처리
|
|
- 3초 내 ACK 응답
|
|
|
|
### 1.3 환경 설정
|
|
- 채널 ID 관리: 환경변수 방식 채택
|
|
- COMPANY_X_NEWS_CHANNEL_ID=C09CP4MDX71
|
|
- /home/heejae/rb8001/.env: 환경변수 추가
|
|
- /home/admin/ivada_project/rb8001/.env: 동일 설정 동기화
|
|
|
|
### 1.4 중복 뉴스 방지 시스템
|
|
- sent_news_tracker.py: 전송된 뉴스 추적
|
|
- 30일 히스토리 유지
|
|
- JSON 파일 기반 저장
|
|
- 사용자별 중복 필터링
|
|
- Dockerfile 수정: sent_news_tracker.py 포함
|
|
|
|
## 2. 해결한 문제들
|
|
|
|
### 2.1 sent_news_tracker 모듈 에러
|
|
- 문제: No module named 'sent_news_tracker'
|
|
- 원인: Docker 이미지에 파일 미포함
|
|
- 해결: Dockerfile에 COPY 명령 추가
|
|
|
|
### 2.2 채널 ID 하드코딩 이슈
|
|
- 문제: 채널 ID가 코드에 하드코딩됨
|
|
- 초기 설계: DB 테이블 방식
|
|
- 최종 결정: 환경변수 방식
|
|
|
|
### 2.3 Git 충돌 해결
|
|
- 충돌 파일: news_posting_skill.py, slack_handler.py, main.py
|
|
- 해결 방식: 기존 코드 최대한 보존하며 새 기능 통합
|
|
|
|
## 3. 테스트 방법
|
|
|
|
### 수동 테스트
|
|
- Company-X 뉴스 즉시 실행: curl -X POST http://localhost:8001/api/test/companyx-news
|
|
- Daily Summary DM 테스트: curl -X POST http://localhost:8001/api/cron/daily-summary
|
|
- 로그 확인: docker logs rb8001
|
|
|
|
## 4. 환경 설정 요약
|
|
|
|
### 필수 환경변수
|
|
- SLACK_BOT_TOKEN
|
|
- SLACK_SIGNING_SECRET
|
|
- COMPANY_X_NEWS_CHANNEL_ID=C09CP4MDX71
|
|
- SKILL_NEWS_URL=http://localhost:8505
|
|
- SKILL_PUBLISH_URL=http://localhost:8511
|
|
|
|
## 5. 주의사항
|
|
- Docker 재시작시: docker compose down && up 사용
|
|
- 환경변수 변경시 두 곳 모두 수정 필요
|
|
- 운영 전환시 COMPANY_X_NEWS_CHANNEL_ID만 변경
|
|
|
|
## 6. 향후 개선 사항
|
|
- Slack App Interactive URL 실제 설정
|
|
- skill-email 500 에러 해결
|
|
- 운영 채널 전환 테스트
|
|
- 게시 완료 후 메시지 업데이트 기능
|