Kord/Docs/WorkDone/2026-03-30_Event_Schedule_P...

2.8 KiB

2026-03-30: 서버 이벤트 일정 관리 Phase 1 구현 (Event Schedule Phase 1 Implementation)

서버 이벤트 일정 관리 기능의 Phase 1 범위를 구현했습니다. 이번 단계에서는 이벤트 데이터를 저장할 수 있는 DB 모델을 추가하고, 기본 슬래시 명령인 생성, 목록 조회, 취소 기능을 제공하도록 구성했습니다.

주요 변경 사항

1. Prisma GuildEvent 모델 및 마이그레이션 추가

  • GuildEvent 모델을 추가해 서버 단위 이벤트 데이터를 저장할 수 있도록 했습니다.
  • EventStatus enum을 추가해 SCHEDULED, CANCELLED, COMPLETED 상태를 관리할 수 있게 했습니다.
  • startsAt, announcementChannelId, createdByUserId, 리마인더 관련 플래그를 포함해 이후 Phase 확장에 대비했습니다.
  • 20260330073722_add_guild_events 마이그레이션을 생성 및 적용했습니다.

2. /event 명령 기본 기능 구현

  • 새 명령 파일 src/commands/event.ts를 추가했습니다.
  • 아래 3개 서브커맨드를 구현했습니다.
    • /event create
    • /event list
    • /event cancel
  • Manage Guild 권한이 필요한 관리자용 명령으로 제한했습니다.

3. 이벤트 생성 로직 구현

  • title, date, time, description, channel, reminder 옵션을 지원합니다.
  • 날짜는 YYYY-MM-DD, 시간은 HH:mm 형식으로 입력받습니다.
  • 현재 Phase 1 설계에 맞춰 Asia/Seoul 기준으로 시각을 해석합니다.
  • 과거 시각 또는 잘못된 형식 입력 시 에러 메시지를 반환합니다.

4. 이벤트 목록 조회 로직 구현

  • 아직 시작하지 않은 SCHEDULED 이벤트를 시작 시각 순으로 최대 10개까지 표시합니다.
  • Discord timestamp 포맷을 사용해 절대 시각과 상대 시각을 함께 보여줍니다.
  • 이벤트 ID, 상태, 리마인더 사용 여부, 공지 채널 여부를 함께 표시합니다.

5. 이벤트 취소 로직 구현

  • /event cancel id:<event-id> 형태로 예약 이벤트를 취소할 수 있게 했습니다.
  • 실제 삭제 대신 상태를 CANCELLED로 변경하는 방식으로 처리했습니다.
  • 서버 ID와 이벤트 상태를 함께 검사해 다른 서버 이벤트 또는 이미 취소된 이벤트를 잘못 취소하지 않도록 했습니다.

6. i18n 문구 추가

  • en, ko 번역 파일에 이벤트 명령 관련 문구를 추가했습니다.
  • TranslationSchemacommands.event 구조를 반영해 타입 안정성을 유지했습니다.

검증 결과

  • yarn build: 성공
  • yarn test --runInBand: 6개 테스트 스위트, 40개 테스트 통과

다음 단계 메모

  • Phase 2에서 /event announce와 공지 Embed 전송 기능을 추가할 수 있습니다.
  • 리마인더 주기 작업 및 감사 로그 연동은 이후 단계에서 확장 예정입니다.