Skip to content

Commit c7ca4ae

Browse files
ensure update todo requests
1 parent 9c4b116 commit c7ca4ae

18 files changed

Lines changed: 5501 additions & 0 deletions

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,18 @@
280280

281281
---
282282

283+
## 📋 TODO
284+
285+
项目开发任务清单请查看 [document/todo/](document/todo/)
286+
287+
| 资源 | 描述 |
288+
|:---|:---|
289+
| [TODO 看板](document/todo/index.md) | 各模块任务清单与进度跟踪 |
290+
| [项目状态报告](document/todo/done/PROJECT_STATUS_REPORT.md) | 整体完成度与优先级建议 |
291+
| [参考文档](document/todo/done/) | 各模块实现参考文档 |
292+
293+
---
294+
283295
## 🔧 技术栈
284296

285297
<div align="center">
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Phase 0: 工程骨架搭建 TODO
2+
3+
> **状态**: 🚧 进行中
4+
> **预计周期**: 1~2 周
5+
> **依赖阶段**: 无
6+
> **目标交付物**: 完整的 CMake 构建体系、目录结构、跨平台 CI/CD
7+
8+
---
9+
10+
## 一、阶段目标
11+
12+
### 核心目标
13+
建立项目的工程化基础,确保后续所有开发工作在稳固的架构上进行。
14+
15+
### 具体交付物
16+
- [ ] 完整的 CMake 构建体系
17+
- [ ] 三层模块目录结构(base/sdk/shell)
18+
- [ ] 跨平台 CI/CD 流水线
19+
- [ ] 开发环境配置指南
20+
- [ ] 代码规范与格式化配置
21+
22+
---
23+
24+
## 二、Week 1 任务
25+
26+
### Day 1-2: 目录结构创建
27+
- [ ] 创建完整目录树
28+
- [ ] `src/base/` - 基础库源码
29+
- [ ] `src/sdk/` - SDK 层源码
30+
- [ ] `src/shell/` - Shell UI 源码
31+
- [ ] `src/simulator/` - 模拟器源码
32+
- [ ] `include/CFDesktop/` - 公共头文件
33+
- [ ] `tests/` - 测试代码
34+
- [ ] `cmake/` - CMake 模块
35+
- [ ] `assets/` - 资源文件
36+
- [ ] 编写主 [CMakeLists.txt](../../CMakeLists.txt)
37+
- [ ] 设置 C++23 标准
38+
- [ ] 配置 Qt6 依赖
39+
- [ ] 添加子目录
40+
- [ ] 配置 [CMakePresets.json](../../CMakePresets.json)
41+
- [ ] `linux-default` - 本地开发
42+
- [ ] `linux-arm-sf` - ARMv7 软渲染
43+
- [ ] `linux-arm-hf` - ARM64 硬件加速
44+
- [ ] 创建各子模块的 CMakeLists.txt 框架
45+
46+
### Day 3-4: 交叉编译配置
47+
- [ ] 编写 ARMv7 工具链文件 `cmake/toolchains/arm-linux-gnueabihf.cmake`
48+
- [ ] 设置 CMAKE_SYSTEM_NAME 为 Linux
49+
- [ ] 配置 arm-linux-gnueabihf-gcc/g++
50+
- [ ] 设置 Qt6 路径
51+
- [ ] 编写 ARM64 工具链文件 `cmake/toolchains/aarch64-linux-gnu.cmake`
52+
- [ ] 设置 CMAKE_SYSTEM_PROCESSOR 为 aarch64
53+
- [ ] 配置 aarch64-linux-gnu-gcc/g++
54+
- [ ] 设置 Qt6 ARM64 路径
55+
- [ ] 配置 Qt6 路径查找逻辑
56+
- [ ] 测试交叉编译(可用 Docker 验证)
57+
- [ ] 验证 ARMv7 编译
58+
- [ ] 验证 ARM64 编译
59+
60+
### Day 5: 代码规范配置
61+
- [ ] 配置 [.clang-format](../../.clang-format)
62+
- [ ] 基于 Google 风格
63+
- [ ] 设置缩进为 4 空格
64+
- [ ] 配置列宽 100
65+
- [ ] 设置指针对齐方式
66+
- [ ] 配置 [.clang-tidy](../../.clang-tidy)
67+
- [ ] 启用 modernize 检查
68+
- [ ] 配置性能相关检查
69+
- [ ] 编写代码格式化脚本 `tools/format.sh`
70+
- [ ] 配置 Git pre-commit hook
71+
- [ ] 创建 `.git-hooks/pre-commit` 脚本
72+
- [ ] 自动格式化检查 (clang-format --dry-run)
73+
- [ ] 静态分析 (clang-tidy)
74+
- [ ] 添加 trailing whitespace 检查
75+
- [ ] 配置可跳过选项 (git commit --no-verify)
76+
- [ ] 安装脚本配置 (`tools/install-hooks.sh`)
77+
78+
---
79+
80+
## 三、Week 2 任务
81+
82+
### Day 1-3: CI/CD 搭建
83+
- [ ] 创建 Docker 构建镜像
84+
- [ ] `docker/builder-linux-x64/Dockerfile`
85+
- [ ] `docker/builder-arm-sf/Dockerfile`
86+
- [ ] 配置 Qt6 环境
87+
- [ ] 编写 GitHub Actions 工作流 `.github/workflows/build.yml`
88+
- [ ] `build-linux-x64` 作业
89+
- [ ] `build-arm-sf` 交叉编译作业
90+
- [ ] `code-quality` 静态分析作业
91+
- [ ] 配置 artifact 上传
92+
- [ ] 配置部署流程 `.github/workflows/deploy.yml`
93+
- [ ] 设备选择输入
94+
- [ ] SSH 部署配置
95+
- [ ] 测试完整构建流程
96+
97+
### Day 4-5: 开发工具完善
98+
- [ ] 创建 VSCode 工作区配置 `.vscode/settings.json`
99+
- [ ] CMake 配置参数
100+
- [ ] 代码格式化保存
101+
- [ ] Clang 配置
102+
- [ ] 配置推荐扩展 `.vscode/extensions.json`
103+
- [ ] CMake Tools
104+
- [ ] C/C++
105+
- [ ] clang-format
106+
- [ ] 编写开发环境设置文档 `docs/development/SETUP.md`
107+
- [ ] 创建应用模板框架 `templates/app-template/`
108+
- [ ] 编写 Hello World 测试程序
109+
110+
---
111+
112+
## 四、验收标准
113+
114+
### 构建系统
115+
- [ ] `cmake --preset linux-default && cmake --build build --preset linux-default` 成功
116+
- [ ] `cmake --preset linux-arm-sf && cmake --build build --preset linux-arm-sf` 产出 ARM 二进制
117+
- [ ] 所有目标编译无警告
118+
119+
### CI/CD
120+
- [ ] Push 代码自动触发构建
121+
- [ ] 构建失败发送通知
122+
- [ ] 测试用例自动运行
123+
- [ ] Artifact 正确上传
124+
125+
### 开发环境
126+
- [ ] VSCode 能够正确索引所有符号
127+
- [ ] 代码格式化一键执行
128+
- [ ] 远程调试配置可用
129+
- [ ] 新团队成员能在 30 分钟内完成环境搭建
130+
131+
---
132+
133+
## 五、风险与缓解
134+
135+
| 风险 | 影响 | 缓解措施 |
136+
|------|------|----------|
137+
| Qt6 交叉编译配置复杂 | 延迟 2-3 天 | 使用 Docker 预配置环境 |
138+
| CI 资源不足 | 构建时间长 | 优化依赖缓存,使用矩阵策略 |
139+
| 工具链版本兼容性 | 编译失败 | 固定 Docker 镜像版本 |
140+
141+
---
142+
143+
## 六、相关文档
144+
145+
- 设计文档: [../design_stage/00_phase0_project_skeleton.md](../design_stage/00_phase0_project_skeleton.md)
146+
- 主 CMakeLists.txt: [../../CMakeLists.txt](../../CMakeLists.txt)
147+
- CMake 预设: [../../CMakePresets.json](../../CMakePresets.json)
148+
149+
---
150+
151+
*最后更新: 2026-03-05*

document/todo/01_hardware_probe.md

Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
# Phase 1: 硬件探针与能力分级 TODO
2+
3+
> **状态**: ⬜ 待开始
4+
> **预计周期**: 2~3 周
5+
> **依赖阶段**: Phase 0
6+
> **目标交付物**: 硬件检测模块、能力档位枚举、配置文件系统
7+
8+
---
9+
10+
## 一、阶段目标
11+
12+
### 核心目标
13+
实现开机自动硬件检测,输出能力档位枚举,作为后续所有模块的行为裁剪依据。
14+
15+
### 具体交付物
16+
- [ ] `HardwareProbe` 模块及其单元测试
17+
- [ ] `CapabilityPolicy` 策略引擎
18+
- [ ] `HWTier` 枚举定义及查询接口
19+
- [ ] 设备配置文件 `/etc/CFDesktop/device.conf`
20+
- [ ] Mock 数据集用于单元测试
21+
22+
---
23+
24+
## 二、Week 1: 基础检测器实现
25+
26+
### Day 1-2: CPU 检测器
27+
- [ ] 创建 `CPUDetector` 类框架
28+
- [ ] 定义 `CPUInfo` 结构体
29+
- [ ] 实现 `detectCPU()` 方法
30+
- [ ] 实现 `/proc/cpuinfo` 解析
31+
- [ ] 解析 CPU 型号
32+
- [ ] 解析核心数
33+
- [ ] 解析频率
34+
- [ ] 解析特性 (neon, vfpv4)
35+
- [ ] 实现设备树 compatible 读取
36+
- [ ] 读取 `/sys/firmware/devicetree/base/compatible`
37+
- [ ] 实现 `uname` 架构检测
38+
- [ ] 编写 CPU 检测单元测试
39+
- [ ] IMX6ULL Mock 数据
40+
- [ ] RK3568 Mock 数据
41+
- [ ] RK3588 Mock 数据
42+
43+
### Day 3: GPU 检测器
44+
- [ ] 创建 `GPUDetector` 类框架
45+
- [ ] 定义 `GPUInfo` 结构体
46+
- [ ] 实现 DRM 设备检测
47+
- [ ] 检测 `/dev/dri/card*`
48+
- [ ] 实现 OpenGL 上下文创建
49+
- [ ] 获取 GPU 信息
50+
- [ ] 获取扩展列表
51+
- [ ] 实现 GPU 能力查询
52+
- [ ] 最大纹理尺寸
53+
- [ ] OpenGL 版本
54+
- [ ] 编写 GPU 检测单元测试
55+
56+
### Day 4: 内存与网络检测器
57+
- [ ] 实现 `/proc/meminfo` 解析
58+
- [ ] 定义 `MemoryInfo` 结构体
59+
- [ ] 解析总内存
60+
- [ ] 解析可用内存
61+
- [ ] 解析 Swap
62+
- [ ] 实现网络接口枚举
63+
- [ ] 定义 `NetworkInterface` 结构体
64+
- [ ] 枚举 `/sys/class/net/*`
65+
- [ ] 获取 IP 地址
66+
- [ ] 编写相应单元测试
67+
68+
### Day 5: 档位计算逻辑
69+
- [ ] 实现评分算法
70+
- [ ] CPU 评分规则
71+
- [ ] GPU 评分规则
72+
- [ ] 内存评分规则
73+
- [ ] 定义档位阈值
74+
- [ ] Low: 0-60 分
75+
- [ ] Mid: 61-120 分
76+
- [ ] High: 121+ 分
77+
- [ ] 实现 `calculateTier()` 方法
78+
- [ ] 验证各板卡档位判定
79+
- [ ] IMX6ULL → Low
80+
- [ ] RK3568 → Mid
81+
- [ ] RK3588 → High
82+
83+
---
84+
85+
## 三、Week 2: 策略引擎与配置
86+
87+
### Day 1-2: CapabilityPolicy 实现
88+
- [ ] 定义各策略结构体
89+
- [ ] `AnimationPolicy`
90+
- [ ] `RenderingPolicy`
91+
- [ ] `VideoDecoderPolicy`
92+
- [ ] `MemoryPolicy`
93+
- [ ] 实现档位特定策略配置
94+
- [ ] Low 档策略
95+
- [ ] Mid 档策略
96+
- [ ] High 档策略
97+
- [ ] 实现 `getAnimationPolicy()`
98+
- [ ] 实现 `getRenderingPolicy()`
99+
- [ ] 实现 `getVideoDecoderPolicy()`
100+
- [ ] 实现 `getMemoryPolicy()`
101+
102+
### Day 3: DeviceConfig 实现
103+
- [ ] 实现配置文件解析
104+
- [ ] INI 格式解析
105+
- [ ] 默认值处理
106+
- [ ] 实现配置文件写入
107+
- [ ] 实现自定义脚本执行
108+
- [ ] 脚本路径配置
109+
- [ ] JSON 输出解析
110+
- [ ] 编写配置测试
111+
112+
### Day 4: 集成测试
113+
- [ ] 创建端到端测试用例
114+
- [ ] 完整检测流程
115+
- [ ] 策略应用验证
116+
- [ ] 测试 IMX6ULL 真机
117+
- [ ] CPU 信息验证
118+
- [ ] 档位验证
119+
- [ ] 测试 RK3568 真机
120+
- [ ] 测试 RK3588 真机
121+
- [ ] 验证自动档位判定
122+
123+
### Day 5: 文档与优化
124+
- [ ] 编写 API 文档
125+
- [ ] HardwareProbe 接口
126+
- [ ] CapabilityPolicy 接口
127+
- [ ] 优化检测性能
128+
- [ ] 目标: < 500ms
129+
- [ ] 添加性能日志
130+
- [ ] Code Review
131+
132+
---
133+
134+
## 四、Week 3: 完善与验证
135+
136+
### Day 1-2: 跨平台支持
137+
- [ ] 实现 Windows 平台检测
138+
- [ ] WMI 查询
139+
- [ ] GPU 检测
140+
- [ ] 实现模拟器平台适配
141+
- [ ] Mock 数据支持
142+
- [ ] 环境变量检测
143+
- [ ] 编写平台特定测试
144+
145+
### Day 3-4: 真机验证
146+
- [ ] 在 IMX6ULL 上完整测试
147+
- [ ] 性能测试
148+
- [ ] 内存占用测试
149+
- [ ] 在 RK3568 上完整测试
150+
- [ ] OpenGL 检测验证
151+
- [ ] 硬件解码验证
152+
- [ ] 在 RK3588 上完整测试
153+
- [ ] 全功能验证
154+
- [ ] 收集性能数据
155+
156+
### Day 5: 发布准备
157+
- [ ] 最终测试
158+
- [ ] 更新文档
159+
- [ ] 准备演示
160+
- [ ] 合并主分支
161+
162+
---
163+
164+
## 五、验收标准
165+
166+
### 功能验收
167+
- [ ] 在 IMX6ULL 上正确识别为 Low 档
168+
- [ ] 在 RK3568 上正确识别为 Mid 档
169+
- [ ] 在 RK3588 上正确识别为 High 档
170+
- [ ] 所有单元测试通过(覆盖率 > 90%)
171+
- [ ] 配置文件覆盖功能正常
172+
- [ ] 自定义脚本执行正常
173+
174+
### 性能验收
175+
- [ ] 硬件检测耗时 < 500ms
176+
- [ ] 内存占用 < 5MB
177+
- [ ] 不影响系统启动时间
178+
179+
### 代码质量
180+
- [ ] 符合代码规范
181+
- [ ] 通过 clang-tidy 检查
182+
- [ ] API 文档完整
183+
- [ ] 代码审查通过
184+
185+
---
186+
187+
## 六、文件清单
188+
189+
### 头文件
190+
- [ ] `include/CFDesktop/Base/HardwareProbe/HWTier.h`
191+
- [ ] `include/CFDesktop/Base/HardwareProbe/HardwareInfo.h`
192+
- [ ] `include/CFDesktop/Base/HardwareProbe/HardwareProbe.h`
193+
- [ ] `include/CFDesktop/Base/HardwareProbe/CapabilityPolicy.h`
194+
- [ ] `include/CFDesktop/Base/HardwareProbe/DeviceConfig.h`
195+
196+
### 源文件
197+
- [ ] `src/base/hardware/HardwareProbe.cpp`
198+
- [ ] `src/base/hardware/CapabilityPolicy.cpp`
199+
- [ ] `src/base/hardware/DeviceConfig.cpp`
200+
- [ ] `src/base/hardware/detectors/CPUDetector.cpp`
201+
- [ ] `src/base/hardware/detectors/GPUDetector.cpp`
202+
- [ ] `src/base/hardware/detectors/MemoryDetector.cpp`
203+
- [ ] `src/base/hardware/detectors/NetworkDetector.cpp`
204+
- [ ] `src/base/hardware/platform/LinuxDetector.cpp`
205+
- [ ] `src/base/hardware/platform/WindowsDetector.cpp`
206+
207+
### 测试文件
208+
- [ ] `tests/unit/base/hardware/test_hardware_probe.cpp`
209+
- [ ] `tests/unit/base/hardware/test_capability_policy.cpp`
210+
- [ ] `tests/mock/proc/cpuinfo_imx6ull`
211+
- [ ] `tests/mock/proc/cpuinfo_rk3568`
212+
- [ ] `tests/mock/proc/cpuinfo_rk3588`
213+
- [ ] `tests/mock/proc/meminfo_512mb`
214+
- [ ] `tests/mock/proc/meminfo_1gb`
215+
- [ ] `tests/mock/proc/meminfo_4gb`
216+
217+
---
218+
219+
## 七、相关文档
220+
221+
- 设计文档: [../design_stage/01_phase1_hardware_probe.md](../design_stage/01_phase1_hardware_probe.md)
222+
- 依赖: [00_project_skeleton.md](00_project_skeleton.md)
223+
224+
---
225+
226+
*最后更新: 2026-03-05*

0 commit comments

Comments
 (0)