fix: 修正配置文件视频相对路径 + 更新 M1.1 完成进度

- configs/*.json: 视频路径 ../ → ../../ (configs/ 子目录需多上一级)
- PROGRESS.md: 第四轮 Opus 团队任务全部标记完成,M1.1 标记完成
- 实机验证: 5 插件初始化正常,HTTP API 响应正常,配置验证通过

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
showen
2026-03-12 13:26:05 +08:00
parent ff9c6a99b5
commit 5dcc1ad98e
3 changed files with 67 additions and 55 deletions

View File

@@ -46,22 +46,34 @@ ShowenV2 不仅是全息宠物播放器,而是一个**通用数字生命窗口
| 10 | `5af7fc1` | core 集成测试 + bug修复 + API文档重写 + HTTP兼容路由 | CEO+全员 | | 10 | `5af7fc1` | core 集成测试 + bug修复 + API文档重写 + HTTP兼容路由 | CEO+全员 |
| 11 | `4edbd34` | ConfigReloadRequest 闭环P0消除| CEO | | 11 | `4edbd34` | ConfigReloadRequest 闭环P0消除| CEO |
### 🔄 第四轮 P1 进行中 ### 第四轮 Opus 团队 (全部完成)
| 成员 | 任务 | 文件 | 状态 | | # | 提交 | 内容 | 负责人 |
|------|------|------|------| |---|------|------|--------|
| 张明远 | 自由模式随机游走回补 | plugins/video/state_machine.rs | 🔄 执行中 | | 12 | `9daf65d` | 暂停时释放防息屏锁 | 赵雨薇 |
| 李思琪 | /api/playlist 快照语义 | plugins/http/routes.rs, plugins/video/mod.rs | 🔄 执行中 | | 13 | `6ca5992` | /api/playlist 快照语义 | 李思琪 |
| 赵雨薇 | 暂停释放防息屏 | core/message.rs, plugins/video/mod.rs, plugins/screen/mod.rs | 🔄 执行中 | | 14 | `e45573f` | FreeMode 状态随机游走 | 张明远 |
| 15 | `7091008` | BLE GATT notify 落地验证 | 王浩然 |
| 16 | `c48340d` | 插件依赖回归测试 (7 tests) | 周雅婷 |
| 17 | `ff9c6a9` | QA Release 编译与质量报告 | 林晓峰 |
### ⏳ 待完成 ### ✅ 实机运行验证 (CEO)
| 任务 | 说明 | 优先级 | | 验证项 | 结果 |
|------|------|--------| |--------|------|
| BLE notify 真实落地 | GATT PropertiesChanged 信号 | P1 | | 配置路径修复 | `../``../../` (configs/ 子目录修正) |
| 依赖图自动化测试 | 防止文档与代码漂移 | P1 | | `--validate` | 21 个视频路径全部有效 |
| cargo build --release | 完整编译验证 | P0 | | 插件初始化 | 5/5 插件全部正常 start |
| 实机运行测试 | 在 ARM 设备上验证 | P0 | | HTTP API | `/api/status``/api/playlist` 正常返回 JSON |
| framebuffer | 检测到 fb0 480x800 |
| GTK backend | SSH 环境无 DISPLAY 预期报错,实机 X session 无此问题 |
### ✅ M1.1 完成
- cargo check: **零 warning**
- cargo test: **31/31 通过**
- cargo build --release: **9.4MB ARM aarch64**
- 实机启动: **通过** (SSH 无 GTK 是预期限制)
--- ---

View File

@@ -48,147 +48,147 @@
"playlist": [ "playlist": [
{ {
"id": "anim_0", "id": "anim_0",
"path": "../宠物嵌入式开发视频3/1.动画0.mp4", "path": "../../宠物嵌入式开发视频3/1.动画0.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_1", "id": "anim_1",
"path": "../宠物嵌入式开发视频3/2.趴着休息/动画1.mp4", "path": "../../宠物嵌入式开发视频3/2.趴着休息/动画1.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_2", "id": "anim_2",
"path": "../宠物嵌入式开发视频3/2.趴着休息/动画2.mp4", "path": "../../宠物嵌入式开发视频3/2.趴着休息/动画2.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_3", "id": "anim_3",
"path": "../宠物嵌入式开发视频3/2.趴着休息/动画3.mp4", "path": "../../宠物嵌入式开发视频3/2.趴着休息/动画3.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_4", "id": "anim_4",
"path": "../宠物嵌入式开发视频3/3.犯困眯眼/动画4.mp4", "path": "../../宠物嵌入式开发视频3/3.犯困眯眼/动画4.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_5", "id": "anim_5",
"path": "../宠物嵌入式开发视频3/3.犯困眯眼/动画5.mp4", "path": "../../宠物嵌入式开发视频3/3.犯困眯眼/动画5.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_6", "id": "anim_6",
"path": "../宠物嵌入式开发视频3/3.犯困眯眼/动画6.mp4", "path": "../../宠物嵌入式开发视频3/3.犯困眯眼/动画6.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_7", "id": "anim_7",
"path": "../宠物嵌入式开发视频3/4.趴下睡觉/动画7.mp4", "path": "../../宠物嵌入式开发视频3/4.趴下睡觉/动画7.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_8", "id": "anim_8",
"path": "../宠物嵌入式开发视频3/4.趴下睡觉/动画8.mp4", "path": "../../宠物嵌入式开发视频3/4.趴下睡觉/动画8.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_9", "id": "anim_9",
"path": "../宠物嵌入式开发视频3/4.趴下睡觉/动画9.mp4", "path": "../../宠物嵌入式开发视频3/4.趴下睡觉/动画9.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_10", "id": "anim_10",
"path": "../宠物嵌入式开发视频3/5.猫舔爪子 动画10.mp4", "path": "../../宠物嵌入式开发视频3/5.猫舔爪子 动画10.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_11", "id": "anim_11",
"path": "../宠物嵌入式开发视频3/6.口渴动画/动画11.mp4", "path": "../../宠物嵌入式开发视频3/6.口渴动画/动画11.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_12", "id": "anim_12",
"path": "../宠物嵌入式开发视频3/6.口渴动画/动画12.mp4", "path": "../../宠物嵌入式开发视频3/6.口渴动画/动画12.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_13", "id": "anim_13",
"path": "../宠物嵌入式开发视频3/6.口渴动画/动画13.mp4", "path": "../../宠物嵌入式开发视频3/6.口渴动画/动画13.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_14", "id": "anim_14",
"path": "../宠物嵌入式开发视频3/7.被叫名字1/动画14.mp4", "path": "../../宠物嵌入式开发视频3/7.被叫名字1/动画14.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_15", "id": "anim_15",
"path": "../宠物嵌入式开发视频3/7.被叫名字1/动画15.mp4", "path": "../../宠物嵌入式开发视频3/7.被叫名字1/动画15.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_16", "id": "anim_16",
"path": "../宠物嵌入式开发视频3/7.被叫名字1/动画16.mp4", "path": "../../宠物嵌入式开发视频3/7.被叫名字1/动画16.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_17", "id": "anim_17",
"path": "../宠物嵌入式开发视频3/8.握手/动画17.mp4", "path": "../../宠物嵌入式开发视频3/8.握手/动画17.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_18", "id": "anim_18",
"path": "../宠物嵌入式开发视频3/9.喂食动画/动画18.mp4", "path": "../../宠物嵌入式开发视频3/9.喂食动画/动画18.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_19", "id": "anim_19",
"path": "../宠物嵌入式开发视频3/10.玩逗猫棒/动画19.mp4", "path": "../../宠物嵌入式开发视频3/10.玩逗猫棒/动画19.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_20", "id": "anim_20",
"path": "../宠物嵌入式开发视频3/11.摸猫头/动画22.mp4", "path": "../../宠物嵌入式开发视频3/11.摸猫头/动画22.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null

View File

@@ -60,147 +60,147 @@
"playlist": [ "playlist": [
{ {
"id": "anim_0", "id": "anim_0",
"path": "../宠物嵌入式开发视频2/1.动画0.mp4", "path": "../../宠物嵌入式开发视频2/1.动画0.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_1", "id": "anim_1",
"path": "../宠物嵌入式开发视频2/2.趴着休息/动画1.mp4", "path": "../../宠物嵌入式开发视频2/2.趴着休息/动画1.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_2", "id": "anim_2",
"path": "../宠物嵌入式开发视频2/2.趴着休息/动画2.mp4", "path": "../../宠物嵌入式开发视频2/2.趴着休息/动画2.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_3", "id": "anim_3",
"path": "../宠物嵌入式开发视频2/2.趴着休息/动画3.mp4", "path": "../../宠物嵌入式开发视频2/2.趴着休息/动画3.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_4", "id": "anim_4",
"path": "../宠物嵌入式开发视频2/3.站起来活动/动画4.mp4", "path": "../../宠物嵌入式开发视频2/3.站起来活动/动画4.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_5", "id": "anim_5",
"path": "../宠物嵌入式开发视频2/3.站起来活动/动画5.mp4", "path": "../../宠物嵌入式开发视频2/3.站起来活动/动画5.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_6", "id": "anim_6",
"path": "../宠物嵌入式开发视频2/3.站起来活动/动画6.mp4", "path": "../../宠物嵌入式开发视频2/3.站起来活动/动画6.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_7", "id": "anim_7",
"path": "../宠物嵌入式开发视频2/4.趴下睡觉/动画7.mp4", "path": "../../宠物嵌入式开发视频2/4.趴下睡觉/动画7.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_8", "id": "anim_8",
"path": "../宠物嵌入式开发视频2/4.趴下睡觉/动画8.mp4", "path": "../../宠物嵌入式开发视频2/4.趴下睡觉/动画8.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_9", "id": "anim_9",
"path": "../宠物嵌入式开发视频2/4.趴下睡觉/动画9.mp4", "path": "../../宠物嵌入式开发视频2/4.趴下睡觉/动画9.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_10", "id": "anim_10",
"path": "../宠物嵌入式开发视频2/5.狗舔爪子 动画10.mp4", "path": "../../宠物嵌入式开发视频2/5.狗舔爪子 动画10.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_11", "id": "anim_11",
"path": "../宠物嵌入式开发视频2/6.口渴动画/动画11.mp4", "path": "../../宠物嵌入式开发视频2/6.口渴动画/动画11.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_12", "id": "anim_12",
"path": "../宠物嵌入式开发视频2/6.口渴动画/动画12.mp4", "path": "../../宠物嵌入式开发视频2/6.口渴动画/动画12.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_13", "id": "anim_13",
"path": "../宠物嵌入式开发视频2/6.口渴动画/动画13.mp4", "path": "../../宠物嵌入式开发视频2/6.口渴动画/动画13.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_14", "id": "anim_14",
"path": "../宠物嵌入式开发视频2/7.被叫名字1/动画14.mp4", "path": "../../宠物嵌入式开发视频2/7.被叫名字1/动画14.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_15", "id": "anim_15",
"path": "../宠物嵌入式开发视频2/7.被叫名字1/动画15.mp4", "path": "../../宠物嵌入式开发视频2/7.被叫名字1/动画15.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_16", "id": "anim_16",
"path": "../宠物嵌入式开发视频2/7.被叫名字1/动画16.mp4", "path": "../../宠物嵌入式开发视频2/7.被叫名字1/动画16.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_17", "id": "anim_17",
"path": "../宠物嵌入式开发视频2/8.握手/动画17.mp4", "path": "../../宠物嵌入式开发视频2/8.握手/动画17.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_18", "id": "anim_18",
"path": "../宠物嵌入式开发视频2/9.喂食动画/动画18.mp4", "path": "../../宠物嵌入式开发视频2/9.喂食动画/动画18.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_19", "id": "anim_19",
"path": "../宠物嵌入式开发视频2/10.喂水动画/动画19.mp4", "path": "../../宠物嵌入式开发视频2/10.喂水动画/动画19.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null
}, },
{ {
"id": "anim_20", "id": "anim_20",
"path": "../宠物嵌入式开发视频2/11.摸狗狗头/动画22.mp4", "path": "../../宠物嵌入式开发视频2/11.摸狗狗头/动画22.mp4",
"duration": null, "duration": null,
"loop_count": 1, "loop_count": 1,
"random_loop_range": null "random_loop_range": null