Skip to content

Conversation

@JaeHyunGround
Copy link

@JaeHyunGround JaeHyunGround commented Oct 26, 2025

#65

@JaeHyunGround JaeHyunGround self-assigned this Oct 26, 2025
- 테스트 코드를 잘 작성하는 규칙에 대해 md 파일로 정리했습니다.
- TDD Flow에 대한 가이드를 md 문서로 정리했습니다.
- 해당 에이전트는 구현해야 할 기능에 대한 기능 명세서를 prd 문서로 정리합니다.
- 정리된 prd 문서를 바탕으로 기능 범위를 epic 단위로 정리하여 문서화합니다.
- analyst 에이전트에게 구현해야 할 기능에 대해 설명하고 이를 prd 문서로 정리시켰습니다.
- Analyst 에이전트에게 작성된 prd 문서를 토대로 Epic 단위의 테스크를 생성하라고 명령했습니다.
- 해당 에이전트는 만들어진 Epic에 대해 여러 개의 story로 분리하는 에이전트입니다.
- 각 story는 개발자가 작업해야 할 내용을 나타냅니다.
- 각 story는 하나의 역할을 기준으로 작성합니다.
- 생성된 story는 .cursor/spec/stories/<epic-slug>/*.md 형태로 저장합니다.
- SM 에이전트에게 반복 유형 선택 epic에 대한 story를 분리하라고 명령하여 나온 결과물입니다.
- 각 에이전트가 해당 문서를 참고하여 작업할 수 있도록 TDD 가이드, RTL 테스트 코드 작성 시 유의사항 에 대해 정리했습니다.
- 해당 에이전트는 각 story에 대한 테스트 코드를 설계하고 작성하는 에이전트입니다.
- TDD 사이클의 Red 단계를 담당 합니다.
- 프로젝트 내 kent-beck-tdd, rtl-test-rules 문서를 참고하여 테스트 코드 설계 & 작성하도록 설정했습니다.
- architect 에이전트에게 form-state-validation story에 대한 테스트 코드 설계 및 작성을 요구하여 출력된 결과물입니다.
- 중간중간 any 타입을 사용하는 경우가 있어, any 타입 사용을 지양하라는 명령을 하여 내용을 보완했습니다.
- 해당 에이전트는 TDD Flow의 Green 단계를 수행하는 에이전트로, architect 에이전트가 각 story에 대한 작성한 테스트 코드를 통과할 수 있도록 기능을 구현하는 에이전트입니다.
- Developer 에이전트가 form-state-validation story의 테스트 코드를 통과하도록 기능을 구현한 내용입니다.
- 기능 구현 후 검증 절차를 추가하여 코드의 정확성을 높이고자 했습니다.
- 에이전트 기능 수정 전, 이전에 작업했던 내용물을 기록을 위해 _old 폴더를 추가했습니다.
- 혹시 모를 네이밍 혼동을 방지하기 위해 폴더명을 수정했습니다
( _old/.cursor -> _old/(.cursor) )
- 해당 에이전트는 TDD Flow의 Refactor 단계를 수행하는 에이전트입니다.
- 주어진 story 관련 내용 이외의 것들은 수정하지 않도록 수정했습니다.
- 해당 에이전트가 리팩토링을 수행하고 결과를 문서화해 파일 형태로 저장하도록 역할을 추가했습니다.
- 기존 QA 에이전트로 리팩토링 작업 진행 시 '리팩토링 문서'를 생성해주지 않아, 작업이 끝난 후 "리팩토링 문서도 작성해줘" 라는 프롬포트를 작성해야지 리팩토링 결과 문서를 작성하는 경우가 있었습니다.

- 2번 묻는 것을 막기 위해 해당 에이전트에 "어떻게 에이전트 코드를 수정하면 너가 리팩토링과 리팩토링 결과 보고서를 작성할 수 있겠어?" 라는 프롬포트를 전달했고, 이에 따른 결과물을 에이전트 코드에 반영했습니다.
각 에이전트를 활용하여 TDD Flow를 조율하는 에이전트입니다.
- 각 단계 진행 후, 각각의 체크리스트를 만족하는 지 확인하는 플로우 추가
- 커밋 컨벤션 명시
- AI에게 모든 설계를 맡겼던 이전 버전과는 다르게, 제가 원하는대로 에이전트가 동작할 수 있도록 구조를 변경했습니다.
- 이전 버전은 PRD + Epic 생성을 담당했다면 현재는 주어진 기능에 대한 명세 구체화를 진행하는 정도로 설정했습니다.
- output 구조를 명시하여 매번 동일한 구조의 결과물이 나올 수 있도록 설정했습니다.
- TDD 프로세스를 항상 인지하며 작업을 수행하도록 명시했습니다.
- 이전 에이전트는 AI에게 모든 설계를 맡겼기에 에이전트를 재정의했습니다.
- Analyst 에이전트가 정리한 명세 문서를 바탕으로 테스트 가능한 최소 단위의 story를 생성하는 에이전트입니다.
- output인 story 문서를 구조화하여 항상 동일한 구조의 결과물을 낼 수 있도록 명시했습니다.
- story를 너무 세세하게 나누는 상황이 발생해 "Epic의 "예상 동작" 섹션 하나를 `describe('...', () => {})` 블록 하나로 완성할 수 있는 단위로 정의" 라는 문구를 추가하여 너무 세세하게 동일한 섹션은 하나의 story로 분리할 수 있도록 제한했습니다.
- 다른 TDD 단계에 간섭하지 않도록 "Story 분리만 수행" 이라는 문구를 명시했습니다.
@JunilHwang JunilHwang closed this Oct 31, 2025
joshuayeyo added a commit to joshuayeyo/hh-week-2 that referenced this pull request Oct 31, 2025
…ach (hanghae-plus#10)

## Test(10): Add failing tests for recurring edit functionality (RED phase)
### 반복 일정 수정 기능을 위한 포괄적인 실패 테스트 작성
- EditConfirmDialog.spec.tsx: 수정 확인 다이얼로그 컴포넌트 테스트
  - 다이얼로그 렌더링 및 사용자 상호작용 테스트
  - 로딩 상태 및 접근성 테스트 (포커스 트랩, ARIA 속성)
  - ESC 키 및 버튼 클릭 이벤트 처리 테스트

- recurringEdit.spec.ts: 반복 일정 수정 유틸리티 함수 테스트
  - convertToSingleEvent: 반복 정보 제거 및 단일 이벤트 변환
  - updateAllRecurringEvents: 동일 repeatId 이벤트 일괄 업데이트
  - updateRecurringIcon: 반복 아이콘 표시/제거 로직
  - validateEditPermissions: 편집 권한 검증 및 확인 필요성 판단
  - 데이터 무결성 및 깊은 복사 검증

- useRecurringEdit.spec.ts: 반복 일정 수정 훅 테스트
  - 초기 상태 및 편집 시작 플로우 테스트
  - 단일/전체 수정 API 호출 및 낙관적 업데이트
  - 로딩 상태 관리 및 에러 처리 (롤백 포함)
  - 다이얼로그 제어 및 메모리 누수 방지 테스트
- 테스트 실행 결과: 모든 테스트 실패 (구현체 미존재, RED 단계 확인)
  - EditConfirmDialog 컴포넌트 미존재
  - useRecurringEdit 훅 미존재
  - recurringEdit 유틸리티 함수 미존재

다음 단계: GREEN 단계에서 최소 구현체 작성 예정

## Feat(10): Implement recurring event edit functionality
### 반복 일정 수정 기능 구현 완료
- EditConfirmDialog: 단일/전체 수정 선택 다이얼로그 컴포넌트
- useRecurringEdit: 반복 일정 수정 상태 관리 훅
- recurringEdit utils: 반복 이벤트 변환 및 권한 검증 유틸리티
- EditTypes: 반복 편집 관련 타입 정의
- 낙관적 업데이트 및 에러 롤백 기능
- 메모리 누수 방지를 위한 AbortController 구현
- 네트워크/서버 에러 구분 처리
- 과거 이벤트 편집 권한 검증 로직
- 포괄적인 테스트 커버리지 (38/38 테스트 통과)
- 코드 리뷰 완료 및 승인

## Refactor(10): Extract recurring edit hooks into composable components
### 반복 일정 수정 기능 리팩터링
- Split useRecurringEdit.ts (182 lines → 87 lines) following 80-line rule
- Extract useRecurringEditAPI.ts (152 lines) for API operations
- Extract useRecurringEditDialog.ts (48 lines) for dialog state
- Create networkError.ts utility for error handling consistency
- Add comprehensive JSDoc comments to all public API functions
- Maintain 100% test coverage (488/488 tests passing)

## Docs(10): Complete FEAT(10) issue with TDD implementation summary
### FEAT(10) 이슈 완료 문서화
- Mark all RED-GREEN-REFACTOR phases as completed
- Add final implementation summary with commit history
- Document architecture improvements and test results
- Record 488 tests passing with 100% coverage
- Complete TDD methodology: 91df3e3 → b18b2b7 → 7090c38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants