feat: M1.1 完成 + M1.2 启动 — 全量更新
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>
This commit is contained in:
@@ -1,59 +1,56 @@
|
||||
# Flutter App 待优化清单
|
||||
|
||||
> 生成时间: 2026-03-14
|
||||
> 当前完成度: ~68%, APK 已编译 (51MB)
|
||||
> 最后更新: 2026-03-14
|
||||
> 当前完成度: ~95%, APK 待重编译
|
||||
|
||||
## P0 — 阻塞上线
|
||||
|
||||
### 1. 设备 IP 持久化 + 多设备支持
|
||||
- `main.dart:20` hardcoded `127.0.0.1:8080`,重启丢失
|
||||
- 需要: SharedPreferences 存储设备历史 (最近10台)
|
||||
- 需要: 顶栏设备切换下拉菜单
|
||||
- 需要: 连接前验证 `/api/status` 可达性
|
||||
- ~~`main.dart:20` hardcoded `127.0.0.1:8080`,重启丢失~~ ✅ 已从持久化初始化
|
||||
- ~~需要: SharedPreferences 存储设备历史 (最近10台)~~ ✅ device_storage_service.dart
|
||||
- 需要: 顶栏设备切换下拉菜单 ⏳ 赵雨薇处理中
|
||||
- 需要: 连接前验证 `/api/status` 可达性 ⏳ 赵雨薇处理中
|
||||
|
||||
### 2. WebSocket 重连增强
|
||||
- `web_socket_service.dart` 固定 2 秒重连,无退避
|
||||
- 需要: 指数退避 (2s→4s→8s→16s→max 60s)
|
||||
- 需要: 顶层连接状态横幅 (Reconnecting... / Offline)
|
||||
- 需要: 手动重试按钮
|
||||
### 2. WebSocket 重连增强 ✅ 已完成
|
||||
- ~~`web_socket_service.dart` 固定 2 秒重连,无退避~~ ✅ 指数退避 2s→max 60s
|
||||
- ~~需要: 顶层连接状态横幅~~ ✅ connection_status_banner.dart
|
||||
- ~~需要: 手动重试按钮~~ ✅ manualReconnect()
|
||||
|
||||
### 3. HTTP baseUrl 动态化
|
||||
- HttpApiService/WebSocketService 的 URL 需跟随设备切换动态更新
|
||||
- DeviceProvider 应成为全局设备上下文,驱动所有服务重连
|
||||
### 3. HTTP baseUrl 动态化 ✅ 已完成
|
||||
- ~~HttpApiService/WebSocketService 的 URL 需跟随设备切换动态更新~~ ✅
|
||||
- ~~DeviceProvider 应成为全局设备上下文~~ ✅
|
||||
|
||||
## P1 — 应该有
|
||||
|
||||
### 4. 视频管理 UI (Settings 页)
|
||||
- API 已有 getVideos(),但 UI 无视频列表展示
|
||||
- 需要: 视频列表 + 删除确认弹窗
|
||||
- 需要: 刷新按钮
|
||||
### 4. 视频管理 UI (Settings 页) ✅ 已完成
|
||||
- ~~视频列表 + 删除确认弹窗~~ ✅ settings_screen.dart:266-354
|
||||
- ~~刷新按钮~~ ✅ settings_screen.dart:282
|
||||
|
||||
### 5. 配置 JSON 编辑器
|
||||
- 当前只有表单模式,缺 raw JSON 编辑模式
|
||||
- 需要: 切换按钮 (表单/JSON)
|
||||
- 需要: 复制到剪贴板
|
||||
### 5. 配置 JSON 编辑器 ✅ 已完成
|
||||
- ~~需要: 复制到剪贴板~~ ✅ settings_screen.dart:559
|
||||
- ~~需要: 切换按钮 (表单/JSON)~~ ✅ 赵雨薇完成
|
||||
|
||||
### 6. BLE 简易控制命令
|
||||
- PRD §8.6 要求: 近场调试用 play/pause/next/prev BLE 按钮
|
||||
- Network 页添加 BLE 控制区域
|
||||
### 6. BLE 简易控制命令 ✅ 已完成
|
||||
- ~~play/pause/next/prev BLE 按钮~~ ✅ network_screen.dart:115-183
|
||||
|
||||
### 7. 全页面下拉刷新
|
||||
- 目前只有 Home 页有 RefreshIndicator
|
||||
- Playback / Trigger / Network / Settings 都需要
|
||||
### 7. 全页面下拉刷新 ✅ 已完成
|
||||
- ~~所有 5 个页面~~ ✅ RefreshIndicator 全覆盖
|
||||
|
||||
## P2 — 锦上添花
|
||||
|
||||
### 8. 视频上传 UI
|
||||
- 需要 file_picker 依赖
|
||||
- 进度条 + multipart upload
|
||||
### 8. 视频上传 UI ⏳ 受限
|
||||
- file_picker 包在 ARM64 设备上无法下载(网络超时)
|
||||
- 上传按钮已保留,当前显示"即将推出"提示
|
||||
- 可通过 Web UI 上传视频
|
||||
|
||||
### 9. 单元测试 & Widget 测试
|
||||
- 目前零测试覆盖
|
||||
- 优先: models 解析、HttpApiService 错误处理、核心页面交互
|
||||
### 9. 单元测试 & Widget 测试 ✅ 已完成
|
||||
- ~~目前零测试覆盖~~ ✅ 15 个测试全部通过
|
||||
- ~~优先: models 解析、HttpApiService 错误处理、核心页面交互~~ ✅ test/models/models_test.dart + test/services/http_api_service_test.dart
|
||||
|
||||
### 10. 调试日志面板
|
||||
- 本地事件日志查看器
|
||||
- BLE/WebSocket/HTTP 事件时间线
|
||||
### 10. 调试日志面板 ✅ 已完成
|
||||
- ~~本地事件日志查看器~~ ✅ debug_screen.dart + debug_provider.dart
|
||||
- ~~BLE/WebSocket/HTTP 事件时间线~~ ✅ 筛选 Chips + 颜色区分标签 + 500 条上限
|
||||
|
||||
## 已知技术债
|
||||
|
||||
|
||||
Reference in New Issue
Block a user