Skip to content

fix: 봇 로직 P0-P2 수정, API 인증, 네비게이션 및 벌금 알림 개선#44

Merged
bbbang105 merged 3 commits intodevfrom
fix/bot-logic-and-nav-update
Mar 13, 2026
Merged

fix: 봇 로직 P0-P2 수정, API 인증, 네비게이션 및 벌금 알림 개선#44
bbbang105 merged 3 commits intodevfrom
fix/bot-logic-and-nav-update

Conversation

@bbbang105
Copy link
Owner

Summary

봇 스케줄러 로직 리뷰에서 발견된 P0-P2 이슈 전체 수정 + 보안 리뷰 P0(API 인증) 해결 + 관리자 네비게이션 업데이트 + 벌금 알림 일일 변경.

Changes

봇 로직 수정 (P0-P2)

파일 변경
weekly-ranking.ts runningLock 제거 → isRunning 단순 가드 (P0)
round-reporter.ts sendRoundStartAnnouncementisRunning 가드 + finally 추가 (P0)
fine-reminder.ts 3일→1일 리마인드 간격, logger 전환, isRunning 가드
api-server.ts round-start에 isReporting 가드, curation-share 크론 5분 오프셋
date-utils.ts formatKSTDate 공유 유틸 추가 (Intl 타임존)

보안 수정 (P0)

파일 변경
api-server.ts BOT_API_SECRET Bearer 토큰 인증 미들웨어 추가, express.json({ limit: '10kb' }), 500 에러 제네릭화
[operationId]/route.ts Authorization 헤더 전송, 에러 메시지 새니타이즈, AbortError 처리
.env.example BOT_API_SECRET, BOT_API_URL 추가

UI/네비게이션

파일 변경
sidebar.tsx 관리자 사이드바에 '봇' 항목 추가
bottom-nav.tsx 관리자 하단 탭 6개 (멤버/회차/출석/벌금/점수/봇)
bot-operation-card.tsx 내부 로딩 상태 제거, 부모 prop만 사용
bot-operations/route.ts fine-reminder 설명 "매일"로 변경

문서

파일 변경
CLAUDE.md 봇 API/봇 대시보드 핵심 파일 추가, 하단 탭 설명 업데이트
docs/26-03-06-patterns.md 봇 작업 프록시 패턴 섹션 추가
docs/ARCHITECTURE.md Bot API 서버 다이어그램 추가, 봇 라우트/탭/스케줄러 업데이트

Design Decisions

결정 이유
runningLock 제거 → isRunning Node.js 단일 스레드에서 Promise 기반 lock은 불필요. 다른 스케줄러와 패턴 통일
BOT_API_SECRET Bearer 인증 봇 API 서버 무인증 상태(P0) 해결. 환경변수 기반 공유 시크릿이 가장 단순
에러 메시지 제네릭화 내부 오류 상세(스택/DB URL)가 클라이언트로 유출되는 P1 해결
벌금 알림 1일 간격 운영 요청 — 미납 벌금 리마인드를 더 적극적으로

Test Plan

  • 봇 로컬 실행 후 각 트리거 엔드포인트 수동 테스트
  • BOT_API_SECRET 미설정 시 401 반환 확인
  • BOT_API_SECRET 설정 후 정상 트리거 확인
  • 관리자 하단 탭에 '봇' 표시 확인 (모바일 뷰포트)
  • EC2 .envBOT_API_SECRET 추가 필요
  • Vercel/packages/web/.env.localBOT_API_SECRET + BOT_API_URL 추가 필요

🤖 Generated with Claude Code

bbbang105 and others added 2 commits March 13, 2026 16:42
- WeeklyRanking: runningLock 제거, isRunning 단순 가드로 교체 (P0)
- RoundReporter: sendRoundStartAnnouncement에 isRunning 가드 추가 (P0)
- FineReminder: 3일→1일 리마인드 간격 변경, logger 전환, isRunning 가드
- bot-operations route: AbortError 타임아웃 처리, URL 파싱 수정
- bot-operation-card: 내부 로딩 상태 제거, 부모 prop만 사용
- api-server: round-start에 isReporting 가드 추가
- scheduler-registry: curation-share 크론 5분 오프셋 (충돌 방지)
- sidebar/bottom-nav: 관리자 '봇' 탭 추가, 하단 네비 관리자 모드 6탭
- shared: formatKSTDate를 date-utils에 추가 (Intl 타임존)
- 문서 업데이트: CLAUDE.md, patterns.md, ARCHITECTURE.md

Co-Authored-By: Claude <noreply@anthropic.com>
- api-server: BOT_API_SECRET Bearer 토큰 인증 미들웨어 추가 (P0)
- api-server: express.json limit 10kb, 500 에러 메시지 제네릭화 (P1)
- bot-operations proxy: Authorization 헤더 전송, 에러 메시지 새니타이즈 (P0/P1)
- .env.example: BOT_API_SECRET, BOT_API_URL 추가

Co-Authored-By: Claude <noreply@anthropic.com>
@bbbang105 bbbang105 requested a review from choihooo as a code owner March 13, 2026 07:44
@vercel
Copy link

vercel bot commented Mar 13, 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 13, 2026 7:50am

@bbbang105 bbbang105 merged commit 94787c0 into dev Mar 13, 2026
6 of 7 checks passed
@bbbang105 bbbang105 deleted the fix/bot-logic-and-nav-update branch March 13, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚨 fix 버그 수정 / 에러 해결

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant