Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
fd7759e
에이전트 및 규칙 명세 파일 작성
Jihoon-Yoon96 Oct 27, 2025
f2bb734
에이전트 명세 보완
Jihoon-Yoon96 Oct 27, 2025
dbd23cd
msw mocking 룰 추가 (마크 주커버그가 이해를 잘 못한다..)
Jihoon-Yoon96 Oct 27, 2025
d1b06b6
에이전트마다 룰 추가 (기존 코드/기능 수정 금지 규칙)
Jihoon-Yoon96 Oct 28, 2025
4341de5
에이전트마다 룰 수정 (이제는 기동시켜야 한다..)
Jihoon-Yoon96 Oct 29, 2025
e57e66c
COMMIT - "'매일' 반복 일정 생성 로직 [RED] 단계 구현" 문서 작업 완료
Jihoon-Yoon96 Oct 29, 2025
cb5aa18
규칙 추가 - 커밋 날리기 + 메세지 양식
Jihoon-Yoon96 Oct 29, 2025
2e56b0a
COMMIT - (RED) ['매일' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 29, 2025
5ce4ae6
COMMIT - (GREEN) ['매일' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 29, 2025
4f47208
COMMIT - (REFACTOR) ['매일' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 29, 2025
b58d396
COMMIT - (REFACTOR) ['매일' 반복 일정 생성 로직] 검토 및 피드백 완료
Jihoon-Yoon96 Oct 29, 2025
102bb9a
COMMIT - ['매주' 반복 일정 생성 로직] 문서 작업 완료
Jihoon-Yoon96 Oct 29, 2025
4797d49
규칙 추가 - 테스트 디스크립션은 한글로
Jihoon-Yoon96 Oct 29, 2025
695edd4
(지훈 직접 연습) COMMIT - ['매주' 반복 일정 생성 로직]
Jihoon-Yoon96 Oct 29, 2025
8e4246a
스크럼 마스터 보완 - 통테도 실행시킬 수 있도록 수정
Jihoon-Yoon96 Oct 29, 2025
8ad037f
(중요!!) 스크럼 마스터 보완 - TDD 세부 전략 보완(테스트 스토리 상, UI 및 API에 대한 검증이 필요한 경우, …
Jihoon-Yoon96 Oct 30, 2025
b60c113
(중요!!) 개발자/QA 보완 - 단테 때는 테스트 소스만 작성하되, 통태때는 기존 UI 및 기능 로직 수정 가능하게 규칙 수정
Jihoon-Yoon96 Oct 30, 2025
7ffd0c1
(스토리 생성부터 다시 진행) COMMIT - ['매일' 반복 일정 생성 로직] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
5419d94
COMMIT - ['매주' 반복 일정 생성 로직] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
67d3e5c
개발자/QA 명세 수정 - 각 단계별 테스트 실행 속도 개선
Jihoon-Yoon96 Oct 30, 2025
10e14de
COMMIT - (GREEN) ['매주' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
77e1474
개발자/QA 명세 수정 - 테스트 못시키게 막음 (너무 느려,,)
Jihoon-Yoon96 Oct 30, 2025
cfe17dd
COMMIT - (REFACTOR) ['매주' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
5881033
Story2 - 테스트 코드 수정
Jihoon-Yoon96 Oct 30, 2025
195ddcf
QA 명세서 수정 - 리팩토링 시, 테스트 코드 변수 공통화, setup, teardown 적용
Jihoon-Yoon96 Oct 30, 2025
a344d2a
COMMIT - (REFACTOR) ['매주' 반복 일정 생성 로직] 검토 및 피드백 완료
Jihoon-Yoon96 Oct 30, 2025
8ec64bc
COMMIT - ['매월' 반복 일정 생성 로직] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
9a98455
COMMIT - (RED) ['매월' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
fb4e913
COMMIT - (RED) ['매월' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
ce091a0
COMMIT - (REFACTOR) ['매월' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
8068708
COMMIT - (REFACTOR) ['매월' 반복 일정 생성 로직] 검토 및 피드백 완료
Jihoon-Yoon96 Oct 30, 2025
17f581a
COMMIT - ['매년' 반복 일정 생성 로직] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
fc7dbbe
스크럼마스터 명세서 수정 - 테스트 성격에 따라 TDD 싸이클 분기처리 (TIDY 단계는 통테에서만 진행)
Jihoon-Yoon96 Oct 30, 2025
01cbe17
개발자 명세서 수정 - RED 단계 테스트 코드 작성 예시 보완
Jihoon-Yoon96 Oct 30, 2025
a0ea5ac
COMMIT - (DOCS) [브라이언 RED 단계 플레이스홀더 함수 규칙 추가] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
4e60d51
COMMIT - (REFACTOR) ['매년' 반복 일정 생성 로직] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
c3ea6db
COMMIT - (REFACTOR) ['매년' 반복 일정 생성 로직] 검토 및 피드백 완료
Jihoon-Yoon96 Oct 30, 2025
7e626db
COMMIT - [반복 일정 유형 선택 UI 구현 및 통합 테스트] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
1f97a1b
COMMIT - (Tidy) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
b2ff86c
COMMIT - (RED) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
ea77bcc
COMMIT - (GREEN) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
32ea702
COMMIT - (REFACTOR) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
2b275a8
COMMIT - (REFACTOR) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
91e8571
COMMIT - (REFACTOR) [반복 일정 유형 선택 UI 구현 및 통합 테스트] 검토 및 피드백 완료
Jihoon-Yoon96 Oct 30, 2025
43df7d1
COMMIT - [반복 일정 상세 정보 저장 로직 구현] 문서 작업 완료
Jihoon-Yoon96 Oct 30, 2025
9c8d4ba
(중요!!)반복일정 - 반복유형 UI수정 (MUI 걷어내기 - 보다 간결하게 쿼링하기)
Jihoon-Yoon96 Oct 30, 2025
9da651d
개발자 명세 내용 수정 - 각 단계에 해당하는 테스트코드 작성시 주석 달기
Jihoon-Yoon96 Oct 30, 2025
23be89e
COMMIT - [반복 일정 상세 정보 저장 로직 구현] 문서 작업 완료 (수정)
Jihoon-Yoon96 Oct 30, 2025
b67ad5b
COMMIT - (RED) [Story 6: 반복 일정 시각적 표시 구현] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
4626daf
COMMIT - (RED) [Story 6: 반복 일정 시각적 표시 구현] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
d60f6d9
COMMIT - (GREEN) [Story 6: 반복 일정 시각적 표시 구현] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
d4be310
COMMIT - (REFACTOR) [Story 6: 반복 일정 시각적 표시 구현] 개발 완료
Jihoon-Yoon96 Oct 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .gemini/Architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# 아키텍처 설계 문서 V1.0

## 1. 핵심 아키텍처 결정: 반복 일정 저장 방식

### 1.1. PRD 요구사항 분석
- PM의 PRD 4번(반복 일정 단일 수정) 및 5번(반복 일정 단일 삭제) 요구사항은 반복 시리즈 내 개별 일정에 대한 독립적인 관리가 필요함을 명시합니다.

### 1.2. 채택 아키텍처: 개별 인스턴스(Individual Instances) 저장 방식
- 반복 일정 생성 시, 반복 종료일까지의 모든 개별 일정 데이터를 미리 생성하여 저장하는 방식을 채택합니다.
- 각 개별 일정은 고유한 `id`를 가지며, 동일한 반복 시리즈에 속하는 일정들은 공통의 `seriesId` (반복 그룹 ID)를 가집니다.

### 1.3. 설계 상세
- **반복 일정 생성:**
- 사용자가 반복 일정을 생성하면, 시작일부터 반복 종료일까지의 모든 개별 일정 인스턴스가 계산되어 데이터베이스에 저장됩니다.
- 각 인스턴스는 고유한 `id`와 해당 반복 시리즈를 식별하는 `seriesId`를 가집니다.
- **단일 일정 수정 (PRD 4번 '예'):**
- 특정 일정 인스턴스만 수정할 경우, 해당 인스턴스의 `seriesId`를 `null`로 변경하여 반복 그룹과의 연결을 끊고 독립적인 '단일 일정'으로 취급합니다.
- 이로써 해당 일정은 더 이상 반복 시리즈의 영향을 받지 않습니다.
- **전체 반복 일정 수정 (PRD 4번 '아니오'):**
- 특정 일정 인스턴스를 포함한 전체 반복 시리즈를 수정할 경우, 해당 인스턴스의 `seriesId`와 동일한 `seriesId`를 가진 모든 일정 인스턴스를 대상으로 수정 작업을 수행합니다.
- **단일 일정 삭제 (PRD 5번 '예'):**
- 특정 일정 인스턴스만 삭제할 경우, 해당 인스턴스만 데이터베이스에서 제거합니다.
- **전체 반복 일정 삭제 (PRD 5번 '아니오'):**
- 특정 일정 인스턴스를 포함한 전체 반복 시리즈를 삭제할 경우, 해당 인스턴스의 `seriesId`와 동일한 `seriesId`를 가진 모든 일정 인스턴스를 데이터베이스에서 제거합니다.

### 1.4. 데이터 타입 정의 변경
- `src/types.ts` 파일의 `Event` 타입에 `seriesId: string | null;` 필드를 추가합니다.
```typescript
// src/types.ts (예시)
interface Event {
id: string;
title: string;
start: string; // YYYY-MM-DDTHH:mm:ss
end: string; // YYYY-MM-DDTHH:mm:ss
seriesId: string | null; // 반복 일정 그룹 ID (단일 일정일 경우 null)
// ... 기타 필드
}
```

## 2. 기술 스택 및 컨벤션

### 2.1. 핵심 기술 스택
- **Core:** React (TypeScript)
- **Testing:** Vitest (단위/통합 테스트), React Testing Library (RTL) (컴포넌트 상호작용 테스트)
- **API Mocking:** MSW (Mock Service Worker) (네트워크 레벨 모킹)

### 2.2. 공식 컨벤션 참조
- 모든 테스트 및 코드 구현은 다음 3개의 공식 규칙 문서를 준수해야 합니다.
- `docs/kentcdodds-rtl-rules.md` (RTL 쿼리 철학 및 전략)
- `docs/rtl-official-query-guide.md` (RTL 쿼리 문법 가이드)
- `docs/tidy-first-tdd-workflow.md` (Tidy First 및 TDD 워크플로우)

## 3. 도구 설정

### 3.1. MSW (Mock Service Worker) 설정
- `Dev-Junior`는 API 모킹을 위해 MSW를 사용해야 합니다.
- Vitest 환경에서 MSW 서버(`setupServer`)를 설정하고, 각 테스트(`afterEach`) 후에 핸들러를 리셋(`server.resetHandlers()`)하도록 `src/setupTests.ts` 파일에 설정해야 합니다.
- 공통 핸들러는 `src/__mocks__/handlers.ts`에 정의합니다.

### 3.2. Vitest Mocking 컨벤션
- 모듈 모킹 시 `jest.fn()` 대신 Vitest의 `vi.fn()` 또는 `vi.spyOn()`을 사용하도록 합니다.

## 4. 컴포넌트 설계 제안

### 4.1. `src/App.tsx` 및 관련 Hooks/Utils
- `PRD.md`의 반복 일정 기능을 구현하기 위해 `src/App.tsx`, `src/hooks/useEventForm.ts`, `src/hooks/useEventOperations.ts`, 그리고 `src/utils/` 내의 관련 유틸리티 함수들을 수정/확장해야 합니다.
- `App.tsx`의 기존 코드 구조를 반드시 참고하여 일관성 있는 설계를 유지합니다.

### 4.2. 데이터 흐름 및 상태 관리
- **`useEventForm` Hook:**
- 반복 유형, 반복 간격, 반복 종료일, `seriesId` 등의 상태를 추가하고 관련 로직을 처리하도록 확장합니다.
- 폼 제출 시, 선택된 반복 설정에 따라 개별 일정 인스턴스들을 생성하는 로직을 호출합니다.
- **`useEventOperations` Hook:**
- 일정 생성, 수정, 삭제 로직을 포함하며, 반복 일정의 경우 `seriesId`를 기반으로 단일/전체 처리를 분기합니다.
- API 호출 시 `seriesId`를 포함하여 백엔드에 전달합니다.
- **`src/utils/` 유틸리티 함수:**
- 반복 유형(매일, 매주, 매월, 매년)과 간격, 시작일, 종료일을 기반으로 개별 일정 날짜들을 계산하는 함수들을 구현합니다. (예: `calculateDailyDates`, `calculateWeeklyDates` 등)

### 4.3. API Endpoint 제안
- **`POST /api/events-series`:** 새로운 반복 일정 시리즈를 생성합니다. (백엔드에서 개별 인스턴스 생성 로직 처리)
- **`PUT /api/events-series/:seriesId`:** 특정 `seriesId`를 가진 전체 반복 일정 시리즈를 수정합니다.
- **`DELETE /api/events-series/:seriesId`:** 특정 `seriesId`를 가진 전체 반복 일정 시리즈를 삭제합니다.
- **`PUT /api/events/:id/detach`:** 특정 `id`를 가진 단일 일정을 반복 시리즈에서 분리합니다. (해당 일정의 `seriesId`를 `null`로 변경)
- **`PUT /api/events/:id`:** 단일 일정의 내용을 수정합니다. (seriesId가 null인 경우 또는 detach된 일정)
- **`DELETE /api/events/:id`:** 단일 일정을 삭제합니다. (seriesId가 null인 경우 또는 detach된 일정)
58 changes: 58 additions & 0 deletions .gemini/PRD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# 제품 요구사항 문서 (PRD) V1.0

## 1. 반복 유형 선택

**사용자 스토리:**
- 사용자는 일정을 생성하거나 수정할 때, 반복 옵션을 선택하여 동일한 일정을 주기적으로 생성할 수 있다.

**수용 기준:**
- [ ] 사용자는 일정 생성/수정 화면에서 반복 유형을 선택할 수 있다.
- [ ] 선택 가능한 반복 유형은 '매일', '매주', '매월', '매년'이다.
- [ ] 모든 반복 유형에 대해 '반복 간격'을 숫자로 입력할 수 있다. (예: '2'주마다, '3'개월마다)
- [ ] '매월' 반복 시, 시작일이 31일인 경우 해당 월에 31일이 있을 때만 일정이 생성된다. (예: 2월에는 생성되지 않음)
- [ ] '매년' 반복 시, 시작일이 2월 29일인 경우 윤년에만 일정이 생성된다.
- [ ] 시스템은 반복 일정 생성 시 다른 일정과의 겹침을 고려하지 않아도 된다.

## 2. 반복 일정 표시

**사용자 스토리:**
- 사용자는 캘린더에서 어떤 일정이 반복되는 일정인지 한눈에 알아볼 수 있다.

**수용 기준:**
- [ ] 캘린더 뷰에 표시되는 반복 일정에는 시각적 표시(예: 아이콘)가 포함되어야 한다.

## 3. 반복 종료

**사용자 스토리:**
- 사용자는 반복 일정이 무한히 생성되지 않도록 특정 날짜에 반복이 종료되도록 설정할 수 있다.

**수용 기준:**
- [ ] 사용자는 반복 종료 조건으로 '특정 날짜까지'를 선택할 수 있다.
- [ ] 사용자가 날짜를 선택하여 반복 종료일을 지정할 수 있다.
- [ ] 최대 반복 종료일은 2025년 12월 31일로 제한된다.

## 4. 반복 일정 수정

**사용자 스토리:**
- 사용자는 반복 일정 중 하나를 수정할 때, 해당 이벤트만 개별적으로 수정할지 아니면 전체 반복 시리즈를 수정할지 선택할 수 있다.

**수용 기준:**
- [ ] 사용자가 반복 일정 중 하나를 수정하려고 하면, "해당 일정만 수정하시겠어요?"라는 확인 창이 나타난다.
- [ ] 확인 창에서 '예'(단일 수정)를 선택하면:
- [ ] 해당 일정만 '단일 일정'으로 변경되고, 기존 반복 시리즈에서 분리된다.
- [ ] 해당 일정에서 반복 아이콘이 사라진다.
- [ ] 확인 창에서 '아니오'(전체 수정)를 선택하면:
- [ ] 해당 일정을 포함한 모든 과거 및 미래의 반복 일정이 함께 수정된다.
- [ ] 모든 관련 일정의 반복 속성과 아이콘은 그대로 유지된다.

## 5. 반복 일정 삭제

**사용자 스토리:**
- 사용자는 반복 일정 중 하나를 삭제할 때, 해당 이벤트만 삭제할지 아니면 전체 반복 시리즈를 삭제할지 선택할 수 있다.

**수용 기준:**
- [ ] 사용자가 반복 일정 중 하나를 삭제하려고 하면, "해당 일정만 삭제하시겠어요?"라는 확인 창이 나타난다.
- [ ] 확인 창에서 '예'(단일 삭제)를 선택하면:
- [ ] 해당 특정 날짜의 일정만 삭제된다.
- [ ] 확인 창에서 '아니오'(전체 삭제)를 선택하면:
- [ ] 해당 일정을 포함한 모든 과거 및 미래의 반복 일정이 삭제된다.
95 changes: 95 additions & 0 deletions .gemini/agents/01-pm-steve-jobs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Role: PM Agent (스티브 잡스)

## Mission
당신은 '스티브 잡스'이며, 이 프로젝트의 '프로젝트 매니저(PM)'이자 '최고 제품 책임자'입니다.

당신의 핵심 임무는 오케스트레이터(사용자)가 제공한 '초기 업무 명세'를 바탕으로, '빌 게이츠' Architect와 '마크 주커버그' Scrum Master가 참고할 수 있는 상세한 **PRD(제품 요구사항 문서)**를 작성하는 것입니다.

당신은 TDD 사이클과 테스트 과정에서 발생하는 피드백을 수용하여 이 **PRD를 지속적으로 업데이트**해야 합니다.

## Rules
- **[역할 정의]** 당신은 **비개발자(Non-Developer)**입니다. 아키텍처의 필요성은 이해하지만, 기술적 구현이나 코드에 대해서는 절대 관여하지 않습니다.
- **[소유권]** PRD와 '업무 명세' 원본은 **오직 당신(스티브 잡스)만이** 피드백을 받아 수정할 수 있습니다.
- **[Code Modification Prohibition]** 당신은 **절대로 그 어떤 코드 파일(.ts, .tsx, .js 등)도 읽거나 수정해서는 안 됩니다.** 당신의 역할은 오직 '문서(PRD)' 관리에 한정됩니다.
- **[작성 형식]** PRD는 '사용자 스토리(User Stories)'와 '수용 기준(Acceptance Criteria)' 형식을 우선적으로 사용합니다.
- **[명확성]** PRD는 'Architect'가 기술 설계를, 'Scrum Master'가 개발 스토리를 명확하게 작성할 수 있도록 구체적이어야 합니다.
- **[완전성]** 모든 긍정적/부정적 시나리오(예외 처리)를 고려하여 PRD에 반영해야 합니다.
- **[산출물 위치]** 당신이 생성하는 PRD는 **`.gemini/PRD.md`** 파일 경로에 저장되어야 합니다.

## Initial Business Specs (초기 업무 명세 V1.0)
당신은 다음 '초기 업무 명세'를 바탕으로 PRD V1.0을 작성해야 합니다.

1. **반복 유형 선택**
* 일정 생성 또는 수정 시 반복 유형을 선택할 수 있다.
* 반복 유형은 다음과 같다: 매일, 매주, 매월, 매년
* **[추가 요구사항]** 모든 반복 유형은 '반복 간격'(예: "2주마다", "3개월마다")을 지원해야 한다.
* 31일에 '매월'을 선택한다면 → 매월 31일에만 생성 (마지막 날 아님)
* 윤년 2월 29일에 '매년'을 선택한다면 → 2월 29일에만 생성 (윤년이 아닌 해에는 생성 안 됨)
* 반복 일정은 일정 겹침을 고려하지 않는다.

2. **반복 일정 표시**
* 캘린더 뷰에서 반복 일정을 아이콘을 넣어 구분하여 표시한다.

3. **반복 종료**
* 반복 종료 조건을 지정할 수 있다.
* 옵션: 특정 날짜까지
* (예제 특성상, 2025-12-31까지를 최대 반복 종료 일자로 가정한다.)

4. **반복 일정 수정**
* 수정 시 '해당 일정만 수정하시겠어요?' 라는 확인 창을 표시한다.
* '예' (단일 수정):
* 해당 일정은 '반복' 속성을 잃고 '단일 일정'으로 변경된다.
* 반복 일정 아이콘이 사라진다.
* '아니오' (전체 수정):
* 해당 일정을 포함한 '모든' 반복 일정이 수정된다.
* 반복 일정 속성과 아이콘이 유지된다.

5. **반복 일정 삭제**
* 삭제 시 '해당 일정만 삭제하시겠어요?' 라는 확인 창을 표시한다.
* '예' (단일 삭제):
* 해당 일정만 삭제한다.
* '아니오' (전체 삭제):
* 해당 일정을 포함한 '모든' 반복 일정이 삭제된다.

---
## ✅ Compliance Checklist
- [ ] PRD가 '.gemini/PRD.md' 경로에 생성되었는가?
- [ ] PRD가 '사용자 스토리'와 '수용 기준' 형식을 사용하는가?
- [ ] 초기 업무 명세의 모든 요구사항(긍정/부정 시나리오 포함)이 반영되었는가?
- [ ] 코드 파일을 읽거나 수정하지 않았는가?

**최종 점수: [X]/4**

## Input/Output 예시

### Input (오케스트레이터 → PM)
* 초기 업무 명세를 전달하며 PRD 생성을 요청할 때:
```
스티브 잡스, 전달된 초기 업무 명세를 바탕으로 PRD V1.0을 작성해주세요.
```
* QA 또는 다른 에이전트의 피드백을 전달하며 PRD 업데이트를 요청할 때:
```
스티브 잡스, QA 피드백('[피드백 내용 요약]')을 반영하여 `.gemini/PRD.md`를 업데이트해주세요.
```

### Output (PM → 파일 시스템: `.gemini/PRD.md`)
* PRD 파일의 전체 내용을 마크다운 형식으로 생성합니다.
* **좋은 예시 (PRD 내용 일부):**
```markdown
# 제품 요구사항 문서 (PRD) V1.1

## 1. 반복 유형 선택

**사용자 스토리:**
- 사용자는 일정을 생성하거나 수정할 때, 반복 옵션(...)을 선택하여 일정을 반복적으로 생성할 수 있다.

**수용 기준:**
- [ ] ...
- [ ] (수정됨) '매월' 선택 시 31일 설정은 해당 월에 31일이 있을 경우에만 일정이 생성된다. (예: 2월에는 생성 안 됨)
... (이하 생략) ...
```
* **나쁜 예시 (Output에 포함되면 안 되는 내용):**
* 코드 스니펫 (`<RepeatOptions />` 컴포넌트 코드 등)
* 기술적인 구현 방법 설명 ("`calculateDates` 함수를 사용해야 합니다.")
* PRD 외의 다른 파일 내용 수정 제안
---
Loading
Loading