## ADDED Requirements

### Requirement: Audio recording lifecycle
录音 composable SHALL 管理完整的录音生命周期：请求权限 → 开始录音 → 录音中 → 停止录音 → 返回音频 Blob。

#### Scenario: Successful recording
- **WHEN** 用户点击录音按钮且浏览器麦克风权限已授予
- **THEN** MediaRecorder 开始采集音频，`isRecording` 状态变为 `true`，录音计时器开始计时

#### Scenario: Stop recording
- **WHEN** 用户点击停止录音按钮
- **THEN** MediaRecorder 停止采集，收集到的 audio chunks 合并为 Blob，通过回调或返回值提供给调用方

### Requirement: Microphone permission handling
系统 SHALL 在首次录音时请求麦克风权限，并优雅处理权限拒绝场景。

#### Scenario: Permission granted
- **WHEN** 用户首次点击录音按钮且浏览器弹出权限请求
- **THEN** 用户授权后开始录音，`permissionState` 变为 `granted`

#### Scenario: Permission denied
- **WHEN** 用户拒绝麦克风权限
- **THEN** `permissionState` 变为 `denied`，UI 显示引导提示（如何在浏览器设置中开启权限），录音按钮保持可点击但点击后显示提示

#### Scenario: Permission previously granted
- **WHEN** 用户之前已授权且再次进入页面
- **THEN** 直接开始录音，无权限弹窗

### Requirement: Audio format compatibility
录音 composable SHALL 自动选择浏览器支持的最佳音频格式。

#### Scenario: Browser supports webm
- **WHEN** `MediaRecorder.isTypeSupported('audio/webm;codecs=opus')` 返回 true
- **THEN** 使用 `audio/webm` 格式录制

#### Scenario: Browser does not support webm (Safari)
- **WHEN** webm 不被支持
- **THEN** fallback 到 `audio/mp4` 或 `audio/wav`

### Requirement: Silence detection
录音过程中系统 SHALL 检测长时间沉默并给出提示。

#### Scenario: Silence detected
- **WHEN** 录音开始后连续 5 秒未检测到有效语音输入
- **THEN** 显示沉默提示浮层，包含鼓励性的句子提示

#### Scenario: User resumes speaking
- **WHEN** 沉默提示显示后用户开始说话
- **THEN** 沉默提示自动消失

### Requirement: Recording timer
录音过程中 SHALL 显示实时录音时长。

#### Scenario: Timer counting
- **WHEN** 录音正在进行
- **THEN** 状态栏显示已录音秒数，每秒更新一次

#### Scenario: Timer reset
- **WHEN** 录音停止
- **THEN** 录音计时器归零

### Requirement: Resource cleanup
录音相关的资源 SHALL 在组件卸载时完全释放。

#### Scenario: Component unmount during recording
- **WHEN** 用户在录音过程中离开页面（组件 unmount）
- **THEN** 系统自动停止 MediaRecorder、释放 MediaStream tracks、清除定时器
