cms-bp-monthly-report-reviser

Other

BP月报修订工具。用于初始化本地或远端 BP 自查月报、按章节边界生成精确修订、执行确认后的安全写入、修改灯色、追加证据、解释口径等,最终提交到工作协同形成新的汇报版本。

Install

openclaw skills install cms-bp-monthly-report-reviser

BP 月报修订器

本 skill 的唯一主流程是:在 bp/report-reviser/{reportMonth}-月报-{reportRecordId}/ 生成干净 Markdown,AI 只按章节规则提出修改方案,用户确认后由脚本精确写入。不要把 report_parts/ 作为最终拆分结果或前端正文来源。

核心边界

  • 月份目录是唯一正文来源:前端会读取所有非 JSON 文件,所以最终可见 Markdown 只能放在 bp/report-reviser/{reportMonth}-月报-{reportRecordId}/ 下。
  • 默认不写文件:用户只提出修改意图时,只输出修改方案;只有明确确认后才调用脚本写入。
  • 普通正文修订只用精确替换:使用 apply_chapter_patch,必须提供 targetFile + locator.originalText,禁止整章重写或模糊替换。
  • 专门动作不能混进正文 patch:灯色走 update_lamp_color;证据追加走 add_evidence_ref;普通正文替换不得直接改灯色、证据编号、汇报链接或系统事实。
  • 灯色修改只能由用户明确发起:不要主动问用户“要不要改灯色”“想改成什么灯色”。用户没有明确提出改灯色和目标灯色时,只能解释现状、说明边界或建议补充事实。
  • 改绿必须有明确证据:任何目标 / KR / 举措改成绿灯前,必须由用户上传或提供明确证据,并先通过 add_evidence_ref 或已有 R/RP/汇报链接进入正文可追溯范围;不能只凭口头判断改绿。
  • 改灯必须写入修改原因:调用 update_lamp_color 必须提供 --reason,脚本会把本次修改原因写入目标明细正文的“判断理由”或“结论一句话”中,例如 (修改原因:用户确认因 Rxxxx 证据证明已完成)
  • 灯色争议要留痕:如果 AI 判断补充证据与指标无关联、不建议改灯,但员工仍主张改灯,不要覆盖系统灯色;应走 update_manual_judgment 记录双方意见,例如 AI判断:...;员工主张:...;确认提醒:...
  • 第 2 章事实项硬锁定:目标编号/名称、KR 编号/名称/衡量标准、举措编号/名称、证据编号/链接、计划期系统判断不能直接改。
  • 第 6/7 章完全不可改;第 8 章只允许脚本追加证据。
  • ID 全程字符串:禁止对 reportId、taskId、huibao id 等做数值转换。

按需读取

不要启动时加载所有 reference。按任务读取:

场景必读文件
判断章节能否修改references/rules/editable-boundary-rules.md
修订某个具体章节references/rules/chapter-detail-rules.md
生成普通正文 patchreferences/rules/patch-rules.mdreferences/templates/chapter_patch_schema.json
写入失败或校验争议references/rules/validation-rules.md
初始化、灯色、证据、交付命令references/workflows.md
维护历史 report_parts 流程references/legacy-report-parts.md

主流程

1. 初始化

本地 Markdown 报告:

python3 scripts/monthly_report_reviser.py init_local_report \
  --report_id local_202603 \
  --content_file "/absolute/path/report.md"

远端 reportId:

export BP_OPEN_API_APP_KEY="{用户提供的密钥}"
python3 scripts/monthly_report_reviser.py prepare_revision_workspace --report_id {reportId}

初始化完成后,只向用户展示 bp/report-reviser/{reportMonth}-月报-{reportRecordId}/。如果出现 report_parts/,那是内部或 legacy 过程,不是最终拆分结果。

2. 定位和判断

根据用户意图定位 bp/report-reviser/{reportMonth}-月报-{reportRecordId}/ 下的 Markdown 文件:

  1. 章节编号/章节名精确匹配
  2. 目标编号/目标名称匹配
  3. 全文关键词搜索

然后读取相关章节规则,判断能否改:

  • 可普通修订:提出具体替换方案和目标文件。
  • 需要原因:先追问原因,并在修改内容中保留原因表达。
  • 禁止直接改:说明边界,并改用专门动作或人工判断。

3. 用户确认前只给方案

确认表达包括:确认写入可以,写进去就这样改帮我保存按这个改

确认前输出类似:

我会修改:
2_目标自查明细/2.2_目标明细/02_🟡 XXX.md

修改点:
1. ...
2. ...

请确认是否写入。

4. 确认后写入

普通正文修订:

python3 scripts/monthly_report_reviser.py apply_chapter_patch \
  --report_id {reportId} \
  --patch_file {patch_path}

灯色修改:

python3 scripts/monthly_report_reviser.py update_lamp_color \
  --report_id {reportId} \
  --code P4939-9.1 \
  --new_lamp yellow \
  --reason "用户确认后的灯色判断依据;涉及证据 Rxxxx"

追加证据:

python3 scripts/monthly_report_reviser.py add_evidence_ref \
  --report_id {reportId} \
  --evidence_file {evidence_json_path}

脚本成功后会刷新 report_manifest.jsonchapter_revision_manifest.json,并追加 revision_history.jsonl

灯色规则摘要

  • 普通正文 patch 必须拦截任何灯色 emoji、灯色文字、灯色样式变化。
  • 不主动追问用户要改成什么灯色;灯色修改必须由用户明确发起并给出目标灯色。
  • 改成绿灯必须有用户上传或提供的明确证据引用。
  • 每次改灯必须把修改原因写回正文判断理由。
  • KR 灯色不按举措灯机械聚合;必须根据衡量标准、当前结果、用户补充、下级举措实际完成情况和证据判断。
  • 举措灯色只更新对应举措,并提示上层 KR/目标可能需要重新评估。
  • 目标灯色按当前 KR 灯色聚合;合法变更后联动目标明细正文、2.1 总览和 1.2 灯色分布。目标文件名来自 Markdown 标题,不包含灯色。

证据规则摘要

  • 禁止手工编造 R/RP 编号或 huibao:// 链接。
  • 新增证据必须来自用户上传或提供的汇报 ID。
  • add_evidence_ref 只追加第 8 章证据索引;正文中引用新证据前,必须先完成证据追加。

交付

交付给用户或前端时,只交付 bp/report-reviser/{reportMonth}-月报-{reportRecordId}/

  • Markdown 是正文。
  • JSON 是索引/校验/历史。
  • 不读取、不展示、不依赖 report_parts/assembled_report.mdexport_report.mdpreview.md

更多命令细节见 references/workflows.md