feat(leisure): 新增闲情逸致模块与多项功能优化
本次提交完成多项核心更新: 1. 新增闲情逸致功能模块,包含时间线、收藏标注、季节主题等基础框架 2. 替换hive为社区维护的hive_ce包,修复依赖兼容问题 3. 统一替换"开发中"提示为"当前设备不支持",优化用户提示文案 4. 新增多项功能开关与特性标志,统一管理不可用功能提示 5. 完善用户账户洞察系统,新增头像审核中状态检测 6. 优化TTS语音朗读服务,修复Android端引擎初始化问题 7. 重构知识图谱缩放手势逻辑,解决缩放不跟手问题 8. 新增精灵头像组件,替换默认聊天头像样式 9. 新增外部链接跳转确认弹窗,提升使用安全性 10. 升级后端API接口,新增签到配置获取与补签积分规则动态读取 11. 完善多语言翻译覆盖率限制,非中文语言仅显示最高50%进度 12. 新增HTTP缓存拦截器,优化网络请求性能 13. 新增恢复出厂设置选项,完善数据管理功能 同时修复了多处代码细节问题:简化字符串拼接、优化布局代码、移除多余代码等。
This commit is contained in:
371
docs/superpowers/specs/2026-05-27-leisure-design.md
Normal file
371
docs/superpowers/specs/2026-05-27-leisure-design.md
Normal file
@@ -0,0 +1,371 @@
|
||||
# 闲情逸致 — 设计文档
|
||||
|
||||
> 创建时间: 2026-05-27
|
||||
> 状态: 待确认
|
||||
|
||||
---
|
||||
|
||||
## 一、功能概述
|
||||
|
||||
**名称**: 闲情逸致
|
||||
**描述**: 闲时与你立黄昏,灶前笑问粥可温
|
||||
**入口**: InspirationPage(灵感页)会话列表新增会话条目
|
||||
**核心**: 时间线布局,每日节点,左吃右玩,季节性花期/美食/景点推荐
|
||||
|
||||
---
|
||||
|
||||
## 二、页面结构
|
||||
|
||||
### 2.1 入口 — InspirationPage 会话条目
|
||||
|
||||
在 `ChatSessionNotifier._buildSessions()` 中新增系统会话:
|
||||
|
||||
```
|
||||
id: 'leisure'
|
||||
type: ChatSessionType.custom
|
||||
emoji: '🌸'
|
||||
name: '闲情逸致'
|
||||
lastMessage: '闲时与你立黄昏,灶前笑问粥可温'
|
||||
tag: 'NEW'
|
||||
route: '/leisure'
|
||||
```
|
||||
|
||||
### 2.2 主页面 — LeisureTimelinePage
|
||||
|
||||
**路由**: `/leisure`
|
||||
**布局**: CupertinoPageScaffold + CustomScrollView
|
||||
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ AppBar │
|
||||
│ ← 🌸 闲情逸致 🔍 ⚙️ │
|
||||
│ 闲时与你立黄昏... │
|
||||
├─────────────────────────────┤
|
||||
│ [⇄] 固定交换按钮 │
|
||||
├─────────────────────────────┤
|
||||
│ │ │
|
||||
│ ●────┼────● │
|
||||
│ 日期 │ 节点 │
|
||||
│ │ │
|
||||
│ ┌─────┼─────┐ │
|
||||
│ │ 吃 │ 玩 │ │
|
||||
│ │ 卡片 │ 卡片 │ │
|
||||
│ └─────┼─────┘ │
|
||||
│ │ │
|
||||
│ ═══ 今天 · 5月27日 ═══ │
|
||||
│ │ │
|
||||
│ ●今日节点 │
|
||||
│ ┌─────┼─────┐ │
|
||||
│ │ 吃 │ 玩 │ │
|
||||
│ └─────┼─────┘ │
|
||||
│ ┌─────┼─────┐ │
|
||||
│ │ 吃 │ 玩 │ │
|
||||
│ └─────┼─────┘ │
|
||||
│ │ │
|
||||
├─────────────────────────────┤
|
||||
│ 底部标注筛选栏 │
|
||||
│ 🌸花期 🦞美食 🏔️高海拔 ... │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
**组件拆分**:
|
||||
- `LeisureTimelinePage` — 主页面
|
||||
- `LeisureTimelineAppBar` — 顶部导航栏
|
||||
- `LeisureSwapButton` — 固定交换按钮
|
||||
- `LeisureDateNode` — 日期节点组件
|
||||
- `LeisureTodayDivider` — 今日分割线
|
||||
- `LeisureCardRow` — 卡片行(左吃右玩)
|
||||
- `LeisureCard` — 单张卡片
|
||||
- `LeisureBottomFilterBar` — 底部筛选栏
|
||||
- `LeisureSearchFab` — 外部搜索浮动按钮
|
||||
|
||||
### 2.3 设置页面 — LeisureSettingsPage
|
||||
|
||||
**路由**: `/leisure/settings`
|
||||
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ ← ⚙️ 闲情逸致设置 │
|
||||
├─────────────────────────────┤
|
||||
│ 数据统计卡片 (3列) │
|
||||
│ 总节点 | 卡片数 | 已收藏 │
|
||||
├─────────────────────────────┤
|
||||
│ 显示设置 │
|
||||
│ · 卡片大小 │
|
||||
│ · 卡片圆角 (Slider) │
|
||||
│ · 卡片样式 │
|
||||
│ · 显示季节标签 (Toggle) │
|
||||
│ · 显示日出日落 (Toggle) │
|
||||
│ · 风险提示 (Toggle) │
|
||||
├─────────────────────────────┤
|
||||
│ 数据管理 │
|
||||
│ · 更新数据 │
|
||||
│ · 清除缓存 │
|
||||
│ · 导出数据 │
|
||||
│ · 数据源管理 │
|
||||
├─────────────────────────────┤
|
||||
│ [📮 提交收录] │
|
||||
│ 此功能后续开发 │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.4 卡片详情 — LeisureCardDetailSheet
|
||||
|
||||
点击时间线卡片后弹出可拖拽Sheet:
|
||||
- 初始1/3屏,可上拖至90%
|
||||
- 顶部拖拽手柄 + 毛玻璃背景
|
||||
- Hero区: 渐变背景 + 大emoji + 标题 + 季节标签
|
||||
- 信息网格: 地点、海拔、日出日落、价格类型
|
||||
- 风险提示横幅
|
||||
- 操作按钮: 收藏笔记、分享卡片、外部搜索、添加标注
|
||||
- 多选标注区: checkbox勾选后显示在卡片上
|
||||
- 外部搜索: 百度/高德/大众点评/小红书/抖音
|
||||
- 相关推荐: 同季节/同地区的其他卡片
|
||||
|
||||
### 2.5 分享卡片 — LeisureShareSheet
|
||||
|
||||
点击卡片「分享」按钮后:
|
||||
1. 生成精美卡片图片(3种样式可选)
|
||||
2. 呼出系统分享面板
|
||||
|
||||
**卡片样式**:
|
||||
- 方案A: 渐变头图卡片(默认)
|
||||
- 方案B: 图片卡片
|
||||
- 方案C: 极简诗意卡片
|
||||
|
||||
---
|
||||
|
||||
## 三、数据模型
|
||||
|
||||
### 3.1 时间线节点
|
||||
|
||||
```dart
|
||||
class LeisureNode {
|
||||
final String date; // "2026-05-27"
|
||||
final int month;
|
||||
final int day;
|
||||
final String weekday; // "星期三"
|
||||
final bool isWeekend;
|
||||
final String season; // spring/summer/autumn/winter
|
||||
final String? sunrise; // "05:12"
|
||||
final String? sunset; // "19:12"
|
||||
final LeisureCards cards;
|
||||
}
|
||||
|
||||
class LeisureCards {
|
||||
final List<LeisureCard> food;
|
||||
final List<LeisureCard> play;
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 卡片
|
||||
|
||||
```dart
|
||||
class LeisureCard {
|
||||
final String id;
|
||||
final String title;
|
||||
final String emoji;
|
||||
final String description;
|
||||
final String location;
|
||||
final String province;
|
||||
final int? altitude; // 海拔(米)
|
||||
final String priceType; // free/paid/commercial/unknown
|
||||
final String? priceNote;
|
||||
final List<String> tags;
|
||||
final List<String> riskWarnings;
|
||||
final bool isFood; // true=吃, false=玩
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3 用户标注
|
||||
|
||||
```dart
|
||||
class LeisureBookmark {
|
||||
final String cardId;
|
||||
final bool isBookmarked;
|
||||
final List<String> checkedItems; // 多选标注
|
||||
final String? noteId; // 关联笔记ID
|
||||
}
|
||||
```
|
||||
|
||||
### 3.4 设置
|
||||
|
||||
```dart
|
||||
class LeisureSettings {
|
||||
final String cardSize; // small/standard/large
|
||||
final double cardRadius; // 4-24
|
||||
final String cardStyle; // exquisite/flat/photo
|
||||
final bool showSeasonLabel;
|
||||
final bool showSunInfo;
|
||||
final bool showRiskWarning;
|
||||
final bool isSwapped; // 左右是否交换
|
||||
final List<String> activeFilters; // 激活的筛选标签
|
||||
final String shareCardStyle; // gradient/photo/minimal
|
||||
final String defaultOpenPosition; // today/nearest/lastViewed
|
||||
final String infoDensity; // compact/standard/spacious
|
||||
final String riskLevel; // highOnly/all/off
|
||||
final String updateFrequency; // always/daily/manual
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、状态管理
|
||||
|
||||
### Provider 设计
|
||||
|
||||
```dart
|
||||
// 时间线数据
|
||||
leisureTimelineProvider — NotifierProvider<LeisureTimelineNotifier, LeisureTimelineState>
|
||||
|
||||
// 设置
|
||||
leisureSettingsProvider — NotifierProvider<LeisureSettingsNotifier, LeisureSettingsState>
|
||||
|
||||
// 收藏/标注
|
||||
leisureBookmarkProvider — NotifierProvider<LeisureBookmarkNotifier, LeisureBookmarkState>
|
||||
```
|
||||
|
||||
### 数据流
|
||||
|
||||
```
|
||||
JSON本地文件 → LeisureTimelineService.parse() → LeisureTimelineNotifier
|
||||
↓
|
||||
LeisureTimelineState
|
||||
↓
|
||||
LeisureTimelinePage (ConsumerWidget)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、关键交互逻辑
|
||||
|
||||
### 5.1 打开页面定位今日
|
||||
|
||||
每次打开时间线页面,自动滚动到今日节点位置。使用 `ScrollController` + `GlobalKey` 定位。
|
||||
|
||||
### 5.2 交换左右位置
|
||||
|
||||
顶部固定按钮,点击后交换吃/玩卡片位置。通过 `isSwapped` 状态控制 `FlexDirection`。
|
||||
|
||||
### 5.3 收藏到笔记
|
||||
|
||||
点击卡片「收藏」按钮 → 写入 `LeisureBookmark` → 可选关联到笔记模块。
|
||||
|
||||
### 5.4 分享卡片
|
||||
|
||||
点击「分享」→ 渲染 `RepaintBoundary` 生成图片 → 呼出 `Share.shareFiles()`。
|
||||
|
||||
### 5.5 外部搜索
|
||||
|
||||
点击搜索按钮 → 弹出 BottomSheet → 列出可跳转的应用(百度/高德/大众点评/小红书等)。
|
||||
|
||||
### 5.6 底部多选标注
|
||||
|
||||
底部筛选栏勾选后,卡片内显示对应勾选项目。勾选状态持久化到本地。
|
||||
|
||||
### 5.7 风险提示
|
||||
|
||||
云南边境、西部新疆/西藏/内蒙古等地区自动标注:
|
||||
- 高海拔 (>3000m): 🔴 高海拔·高原反应
|
||||
- 边境地区: ⚠️ 边境地区·注意安全
|
||||
- 极寒地区: ❄️ 极寒·防寒装备
|
||||
|
||||
---
|
||||
|
||||
## 六、主题适配
|
||||
|
||||
### 6.1 动态主题
|
||||
|
||||
所有颜色使用 `AppTheme.ext(context)` 令牌,不硬编码。
|
||||
|
||||
### 6.2 季节色
|
||||
|
||||
| 季节 | 颜色 | 使用场景 |
|
||||
|------|------|---------|
|
||||
| 春 | #4ECDC4 (teal) | 日期节点、季节标签 |
|
||||
| 夏 | #FF6B6B (red) | 日期节点、季节标签 |
|
||||
| 秋 | #F59E0B (amber) | 日期节点、季节标签 |
|
||||
| 冬 | #3B82F6 (blue) | 日期节点、季节标签 |
|
||||
|
||||
### 6.3 周末强调色
|
||||
|
||||
周六/周日的星期文字使用 `ext.accent` 强调色。
|
||||
|
||||
### 6.4 动态圆角
|
||||
|
||||
卡片圆角跟随 `AppRadius.of(context)` 动态调整。
|
||||
|
||||
---
|
||||
|
||||
## 七、文件结构
|
||||
|
||||
```
|
||||
features/tool_center/leisure/
|
||||
├── models/
|
||||
│ ├── leisure_node.dart # 时间线节点模型
|
||||
│ ├── leisure_card.dart # 卡片模型
|
||||
│ └── leisure_settings.dart # 设置模型
|
||||
├── presentation/
|
||||
│ ├── pages/
|
||||
│ │ ├── leisure_timeline_page.dart # 主时间线页面
|
||||
│ │ └── leisure_settings_page.dart # 设置页面
|
||||
│ └── widgets/
|
||||
│ ├── leisure_app_bar.dart # 顶部导航栏
|
||||
│ ├── leisure_swap_button.dart # 交换按钮
|
||||
│ ├── leisure_date_node.dart # 日期节点
|
||||
│ ├── leisure_today_divider.dart # 今日分割线
|
||||
│ ├── leisure_card_row.dart # 卡片行
|
||||
│ ├── leisure_card.dart # 单张卡片
|
||||
│ ├── leisure_bottom_filter.dart # 底部筛选栏
|
||||
│ ├── leisure_search_fab.dart # 外部搜索FAB
|
||||
│ └── leisure_share_sheet.dart # 分享卡片Sheet
|
||||
├── providers/
|
||||
│ ├── leisure_timeline_provider.dart # 时间线状态
|
||||
│ ├── leisure_settings_provider.dart # 设置状态
|
||||
│ └── leisure_bookmark_provider.dart # 收藏/标注状态
|
||||
└── services/
|
||||
└── leisure_data_service.dart # JSON解析+数据服务
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、路由注册
|
||||
|
||||
在 `app_routes.dart` 新增:
|
||||
```dart
|
||||
static const String leisure = '/leisure';
|
||||
static const String leisureSettings = '/leisure/settings';
|
||||
```
|
||||
|
||||
在 `content_routes.dart` 或新建 `leisure_routes.dart` 注册路由。
|
||||
|
||||
---
|
||||
|
||||
## 九、数据来源
|
||||
|
||||
数据架构: 按月拆分 + 增量合并 + Supabase服务器推送
|
||||
|
||||
本地数据:
|
||||
- assets/data/leisure/index.json — 索引文件(可用年月、季节颜色、风险等级等)
|
||||
- assets/data/leisure/2026_01.json ~ 2026_12.json — 12个月份数据文件
|
||||
- assets/data/leisure/patch_*.json — 增量补丁文件
|
||||
|
||||
增量机制:
|
||||
- patch文件支持 add(新增节点)和 update(更新卡片字段)操作
|
||||
- 服务器通过Supabase推送增量JSON,客户端合并到本地月度文件
|
||||
- 支持多年复用,2027年数据只需创建 2027_01.json ~ 2027_12.json
|
||||
|
||||
当前数据:
|
||||
- 67个核心节点,覆盖全年花期/美食/景点/观星/观鸥/温泉/冰雪
|
||||
- 2个增量补丁示例文件
|
||||
|
||||
---
|
||||
|
||||
## 十、待确认事项
|
||||
|
||||
1. ✅ 时间线布局: 中轴线对称
|
||||
2. ✅ 卡片风格: 精致卡片(圆角+阴影+毛玻璃)
|
||||
3. ✅ 数据来源: 预置JSON
|
||||
4. ❓ 分享卡片样式偏好: A渐变 / B图片 / C极简?
|
||||
5. ❓ 外部搜索支持哪些应用?
|
||||
6. ❓ 是否需要离线缓存支持?
|
||||
156
docs/superpowers/specs/2026-05-27-leisure-devlog.md
Normal file
156
docs/superpowers/specs/2026-05-27-leisure-devlog.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# 闲情逸致 — 开发文档 & 归档清单
|
||||
|
||||
> 创建时间: 2026-05-27
|
||||
> 状态: 开发中
|
||||
> 负责人: AI Coder
|
||||
> 审计要求: 每完成一项必须更新状态,禁止偷工减料
|
||||
|
||||
---
|
||||
|
||||
## 一、归档文件清单
|
||||
|
||||
### 1.1 HTML 原型文件(4个)
|
||||
|
||||
| 文件 | 路径 | 行数 | 状态 | 对应Flutter页面 |
|
||||
|------|------|------|------|----------------|
|
||||
| 主时间线 | `docs/mockups/leisure_timeline.html` | 1371 | ✅ 已确认 | LeisureTimelinePage |
|
||||
| 设置页面 | `docs/mockups/leisure_settings.html` | 714 | ✅ 已确认 | LeisureSettingsPage |
|
||||
| 分享卡片 | `docs/mockups/leisure_share_card.html` | 476 | ✅ 已确认 | LeisureShareSheet |
|
||||
| 卡片详情Sheet | `docs/mockups/leisure_card_detail.html` | 1518 | ✅ 已确认 | LeisureCardDetailSheet |
|
||||
|
||||
### 1.2 JSON 数据文件(15个)
|
||||
|
||||
| 文件 | 路径 | 节点数 | 状态 |
|
||||
|------|------|--------|------|
|
||||
| 索引文件 | `assets/data/leisure/index.json` | - | ✅ |
|
||||
| 1月数据 | `assets/data/leisure/2026_01.json` | 4 | ✅ |
|
||||
| 2月数据 | `assets/data/leisure/2026_02.json` | 5 | ✅ |
|
||||
| 3月数据 | `assets/data/leisure/2026_03.json` | 5 | ✅ |
|
||||
| 4月数据 | `assets/data/leisure/2026_04.json` | 5 | ✅ |
|
||||
| 5月数据 | `assets/data/leisure/2026_05.json` | 6 | ✅ |
|
||||
| 6月数据 | `assets/data/leisure/2026_06.json` | 5 | ✅ |
|
||||
| 7月数据 | `assets/data/leisure/2026_07.json` | 6 | ✅ |
|
||||
| 8月数据 | `assets/data/leisure/2026_08.json` | 5 | ✅ |
|
||||
| 9月数据 | `assets/data/leisure/2026_09.json` | 6 | ✅ |
|
||||
| 10月数据 | `assets/data/leisure/2026_10.json` | 6 | ✅ |
|
||||
| 11月数据 | `assets/data/leisure/2026_11.json` | 6 | ✅ |
|
||||
| 12月数据 | `assets/data/leisure/2026_12.json` | 7 | ✅ |
|
||||
| 增量补丁示例 | `assets/data/leisure/patch_2026_05_27.json` | - | ✅ |
|
||||
| 服务器推送示例 | `assets/data/leisure/patch_2026_06_server.json` | - | ✅ |
|
||||
|
||||
### 1.3 设计文档(1个)
|
||||
|
||||
| 文件 | 路径 | 状态 |
|
||||
|------|------|------|
|
||||
| 设计文档 | `docs/superpowers/specs/2026-05-27-leisure-design.md` | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 二、开发任务清单
|
||||
|
||||
### Phase 1: 数据层
|
||||
|
||||
| # | 任务 | 文件 | 验收标准 | 状态 |
|
||||
|---|------|------|---------|------|
|
||||
| 1.1 | LeisureNode 模型 | `models/leisure_node.dart` | freezed模型,含date/month/day/weekday/isWeekend/season/sunrise/sunset/cards | ⬜ |
|
||||
| 1.2 | LeisureCard 模型 | `models/leisure_card.dart` | freezed模型,含id/title/emoji/description/location/province/altitude/priceType/tags/riskWarnings/isFood | ⬜ |
|
||||
| 1.3 | LeisureSettings 模型 | `models/leisure_settings.dart` | 含cardSize/cardRadius/cardStyle/showSeasonLabel/showSunInfo/showRiskWarning/isSwapped/activeFilters/shareCardStyle/defaultOpenPosition/infoDensity/riskLevel/updateFrequency | ⬜ |
|
||||
| 1.4 | LeisureBookmark 模型 | `models/leisure_bookmark.dart` | 含cardId/isBookmarked/checkedItems/noteId | ⬜ |
|
||||
| 1.5 | LeisureIndex 模型 | `models/leisure_index.dart` | 含availableYears/availableMonths/seasonColors/riskLevels/priceTypes/serverSync | ⬜ |
|
||||
| 1.6 | LeisurePatch 模型 | `models/leisure_patch.dart` | 含type/operations(op=add/update)/targetYear/targetMonth | ⬜ |
|
||||
| 1.7 | 数据服务 | `services/leisure_data_service.dart` | 加载index.json+月度JSON+增量合并+Supabase拉取 | ⬜ |
|
||||
|
||||
### Phase 2: 状态层
|
||||
|
||||
| # | 任务 | 文件 | 验收标准 | 状态 |
|
||||
|---|------|------|---------|------|
|
||||
| 2.1 | 时间线Provider | `providers/leisure_timeline_provider.dart` | NotifierProvider,加载月度数据,支持按月懒加载 | ⬜ |
|
||||
| 2.2 | 设置Provider | `providers/leisure_settings_provider.dart` | NotifierProvider,持久化到KvStorage | ⬜ |
|
||||
| 2.3 | 收藏Provider | `providers/leisure_bookmark_provider.dart` | NotifierProvider,持久化到Hive | ⬜ |
|
||||
|
||||
### Phase 3: 页面层
|
||||
|
||||
| # | 任务 | 文件 | 验收标准 | 状态 |
|
||||
|---|------|------|---------|------|
|
||||
| 3.1 | 主时间线页面 | `pages/leisure_timeline_page.dart` | CupertinoPageScaffold+CustomScrollView,自动滚动到今日 | ⬜ |
|
||||
| 3.2 | AppBar组件 | `widgets/leisure_app_bar.dart` | 返回按钮+标题+副标题+搜索按钮+设置按钮 | ⬜ |
|
||||
| 3.3 | 交换按钮 | `widgets/leisure_swap_button.dart` | 固定位置,点击交换左右卡片 | ⬜ |
|
||||
| 3.4 | 日期节点 | `widgets/leisure_date_node.dart` | 中轴线圆点+日期+星期+季节标签,今日高亮脉冲 | ⬜ |
|
||||
| 3.5 | 今日分割线 | `widgets/leisure_today_divider.dart` | 渐变线+今日文字 | ⬜ |
|
||||
| 3.6 | 卡片行 | `widgets/leisure_card_row.dart` | 左吃右玩双列,支持交换 | ⬜ |
|
||||
| 3.7 | 单张卡片 | `widgets/leisure_card.dart` | 精致卡片风格,圆角+阴影+季节色+风险提示+价格标签+操作按钮 | ⬜ |
|
||||
| 3.8 | 底部筛选栏 | `widgets/leisure_bottom_filter.dart` | 多选Chip,筛选标注 | ⬜ |
|
||||
| 3.9 | 外部搜索FAB | `widgets/leisure_search_fab.dart` | 浮动按钮,弹出搜索面板 | ⬜ |
|
||||
| 3.10 | 卡片详情Sheet | `widgets/leisure_card_detail_sheet.dart` | 可拖拽Sheet,1/3→90%,Hero区+信息网格+操作按钮+标注+外部搜索+相关推荐 | ⬜ |
|
||||
| 3.11 | 设置页面 | `pages/leisure_settings_page.dart` | 统计卡片+显示设置+数据管理+提交收录 | ⬜ |
|
||||
| 3.12 | 分享卡片 | `widgets/leisure_share_sheet.dart` | 渐变头图卡片+系统分享 | ⬜ |
|
||||
|
||||
### Phase 4: 集成层
|
||||
|
||||
| # | 任务 | 文件 | 验收标准 | 状态 |
|
||||
|---|------|------|---------|------|
|
||||
| 4.1 | 路由注册 | `core/router/app_routes.dart` + `content_routes.dart` | /leisure + /leisure/settings | ⬜ |
|
||||
| 4.2 | 入口会话 | `chat_session_provider.dart` | 新增leisure系统会话条目 | ⬜ |
|
||||
| 4.3 | Asset注册 | `pubspec.yaml` | assets/data/leisure/ 目录 | ⬜ |
|
||||
| 4.4 | CHANGELOG | `CHANGELOG.md` | 记录功能新增 | ⬜ |
|
||||
|
||||
---
|
||||
|
||||
## 三、验收标准
|
||||
|
||||
### 3.1 功能验收
|
||||
|
||||
| 功能 | 验收方法 | 状态 |
|
||||
|------|---------|------|
|
||||
| 灵感页新增"闲情逸致"会话条目 | 可见且可点击 | ⬜ |
|
||||
| 点击跳转到时间线页面 | 路由正确跳转 | ⬜ |
|
||||
| 时间线显示今日+明天+后天节点 | 自动定位到今日 | ⬜ |
|
||||
| 今日分割线 | 可见且样式正确 | ⬜ |
|
||||
| 左吃右玩双列卡片 | 布局正确 | ⬜ |
|
||||
| 交换按钮切换左右位置 | 功能正常 | ⬜ |
|
||||
| 周末星期显示强调色 | 颜色正确 | ⬜ |
|
||||
| 季节色标签 | 每季不同颜色 | ⬜ |
|
||||
| 风险提示 | 高海拔/边境/极寒正确标注 | ⬜ |
|
||||
| 价格标签 | 免费/付费/商业化/未知 | ⬜ |
|
||||
| 卡片点击弹出详情Sheet | 可拖拽Sheet | ⬜ |
|
||||
| 收藏到笔记 | 功能正常 | ⬜ |
|
||||
| 分享卡片 | 生成图片+系统分享 | ⬜ |
|
||||
| 外部搜索 | 跳转百度/高德/大众点评等 | ⬜ |
|
||||
| 底部多选标注 | 勾选后卡片内显示 | ⬜ |
|
||||
| 设置页面 | 所有选项可用 | ⬜ |
|
||||
| 动态主题 | 日间/夜间/AMOLED正确 | ⬜ |
|
||||
| 动态圆角 | 跟随系统设置 | ⬜ |
|
||||
| 增量数据合并 | patch文件正确合并 | ⬜ |
|
||||
| 服务器数据拉取 | Supabase拉取+合并 | ⬜ |
|
||||
|
||||
### 3.2 代码质量验收
|
||||
|
||||
| 检查项 | 标准 | 状态 |
|
||||
|--------|------|------|
|
||||
| 空指针安全 | 所有可空字段做空判断 | ⬜ |
|
||||
| 主题令牌 | 无硬编码颜色/圆角/间距 | ⬜ |
|
||||
| 文件头注释 | 创建时间/更新时间/名称/作用 | ⬜ |
|
||||
| 方法注释 | 关键方法有注释 | ⬜ |
|
||||
| iOS风格 | 优先Cupertino组件 | ⬜ |
|
||||
| 文件行数 | 不超过1000行 | ⬜ |
|
||||
| flutter analyze | 无error | ⬜ |
|
||||
|
||||
---
|
||||
|
||||
## 四、开发日志
|
||||
|
||||
| 日期 | 任务 | 状态 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 2026-05-27 | 设计阶段完成 | ✅ | HTML原型+JSON数据+设计文档 |
|
||||
| 2026-05-27 | 开发文档创建 | ✅ | 本文档 |
|
||||
| 2026-05-27 | Phase 1 数据层 | 🔄 | 进行中 |
|
||||
|
||||
---
|
||||
|
||||
## 五、审计检查点
|
||||
|
||||
- [ ] Phase 1 完成后审计: 模型是否完整,服务是否可加载JSON
|
||||
- [ ] Phase 2 完成后审计: Provider是否正确管理状态
|
||||
- [ ] Phase 3 完成后审计: 页面是否与HTML原型一致
|
||||
- [ ] Phase 4 完成后审计: 集成是否完整,路由是否正确
|
||||
- [ ] 最终审计: 全部验收标准通过
|
||||
Reference in New Issue
Block a user