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

3.7 KiB

효율적인 프롬프트 작성 가이드 및 프로젝트 기록

이 문서는 프로젝트 개발 과정에서의 요구사항을 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, 특정 코드 스타일 등)를 정의하세요.