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:
186
PROGRESS.md
186
PROGRESS.md
@@ -1,170 +1,46 @@
|
||||
# ShowenV2 — 数字生命窗口平台
|
||||
# ShowenV2 — 项目进度
|
||||
|
||||
## 愿景
|
||||
ShowenV2 不仅是全息宠物播放器,而是一个**通用数字生命窗口平台**。
|
||||
> 当前状态和待办事项的权威来源是 `CLAUDE.md`。本文件保留里程碑摘要和最近变更。
|
||||
> 完整提交历史见 `.showen/PROGRESS_ARCHIVE.md`。
|
||||
|
||||
支持的显示模式:
|
||||
- **全息显示** — 适配半透镜、全息柜等显示方案
|
||||
- **VR** — 头显输出
|
||||
- **AR** — 增强现实叠加
|
||||
- **XR** — 融合现实与空间计算设备
|
||||
- **直接屏幕** — 普通显示器、手机、平板等屏幕
|
||||
- **投影/LED 矩阵** — 投影设备、LED 点阵与其他非常规显示终端
|
||||
## 当前里程碑
|
||||
|
||||
支持的内容类型:
|
||||
- **宠物动画** — 视频状态机驱动的虚拟宠物(当前核心)
|
||||
- **3D 模型** — 实时渲染 3D 角色/物体
|
||||
- **数字人** — AI 驱动的虚拟形象
|
||||
- **AI 歌姬** — 人工歌姬/虚拟歌手
|
||||
- **未来内容** — 通过插件无限扩展
|
||||
**M1.1 — 完成** ✅
|
||||
- 30 个提交,Phase 1 骨架 + 功能迁移 + 动态插件 + DevicePlugin 阶段一/二
|
||||
- 77/77 测试通过,零 warning
|
||||
- DevicePlugin: Display + SleepInhibit + Backlight + Cursor (Linux ARM64)
|
||||
- ScreenPlugin 重构为 thin wrapper
|
||||
|
||||
核心理念:**平台不关心内容是什么,插件决定一切**。
|
||||
|
||||
---
|
||||
|
||||
## 项目信息
|
||||
- 旧项目: `/home/showen/Showen/hologram_player_rust/` (单体全息宠物播放器)
|
||||
- 新项目: `/home/showen/Showen/ShowenV2/`
|
||||
- 架构: 跨平台插件内核 + 功能插件
|
||||
- 当前调试环境: Debian 11 KDE 桌面 (`ARM64` / `aarch64`)
|
||||
- 当前主平台: Linux/ARM64(架构支持扩展到其他平台)
|
||||
- 团队: CEO(Claude Opus 4.6) + 4名开发者(GPT-5.4 via kilo)
|
||||
|
||||
---
|
||||
|
||||
## 完成进度
|
||||
|
||||
### ✅ 已完成
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 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 | `9daf65d` | 暂停时释放防息屏锁 | 赵雨薇 |
|
||||
| 13 | `6ca5992` | /api/playlist 快照语义 | 李思琪 |
|
||||
| 14 | `e45573f` | FreeMode 状态随机游走 | 张明远 |
|
||||
| 15 | `7091008` | BLE GATT notify 落地验证 | 王浩然 |
|
||||
| 16 | `c48340d` | 插件依赖回归测试 (7 tests) | 周雅婷 |
|
||||
| 17 | `ff9c6a9` | QA Release 编译与质量报告 | 林晓峰 |
|
||||
|
||||
### ✅ 实机运行验证 (CEO)
|
||||
|
||||
| 验证项 | 结果 |
|
||||
|--------|------|
|
||||
| 配置路径修复 | `../` → `../../` (configs/ 子目录修正) |
|
||||
| `--validate` | 21 个视频路径全部有效 |
|
||||
| 插件初始化 | 5/5 插件全部正常 start |
|
||||
| HTTP API | `/api/status`、`/api/playlist` 正常返回 JSON |
|
||||
| framebuffer | 检测到 fb0 480x800 |
|
||||
| GTK backend | SSH 环境无 DISPLAY 预期报错,实机 X session 无此问题 |
|
||||
|
||||
### ✅ M1.1 完成
|
||||
|
||||
- cargo check: **零 warning**
|
||||
- cargo test: **59/59 通过**
|
||||
- cargo build --release: **9.4MB ARM aarch64**
|
||||
- 实机启动: **通过** (SSH 无 GTK 是预期限制)
|
||||
- 动态插件系统:**6 阶段完成**
|
||||
- 插件自测机制:**已实现** (`capabilities + self_test + init→test→start`)
|
||||
|
||||
### ✅ 最新进展追加
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 18 | `7135f28` | 动态插件系统 6 阶段完成 | 全员 |
|
||||
| 19 | `1863efb` | 修正 `souls/README.md` 团队成员信息 | CEO |
|
||||
| 20 | `99ee789` | 插件自测机制:capabilities + self_test + 3阶段启动 | 全员 |
|
||||
|
||||
### ✅ DevicePlugin 阶段一 (全部完成)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 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 个光标控制集成测试 | 李思琪 |
|
||||
|
||||
---
|
||||
| 27 | `f060519` | DeviceCommand 添加 SetCursorVisible | 张明远 |
|
||||
| 28 | `5310a92` | LinuxArm64Backend 添加光标控制 | 赵雨薇 |
|
||||
| 29 | `bf41c45` | ScreenPlugin 重构为 thin wrapper | 赵雨薇 |
|
||||
| 30 | `be08c63` | 新增 4 个光标控制集成测试 | 李思琪 |
|
||||
|
||||
## 架构概览
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ main.rs │
|
||||
│ 加载配置 → 按平台注册插件 → ServiceManager.run() │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ core/ (跨平台内核,零业务逻辑) │
|
||||
│ ServiceManager — 插件注册/生命周期/消息路由 │
|
||||
│ Plugin trait — 统一插件接口 │
|
||||
│ Message enum — 类型安全的消息协议 │
|
||||
│ Config — 配置解析/验证(纯 serde) │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ 动态插件层 (FFI Loader / Runtime / Self-Test) │
|
||||
│ plugin_store/ — 动态插件存储、发现、版本载入 │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ plugins/ (一切皆插件) │
|
||||
│ video/ screen/ http/ ble/ wifi/ device/ │
|
||||
│ (未来: render/ avatar/ vr/ ar/ voice/ ai/ singer/) │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
core/ (插件微内核)
|
||||
ServiceManager → 生命周期/消息路由/错误策略
|
||||
Plugin trait → 统一插件接口
|
||||
Message enum → 类型安全消息 (Serialize/Deserialize)
|
||||
动态插件层 → FFI Loader / Runtime / Self-Test
|
||||
|
||||
plugins/ (一切皆插件)
|
||||
video/ screen/ http/ ble/ wifi/ device/
|
||||
(未来: render/ avatar/ vr/ ar/ voice/ ai/ singer/)
|
||||
```
|
||||
|
||||
---
|
||||
## 实机验证结果
|
||||
|
||||
## 关键决策记录
|
||||
1. **Rust edition 2018** — 兼容 ARM 设备 stable toolchain
|
||||
2. **std::sync::mpsc** 消息传递 — VideoPlugin 在阻塞线程运行
|
||||
3. **BLE 双连接修复** — conn_server 处理回调, conn_client 同步注册
|
||||
4. **Message Clone** — 第二轮给 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 序列化** — 以稳定 ABI + JSON 边界承载跨语言插件交互
|
||||
8. **ctx-based SendCallback** — 用上下文回调替代 `thread_local`,消除线程绑定隐患
|
||||
9. **3阶段启动** — 插件生命周期统一为 `init -> test -> start`,先自检再对外服务
|
||||
10. **DevicePlugin 统一硬件抽象** — 所有硬件访问通过 DevicePlugin,多平台适配只改 Backend
|
||||
|
||||
---
|
||||
|
||||
## 团队绩效 (Phase 1 第一轮)
|
||||
|
||||
| 成员 | 任务 | 质量 | 完成度 | 效率 | 协作 | 总分 |
|
||||
|------|------|------|--------|------|------|------|
|
||||
| 张明远 | config.rs 验证 | 8 | 8 | 8 | 8 | **8** |
|
||||
| 李思琪 | state_machine.rs | 8 | 8 | 8 | 8 | **8** |
|
||||
| 王浩然 | wifi/mod.rs | 8 | 8 | 8 | 8 | **8** |
|
||||
| 赵雨薇 | screen/mod.rs | 8 | 8 | 8 | 8 | **8** |
|
||||
|
||||
---
|
||||
|
||||
## 当前质量快照
|
||||
|
||||
- 测试总数:**77**
|
||||
- 测试结果:**77/77 通过**
|
||||
- 编译告警:**0 warning**
|
||||
- 当前里程碑:**DevicePlugin 阶段二完成 — ScreenPlugin 迁移**
|
||||
- DevicePlugin 能力: Display + SleepInhibit + Backlight + Cursor (Linux ARM64)
|
||||
- ScreenPlugin 已重构为 thin wrapper(通过 DeviceCommand 转发)
|
||||
| 验证项 | 结果 |
|
||||
|--------|------|
|
||||
| `--validate` | 21 个视频路径全部有效 |
|
||||
| 插件初始化 | 5/5 正常 start |
|
||||
| HTTP API | `/api/status`、`/api/playlist` 正常 |
|
||||
| framebuffer | fb0 480x800 检测成功 |
|
||||
| Release 编译 | 9.4MB ARM aarch64 |
|
||||
|
||||
Reference in New Issue
Block a user