# 기능명세서 (Features)

기능명세서는 PRD에서 정의된 요구사항과 제품의 목표를 실제 구현 가능한 기능 단위로 구체화하는 단계입니다. PRD가 '무엇을, 왜 만드는가'에 집중한다면, 기능명세서는 '어떻게 작동하는가'를 설계하는 문서입니다.

이곳에서 정의된 기능 데이터는 이후 유저 플로우(User Flow) 등 모든 후속 기획 산출물의 기준이 됩니다. 두 가지 뷰를 제공하며 트리 뷰에서는 전체 구조를, 디렉토리 뷰에서는 세부 정책과 설명을 관리할 수 있습니다.

## 1. 구조 이해하기

기능명세서는 **요구사항 → 기능 → 상세 기능**의 3단계 계층 구조로 이루어집니다.

<table><thead><tr><th width="234.5546875">요구사항 (Requirement)</th><th width="213.375">기능 (Feature)</th><th>상세 기능 (Specification)</th></tr></thead><tbody><tr><td>회원 관리</td><td>회원가입</td><td>이메일/비밀번호 기반 회원가입</td></tr><tr><td></td><td></td><td>소셜 로그인 (카카오, 네이버, 구글 등)</td></tr><tr><td></td><td></td><td>닉네임 설정</td></tr><tr><td></td><td></td><td>이용약관 및 개인정보처리방침 동의</td></tr><tr><td></td><td>로그인/로그아웃</td><td>자동 로그인 / 로그아웃 처리</td></tr><tr><td></td><td></td><td>비밀번호 찾기 및 재설정</td></tr><tr><td>예약 관리</td><td>예약 생성</td><td>회의실 및 시간대 선택</td></tr><tr><td></td><td></td><td>참석자 추가 및 인원 제한 설정</td></tr><tr><td></td><td></td><td>예약 확인 및 확정 알림 발송</td></tr></tbody></table>

### 요구사항 (Requirement)

프로젝트의 최상위 목표나 사용자의 핵심 니즈를 나타냅니다.

* 설명: 기획의 큰 줄기를 잡는 단위입니다. (예: "회원 관리", "결제 및 요금제")
* 수용 기준 (Acceptance Criteria): 해당 요구사항이 최종적으로 충족해야 하는 조건이나 정책을 체크리스트 형태로 정의합니다.
  * *예: "이메일로 회원가입 가능", "권한별로 메뉴 전환이 다르게 보임"*

### 기능 (Feature)

요구사항을 구체적으로 실현하기 위한 논리적 기능 단위입니다.

* 설명: 요구사항을 달성하기 위해 필요한 구체적인 기능을 정의합니다. (예: "회원가입", "문서 공유", "결제 관리")
* 사용자 역할: 각 기능의 수행 주체를 지정합니다. PRD에서 설정한 역할을 불러와 매칭할 수 있습니다.
  * *예: "기획자", "관리자", "게스트"*

### 상세 기능 (Specification)

각 기능 내에서 실제로 일어나는 세부 동작이나 비즈니스 정책을 정의하는 최하위 단계입니다.

* 설명: 개발 및 디자인의 직접적인 기준이 되는 상세 명세입니다. (예: "이메일 가입 유효성 검사", "비밀번호 재설정 로직", "로그인 세션 만료 정책")

<details>

<summary>아이템별 속성 관리하기</summary>

모든 단계(요구사항, 기능, 상세 기능)에서는 아래 속성들을 설정하여 기획의 우선순위와 진척도를 체계적으로 관리할 수 있습니다.

* **중요도 :** 기능의 **우선순위** 또는 중요도를 설정합니다. (낮음 / 중간 / 높음)&#x20;
* **상태 :** 기획 또는 개발의 진척도를 설정합니다. (시작 전 / 진행중 / 완료 / 중단)
  * 사용자의 의도에 따라 기획 진척도나 개발 현황판으로 유연하게 활용할 수 있습니다.

</details>

## **2. 뷰 전환**

작업 성격에 맞춰 트리 뷰와 디렉토리 뷰를 자유롭게 넘나들며 기획의 완성도를 높여보세요.

* 상단 탭 토글 (Toggle) 활용: 화면 상단의 \[기능명세서] 탭을 클릭할 때마다 트리 뷰와 디렉토리 뷰가 순차적으로 전환됩니다.
* 좌측 버튼 활용: 화면 왼쪽의 아이콘 버튼을 클릭하여 원하는 보기 방식으로 즉시 이동할 수 있습니다.

<figure><img src="https://3323951709-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv0nDmWkcH3Ia4zEb82Qz%2Fuploads%2F2AysYzNIAGLonBILARUK%2Fview-switch.png?alt=media&#x26;token=2a0a82d7-76e9-4404-aa81-6771421f1ed3" alt=""><figcaption></figcaption></figure>

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>트리 뷰 (Tree View)</td><td><a href="https://3323951709-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv0nDmWkcH3Ia4zEb82Qz%2Fuploads%2FfXvjeQOQsfD0OXWCoSWD%2Ftree.png?alt=media&#x26;token=0f6ea750-8e7b-4990-950d-3fa51b7de21f">tree.png</a></td><td><a href="features/tree-view">tree-view</a></td></tr><tr><td>디렉토리 뷰 (Directory View)</td><td><a href="https://3323951709-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv0nDmWkcH3Ia4zEb82Qz%2Fuploads%2FYNNtA6Bbn36vCtrZMOqq%2Fdirectory.png?alt=media&#x26;token=2cba3de6-91aa-4af7-bc4b-8e4be4a4c26b">directory.png</a></td><td><a href="features/directory-view">directory-view</a></td></tr></tbody></table>
