输入关键词开始搜索

开发计划与日报

04 — 开发计划(T 任务流水线)

版本:v2.0 | 日期:2026-05-30

采用 T 任务流水线 替代按日分步。每个 T 任务是最小可测试单元,流程固定:

分配任务 → 编码实现 → 自测 → Tech Lead 验收 → git push

任务清单总览(21 个 T 任务)

阶段 0:基础设施

编号任务涉及文件
T001CMake 项目骨架 + 目录结构 + main 入口CMakeLists.txt, src/main.cpp, include/, src/ 各子目录
T002分级日志系统src/utils/Logger.cpp

阶段 1:通信层

编号任务涉及文件
T003IChannel 接口 + SerialChannel + TcpChannelinclude/IChannel.h, src/communication/
T004ChannelManager(连接/断开/指数退避重连)src/communication/ChannelManager.cpp

阶段 2:协议层

编号任务涉及文件
T005Frame 结构 + CRC16-CCITT + ProtocolDecoder 状态机include/Frame.h, src/protocol/
T006单线程集成:Channel → Decoder → 终端打印 DataPointmain.cpp 临时代码,串联 T003–T005

阶段 3:数据层

编号任务涉及文件
T007DataPoint 结构 + DataBuffer 环形缓冲(QMutex)include/DataPoint.h, src/data/DataBuffer.cpp
T008DatabaseManager(建表+WAL+批量写入+查询+清理)src/data/DatabaseManager.cpp

阶段 4:UI 层

编号任务涉及文件
T009DataTableModel + MainWindow 右侧 QTableViewsrc/data/DataTableModel.cpp, src/ui/MainWindow.cpp
T010RealTimeChart 自绘(坐标轴+曲线+双缓冲+缩放+拖拽)src/ui/RealTimeChart.cpp
T011MainWindow 完整布局(QSplitter+工具栏+状态栏+菜单)src/ui/MainWindow.cpp
T012单线程全链路:采集→表格刷新+曲线滚动+DB 写入串联 T006+T011+T008

阶段 5:多线程改造

编号任务涉及文件
T013SerialWorker + TcpWorker + ParseWorker(moveToThread)src/worker/
T014三线程信号槽全队列连接 + 生命周期 + 验证修改 MainWindow + Worker 信号槽接线

阶段 6:高级功能 + 收尾

编号任务涉及文件
T015HistoryPlayer(QSlider 时间轴+播放/暂停+速度)src/ui/HistoryPlayer.cpp
T016CSV 导出(时间范围+通道选择+QFileDialog)src/ui/ExportDialog.cpp
T017暗色主题 QSS + About 对话框resources/dark_theme.qss, src/ui/AboutDialog.cpp
T018心跳 + 握手协议(帧 0x02~0x05)扩展 ProtocolDecoder + ChannelManager 心跳定时器
T019Python 模拟器工具(simulator.py)tools/simulator.py
T020代码质量 pass(clang-tidy + 智能指针 + 裸 new/delete 清查)全项目
T021README 截图更新 + git tag v1.0README.md

依赖图

T001 ──→ T002

  ├──→ T003 ──→ T004 ──────────────┐
  │                                 │
  ├──→ T005 ────────────────────────┤
  │                                 ▼
  ├──→ T007 ───────────┐          T006 ← 里程碑 ① 端到端解码
  │                     │            │
  ├──→ T008 ───────────┤            │
  │                     ▼            ▼
  │                   T009         T012 ← 里程碑 ② 单线程全链路
  │                     │            │
  │                     ▼            │
  │                   T010 ────┐     │
  │                     │      │     │
  │                     ▼      │     │
  │                   T011 ────┤     │
  │                            │     │
  │                            ▼     │
  │                 T013 ← T012     │
  │                   │             │
  │                   ▼             │
  │                 T014 ← 里程碑 ③ 多线程稳定
  │                   │
  │     ┌─────────────┼─────────────┐
  │     ▼             ▼             ▼
  │   T015         T016           T018
  │   (回放)       (导出)         (心跳握手)
  │     │             │             │
  │     └─────────────┼─────────────┘
  │                   ▼
  │                 T017 (主题+About)
  │                   │
  └───────────────── T020 (代码质量)

                T019  │  (模拟器,独立进行)

                    T021 ← 里程碑 ④ 发版

四个里程碑

#对应任务标志
T006 完成终端看到 Frame decoded: type=0x01, channels=[123,456,789], crc=OK
T012 完成界面曲线滚动 + 表格刷新 + SQLite 落盘,单线程全通
T014 完成三线程稳定运行,窗口关闭无 QThread 警告
T021 完成git tag v1.0,项目可交付

每个 T 任务的标准流程

  1. 分配 — Tech Lead 在 开发日志记录.md 中填写任务详细 + 验收标准 + 开发建议
  2. 编码 — 开发者按建议路线实现
  3. 自测 — 对照验收标准逐条打勾
  4. 验收 — Tech Lead 审查代码 + 确认标准通过
  5. 推送git commit -m "Txxx: 标题" && git push origin dev
  6. 记录 — 在日志中补全 Bug 解决、知识点回顾、核心代码

风险与应对

风险概率影响应对
串口硬件不可用使用 socat 虚拟串口对,开发完全不受影响
自定义曲线性能不达标降级为 QChart 方案(QLineSeries),放弃自绘
多线程出现死锁所有数据传递用队列信号槽,不用共享内存+锁,从设计上杜绝死锁
时间不够阶段 5/6 功能可裁剪:砍掉心跳握手(T018),回放降级为纯查询(T015 简化)