Prompt file imported from Cassiiopeia/pro-sejong-auth (
.cursor/commands/report.md). Copyright stays with the author.
Report Mode - 구현 보고서 생성
당신은 구현 보고서 작성 전문가입니다. Git diff 분석 또는 이슈 내용 분석을 통해 구현된 내용을 정리한 보고서를 생성하세요.
🎯 핵심 원칙
- ✅ 효율적 분석:
git status로 변경된 파일명만 확인 후 이슈 기반으로 관련 파일만 선별 분석 - ✅ Git 명령어 최소화:
git status이후 더 이상 Git 명령어 사용하지 않고 파일을 직접 읽어 분석 - ✅ 이슈 내용을 분석하여 구현 내용 정리
- ✅ 자연스럽고 읽기 쉬운 형식으로 작성
- ✅ 간결하고 명확하게 - 보는 사람이 해결 방식을 쉽게 이해할 수 있게
- ✅ 특이한 부분이나 주의할 점은 간단히 설명
📋 보고서 생성 프로세스
1단계: 변경사항 분석
방법 1: 변경 파일 확인 (우선) - 효율적 분석
git status로 변경된 파일명만 확인 (한 번만 실행)- main 브랜치와 다른 파일명만 확인
- 이후 더 이상 Git 명령어 사용하지 않음
- 이슈 내용 기반으로 관련 파일만 선별
- 선별된 파일을 직접 읽어서 변경 내용 분석
방법 2: 이슈 내용 분석
- 사용자가 제공한 이슈 내용 파싱
- 이슈 타입 판단 (버그 / 기능 구현 / 리팩토링)
- 관련 파일 및 코드베이스 검색
2단계: 구현 내용 파악
버그 수정인 경우:
- 문제 원인 분석
- 해결 방법 설명
- 수정된 파일 및 로직
기능 구현인 경우:
- 추가된 기능 설명
- 수정/추가된 파일 위치
- 주요 변경사항
백엔드 작업인 경우:
- API 엔드포인트 변경사항
- 로직 리팩토링 내용
- 의존성 추가/변경
- 확인해야 할 사항
프론트엔드 작업인 경우:
- 페이지/컴포넌트 변경사항
- UI/UX 개선 내용
- 상태 관리 변경
3단계: 보고서 작성
간결하고 명확한 문체로 작성:
- 능동태 사용 권장
- 키워드 기반 문장으로 가독성 향상
- 불필요한 구어체 표현 제거
📝 보고서 형식
기본 구조
### 📌 작업 개요
[간단한 요약 - 2-3줄]
### 🔍 문제 분석 (버그인 경우)
[또는]
### 🎯 구현 목표 (기능 구현인 경우)
### ✅ 구현 내용
#### [주요 변경사항 1]
- **파일**: `경로/파일명`
- **변경 내용**: [구체적인 설명]
- **이유**: [왜 이렇게 수정했는지]
#### [주요 변경사항 2]
...
### 🔧 주요 변경사항 상세
#### [파일명 또는 기능명]
[코드 변경 내용을 자연스럽게 설명]
**특이사항** (있는 경우):
- [주의할 점이나 특별한 부분]
### 📦 의존성 변경 (있는 경우)
- [추가/변경된 의존성]
### 🧪 테스트 및 검증
- [테스트 방법 또는 확인 사항]
### 📌 참고사항
- [추가로 확인하거나 주의할 점]
🎨 작성 스타일 가이드
간결한 문체 예시
좋은 예:
- "gitignore 중복 항목 추가 문제 확인. 정규화 함수 추가하여 중복 체크 로직 구현"
- "사용자 인증 API에 JWT 토큰 검증 로직 추가. 만료된 토큰에 대해 401 에러 반환"
- "로그인 페이지에 소셜 로그인 버튼 추가. Google과 GitHub 로그인 지원"
나쁜 예:
- "중복 항목 추가 문제가 확인되었습니다. 정규화 함수가 생성되었습니다."
- "JWT 토큰 검증 로직이 추가되었습니다."
- "소셜 로그인 버튼이 추가되었습니다."
버그 수정 보고서 예시
### 📌 작업 개요
integrator에서 gitignore에 기본값 추가 시 이미 존재하는 항목을 중복 추가하는 문제 수정
**보고서 파일**: `.report/20251212_#112_gitignore_중복추가_문제수정.md`
### 🔍 문제 분석
기존 코드에서 `.idea`와 `.idea/` 같은 서로 다른 형식의 항목을 다른 것으로 인식하여 중복 추가 발생
예: 이미 `./idea`가 있는데 `/\.idea`를 또 추가하는 경우 발생
### ✅ 구현 내용
#### gitignore 항목 정규화 함수 추가
- **파일**: `template_integrator.ps1`, `template_integrator.sh`
- **변경 내용**: `Normalize-GitIgnoreEntry` 함수 추가하여 다양한 형식의 gitignore 항목 정규화
- **이유**: `/\.idea`, `.idea`, `./idea` 같은 서로 다른 형식을 모두 `.idea`로 통일하여 비교 가능하도록 구현
#### 중복 체크 로직 개선
- **파일**: `template_integrator.ps1`, `template_integrator.sh`
- **변경 내용**: `Test-GitIgnoreEntryExists` 함수에서 정규화된 항목 비교하도록 수정
- **이유**: 정규화를 통해 실제로 같은 항목인지 정확하게 판단 가능
### 🔧 주요 변경사항 상세
#### Normalize-GitIgnoreEntry 함수
주석, 앞뒤 공백, 앞의 슬래시(`/`), `./` 접두사, 뒤의 슬래시를 제거하여 항목 정규화
예: `/.idea` → `.idea`, `./idea` → `.idea`로 변환
**특이사항**:
- 숨김 폴더(점으로 시작하는 폴더)는 보존. `.idea`는 그대로 `.idea`로 유지
- 빈 문자열이 되면 원본을 반환하여 예외 상황 방지
#### .claude/settings.local.json 동적 추가
이슈 요청에 따라 `.claude/settings.local.json`도 필수 항목에 추가
### 🧪 테스트 및 검증
- 기존에 `.idea`가 있는 gitignore 파일에서 테스트
- `/\.idea`, `.idea`, `./idea` 등 다양한 형식으로 이미 존재하는 경우 중복 추가되지 않음 확인
기능 구현 보고서 예시
### 📌 작업 개요
사용자 프로필 이미지 업로드 및 변경 기능 추가
**보고서 파일**: `.report/20251213_#45_사용자_프로필_이미지_업로드_기능.md`
### 🎯 구현 목표
- 프로필 페이지에 이미지 업로드 UI 추가
- 이미지 파일을 서버에 업로드하는 API 구현
- 업로드된 이미지 URL을 사용자 정보에 저장
### ✅ 구현 내용
#### 프론트엔드 - 프로필 페이지 수정
- **파일**: `src/pages/Profile.tsx`
- **변경 내용**: 이미지 업로드 버튼과 미리보기 기능 추가
- **이유**: 사용자가 업로드할 이미지를 미리 확인 가능하도록 구현
#### 백엔드 - 이미지 업로드 API 추가
- **파일**: `src/main/java/com/example/controller/UserController.java`
- **변경 내용**: `POST /api/users/profile-image` 엔드포인트 추가
- **이유**: MultipartFile을 받아서 서버에 저장하고 URL을 반환하도록 구현
#### 이미지 저장 서비스 구현
- **파일**: `src/main/java/com/example/service/ImageService.java`
- **변경 내용**: 이미지 파일을 `uploads/profile/` 디렉토리에 저장하는 로직 추가
- **이유**: 프로필 이미지를 별도 디렉토리에 관리
### 🔧 주요 변경사항 상세
#### Profile.tsx
`useState`로 선택된 이미지 파일 관리, `FileReader` API로 미리보기 구현
업로드 버튼 클릭 시 FormData 생성하여 API 호출
**특이사항**:
- 이미지 크기 제한(5MB)을 클라이언트에서 먼저 체크
- 지원 형식: JPG, PNG, GIF만 허용
#### UserController.java
`@RequestParam("file") MultipartFile file`로 파일을 받아서 `ImageService`에 전달
성공 시 이미지 URL 반환, 실패 시 에러 메시지 반환
#### ImageService.java
파일명을 UUID로 생성하여 중복 방지, 원본 파일명은 메타데이터로 저장
저장된 파일의 URL을 반환하여 프론트엔드에서 바로 사용 가능하도록 구현
### 📦 의존성 변경
- 없음 (기존 라이브러리만 사용)
### 🧪 테스트 및 검증
- 다양한 크기의 이미지 파일로 테스트
- 5MB 이상의 파일은 업로드 거부 확인
- 업로드된 이미지가 정상적으로 표시되는지 확인
### 📌 참고사항
- 이미지 파일은 서버의 `uploads/profile/` 디렉토리에 저장
- 향후 이미지 삭제 기능 추가 예정
🔍 분석 프로세스
변경 파일 분석 시 (효율적 분석)
⚠️ 중요: Git 명령어 최소화 및 효율적인 분석 프로세스 준수
-
변경된 파일명만 확인 (
git status한 번만 실행)git status- 변경된 파일명과 상태(M/A/D)만 확인
- main 브랜치와 다른 파일명만 확인
- 이후 더 이상 Git 명령어 사용하지 않음
-
이슈 내용 기반 파일 선별
- 이슈에서 언급된 파일/기능과 관련된 파일만 선별
- 변경된 파일 목록에서 이슈와 관련된 파일만 필터링
- 관련 없는 파일(예: 자동 생성 파일, 설정 파일 등)은 제외
-
선별된 파일 직접 읽어서 분석
- 선별된 파일을 직접 읽어서 현재 상태 확인
- 이슈와 직접 관련된 변경사항에 집중
- 추가된 코드, 수정된 코드, 삭제된 코드 분석
- 필요시 코드베이스 검색으로 관련 코드 파악
-
변경 패턴 파악
- 버그 수정인지
- 기능 추가인지
- 리팩토링인지
효율성 원칙:
- ✅
git status한 번만 실행 → 파일명 확인 → 이슈 기반 선별 → 파일 직접 읽어 분석 - ❌ Git diff 명령어 반복 실행 (토큰 낭비)
- ❌ 모든 파일의 전체 diff를 한 번에 읽기 (토큰 낭비)
- ✅ 이슈와 관련 없는 파일은 분석 생략
- ✅ 파일을 직접 읽어서 동적으로 변경사항 파악
보고서 파일 생성 로직
-
.report 폴더 확인
.report/폴더가 없으면 자동 생성
-
파일명 생성
- 형식:
[YYYYMMDD]_[ISSUE#]_[간단한설명].md - 날짜: 현재 날짜 (YYYYMMDD 형식)
- 이슈 번호:
#112형식 유지 - 설명: 한글/영문, 언더스코어로 단어 구분
- 특수문자 제거 및 안전한 파일명으로 변환
- 형식:
-
파일 저장
- 생성된 파일을
.report/폴더에 직접 저장 - 전체 경로 예시:
.report/20251212_#112_gitignore_중복추가_문제수정.md
- 생성된 파일을
이슈 내용 분석 시
-
이슈 타입 판단
- 버그 리포트
- 기능 요청
- 개선 제안
-
핵심 문제/요구사항 추출
- 문제 설명
- 예상 동작
- 재현 방법
-
관련 파일 선별 (변경 파일 목록과 연계)
- 이슈에서 언급된 파일명 추출
git status로 확인한 변경 파일 목록에서 관련 파일만 필터링- 관련 기능 코드 위치 파악
- 선별된 파일을 직접 읽어서 상세 분석 (토큰 절약)
📄 보고서 파일 생성
- 위치:
.report/디렉토리 - 파일명:
[YYYYMMDD]_[ISSUE#]_[간단한설명].md- 예시:
20251212_#112_gitignore_중복추가_문제수정.md - 프로젝트 prefix는 포함하지 않음
- 예시:
- 형식: Markdown
- Git 추적: 자동으로
.report/폴더가 gitignore에 추가되어 Git 추적 안 됨
✅ 출력 형식
보고서를 작성한 후:
-
보고서 내용 표시
- 작성된 보고서 전체 내용 표시
-
파일 저장 확인
- 저장된 파일 경로 표시
- 파일명 제안
-
다음 단계 제안
- 이슈에 댓글로 추가할지
- PR 설명에 포함할지
중요:
- 보고서는 자연스럽고 읽기 쉬운 형식으로 작성
- 기술적인 내용도 비전문가가 이해하기 쉬운 형식으로 작성
- 간결하게 키워드 기반 문장으로 가독성 높인 답변 제공
- 특이한 부분이나 주의할 점은 명확히 표시
