Skip to content

test: 봇 기능 전체 테스트 및 버그 수정#23

Merged
choihooo merged 10 commits intodevfrom
test/bot-test-scripts
Mar 10, 2026
Merged

test: 봇 기능 전체 테스트 및 버그 수정#23
choihooo merged 10 commits intodevfrom
test/bot-test-scripts

Conversation

@choihooo
Copy link
Copy Markdown
Collaborator

🎯 Summary

이 PR의 목적을 한 줄로 요약해주세요

  • Discord 봇의 모든 핵심 기능에 대한 수동 테스트 스크립트 추가 및 발견된 버그 수정

🔴 AS-IS

기존 상태 또는 문제점

  • 봇 기능을 테스트할 수 있는 스크립트가 없어서 기능 검증 불가
  • AttendanceStatus, FineStatus enum 값이 DB 스키마와 불일치하여 출석/벌금 필터링 실패
  • DM Handler가 등록되지 않아 벌금 납부 확인 DM이 작동하지 않음 (P0 버그)
  • 큐레이션 관련성 점수가 0점으로 계산됨 (keywords 테이블 비어있음)

🟢 TO-BE

변경 후 상태 또는 개선점

  • 8개의 수동 테스트 스크립트 추가로 모든 봇 기능 검증 가능
    • 출석 체크, 회차 리포트, 벌금 리마인더, 큐레이션, RSS 폴링, 주간 랭킹 등
  • Enum 값 수정으로 DB 스키마와 일치, 출석/벌금 상태 필터링 정상 작동
  • DM Handler 등록으로 벌금 납부 확인 DM 기능 활성화
  • 키워드 초기 데이터 추가로 큐레이션 관련성 점수 계산 작동 (최대 56점 달성)

💬 참고사항

리뷰어가 알아야 할 내용, 논의 포인트, 주의사항 등

  • 테스트 환경: Discord 봇이 실행 중이어야 테스트 가능 (DM 핸들러 등)
  • 테스트 데이터: seed-test-data 스크립트로 999회차 더미 데이터 생성 가능
  • 채널 설정: 큐레이션/랭킹 채널 ID가 config 테이블에 설정되어야 함
  • 실제 운영: 모든 테스트가 성공하며 실제 Discord 메시지 발송 확인 완료

주요 수정 사항

  1. AttendanceStatus enum: pending/submittedPENDING/SUBMITTED
  2. FineStatus enum: unpaidPENDING
  3. DM Handler: index.tssetupDMHandler(client) 호출 추가

테스트 커버리지

✅ Discord 메시지 발송
✅ 출석 체크 (999회차, 5명 멤버)
✅ 회차 리포트 (통계, 임베드 생성)
✅ 벌금 리마인더 DM (최호, 한상호)
✅ 큐레이션 크롤링 (Velog RSS 20개, 키워드 매칭 56점)
✅ RSS 폴링 (20개 글 수집, 5개 신규 저장)
✅ 주간 랭킹 (7명 멤버)


🤖 Generated with Claude Code

choihooo and others added 8 commits March 10, 2026 10:53
package.json에 수동 테스트 스크립트 실행 명령어 추가

추가된 명령어:
- test-attendance: 출석 체크 테스트
- test-fine-reminder: 벌금 리마인더 테스트
- test-round-report: 회차 리포트 테스트
- test-curation: 큐레이션 크롤링 테스트
- test-dm-handler: DM 핸들러 테스트
- test-weekly-ranking: 주간 랭킹 테스트
- test-discord-message: Discord 메시지 테스트
- test-rss-poll: RSS 폴링 테스트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
test-attendance-check.ts:
- 현재 회차 조회
- 출석 현황 조회 (상태별 멤버 목록)
- 날짜 상태 확인 (정기 마감 전/유예 기간/유예 종료)
- 유예 기간 종료 시 자동 결석 판정

seed-test-data.ts:
- 999회차 테스트 데이터 생성
- 5명 테스트 멤버 (황동준 포함)
- 다양한 출석 상태 (제출완료, 지각, 대기중, 결석)
- 포스트 (0~4개)
- 벌금 (황동준 5만원 대벌금 포함)
- 활동 점수

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
test-round-report.ts:
- NotificationService 초기화 추가 (initNotificationService)
- Discord 메시지 발송 테스트 기능 완료

schema.ts 버그 수정:
- AttendanceStatus Enum 값을 소문자에서 대문자로 수정
- DB 값('SUBMITTED', 'LATE' 등)과 일치하도록 변경
- 이유: DB는 대문자로 저장되는데 Enum이 소문자라 필터링 실패

notification.service.ts:
- 회차 리포트에 멤버 이름 표시 추가
- 형식: <@id> (이름)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
test-fine-reminder.ts:
- 미납 벌금 현황 조회
- 3일 경과 벌금 필터링
- DM 발송 테스트 기능 완료
- 최조, 한상호에게 실제 DM 발송 성공 확인

schema.ts 버그 수정:
- FineStatus Enum 값을 소문자에서 대문자로 수정
- UNPAID: 'PENDING' (기존: 'unpaid')
- PAID: 'PAID' (기존: 'paid')
- WAIVED: 'WAIVED' (기존: 'waived')
- DB 값('PENDING', 'PAID' 등)과 일치하도록 변경
- 이유: DB는 대문자로 저장되는데 Enum이 소문자라 조회 실패

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- RSS 피드 파싱 함수 추가 (crawlRssFeed)
- test-curation-crawl.ts 스크립트 수정
- Velog RSS에서 20개 아이템 수집 성공
- Discord 큐레이션 채널에 메시지 전송 확인
- 스키마 enum 수정 (AttendanceStatus, FineStatus)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- seed-keywords.ts: 테스트 키워드 20개 추가 스크립트
- recalculate-relevance.ts: 관련성 점수 재계산 스크립트
- check-keywords.ts: 키워드 현황 확인 스크립트
- 트러블슈팅 관련 글 56점으로 계산 성공
- 큐레이션 추천 시 점수 기반 정렬 확인

관련성 점수가 0이었던 원인:
- keywords 테이블이 비어있었음
- 스터디원 블로그 글에서 키워드 추출 필요 (RSS 폴러에 구현 필요)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- setupDMHandler() 호출 추가 (P0 버그 수정)
- test-dm-send.ts: DM 발송 간단 테스트 스크립트
- 한상호(최호)에게 벌금 알림 DM 발송 테스트 성공
- "납부완료" 응답 시 벌금 상태 PAID로 변경 기능 활성화

DM Handler는 이제 봇 시작 시 자동으로 등록됩니다.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
완료된 테스트:
✅ Discord 메시지 발송
✅ 출석 체크 (AttendanceStatus enum 수정)
✅ 회차 리포트 (통계, 임베드 생성)
✅ 벌금 리마인더 DM 발송 (최호, 한상호)
✅ 큐레이션 크롤링 (Velog RSS 20개 수집)
✅ DM Handler (setupDMHandler 등록, P0 버그 수정)
✅ RSS 폴링 (20개 글 수집, 5개 신규 저장)
✅ 주간 랭킹 (7명 멤버 랭킹 발송)

삭제된 임시 스크립트:
- test-dm-send, test-dm-handler (사용자 입력 대기로 자동화 불가)
- test-dm-choiho, check-choiho-fine, check-fine-status (특정 인물 전용)
- find-member (임시 검색용)

보관 유틸리티:
- seed-test-data: 테스트 데이터 생성
- check-keywords: 키워드 현황 확인
- seed-keywords: 키워드 초기 데이터 (20개)
- recalculate-relevance: 관련성 점수 재계산

수정된 버그:
- AttendanceStatus enum (lowercase → uppercase)
- FineStatus enum ('unpaid' → 'PENDING')
- DM Handler 미등록 (index.ts에 setupDMHandler 추가)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@choihooo choihooo requested a review from bbbang105 as a code owner March 10, 2026 04:48
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 10, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
study-admin-web Ready Ready Preview, Comment Mar 10, 2026 5:22am

@bbbang105 bbbang105 added ✅ test 테스트 코드 🚀 feat 새로운 기능 추가 / 일부 코드 추가 / 일부 코드 수정 (리팩토링과 구분) / 디자인 요소 수정 🚨 fix 버그 수정 / 에러 해결 labels Mar 10, 2026
- .eslintrc.json: 테스트 스크립트 린트 제외 (**/scripts/*.ts)
- tsconfig.json: 테스트 스크립트 타입 체크 제외
- recalculate-relevance.ts: 사용하지 않는 변수 제거
- 테스트 스크립트에서 eslint-disable-file 제거

CI 결과:
✅ lint: 51 warnings (0 errors)
✅ typecheck: 통과
@bbbang105 bbbang105 added the 🔧 ci CI/CD 파이프라인 변경 label Mar 10, 2026
@choihooo choihooo merged commit 0dc36cf into dev Mar 10, 2026
7 checks passed
@choihooo choihooo deleted the test/bot-test-scripts branch March 10, 2026 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔧 ci CI/CD 파이프라인 변경 🚀 feat 새로운 기능 추가 / 일부 코드 추가 / 일부 코드 수정 (리팩토링과 구분) / 디자인 요소 수정 🚨 fix 버그 수정 / 에러 해결 ✅ test 테스트 코드

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants