版本: 1.0 | 更新: 2026-08-31 | 用途: 研发任务管理系统(含库房集成)的冷启动/重建/排障手册
⚠️ 功能保全铁律(用户定稿):本系统功能只增不减,改版前先读本文件,改完逐项验证,功能不允许丢失。
⚠️ 测试铁律:测试必须用独立数据/独立进程,严禁污染生产数据(rd_tasks.json/accounts.json/store.db)。
研发任务管理 + 研发库房管理 一体化系统(钉钉生态):
<code> 用户/钉钉 → https://rd.huiflytech.com (Caddy :443/:80 自动 HTTPS)
→ rd-h5.service (systemd, Flask :13544, 统一进程)
├─ /rd/* → 任务前端 + API(rd_h5.py + rd_h5.html)
├─ /store/* → 库房前端 + API(rd_store.py 蓝图 + rd_store.html)
└─ /api/* → 任务 API
<code>
| 文件 | 内容 | 说明 |
| —— | —— | —— |
| `rd_tasks.json` | 任务数据(items/updated_at) | 主数据;normalize 兼容字段 |
| `accounts.json` | 账户体系 | roles.admin(武燕青)/roles.user/perms(用户权限)/pwds |
| `people.json` | 人员库 | 简称→全名(钉钉通讯录);注意:无 roles 字段(admin 判定在 accounts.json) |
| `ding_org.json` | 钉钉通讯录全量 | MCP 同步缓存(17 人:姓名/userid/部门);/api/ding/org 优先读此文件 |
| `store.db` | 库房 SQLite | samples/requests/history 表(软删除 deleted 标记) |
| `.env` | 凭证 | DINGTALK_CLIENT_ID/SECRET(慧飞任务应用 dingh2ogz…)、DINGTALK_CORP_ID=4901944860、HALO_DB_PASSWORD 等 |
<code> [📋 任务] [📦 库房] [👤 我的] <code>
| API | 方法 | 说明 |
| —– | —— | —— |
| /api/tasks | GET | 任务列表(?user= 过滤:普通用户只看自己;admin 全量) |
| /api/tasks | POST | 新增任务(记录 creator) |
| /api/tasks/<tid> | POST | 更新任务(can_edit 校验) |
| /api/tasks/<tid> | DELETE | 删除任务(can_delete 校验) |
| /api/tasks/<tid>/note | POST | 添加更新记录(can_edit) |
| /api/tasks/<tid>/note/<idx> | DELETE | 删除记录(can_edit) |
| /api/tasks/<tid>/subtask/<idx>/note | POST | 子任务更新(can_edit) |
| /api/me | GET | 当前用户信息(role/perms) |
| /api/accounts | GET/POST | 账户列表(管理员)/配置权限(管理员) |
| /api/login_pwd | POST | 口令登录(备用) |
| /api/set_pwd | POST | 设置口令(管理员) |
| /api/people | GET/POST | 人员库 |
| /api/ding/login | POST | 免登 authCode→身份 |
| /api/ding/org | GET | 钉钉通讯录(读 ding_org.json) |
| /api/ding/oauth/url | GET | OAuth 授权 URL |
| /api/ding/oauth/cb | POST | OAuth 授权码→身份 |
| /api/upload | POST | 附件上传 |
| /api/report/today | GET | 今日日报 |
| /api/store/* | * | 库房 API(samples/requests/approve/destroy/back/back_apply/ledger/history/…) |
<code> sudo systemctl restart rd-h5.service # 重启 sudo journalctl -u rd-h5.service -n 50 # 日志 sudo systemctl reload caddy # Caddy 重载 sudo vi /etc/caddy/Caddyfile # 域名配置(rd.huiflytech.com → 13544) git -C /home/ubuntu add -A && git -C /home/ubuntu commit -m “…” # 版本管理 <code>
| 现象 | 原因 | 解决 |
| —— | —— | —— |
| 钉钉打开不自动登录 | 应用类型/权限 | JSAPI 免登需钉钉 JSAPI 安全域名;应用需在钉钉后台配置 |
| 免登报“不合法的appKey” | 凭证错 | .env CLIENT_ID(ding 开头)+ SECRET 匹配 |
| 通讯录同步空 | 应用未开通通讯录权限 | 钉钉后台开通 qyapi_get_department_list/member;或 MCP 同步 ding_org.json |
| 管理员变“只读” | applyPerm 用 people.json roles(空) | isAdmin 已改账户体系判定(名字=武燕青) |
| 普通用户看到全部任务 | view_own_only 未生效 | accounts.json perms;后端 is_mine 过滤 |
| 任务匹配不上 | owner 简称 vs 全名 | name_variants 变体匹配 |
| 库房 tabbar 跑中间 | nav 标签选择器覆盖 | tabbar 用 div 类(不用 nav) |
| 库房内容空白 | 登录校验覆盖 body | 已改提示条(不覆盖) |
| 页面旧版 | 浏览器缓存 | 强刷 / 加 ?v= 参数;服务端 no-store |