# 收藏按钮功能验证与统一 Spec ## Why 当前实用工具页面的收藏按钮存在以下问题: 1. **移动端页面缺失收藏按钮**:CalculatorMobile、Base64ToolMobile、CharsetConverterMobile、CodeFormatterMobile、ColorConverterMobile、EncodingConverterMobile、ImageCompressorMobile、JsonFormatterMobile、TextDiffMobile 共 9 个移动端页面没有收藏按钮 2. **桌面端按钮位置不统一**:部分页面在工具栏顶层(返回按钮旁),部分在英雄区标题旁 3. **ID 使用不一致**:部分页面使用硬编码 toolId,部分使用 urlPath 4. **需要验证功能完整性**:确认未登录点击弹出登录弹窗,登录后实现收藏功能 ## What Changes ### 位置统一(桌面端) - 将所有桌面端工具页面的收藏按钮统一放置在英雄区标题旁边 - 统一使用 `variant="hero"` 样式(毛玻璃效果,适配渐变背景) - 受影响页面:JsonFormatter、Base64Tool、EncodingConverter、CodeFormatter、RegexTool、TextDiff、TimestampTool、QRCodeGenerator、ColorConverter、ImageCompressor(共 10 个) ### 移动端补全 - 为 9 个移动端页面添加收藏按钮,放置在英雄区标题旁 - 受影响页面:CalculatorMobile、Base64ToolMobile、CharsetConverterMobile、CodeFormatterMobile、ColorConverterMobile、EncodingConverterMobile、ImageCompressorMobile、JsonFormatterMobile、TextDiffMobile ### ID 统一 - 将所有硬编码 toolId 改为 urlPath 动态查找 ## Impact - Affected specs: tool-fav-button-missing, tool-fav-button-layout - Affected code: - `src/pages/*/` 下 19 个页面组件 - 可能需要新增移动端英雄区样式 ## ADDED Requirements ### Requirement: 移动端收藏按钮 所有移动端工具详情页 SHALL 在英雄区标题旁边提供收藏按钮。 #### Scenario: 移动端页面显示收藏按钮 - **WHEN** 用户访问移动端工具详情页(如 CalculatorMobile) - **THEN** 收藏按钮显示在英雄区标题旁边,使用 hero variant 样式 ### Requirement: 收藏按钮位置统一 所有工具详情页(含桌面端和移动端)的收藏按钮 SHALL 统一放置在英雄区标题旁边。 #### Scenario: 桌面端按钮位置 - **WHEN** 用户访问桌面端工具详情页 - **THEN** 收藏按钮位于英雄区标题旁边,与标题水平对齐 #### Scenario: 移动端按钮位置 - **WHEN** 用户访问移动端工具详情页 - **THEN** 收藏按钮位于英雄区标题旁边 ### Requirement: ID 使用统一 所有收藏按钮 SHALL 使用 urlPath 动态查找 toolId,不再硬编码 toolId。 #### Scenario: urlPath 查找 - **WHEN** 页面加载收藏按钮 - **THEN** 通过 urlPath 从 API 获取 toolId 并缓存 ## MODIFIED Requirements ### Requirement: 收藏按钮桌面端样式 收藏按钮在英雄区 SHALL 使用 `variant="hero"` 样式,提供毛玻璃效果,适配渐变背景。 #### Scenario: hero variant 样式 - **WHEN** 收藏按钮位于英雄区 - **THEN** 背景半透明白色,带毛玻璃模糊效果,边框半透明 ### Requirement: 收藏功能验证 - **WHEN** 未登录用户点击收藏按钮 - **THEN** 显示提示"请先登录"(不弹出登录弹窗,仅提示消息) - **WHEN** 已登录用户点击收藏按钮(未收藏状态) - **THEN** 按钮变为实心金色星标,显示"已收藏",收藏数 +1,显示成功提示 - **WHEN** 已登录用户点击收藏按钮(已收藏状态) - **THEN** 按钮变为空心星标,显示"收藏",收藏数 -1,显示取消提示 ## REMOVED Requirements ### Requirement: 硬编码 toolId **Reason**: 硬编码 toolId 维护困难,容易与后端数据不一致 **Migration**: 统一使用 urlPath 动态查找