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,5 +1,7 @@
# ShowenV2 开发流程规范
> CEO 操作上下文的唯一权威来源是 `CLAUDE.md`。本文件定义详细工作流程。
## 核心原则
**方案先行,记录完整,审核通过才执行。**
@@ -13,18 +15,41 @@
- git commit 方案文档
### 2. 派发阶段
- CEO 通过 `kilo run -m openai/gpt-5.4 --auto --dir <dir>` 派发,消息中指示读取灵魂文件和 TEAM_CHAT.md
- 任务描述中包含: 角色身份、具体要求、上下文文件列表、验收标准
- CEO 或 PM 通过 `kilo run -m openai/gpt-5.4 --auto --dir <dir>` 派发
- **任务消息必须包含**:
- 角色身份
- **开工前必读文件**souls/<name>.md + .showen/COMPANY_RULES.md + .showen/TEAM_CHAT.md
- 具体要求和上下文文件列表
- **交付要求**:必须贴 cargo check/test 输出;修完检查同类问题;更新 soul 文件
- 验收标准
- 更新 PROGRESS.md 记录谁在做什么
### 3. 审核阶段
- 成员交付后 CEO 检查:
- 成员交付后**先检查验证证据**:
- [ ] 交付中是否附带 cargo check/test 输出?**无输出 → 直接打回,不看代码**
- [ ] cargo check 零 warning
- [ ] 逻辑与旧代码行为一致
- [ ] cargo test 全部通过
- 证据合格后再审核代码:
- [ ] 逻辑与需求一致?
- [ ] 代码风格一致?
- [ ] 没有安全问题?
- [ ] 是否主动检查了同类问题?(能动性加分项)
- 合格: git commit + 绩效记录 + 灵魂文件更新
- 不合格: 在 TEAM_CHAT.md 记录问题,重新派发(同人或换人
- 不合格: 按失败升级协议处理(见下方
### 3.5 失败处理流程(新增)
- 审核不合格时,按成员累计失败次数执行对应等级:
```
第 1 次不合格 → 正常打回,说明问题
第 2 次 (L1) → 打回 + 要求切换本质不同的方案
第 3 次 (L2) → 打回 + 要求搜索+源码+3假设 → PM 上报 CEO
第 4 次 (L3) → CEO 介入,要求 7 项检查清单
第 5 次 (L4) → 换人,任务移交
```
- 失败计数记录在 `.showen/RECOVERY.md` 团队压力状态表中
- 详细规则见 `.showen/COMPANY_RULES.md` 失败升级协议
### 4. 记录阶段
- 每次 git commit 前更新 PROGRESS.md
@@ -38,10 +63,11 @@
| 文件 | 用途 |
|------|------|
| PROGRESS.md | 项目进度、完成状态、待办事项 |
| TEAM.md | 团队成员档案、制度、绩效 |
| TEAM_CHAT.md | 团队异步沟通、任务讨论、问题记录 |
| souls/<name>.md | 成员灵魂:思想/性格/记忆/技能 |
| CLAUDE.md | **CEO 唯一必读**:身份/规则/团队/状态/kilo模板 |
| PROGRESS.md | 里程碑摘要、最近变更 |
| TEAM.md | 团队成员档案、制度、绩效详情 |
| TEAM_CHAT.md | 团队异步沟通、任务讨论 |
| souls/<name>.md | 成员灵魂:经验/性格/技能 |
| WORKFLOW.md | 本文件,开发流程规范 |
---
@@ -49,11 +75,15 @@
## CEO 操作模板
### 派发任务
> kilo 派发模板的权威版本见 `CLAUDE.md`。以下为快速参考:
```bash
# 正确方式:把所有内容放在消息字符串里,让 kilo 自己读文件
kilo run -m openai/gpt-5.4 --auto \
--dir /home/showen/Showen/ShowenV2 \
"你是<角色名>。先读取 souls/<name>.md 和 TEAM_CHAT.md。任务<具体说明>。完成后 cargo check 确认通过。"
"你是<角色名>。开工前必读:souls/<name>.md + .showen/COMPANY_RULES.md + .showen/TEAM_CHAT.md。
任务:<具体说明>。交付要求:贴 cargo check/test 输出 + 检查同类问题 + 更新 soul 文件。
验收标准:<具体标准>"
```
### 审核提交
@@ -71,28 +101,4 @@ git add <files> && git commit -m "<msg>"
---
## 当前第二轮任务方案
### 任务 A: ServiceManager Broadcast (张明远)
- **目标**: Message 实现 CloneBroadcast 真正转发给所有插件
- **文件**: core/message.rs, core/service_manager.rs
- **方案**: derive(Clone) for Message + 所有子类型; Broadcast 遍历 plugins 调 handle_message(msg.clone())
- **验收**: cargo check 通过, Broadcast 消息能到达所有插件
### 任务 B: VideoProcessor (李思琪)
- **目标**: 完整迁移旧 video_processor.rs 的 VideoTransformer + VideoProcessor
- **文件**: plugins/video/processor.rs, plugins/video/mod.rs
- **方案**: 三大类 VideoTransformer(帧变换) + TransitionEffect(过渡) + VideoProcessor(主循环+状态机)
- **验收**: cargo check 通过, API 方法完整 (play/pause/next/trigger/status)
### 任务 C: HttpPlugin (赵雨薇)
- **目标**: 完整 HTTP API + Web UI
- **文件**: plugins/http/mod.rs, plugins/http/routes.rs
- **方案**: warp 路由, std::thread 跑 tokio runtime, 通过 Envelope 与其他插件通信
- **验收**: cargo check 通过, 路由覆盖旧 api_server.rs 所有 endpoint
### 任务 D: BlePlugin (王浩然)
- **目标**: BLE GATT 配网 + LocalName 双连接修复
- **文件**: plugins/ble/mod.rs, plugins/ble/gatt.rs
- **方案**: 双 D-Bus 连接 (conn_server 回调线程 + conn_client 同步注册)
- **验收**: cargo check 通过, GATT 结构完整, 双连接架构正确
> 具体任务方案见 `.showen/` 目录下的任务分解文档(如 `DEVICE_PLUGIN_TASKS.md`)。