# Showen Flutter App 开发任务看板

## 说明

- 估时单位：人时（h）/ 人日（d）
- 优先级：P0 = MVP 必须完成，P1 = 首发建议完成，P2 = 可后续迭代
- 状态：当前统一标记为 `待开始`

## 总体节奏

| 阶段 | 目标 | 预计工时 |
|------|------|----------|
| Sprint 1 | 脚手架、架构、设备发现、基础网络层 | 4-5d |
| Sprint 2 | BLE 配网、HTTP 控制、首页/播放控制页 | 5-6d |
| Sprint 3 | 状态机页、网络设置页、WebSocket 实时状态 | 4-5d |
| Sprint 4 | 设置页、视频/配置管理、测试与发布准备 | 4-5d |

预计总工时：17-21 人日

## 模块一：项目基础架构

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| A1 | 创建 Flutter 工程基础目录、环境区分、包管理方案 | P0 | 4h | 无 | 待开始 |
| A2 | 搭建路由、主题、全局错误处理、全局 Toast 能力 | P0 | 6h | A1 | 待开始 |
| A3 | 建立分层架构（presentation/application/domain/data） | P0 | 6h | A1 | 待开始 |
| A4 | 建立统一 API Client、错误模型、超时/重试策略 | P0 | 6h | A3 | 待开始 |
| A5 | 建立本地存储方案（设备历史、设置项） | P0 | 4h | A3 | 待开始 |
| A6 | 建立日志与调试开关 | P1 | 3h | A3 | 待开始 |

模块小计：29h

## 模块二：设备发现与连接管理

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| D1 | 设计设备实体与连接状态模型 | P0 | 3h | A3 | 待开始 |
| D2 | 实现手动输入 IP 连接与可达性校验 | P0 | 4h | A4 | 待开始 |
| D3 | 实现最近设备列表的本地存储、切换、删除 | P0 | 5h | A5,D1 | 待开始 |
| D4 | 实现全局当前设备上下文与切换机制 | P0 | 5h | D1,D3 | 待开始 |
| D5 | 设备连接失败、离线、超时提示与兜底页 | P1 | 4h | D2,D4 | 待开始 |

模块小计：21h

## 模块三：BLE 蓝牙配网

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| B1 | 选型并接入 Flutter BLE 插件，完成 iOS/Android 权限配置 | P0 | 6h | A1 | 待开始 |
| B2 | 实现扫描 `Showen` 设备列表与连接流程 | P0 | 8h | B1 | 待开始 |
| B3 | 实现 GATT Service/Characteristic 封装 | P0 | 6h | B1 | 待开始 |
| B4 | 实现 SSID/Password/Command 写入与配网命令发送 | P0 | 6h | B3 | 待开始 |
| B5 | 实现 Status 特征 read/notify 双模式监听与 JSON 解析 | P0 | 8h | B3 | 待开始 |
| B6 | 实现 BLE 配网页 UI、失败重试、权限引导 | P0 | 8h | B2,B4,B5 | 待开始 |
| B7 | 实现 BLE 简单控制命令（play/pause/next/prev） | P1 | 4h | B3 | 待开始 |
| B8 | BLE 异常专项测试（权限、断连、超时、重复配网） | P1 | 6h | B6 | 待开始 |

模块小计：52h

## 模块四：HTTP API 控制层

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| H1 | 封装播放控制接口（play/pause/next/previous/goto） | P0 | 4h | A4 | 待开始 |
| H2 | 封装状态机接口（trigger/scene） | P0 | 4h | A4 | 待开始 |
| H3 | 封装 WiFi 接口（status/scan/connect/ap start/stop） | P0 | 5h | A4 | 待开始 |
| H4 | 封装配置接口（get config/post config） | P0 | 4h | A4 | 待开始 |
| H5 | 封装视频接口（list/upload/delete） | P1 | 6h | A4 | 待开始 |
| H6 | 封装 BLE 状态接口（get ble status） | P1 | 2h | A4 | 待开始 |
| H7 | 建立统一响应校验、错误码映射与空响应处理 | P0 | 4h | H1,H2,H3,H4 | 待开始 |

模块小计：29h

## 模块五：WebSocket 实时状态

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| W1 | 建立 WebSocket 连接管理器与事件分发器 | P0 | 6h | A3 | 待开始 |
| W2 | 解析 `status_update` / `state_update` / `wifi_update` 事件 | P0 | 5h | W1 | 待开始 |
| W3 | 实现自动重连、退避、前后台切换恢复 | P0 | 6h | W1 | 待开始 |
| W4 | 将实时状态同步到首页、播放页、状态机页、网络页 | P0 | 5h | W2 | 待开始 |
| W5 | 实现连接状态提示条与调试日志面板 | P1 | 4h | W3 | 待开始 |

模块小计：26h

## 模块六：页面开发

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| UI1 | 实现首页：设备状态、快捷控制、当前播放信息 | P0 | 8h | D4,H1,W4 | 待开始 |
| UI2 | 实现播放控制页：大按钮、播放列表、goto 操作 | P0 | 8h | H1,W4 | 待开始 |
| UI3 | 实现状态机页：当前状态、trigger、scene | P0 | 8h | H2,W4 | 待开始 |
| UI4 | 实现网络设置页：BLE 配网、WiFi 管理、BLE 控制 | P0 | 10h | B6,H3,H6,W4 | 待开始 |
| UI5 | 实现设置页：配置管理、视频管理、关于 | P0 | 10h | H4,H5 | 待开始 |
| UI6 | 实现底部导航、设备切换入口、通用空态/异常态 | P0 | 6h | A2,D4 | 待开始 |

模块小计：50h

## 模块七：配置与视频管理增强

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| C1 | 配置查看器：JSON 格式化、复制、刷新 | P1 | 4h | H4 | 待开始 |
| C2 | 配置编辑器：表单/文本双模式评估并实现 MVP | P1 | 8h | C1 | 待开始 |
| C3 | 视频列表管理：删除确认、刷新状态回显 | P1 | 4h | H5 | 待开始 |
| C4 | 视频上传（选文件、进度、失败处理） | P2 | 8h | H5 | 待开始 |

模块小计：24h

## 模块八：质量保障与发布准备

| ID | 任务 | 优先级 | 预计工时 | 依赖 | 状态 |
|----|------|--------|----------|------|------|
| Q1 | 编写核心单元测试（模型、解析、状态管理） | P0 | 8h | A3,H1,H2,H3,W2 | 待开始 |
| Q2 | 编写 Widget 测试（首页、播放页、网络页关键交互） | P1 | 8h | UI1,UI2,UI4 | 待开始 |
| Q3 | 真机联调清单（Android/iOS、BLE、HTTP、WebSocket） | P0 | 6h | B6,UI1,UI2,UI3,UI4,UI5 | 待开始 |
| Q4 | 发布前缺陷收敛、性能优化、崩溃排查 | P0 | 8h | Q1,Q2,Q3 | 待开始 |
| Q5 | 产出接入说明、测试报告、已知问题列表 | P1 | 4h | Q3,Q4 | 待开始 |

模块小计：34h

## 并行建议

### 可并行推进

1. 基础架构（A1-A5）完成后，可并行推进 D 模块、B1-B3、H 模块、W1。
2. HTTP 封装和 WebSocket 管理器完成后，UI1-UI5 可拆给不同开发者并行开发。
3. BLE 配网页（B6）与网络设置页（UI4）可先做骨架，再在 BLE 联调完成后收口。

### 串行关键链路

1. `A1 -> A3 -> A4` 是全局基础链路，必须优先完成。
2. `B1 -> B3 -> B4/B5 -> B6` 是 BLE 配网主链路，不能跳步。
3. `W1 -> W2 -> W4` 是实时状态闭环核心链路。

## 关键里程碑验收

### 里程碑 M1：基础可运行

- 工程可运行
- 手动输入 IP 可连接设备
- 基础 HTTP 请求可成功

### 里程碑 M2：首次接入闭环

- BLE 扫描、连接、配网可用
- 网络设置页完成基本闭环

### 里程碑 M3：控制闭环

- 首页、播放页、状态机页可完成核心控制
- WebSocket 状态实时更新可用

### 里程碑 M4：首发就绪

- 设置页、视频/配置管理完成
- 真机联调完成
- 已知问题可控并形成发布清单

## 风险备注

- BLE 插件在 iOS/Android 权限与后台行为差异大，需预留专项联调时间。
- `/api/videos/upload`、配置热重载等能力依赖服务端联调结果，建议先保证查看/删除/提交基础能力。
- 若服务端 WebSocket 事件字段与文档不一致，优先修正客户端解析兼容层，不阻塞主流程。
