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

서버 이벤트 일정 관리 기능의 Phase 2 범위를 구현했습니다.
이번 단계에서는 이벤트 공지 Embed 전송, 수동 공지 명령, 자동 리마인더, 시작 시 자동 완료 처리를 추가했습니다.

## 주요 변경 사항

### 1. `EventService` 추가
- `src/services/EventService.ts`를 추가했습니다.
- 이벤트 공지 Embed 생성, 리마인더 전송, 시작 시 완료 처리 로직을 서비스로 분리했습니다.
- 이벤트 시작 1시간 전 / 10분 전에 자동 리마인더를 보낼 수 있도록 구현했습니다.

### 2. 봇 시작 시 이벤트 루프 자동 시작
- `ready` 이벤트에서 `EventService.startReminderLoop(client)`를 호출하도록 연결했습니다.
- 봇이 로그인되면 1분 간격으로 예정 이벤트를 확인합니다.

### 3. 이벤트 공지 기능 추가
- 이벤트 생성 시 공지 채널이 설정되어 있으면 공지 Embed를 즉시 전송합니다.
- `/event announce` 서브커맨드를 추가해 기존 이벤트를 수동으로 다시 공지할 수 있게 했습니다.
- 공지 성공 시 `announcedAt` 시각을 업데이트합니다.

### 4. 자동 리마인더 및 상태 전환
- `GuildEvent.reminderEnabled`가 활성화된 이벤트를 주기적으로 검사합니다.
- 시작 1시간 전에는 `remindedOneHour`
- 시작 10분 전에는 `remindedTenMinutes`
  플래그를 사용해 중복 전송을 방지합니다.
- 이벤트 시작 시각이 지나면 상태를 `COMPLETED`로 자동 전환합니다.

### 5. i18n 및 명령 확장
- `commands.event` 번역 키에 `announce`, `statusCompleted`, 공지 성공/실패 문구를 추가했습니다.
- `/event` 명령은 이제 다음 서브커맨드를 지원합니다.
  - `/event create`
  - `/event list`
  - `/event cancel`
  - `/event announce`

## 검증 결과
- `yarn build`: 성공
- `yarn test --runInBand`: 6개 테스트 스위트, 40개 테스트 통과

## 다음 단계 메모
- 이후 단계에서 감사 로그에 이벤트 생성/취소/공지 성공까지 더 세밀하게 기록할 수 있습니다.
- RSVP 버튼, 반복 일정, Discord Scheduled Event 연동은 후속 확장 과제로 남아 있습니다.
