This is an old revision of the document!
Table of Contents
研发任务(日复盘 + H5 管理)— 冷启动文件
版本: 4.0 | 日期: 2026-08-26 | 用途: 研发任务日复盘推送 + H5 任务管理工具的冷启动/重建/排障手册
服务器: 腾讯云轻量 lhins-1dai07vu | 系统: Ubuntu | 时区: Asia/Shanghai
工作流: ①研发任务日复盘(工作日09:00微信推送)②研发任务 H5(http://82.156.85.124:13544/rd/ 浏览器管理)
v4.0 更新: 新增 H5 管理工具章节(部署/API/功能/同步机制/排障);v3.0 的负责人彩色分组、编号复用、工作日周期规则保留
—
1. 工作流总览
~/docs/rd_tasks.json(唯一数据源)
├─→ 复盘推送: cron b9dbd39c3f34(工作日 09:00)→ rd_daily_review.py → 微信
└─→ H5 管理: systemd rd-h5.service(:13544)→ rd_h5.py + rd_h5.html → 浏览器
↑ 双向同步:H5 里改任务 → JSON → 复盘推送同步显示
两个入口(同一份数据):
| 入口 | 用途 | 地址 |
| —— | —— | —— |
| 微信复盘 | 每日 09:00 自动推送任务清单+超期提示 | cron b9dbd39c3f34 |
| H5 管理 | 浏览器操作(筛选/进度/子任务/日报/只读) | http://82.156.85.124:13544/rd/ |
| H5 只读 | 给团队/领导查看(无编辑权限) | http://82.156.85.124:13544/rd/?ro=1 |
2. 文件清单
| 文件 | 说明 |
| —— | —— |
| ~/docs/rd_tasks.json | 任务清单(唯一数据源,H5 与复盘共用) |
| ~/docs/rd_tasks_completed.json | 已完成任务归档 |
| ~/.hermes/scripts/rd_daily_review.py | 复盘生成器(cron 调用,no_agent) |
| ~/.hermes/scripts/rd_task_update.py | 微信更新工具(–add 编号复用) |
| ~/.hermes/scripts/rd_history.py | 历史查询(–month/–week/–last/–all) |
| ~/.hermes/scripts/rd_h5.py | H5 后端(Flask :13544,API + 日报 + 只读) |
| ~/.hermes/scripts/rd_h5.html | H5 前端(单文件,无外链) |
| ~/.hermes/scripts/rd_logo.jpg | H5 首页慧飞 logo |
| /etc/systemd/system/rd-h5.service | H5 常驻服务(开机自启,root 运行) |
| cron b9dbd39c3f34 | 复盘推送(0 9 * * 1-5,no_agent) |
| cron af464d70c514 | 古筝课每周课时(无关,勿混) |
3. H5 管理工具(v4 新增)
启动/重启: `sudo systemctl restart rd-h5.service`(用 ctwing-2 venv 的 python,有 flask)
API 一览:
| 接口 | 方法 | 功能 |
| —— | —— | —— |
| /rd/ | GET | H5 页面(no-cache 头) |
| /rd/?ro=1 | GET | 只读模式(隐藏所有编辑入口) |
| /rd/logo.jpg | GET | 首页 logo |
| /api/tasks | GET | 任务列表(含 owner_map/projects) |
| /api/tasks | POST | 新增任务(type: track/temp) |
| /api/tasks/<id> | POST | 更新(priority/owners/project/status/progress/subtasks) |
| /api/tasks/<id> | DELETE | 删除(编号释放) |
| /api/tasks/<id>/note | POST | 记录更新(自动+2%,99 封顶) |
| /api/tasks/<id>/subtask/<i>/note | POST | 子任务更新(+2%,记录【子任务·负责人】) |
| /api/report/today | GET | 生成研发中心日报(星级评价+只读链接) |
H5 功能清单(用户定稿): - 筛选:优先级/项目/状态/更新天数(1-30 工作日)/搜索/人员点击(多选) - 默认按人员分组,组内高→中→低;点人显示主负责+子任务负责两组;“全部”按钮 - 进度条:宽度=百分比数字(.pfill 必须 display:block);手动设置;每日更新自动+2%(99 封顶,100 手动);有子任务时任务进度=子任务平均 - 详情页:内容/项目/多负责人/优先级/状态/进度可改;子任务管理(名称/负责人/进度/更新内容) - 子任务更新:内容必填→进度+2%,记入总 notes 格式 `【子任务名·负责人】内容` - 新增任务两种类型:📌跟踪任务(持续多人跟踪,时间跨天)| ⏱️临时小任务(着急当天完成,5分钟<耗时<2小时,字段:名称/内容/负责人/开始时间/耗时) - 生成日报:标题“研发中心日报”,只读链接最前面,负责人全名,任务前【项目名】,星级评价(★~★★★★★) - 今日已更新 ✓ 标记;日期按本地零点计算(防 UTC 偏移)
4. 推送格式(微信复盘)
📋 研发任务日复盘 2026-08-26(在办 N 项) 🔵武 1: ✅【中】(其他)25年项目验收(8月底统一处理) 📊0% 📝 今日: 内容 🟣张 7: 【中】(P3)P3电路测试(安排) 📊50% 📝 昨天: 内容 ... ⏸️ 挂起: ... ⚠️ 超期未更新(工作日): #N(...)← 超期X个工作日 🏁 已完成: ... 💬 更新方式:发「更新N:内容」或「N:完成」;新增任务发「新增(高)(项目)任务内容」
格式铁律: - 负责人:彩色圆点+简称(🔵武/🟣张/🟠潘/🔴席/🟢宋/🟡刘/🟤汤/⚪无),按负责人分组,组内高→中→低 - 半角 `[中]` 是微信表情代码会被吞 → 必须全角【】;项目名必须用小括号且不能为空 - ✅ 绿钩=今日更新;📊N%=进度(H5 同步);📝 只显示最新一条更新(今日覆盖历史) - 更新记录日期:今日/昨天/前天/M月D日(自然日) - 编号:阿拉伯数字;完成/删除后释放复用(新增用最小空缺,不重排)
5. 更新周期(2026-08-25 定稿,按工作日)
| 优先级 | 周期 | 说明 |
| ——– | —— | —— |
| 高 | 1 个工作日 | 每日必更(进度%+内容描述) |
| 中 | 3 个工作日 | |
| 低 | 5 个工作日 | |
| 挂起 | 30 个工作日 |
- 工作日 = 跳过周六日(H5 筛选与复盘超期提示一致) - 超期未更新 → ⚠️ 超期提示(H5 任务行红字 + 复盘推送末尾列表) - 周末不推送(cron 0 9 * * 1-5)
6. 负责人映射与项目规范
负责人简称→全名(H5 显示全名,复盘显示简称): 武=武燕青 | 张=张景茹 | 潘=潘保琰 | 席=席江峰 | 宋=宋讯文 | 刘=刘瑞红 | 汤=汤宝岩
项目(2026-08-25 合并定稿): 拓远T1(拓远+T1)| 普惠P1(P1+普惠P1)| 金穗S1(金穗+金穗S1+S1)| 其他(研发文件+管理+模具+测试)| P3 | P5 | 表压 | 软管泵 | 施肥阀 | AI 等
7. 任务 JSON 结构
{"id": 4, "raw": "[中](拓远T1)二维码,安排实际尺寸测试",
"priority": "中", "project": "拓远T1",
"owners": ["席"], "last_update": "2026-08-26",
"done": false, "progress": 51, "status": "进行中",
"notes": [{"date": "2026-08-26", "text": "【子任务·负责人】内容"}],
"subtasks": [{"name": "子任务", "owner": "张", "progress": 50}],
"type": "track", "start_time": "", "duration": 0}
- id:编号复用(最小空缺);raw:用户原文(含[优先级](项目名)) - owners 数组(H5 v2+);旧数据兼容单值 owner(复盘 get_owner 兼容) - progress:H5 设置/自动+2%;有子任务时=子任务平均 - type:track/temp;temp 任务含 start_time/duration(5<分钟<120)
8. 排障速查(血泪教训)
| 症状 | 原因与修复 | ||
| —— | ———– | ||
| H5 进度条不按比例 | `.pfill` 是 span(inline),width% 无效 → 加 `display:block` | ||
| 昨天更新显示“今日” | daysAgo 用 UTC 解析偏移 8h → `setHours(0,0,0,0)` 本地零点 | ||
| “今日已更新”筛选含昨天 | workdaysBetween `while(d<t)` 漏算今天 → `while(d⇐t)` | ||
| 昨天更新仍在“今日已更新” | 浏览器缓存旧 JS → 后端加 no-cache 头 | ||
| H5 新增任务复盘显示⚪无 | owners 数组 vs owner 单值 → get_owner 兼容 | ||
| H5 改项目复盘不更新 | project 字段与 raw 不同步 → update_task 同步 raw 项目名 | ||
| 任务内容丢失 | H5 saveTask 空内容覆盖 → `if(raw)body.raw=raw` | ||
| –add 新增任务优先级解析错 | 正则贪婪 → ` | [\(\[]([ | \)\]]+)[\)\]]` |
|---|---|---|---|
| 挂起任务更新不显示 | v1 bug → 挂起分支也调 note_suffix | ||
| 微信 [中] 变“中”(项目)丢失 | 半角[]是表情代码 → 全角【】 | ||
| gateway 内重启被拦截 | 从外部 shell 重启(SIGTERM 传播) | ||
| 用户报编号对不上 | 编号释放/复用 → 按任务名称匹配 |
9. 冷启动恢复步骤
1. 恢复 ~/docs/rd_tasks.json、rd_tasks_completed.json 与 ~/.hermes/scripts/ 全部脚本(rd_daily_review.py、rd_task_update.py、rd_history.py、rd_h5.py、rd_h5.html、rd_logo.jpg) 2. 复盘 cron:`研发任务日复盘` 工作日 09:00(0 9 * * 1-5),no_agent=true,script=rd_daily_review.py,deliver=origin 3. H5 服务:`sudo cp rd-h5.service /etc/systemd/system/ && sudo systemctl enable –now rd-h5`(用 ctwing-2 venv python 跑) 4. 防火墙放行 13544(腾讯云轻量 ap-beijing lhins-1dai07vu) 5. 测试:`python3 ~/.hermes/scripts/rd_daily_review.py` + `curl http://127.0.0.1:13544/api/tasks`
10. 常用命令
# 手动生成复盘 python3 ~/.hermes/scripts/rd_daily_review.py # 微信更新任务 python3 ~/.hermes/scripts/rd_task_update.py "N" "内容" # 更新 python3 ~/.hermes/scripts/rd_task_update.py "N" "完成" --done # 完成归档 python3 ~/.hermes/scripts/rd_task_update.py --add "[中](项目)内容" # 新增(自动最小空缺编号) # H5 重启 sudo systemctl restart rd-h5.service # 历史查询 python3 ~/.hermes/scripts/rd_history.py --month 2026-08 # 生成日报 curl http://127.0.0.1:13544/api/report/today
11. 注意事项
- 任务清单是唯一数据源,改 JSON 前先备份 - 删除任务需用户明确确认;删除/完成后不重排编号,空缺供新任务复用 - H5 与复盘共用 JSON:H5 里的修改(项目/优先级/负责人/进度/内容/子任务)全部同步到复盘推送 - raw 用户原文一字不改;只加编号/项目/进度展示层转换 - 只读链接 `/rd/?ro=1` 无任何编辑入口,适合外发
