3.8 KiB
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 및 데이터베이스 구현: 이 문서에서는 프론트엔드 개발을 전제로 하며, 백엔드는 이미 존재하거나 별도로 개발되는 것으로 간주한다.