Files
fastapi_file_uploader/PROMPT.md
2026-02-19 11:00:53 +09:00

64 lines
3.7 KiB
Markdown

# 효율적인 프롬프트 작성 가이드 및 프로젝트 기록
이 문서는 프로젝트 개발 과정에서의 요구사항을 **Prompt Engineering** 관점에서 재구성한 가이드입니다. 각 기능 구현 시 모델에게 전달하면 가장 효과적인 구조를 채택했습니다.
---
### 💡 시스템 기본 페르소나 (System Role)
> "너는 FastAPI와 현대적인 Frontend 기술에 능숙한 시니어 풀스택 개발자야. 보안(경로 탐색 방지), 코드 효율성, 그리고 사용자 친화적인 UI/UX를 최우선으로 고려해서 코드를 작성해줘."
---
### 1. 요구사항 분석 및 구체화 (Requirement Engineering)
**[Prompt]**
- **Context**: `README.md` 파일에 프로그램 설명과 기초 요구사항이 작성되어 있어.
- **Task**: 견고하고 전문적인 프로그램 구현을 위해 이 내용을 분석하고, 상세한 소프트웨어 요구사항 명세서(SRS)를 작성해서 `REQUIREMENTS.md` 파일에 저장해줘.
- **Output**: 기능적/비기능적 요구사항, 기술 스택, 디렉토리 구조가 포함된 명세서.
### 2. 초기 프로토타입 구현 (Prototype Implementation)
**[Prompt]**
- **Context**: 작성된 `REQUIREMENTS.md` 명세서를 기반으로 프로젝트를 시작하려 해.
- **Task**: 명세서의 모든 요구사항을 충족하는 FastAPI 애플리케이션의 초안 코드를 작성해줘.
- **Constraints**:
- 파일 업로드/목록 조회/다운로드 API 포함.
- 파일 타입별(이미지/비디오) 자동 분류 저장 로직 구현.
- 메타데이터는 `metadata.json`으로 관리할 것.
### 3. 프로젝트 분석 및 문서화 (Documentation)
**[Prompt]**
- **Task**: 현재 구현된 코드베이스를 분석하고 사용자용 `REPORT.md`를 작성해줘.
- **Instructions**:
1. 핵심 기능 요약 및 실행 방법 안내.
2. `curl`을 이용한 API 엔드포인트별 테스트 명령어 예시 포함.
### 4. YouTube 연동 기능 (External Integration)
**[Prompt]**
- **Task**: YouTube URL을 통해 영상을 서버로 직접 다운로드하는 기능을 추가해줘.
- **Requirements**:
- `yt-dlp` 라이브러리를 사용하고, 결과물을 `assets/videos`에 저장.
- Web UI에 URL 입력 폼과 처리 상태 표시 기능을 통합할 것.
### 5. 스트리밍 엔진 최적화 (Streaming & Range Requests)
**[Prompt]**
- **Task**: 대용량 영상의 실시간 스트리밍(Seeking)이 가능하도록 개선해줘.
- **Technical Detail**: FastAPI의 `FileResponse`가 HTTP Range Requests를 지원하도록 설정하고, 브라우저 내 재생을 위해 `inline` 콘텐츠 배치를 적용할 것.
### 6. UI/UX 현대화 (Frontend Redesign)
**[Prompt]**
- **Role**: 전문 UI/UX 디자이너 및 프론트엔드 개발자.
- **Task**: 기존의 기본적인 UI를 현대적인 파스텔 톤 스타일로 전면 개편해줘.
- **Style Guide**: 카드형 레이아웃, Google Fonts (Poppins), 반응형 디자인, 작업 상태 애니메이션(Loader) 적용.
### 7. 리소스 관리 및 삭제 (Resource Management)
**[Prompt]**
- **Task**: 서버 리소스 관리를 위해 파일 삭제 기능을 추가해줘.
- **Constraints**: 실제 파일 삭제와 메타데이터 제거를 동시 처리하고, UI에서는 삭제 전 사용자 확인 절차를 둘 것.
---
### 🚀 효율적인 프롬프트 전달 팁
1. **역할 정의 (Role)**: 전문가 페르소나를 지정하세요.
2. **구체적인 제약 조건 (Constraints)**: 기술적 한계나 필수 라이브러리를 명시하세요.
3. **단계별 지시 (Step-by-Step)**: 복잡한 작업은 논리적 순서로 나누어 요청하세요.
4. **출력 형식 지정 (Output Format)**: 결과물의 형태(Markdown, JSON, 특정 코드 스타일 등)를 정의하세요.