M1.1 收尾: - 24项 P0/P1/P2 bug 修复 (Rust 107 tests + Flutter 15 tests) - Flutter App v0.3: cupertino_icons 修复, 单元测试, 调试面板, APK 52.6MB - 示例插件完善: manifest.json + 请求/响应示范 + 7个测试 - API 文档重写 (以 routes.rs 为唯一权威) - MILESTONES.md 更新至 100% M1.2 启动: - P0: 插件管理 API 闭环 (handle_manager_message Custom 分支 + broadcast_plugin_states) - ServiceManager 集成测试 8/8 (tests/m1_2_service_manager.rs) - M1.2 测试计划 (docs/M1.2_TEST_PLAN.md, 18个E2E场景) - 动态插件系统: auto_rollback + version_manager GC + 路径穿越防护 总计: Rust 115/115 测试, Flutter 15/15 测试, 零 warning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
# Flutter P0/P1 优化任务单
|
||
|
||
> 派发时间: 2026-03-14 07:00
|
||
> 派发人: 陈逸飞 (CEO)
|
||
> 状态: 执行中
|
||
|
||
## 全局约束
|
||
- flutter sdk: /home/showen/flutter-sdk/bin/flutter
|
||
- 后端端口: 5000 (不是 8080)
|
||
- 完成后必须运行 flutter analyze 确认零错误
|
||
- 完成后在 .showen/TEAM_CHAT.md 汇报结果
|
||
- 有冲突找对应文件负责人协调
|
||
|
||
## 任务分配
|
||
|
||
### T1 - 王浩然: 新建 device_storage_service.dart
|
||
- 文件: clients/flutter/lib/services/device_storage_service.dart (新建)
|
||
- 依赖: shared_preferences (已添加到 pubspec.yaml)
|
||
- 功能:
|
||
- saveDevice(String ip, int port, String? name) — 保存到 SharedPreferences
|
||
- Future<List<Map<String,dynamic>>> getDevices() — 获取设备列表
|
||
- removeDevice(String ip) — 删除
|
||
- getLastDevice() — 获取最后使用的设备
|
||
- 最多保存10台,按最近使用时间排序
|
||
- key: 'showen_device_list', JSON array 格式
|
||
- 状态: [x] 待执行
|
||
|
||
### T2 - 王浩然: 修改 device_provider.dart
|
||
- 文件: clients/flutter/lib/providers/device_provider.dart
|
||
- 依赖: T1 完成
|
||
- 修改:
|
||
- 构造函数接收 DeviceStorageService
|
||
- 新增 List<Map> deviceList 属性
|
||
- init() 方法从 storage 加载上次设备并自动连接
|
||
- switchDevice(ip, port) 保存到 storage + 重连 HTTP/WS
|
||
- 默认 IP: 127.0.0.1, 默认端口: 5000
|
||
- 状态: [ ] 待执行
|
||
|
||
### T3 - 赵雨薇: 修改 web_socket_service.dart
|
||
- 文件: clients/flutter/lib/services/web_socket_service.dart
|
||
- 修改:
|
||
- 重连改指数退避: 初始2s, 翻倍, 最大60s, 成功后重置
|
||
- 新增 enum ConnectionState { connected, connecting, disconnected }
|
||
- 新增 Stream<ConnectionState> connectionStateStream
|
||
- 新增 int retryCount getter
|
||
- 新增 manualReconnect() 方法
|
||
- 状态: [x] 待执行
|
||
|
||
### T4 - 赵雨薇: 新建 connection_status_banner.dart
|
||
- 文件: clients/flutter/lib/widgets/connection_status_banner.dart (新建)
|
||
- 依赖: T3 完成
|
||
- 功能:
|
||
- 监听 WebSocketService connectionStateStream
|
||
- connected → 不显示 (高度0)
|
||
- connecting → 黄色横幅 "正在重连...(第N次)"
|
||
- disconnected → 红色横幅 "连接断开" + "重试"按钮
|
||
- AnimatedContainer 动画
|
||
- 状态: [ ] 待执行
|
||
|
||
### T5 - 李思琪: 修改 settings_screen.dart 添加视频管理
|
||
- 文件: clients/flutter/lib/screens/settings_screen.dart
|
||
- 修改:
|
||
- 新增"视频管理"Section: 调用 getVideos(), ListView 展示, 删除按钮+确认弹窗
|
||
- 配置区域加"复制JSON"按钮
|
||
- 状态: [x] 已完成
|
||
|
||
### T6 - 李思琪: 给 playback/trigger/network 添加下拉刷新
|
||
- 文件: playback_screen.dart, trigger_screen.dart, network_screen.dart
|
||
- 修改: 用 RefreshIndicator 包裹各页面主体
|
||
- 状态: [x] 已完成
|
||
|
||
### T7 - 集成: 修改 main.dart + app_shell.dart
|
||
- 文件: clients/flutter/lib/main.dart, clients/flutter/lib/screens/app_shell.dart
|
||
- 依赖: T1-T4 全部完成
|
||
- 修改:
|
||
- main.dart: 不 hardcode IP, 从 DeviceStorageService 加载
|
||
- app_shell.dart: body 顶部加 ConnectionStatusBanner
|
||
- 负责人: 最后由 PM 或 CEO review 后合并
|
||
- 状态: [ ] 待执行
|
||
|
||
## 执行顺序
|
||
Round 1 (并行): T1, T3, T5, T6
|
||
Round 2 (并行): T2, T4
|
||
Round 3: T7 (集成)
|
||
Round 4: flutter analyze + 编译 APK
|