Files
eg-qna/docs/QNA_FEEDBACK_PRD.md
Lectom C Han dd89e5fc90
Some checks failed
Deploy to Production / Deploy (push) Failing after 4s
svelt kit test
2025-07-25 14:43:32 +09:00

3.8 KiB

제품 요구사항 문서 (PRD): Q&A 피드백 플랫폼

  • 문서 버전: 1.2
  • 작성일: 2025년 7월 25일
  • 프로젝트명: SvelteKit 기반 Q&A 피드백 플랫폼

1. 개요

1.1. 프로젝트 목표

사용자로부터 질문, 답변, 버그 리포트, 기능 제안 등 다양한 형태의 피드백을 체계적으로 수집하고 관리하기 위한 웹 애플리케이션을 구축한다. 사용자는 별도의 회원가입 절차 없이 기존에 사용하던 OIDC 계정을 통해 로그인하여 피드백을 손쉽게 제출할 수 있다.

1.2. 대상 사용자

  • 피드백 제공자 (End-User): 서비스나 제품을 사용하는 모든 사용자. OIDC 계정을 통해 인증 후 피드백을 작성하고 제출할 수 있다.

1.3. 기대 효과

  • 피드백 수집 프로세스 간소화 및 사용자 참여 증대
  • 다양한 종류의 피드백을 ’채널’별로 분류하여 체계적인 관리 가능
  • 파일 첨부 기능을 통해 문제 상황이나 제안에 대한 상세 정보 확보

2. 기능 요구사항

2.1. 사용자 인증 (FR-1)

  • FR-1.1: 사용자는 OIDC 제공자를 통해서만 인증(로그인)할 수 있다.
  • FR-1.2: 시스템 내 자체적인 회원가입 기능은 제공하지 않는다.
  • FR-1.3: OIDC 인증 성공 시, 사용자의 세션이 생성되어 로그인 상태가 유지되어야 한다.
  • FR-1.4: 사용자는 명시적인 ‘로그아웃’ 버튼을 통해 언제든지 세션을 종료할 수 있다.
  • FR-1.5: OIDC 클라이언트 ID, 비밀키 등은 Cloudflare Pages의 환경 변수로 안전하게 관리되어야 한다.

2.2. Q&A 피드백 기능 (FR-2)

  • FR-2.1: 인증된 사용자만 피드백 관련 기능(작성, 조회)을 사용할 수 있다.
  • FR-2.2: 피드백 작성 폼은 다음 필드를 포함해야 한다: 채널, 제목, 내용, 파일 첨부.
  • FR-2.3: ‘제출’ 시, 로그인된 사용자 정보(ID, 이름 등)를 포함하여 백엔드 API로 전송해야 한다.
  • FR-2.4: 피드백 생성 API는 POST /api/projects/{projectId}/channels/{channelId}/feedbacks 엔드포인트를 사용한다.
  • FR-2.5: 피드백 목록 조회는 GET /api/projects/{projectId}/channels/{channelId}/feedbacks 엔드포인트를 사용한다.
  • FR-2.6: 피드백 검색은 GET /api/v2/projects/{projectId}/channels/{channelId}/feedbacks/search 엔드포인트를 사용한다.

2.3. 데이터 구조 및 확장성 (FR-3)

  • FR-3.1: 피드백 데이터는 백엔드 API 명세에 따라 유연한 JSON 구조로 전송된다.
  • FR-3.2: API 호출에 필요한 projectId, channelId는 URL 경로의 일부로 동적으로 구성된다.

3. 비기능 요구사항

3.1. 보안 및 설정 (NFR-1)

  • 모든 민감한 정보(OIDC 시크릿, API 키)는 소스 코드에 포함되지 않고, Cloudflare 환경 변수를 통해 안전하게 관리되어야 한다.
  • SvelteKit의 서버 함수(Cloudflare Workers로 배포됨)가 API 키를 사용하여 백엔드 API를 호출하는 프록시 역할을 수행한다.

3.2. 기술 스택 (NFR-2)

  • 프론트엔드: SvelteKit, TypeScript, Tailwind CSS
  • 배포: Cloudflare Pages (정적 파일 + Cloudflare Workers)

3.3. 배포 (NFR-3)

  • 프론트엔드 애플리케이션은 백엔드와 완전히 분리된 인프라에 독립적으로 배포된다.
  • SvelteKit의 @sveltejs/adapter-cloudflare를 사용하여 Cloudflare Pages에 최적화된 형태로 빌드된다.

4. 범위 외 (Out of Scope)

  • 관리자 대시보드: 제출된 피드백을 관리하는 기능.
  • 백엔드 API 및 데이터베이스 구현: 이 문서에서는 프론트엔드 개발을 전제로 하며, 백엔드는 이미 존재하거나 별도로 개발되는 것으로 간주한다.