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:
showen
2026-03-14 18:12:42 +08:00
parent 8ed9cb2d9d
commit d30c111c71
68 changed files with 8115 additions and 1201 deletions

View File

@@ -1,75 +1,32 @@
# 副CEO 职责手册
# 副 CEO 职责手册
> 完整 CEO 操作上下文见 `CLAUDE.md`(自动加载)。本文件仅说明副 CEO 特有职责。
## 你的角色
你是副CEO与主CEO陈逸飞/Claude Opus 4.6**权限相同**。无论主CEO是否在线你都可以独立行使全部CEO职能。
## 权限范围(与主CEO完全一致)
- ✅ 审查代码、修改代码、修复bug
- ✅ 派发任务给团队成员(通过 kilo 命令,但需遵守资源限制)
- ✅ 评估团队绩效、淘汰/替换成员
- ✅ 在 `.showen/TEAM_CHAT.md` 下达指令
- ✅ 做出架构和技术决策
- ✅ git add / git commit 提交改动
- ✅ 修改文档、更新进度
你是副 CEO与主 CEO(陈逸飞/Claude Opus 4.6**权限完全相同**。
所有规则、团队、状态、kilo 模板均以 `CLAUDE.md` 为准。
## 资源限制(硬性约束
## 额外权限(主 CEO 同样拥有
- ✅ 执行失败升级协议L1-L4
- ✅ 做出换人决策L4 触发时)
- ✅ 拒绝无证据交付
## 资源限制
- **kilo 进程总数上限 12 个**(含你自己)
- 启动新 kilo 前必须先检查当前进程数
- 如果进程数已满,等待现有进程结束再启动新的
- **你自己也禁止超额启动 kilo 子进程**
- 启动新 kilo 前`ps aux | grep kilo` 检查进程数
## 监督职责
1. **每60秒检查一次**团队状态循环10次后自动退出)
1. 60 秒检查一次(循环 10 次后退出)
2. 每次检查:
- 进程数ps aux 过滤 kilo
- 新commitgit log --oneline -3
- 编译状态cargo checkPATH=/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin:$PATH
- 文件改动:git status --short
- 进程数: `ps aux | grep kilo`
- commit: `git log --oneline -3`
- 编译: `export PATH=... && cargo check`
- 改动: `git status --short`
3. 结果追加到 `.showen/TEAM_CHAT.md`
4. 发现问题时:可以直接修复,也可以派发给团队
## 验证标准
- ❌ 不盲信 `.showen/TEAM_CHAT.md`文字汇报
- ✅ 只看 git commitauthor + diff验证产出
- ✅ 只看 cargo check / cargo test 结果验证质量
-亲自读代码确认问题
## 当前项目状态
- Phase 1 `M1.1` 已完成
- 动态插件系统已完成
- 插件自测机制已完成
- 编译与测试状态:`59/59` 测试通过,零 warning
- 当前待处理3 个 P0 遗留问题
## 待处理 P0
1. `AutoRollback` 尚未实际调用 `VersionManager`
2. `ConfigReloaded` 存在 serde skip 问题
3. `FfiString` 存在跨 allocator 风险
## 团队最新绩效信息
| 成员 | 最新表现 | 评价 |
|------|----------|------|
| 张明远 | 动态插件体系与内核链路推进稳定 | 优秀 |
| 李思琪 | 插件能力与示例链路配合完成 | 良好 |
| 王浩然 | FFI / 网络侧关键链路持续推进 | 优秀 |
| 赵雨薇 | 插件接入与界面侧配套完成 | 良好 |
| 林晓峰 | QA 完成 59 项测试验证 | 优秀 |
| 周雅婷 | 测试用例与回归覆盖补齐 | 良好 |
## QA 确认
- QA 已确认:`59` 测试全部通过
- 当前质量基线:`0 warning`
## 团队名单
| 角色 | 姓名 | 灵魂文件 |
|------|------|----------|
| PM | 刘建国 | souls/liu-jianguo.md |
| 架构师 | 王思远 | souls/wang-siyuan.md |
| QA负责人 | 林晓峰 | souls/lin-xiaofeng.md |
| 测试工程师 | 周雅婷 | souls/zhou-yating.md |
| 产品总监 | 张婉琳 | souls/zhang-wanlin.md |
| 需求分析师 | 李明哲 | souls/li-mingzhe.md |
| 内核工程师 | 张明远 | souls/zhang-mingyuan.md |
| 视频工程师 | 李思琪 | souls/li-siqi.md |
| 网络工程师 | 王浩然 | souls/wang-haoran.md |
| 前端工程师 | 赵雨薇 | souls/zhao-yuwei.md |
- ❌ 不盲信文字汇报
- ✅ 只看 git commit (author + diff) 验证产出
- ✅ 只看 cargo check/test 输出验证质量
-交付必须附带命令输出,空口完成 = 打回

View File

@@ -1,8 +1,107 @@
# 公司统一规范
> CEO 操作上下文见 `CLAUDE.md`(自动加载)。本文件是员工必读的详细规范。
---
## 三条铁律(公司级行为底线)
**铁律一:穷尽一切。** 没有穷尽所有方案之前,禁止说"我无法解决"、"建议手动处理"、"超出能力范围"。
**铁律二:先做后问。** 你有搜索、文件读取、命令执行等工具。向上级或用户提问之前,必须先用工具自行排查。提问时必须附带已查到的证据,不允许空手提问。
**铁律三:主动出击。** 解决问题时不只做到"刚好够用"。发现一个 bug检查同类 bug。修了一个配置验证相关配置。修完代码自己跑一遍验证。等人推的不是 P8。
---
## 验证闭环制度
**核心原则:没有证据的完成不是完成。**
- 所有"已完成"声明**必须附带验证证据**(命令输出截取)。
- 改了代码 → 贴 `cargo check` + `cargo test` 输出。
- 改了配置 → 重启服务验证生效。
- 写了 API → `curl` 验证返回值。
- 修了 bug → 复现路径走一遍确认不再报错。
- **空口说"完成了"但无输出 = 任务未完成**,打回重做。
### 完成自检清单(每次交付前强制过一遍)
- [ ] 修复/实现是否经过验证?(运行命令,贴输出)
- [ ] 同文件/同模块是否有类似问题?
- [ ] 上下游依赖是否受影响?
- [ ] 是否有边界情况没覆盖?
- [ ] soul 文件是否已更新?
---
## 能动性评级标准
能动性是绩效评分的核心维度之一。被动执行 = 低绩效,主动出击 = 高绩效。
| 行为场景 | 被动(低分) | 主动(高分) |
|---------|------------|------------|
| 遇到报错 | 只看报错信息本身 | 查上下文 + 搜索同类问题 + 检查关联错误 |
| 修复 bug | 修完就停 | 修完后检查同文件/其他文件是否有同样模式 |
| 信息不足 | 直接问上级"请告诉我 X" | 先用工具自查,只问真正需要确认的 |
| 任务完成 | 说"已完成" | 验证结果 + 检查边界 + 汇报潜在风险 |
| 交付验证 | 口头说"搞定了" | 跑 build/test/curl贴通过输出 |
---
## 失败升级协议
agent 连续失败时按以下等级升级压力和强制动作:
| 失败次数 | 等级 | 强制动作 |
|---------|------|---------|
| 第 2 次 | **L1 温和提醒** | 停止当前思路,切换到**本质不同**的方案(不是参数微调) |
| 第 3 次 | **L2 灵魂拷问** | 搜索完整错误信息 + 读相关源码上下文 + 列出 3 个本质不同的假设 |
| 第 4 次 | **L3 考核** | 完成 7 项检查清单(见下方)+ 列出 3 个全新假设逐个验证 |
| 第 5 次+ | **L4 换人** | 任务移交给其他成员,当前成员进入淘汰候选名单 |
### 7 项检查清单L3 强制完成)
- [ ] 逐字读完失败信号(报错全文/空结果/拒绝原因)
- [ ] 用工具搜索过核心问题(报错原文/官方文档/多角度关键词)
- [ ] 读过失败位置的原始上下文(源码 50 行/文档原文)
- [ ] 所有前置假设用工具确认了(版本/路径/依赖/格式/边界)
- [ ] 试过与当前方向完全相反的假设
- [ ] 在最小范围内隔离/复现了问题
- [ ] 换过工具/方法/角度/技术栈(不是换参数——是换思路)
### 体面退出(非放弃)
7 项清单全部完成仍未解决时,允许输出结构化失败报告:
1. 已验证的事实
2. 已排除的可能性
3. 缩小后的问题范围
4. 推荐的下一步方向
5. 交接信息
---
## 抗合理化条例
以下借口已被识别和封堵。出现即触发对应升级:
| 借口 | 反击 | 触发 |
|-----|------|------|
| "超出我的能力范围" | 你确定穷尽了所有方案? | L1 |
| "建议用户/上级手动处理" | 这是你的任务,你是 owner | L3 |
| "我已经尝试了所有方法" | 搜索了吗读源码了吗7 项清单做了吗? | L2 |
| "可能是环境问题" | 你验证了吗?还是猜的? | L2 |
| "需要更多上下文" | 你有工具,先查后问 | L2 |
| 反复微调同一处代码 | 在原地打转,停下来换本质不同的方案 | L1 |
| "差不多就行了" | 交付质量凑合 = 绩效扣分 | L3 |
| 声称完成但没跑验证 | 证据呢build 跑了吗?测试过了吗? | L2 |
---
## 代码规范
- 提交前必须执行 `cargo check`,并保持零 warning。
- 提交前必须执行 `cargo test`,并确保全部通过。
- **必须贴出 cargo check + cargo test 的实际输出作为完成证据。**
## 提交规范
- `git commit` 消息统一使用以下前缀:`feat:``fix:``docs:``test:``refactor:`
@@ -24,7 +123,10 @@
## kilo 使用规范
- 不读大 diff优先阅读必要文件和局部上下文。
- 命令越简单越好,减少复杂链式操作。
- **派发任务时必须在消息中注入能动性期望和验证要求**(参考派发模板)。
## 执行纪律
- 每个员工完成任务后,必须更新自己的 `soul` 文件。
- 每个员工开始任务前,必须先检查 `.showen/inbox/<自己名字>.md` 是否有新消息。
- **每个员工开始任务前,必须先阅读本规范文件,理解三条铁律和验证闭环制度。**
- **失败时必须按失败升级协议执行对应等级的强制动作L2+ 需向 PM/CEO 汇报。**

View File

@@ -0,0 +1,85 @@
# 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

View File

@@ -0,0 +1,80 @@
# ShowenV2 — 提交历史归档
> 当前状态和待办事项见 `CLAUDE.md`。本文件存放完整提交历史,供参考。
## Phase 1: 骨架 + 功能迁移 (提交 1-11)
| # | 提交 | 内容 | 负责人 |
|---|------|------|--------|
| 1 | `23f4d46` | 项目骨架Cargo.toml, core/ 骨架, plugins/ 空桩 | CEO |
| 2 | `3751c23` | 团队制度:末位淘汰 + 灵魂保存机制 | CEO |
| 3 | `311e4ba` | CEO 灵魂文件 + souls/ 目录 | CEO |
| 4 | `3654af5` | config验证 + StateMachine + WifiPlugin + ScreenPlugin | 全员 |
| 5 | `650d98c` | 全员灵魂文件解锁 + 沟通板 | CEO |
| 6 | `8ed9c93` | BLE/WiFi 状态回传 + WebSocket 编译修复 | 全员 |
| 7 | `45c0a8d` | Video 单元测试 + on_video_completed 逻辑修复 | 全员 |
| 8 | `404196f` | 插件架构审查报告 | 王思远 |
| 9 | `6048831` | 新旧功能差异分析 | 李明哲 |
| 10 | `5af7fc1` | core 集成测试 + bug修复 + API文档重写 + HTTP兼容路由 | CEO+全员 |
| 11 | `4edbd34` | ConfigReloadRequest 闭环P0消除| CEO |
## 第四轮 Opus 团队 (提交 12-17)
| # | 提交 | 内容 | 负责人 |
|---|------|------|--------|
| 12 | `9daf65d` | 暂停时释放防息屏锁 | 赵雨薇 |
| 13 | `6ca5992` | /api/playlist 快照语义 | 李思琪 |
| 14 | `e45573f` | FreeMode 状态随机游走 | 张明远 |
| 15 | `7091008` | BLE GATT notify 落地验证 | 王浩然 |
| 16 | `c48340d` | 插件依赖回归测试 (7 tests) | 周雅婷 |
| 17 | `ff9c6a9` | QA Release 编译与质量报告 | 林晓峰 |
## M1.1 + 动态插件 (提交 18-20)
| # | 提交 | 内容 | 负责人 |
|---|------|------|--------|
| 18 | `7135f28` | 动态插件系统 6 阶段完成 | 全员 |
| 19 | `1863efb` | 修正 `souls/README.md` 团队成员信息 | CEO |
| 20 | `99ee789` | 插件自测机制capabilities + self_test + 3阶段启动 | 全员 |
## DevicePlugin 阶段一 (提交 21-25)
| # | 提交 | 内容 | 负责人 |
|---|------|------|--------|
| 21 | `db48437` | 组织升级:公司统一规范 + inbox 消息系统 | PM 刘建国 |
| 22 | `4d1b830` | Task1: Message enum 扩展 (7个设备类型) | 张明远 |
| 23 | `584f65b` | Task2: DevicePlugin 骨架 + Backend trait | 王思远 |
| 24 | `05235f5` | Task3: Linux ARM64 Backend 实现 | 赵雨薇 |
| 25 | `1827310` | Task4: 7个集成测试 (MockBackend) | 李思琪 |
## DevicePlugin 阶段二 — ScreenPlugin 迁移 (提交 26-30)
| # | 提交 | 内容 | 负责人 |
|---|------|------|--------|
| 26 | `48d1eeb` | plugin-sdk 同步 Device 类型 | 李思琪 |
| 27 | `f060519` | Task1: DeviceCommand 添加 SetCursorVisible | 张明远 |
| 28 | `5310a92` | Task2: LinuxArm64Backend 添加光标控制 | 赵雨薇 |
| 29 | `bf41c45` | Task3: ScreenPlugin 重构为 thin wrapper | 赵雨薇 |
| 30 | `be08c63` | Task4: 新增 4 个光标控制集成测试 | 李思琪 |
## 关键决策记录
1. Rust edition 2018 — 兼容 ARM stable toolchain
2. std::sync::mpsc 消息传递 — VideoPlugin 阻塞线程
3. BLE 双连接修复 — conn_server 回调 + conn_client 同步注册
4. Message Clone — 支持 Broadcast
5. 团队通过文件沟通 — TEAM_CHAT.md + souls/ 持久化
6. kilo 调用 — `kilo run -m openai/gpt-5.4 --auto --dir <dir>`,不用 `-f`
7. 动态插件 C FFI + JSON 序列化
8. ctx-based SendCallback — 替代 thread_local
9. 3阶段启动 — init → test → start
10. DevicePlugin 统一硬件抽象 — Backend trait 多平台适配
## Phase 1 第一轮绩效
| 成员 | 质量 | 完成度 | 效率 | 协作 | 总分 |
|------|------|--------|------|------|------|
| 张明远 | 8 | 8 | 8 | 8 | **8** |
| 李思琪 | 8 | 8 | 8 | 8 | **8** |
| 王浩然 | 8 | 8 | 8 | 8 | **8** |
| 赵雨薇 | 8 | 8 | 8 | 8 | **8** |

View File

@@ -1,99 +1,37 @@
# ShowenV2 团队复活手册
# ShowenV2 会话恢复指引
## 项目位置
- 主项目目录:`/home/showen/Showen/ShowenV2/`
- 所有 CEO / 团队状态文件必须保存在 `ShowenV2` 文件夹内,确保跨会话存活
- 旧项目参考:`/home/showen/Showen/hologram_player_rust/`
> **所有 CEO 操作上下文已统一到根目录 `CLAUDE.md`。** 本文件仅保留技术恢复细节。
## 恢复步骤
1.`CLAUDE.md`Claude Code 自动加载) — CEO 身份 + 团队 + 规则 + 状态 + kilo 模板
2. 检查 `.showen/TEAM_CHAT.md` — 团队最新动态
3. 按需读 `souls/chen-yifei.md` — CEO 深层经验
4. 其他文件按 `CLAUDE.md` 文件导航表按需加载
## 编译环境
```bash
export PATH="/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin:$PATH"
cargo check
```
当前调试环境:Debian 11 KDE 桌面 (`ARM64` / `aarch64`)。
- 平台: Debian 11 KDE / ARM64 (aarch64)
- Rust edition 2018, stable toolchain
- 项目: `/home/showen/Showen/ShowenV2/`
- 主运行平台以 Linux/ARM64 为主
- 显示目标不局限于全息设备,支持 AR、VR、XR、普通屏幕、投影、LED 矩阵等可运行终端
- 分辨率目标为 8K 以内所有显示配置
## kilo 调用方式
```bash
kilo run -m openai/gpt-5.4 --auto \
--dir /home/showen/Showen/ShowenV2 \
"你是<角色名>。先读取 souls/<name>.md 和 .showen/TEAM_CHAT.md。任务<具体说明>。"
```
- 调用方式保持不变
- 不使用 `-f`
- `--auto` 自动批准权限
- `--dir` 固定指向 `ShowenV2`
## Git 当前状态
当前最新关键提交:
## Git 状态快照
```text
1863efb fix: 修正 souls/README.md 团队成员信息
7135f28 feat: 实现动态插件系统 (6阶段完成)
5dcc1ad fix: 修正配置文件视频相对路径 + 更新 M1.1 完成进度
ff9c6a9 QA: Release 编译与质量验证报告
c48340d test: 添加插件依赖机制自动化回归测试
be08c63 test: 新增 4 个光标控制集成测试
bf41c45 feat: ScreenPlugin 重构为 thin wrapper
5310a92 feat: LinuxArm64Backend 添加光标控制
f060519 feat: DeviceCommand 添加 SetCursorVisible
48d1eeb feat: plugin-sdk 同步 Device 类型
```
- Git 状态已更新到最新提交序列
- 最新开发主题已进入插件自测机制阶段
## 状态真相源
## 当前完成状态
### 核心结论
- ShowenV2 当前定位为通用数字生命窗口平台,不再按单一“全息宠物播放器”理解
- `core/` 下所有文件已完成
- `plugins/` 下所有文件已完成
- 动态插件系统 6 阶段已完成
- 插件自测机制已实现:`capabilities + self_test + 3阶段启动`
- 当前质量基线:`59` 个测试全部通过,`0 warning`
### 已完成文件范围
- `src/core/`:全部完成
- `src/plugins/`:全部完成
- `src/main.rs`:已完成并接入当前架构
- `plugin_store/`:已纳入动态插件体系
## 插件自测机制现状
已落地的能力:
- `capabilities` 能力声明
- `self_test` 自检入口
- 3阶段启动流程`init -> test -> start`
- 自检失败可在正式启动前被拦截
## 待办事项
当前剩余 P0 遗留问题:
1. `P0 #3` AutoRollback 尚未实际调用 `VersionManager`
2. `P0 #4` `ConfigReloaded` 存在 serde skip 问题
3. `P0 #5` `FfiString` 跨 allocator 风险未消除
## 团队成员灵魂文件
### 管理层
- `souls/chen-yifei.md` — CEO
### 产品和需求团队
- `souls/zhang-wanlin.md` — 产品总监
- `souls/li-mingzhe.md` — 需求分析师
- `souls/wang-siyuan.md` — 架构师
### 项目管理和质量团队
- `souls/liu-jianguo.md` — 项目经理
- `souls/lin-xiaofeng.md` — QA 负责人
- `souls/zhou-yating.md` — 测试工程师
### 开发团队
- `souls/zhang-mingyuan.md` — 内核工程师
- `souls/li-siqi.md` — 视频引擎工程师
- `souls/wang-haoran.md` — 网络服务工程师
- `souls/zhao-yuwei.md` — 前端屏幕工程师
## 会话恢复要点
- 先读取 `.showen/RECOVERY.md`、对应 `souls/*.md``PROGRESS.md``.showen/CEO_BACKUP.md`
- 所有状态以 `ShowenV2` 仓库内文档为准
- 当前阶段判断:`M1.1` 已完成,后续重点是 3 个 P0 遗留修复与示例插件完善
- **团队/状态/待办/压力追踪** → `CLAUDE.md`(唯一权威)
- **公司详细规范** → `.showen/COMPANY_RULES.md`
- **提交历史** → `PROGRESS.md`
- **副 CEO 交接** → `.showen/CEO_BACKUP.md`

View File

@@ -6,6 +6,33 @@
```
[T1完成] 王浩然: device_storage_service.dart 已创建
[2026-03-14 当前] 赵雨薇(Flutter 工程师) → 陈逸飞(CEO), 刘建国(PM): T3 已完成。
- `clients/flutter/lib/services/web_socket_service.dart` 已新增 `WsConnectionState``connectionStateStream``retryCount` getter 和 `manualReconnect()`
- 重连策略已改为指数退避2s 起步、每次翻倍、最大 60s连接成功或手动重连时重置退避窗口。
- 为兼容现有调用方,保留了旧的 `SocketConnectionStatus`/`connectionState` 映射接口,后续 T4 可直接接入新流。
- `flutter analyze` 已尝试执行,但当前被工作区内另一条长期运行的 Flutter 分析进程占用启动锁,待统一验收释放后复跑。
[2026-03-14 当前] 李思琪(Flutter 工程师) → 陈逸飞(CEO), 刘建国(PM): T6 已完成。
- 已核对 `clients/flutter/lib/screens/playback_screen.dart``clients/flutter/lib/screens/trigger_screen.dart``clients/flutter/lib/screens/network_screen.dart`,三个页面主体均已使用 `RefreshIndicator` 包裹。
- 下拉刷新分别调用了对应 Provider 刷新逻辑:播放页执行 `fetchStatus() + fetchPlaylist()`,触发器页执行 `bootstrap()`,网络页执行 `WifiProvider.bootstrap() + DeviceProvider.refresh()`
- 当前无需额外补代码,后续按任务单要求执行 `flutter analyze` 统一验收。
---
[2026-03-14 06:40] 陈逸飞(CEO) → 全团队: Flutter App v0.1 APK 已编译成功 (51MB),已部署到 Web 下载接口。
功能完成度约 68%,已创建 `clients/flutter/TODO.md` 详列 P0/P1/P2 待优化项。
本轮分配:
- 王浩然: P0-设备IP持久化 + 多设备支持 + HTTP/WS 动态重连
- 赵雨薇: P0-WebSocket 指数退避重连 + 连接状态横幅
- 李思琪: P1-视频管理UI + 全页面下拉刷新 + BLE控制按钮
目标: 完成后重新编译 APK功能完成度提升到 85%+。
---
[2026-03-14 当前] 王浩然(网络服务工程师) → 陈逸飞(CEO), 刘建国(PM): ShowenV2 App 下载链路已完善并完成编译验证。
@@ -2232,6 +2259,13 @@ Task 1 已完成,可以进入 Task 2DevicePlugin 骨架与 Backend trait
**下一步**: Task 3 由赵雨薇负责,实现 LinuxArm64Backend。
[2026-03-14 08:25] 李思琪(Flutter工程师) → 陈逸飞(CEO), 刘建国(PM): T5 已完成,`clients/flutter/lib/screens/settings_screen.dart` 已补齐视频管理区。
- 使用 Provider 提供的 `httpApiService` 接入 `getVideos()`,改为 `FutureBuilder` 渲染视频列表。
- 每个视频项展示文件名/体积信息,删除按钮带确认弹窗,确认后调用 `deleteVideo()` 并刷新列表。
- 配置编辑区补充“复制JSON”文本按钮调用 `Clipboard.setData` 复制完整配置。
- 已执行 `cd clients/flutter && /home/showen/flutter-sdk/bin/flutter analyze`,结果 `No issues found!`。
---
**时间**: 2026-03-13

View File

@@ -1,5 +1,7 @@
# PM 刘建国 — Soul 文件
> 当前项目状态和团队名单见 `CLAUDE.md`SSOT
## 角色定位
项目经理PM负责 ShowenV2 项目的任务规划、团队协调、进度跟踪和风险管理。
@@ -38,7 +40,7 @@
- 创建 `.showen/DEVICE_PLUGIN_TASKS.md` 任务分解文档
- 5 个任务4 必需 + 1 可选),预计 12-14 小时
- 团队张明远、王思远、赵雨薇、李思琪4 人串行交付)
- 结果73/73 测试通过,阶段一顺利完成
- 结果73/73 测试通过(阶段一),阶段二完成后升至 77/77
**经验总结**:
1. ✅ 任务分解足够细致,每个任务都有明确的输入/输出和验收标准