# 04. Functional Requirements

## 우선순위 정의

| 우선순위 | 의미 |
|---|---|
| P0 | MVP 출시 필수. 없으면 통합 서비스 가치가 성립하지 않음 |
| P1 | 출시 직후 전환/운영 효율을 높이는 기능 |
| P2 | 성장 단계 또는 운영 안정화 후 확장 |

## 1. 홈/탐색

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| HOME-001 | P0 | 통합 홈은 검색, 추천 지역, 인기 여행, 답례품, 지정기부, 세액공제 계산 진입을 제공한다. | 모바일/데스크탑에서 모든 섹션이 노출되고 각 상세로 이동한다. |
| HOME-002 | P0 | 홈 카드에는 지역, 유형, 핵심 혜택/가격/기부금액을 표시한다. | 사용자는 카드만 보고 여행/답례품/캠페인을 구분할 수 있다. |
| HOME-003 | P1 | 관심지역 기반 개인화 섹션을 제공한다. | 로그인 사용자는 저장 지역 콘텐츠를 우선 본다. |

## 2. 지역

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| REG-001 | P0 | 지역 홈은 여행, 답례품, 지정기부, 스토리를 한 화면에서 제공한다. | 특정 지자체의 네 가지 콘텐츠 유형이 같은 URL 아래 노출된다. |
| REG-002 | P0 | 지역은 시도/시군구 코드와 고향사랑e음 지자체 코드를 매핑한다. | 기부 가능 여부 검증에 같은 LocalGov id를 사용한다. |
| REG-003 | P1 | 관심지역 저장 기능을 제공한다. | 저장 후 홈/추천/알림에 반영된다. |

## 3. 여행

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| TRV-001 | P0 | 체험/숙소/캠핑 목록은 지역, 날짜, 인원, 유형, 가격, 예약가능 상태로 필터링한다. | 필터 상태가 URL에 반영된다. |
| TRV-002 | P0 | 여행 상세는 사진, 소개, 일정, 위치, 옵션, 취소정책, 예약 CTA를 제공한다. | 예약 가능한 옵션만 선택 가능하다. |
| TRV-003 | P0 | 여행 상세에 같은 지역의 답례품/지정기부 교차 CTA를 노출한다. | 지역 id 기준으로 관련 항목이 추천된다. |
| TRV-004 | P1 | 단체예약 문의 플로우를 제공한다. | 문의가 관리자 대시보드에 생성된다. |

## 4. 답례품

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| GFT-001 | P0 | 답례품 목록은 지역, 품목, 기부금액, 배송, 인기순/신규순/기부금액순 정렬을 제공한다. | 위기브 수준의 기본 PLP 탐색이 가능하다. |
| GFT-002 | P0 | 답례품 상세는 기부금액, 답례품 평가액, 예상 세액공제, 포인트 조건을 표시한다. | 20만원 기부 예시는 14.4만원 공제와 최대 6만원 답례품을 계산한다. |
| GFT-003 | P0 | 답례품은 기부한 지자체 포인트로만 선택 가능함을 안내한다. | 다른 지자체 포인트로 선택 시 차단된다. |
| GFT-004 | P1 | 답례품 품절/대체 추천을 제공한다. | 품절 상태에서 기부 포인트 사용 가능 대체품을 노출한다. |

## 5. 일반기부

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| DON-001 | P0 | 사용자는 지역 선택 후 기부금액을 입력할 수 있다. | 주소지 검증 전에는 잠정 안내, 검증 후 가능 여부 확정. |
| DON-002 | P0 | 기부 실행 전 본인확인, 주소지, 연간 한도 검증을 수행한다. | 본인 주소지 지자체 기부와 한도 초과가 차단된다. |
| DON-003 | P0 | e음 연동 성공/실패/대기/재시도 상태를 관리한다. | 실패 시 중복 납부 없이 재시도 가능하다. |
| DON-004 | P0 | 기부 완료 후 지자체별 포인트와 답례품 선택 동선을 제공한다. | 기부한 지역 답례품만 선택 가능하다. |

## 6. 지정기부

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| CAM-001 | P0 | 지정기부 목록은 지역, 분야, 모금률, 마감일로 필터링한다. | 필터 상태가 URL에 반영된다. |
| CAM-002 | P0 | 캠페인 상세는 목표금액, 모금액, 달성률, 사용처, 사업기간, 참여자 수를 표시한다. | 필수 필드가 없으면 게시할 수 없다. |
| CAM-003 | P0 | 지정기부 기부금은 일반기부와 같은 검증/연동 플로우를 사용한다. | 주소지/한도/e음 검증이 동일하게 적용된다. |
| CAM-004 | P1 | 사업 종료 후 결과보고 콘텐츠를 게시한다. | 기부자에게 결과보고 알림을 보낼 수 있다. |

## 7. 콘텐츠/CMS

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| CMS-001 | P0 | 콘텐츠는 지역, 여행상품, 답례품, 캠페인 중 하나 이상에 연결된다. | 연결 없는 콘텐츠는 홈 피드에 노출하지 않는다. |
| CMS-002 | P0 | 운영자는 콘텐츠 상태를 초안/검수/게시/보류로 관리한다. | 상태 변경 이력이 남는다. |
| CMS-003 | P1 | AI 초안 생성 후 운영자 검수 플로우를 제공한다. | AI 생성 여부와 검수자가 기록된다. |

## 8. 추천

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| REC-001 | P1 | 추천은 여행, 기부, 답례품 관심사를 함께 수집한다. | 결과는 지역 묶음으로 제시된다. |
| REC-002 | P1 | 세액공제 계산은 추천 모델이 아니라 계산 모듈 값을 사용한다. | 법령 수치가 하드코딩 답변으로 생성되지 않는다. |
| REC-003 | P2 | 사용 행동 기반 개인화 피드를 제공한다. | 관심지역/조회/기부/예약 이력이 반영된다. |

## 9. 마이페이지

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| MY-001 | P0 | 예약, 주문, 기부내역, 포인트, 영수증을 조회한다. | 각 상태별 상세로 이동 가능하다. |
| MY-002 | P0 | 프로필과 주소지 검증 상태를 표시한다. | 주소지 검증 만료/재검증 상태가 보인다. |
| MY-003 | P1 | 관심지역/관심상품/알림 설정을 관리한다. | 저장/해제 후 즉시 반영된다. |

## 10. 관리자

| ID | 우선순위 | 요구사항 | 인수 기준 |
|---|---|---|---|
| ADM-001 | P0 | 지역, 상품, 답례품, 캠페인, 콘텐츠 CRUD를 제공한다. | 권한별 접근 제어가 적용된다. |
| ADM-002 | P0 | 승인/반려/게시/중지 상태와 이력을 관리한다. | 모든 변경에 actor, timestamp, reason이 남는다. |
| ADM-003 | P0 | e음 연동 실패/대기 건을 조회하고 재시도한다. | 재시도 결과와 원인이 기록된다. |
| ADM-004 | P1 | 지자체/공급자별 성과 리포트를 제공한다. | 조회 기간별 CSV 다운로드 가능. |

