周报月报生成器
把零散记录自动汇总成一份能直接交付的周报 / 月报。
何时使用
- 用户要写周报、月报、工作汇报、总结材料
- 用户手上有零散记录(聊天记录、Excel、备忘)想汇总
- 用户需要一个可以反复用的周报工具
执行步骤
步骤 1:判断交付形态
本技能交付单个 HTML 文件(不是脚本、不是文档):
| 用户诉求 | 做法 |
|---|---|
| 「给我个周报工具」 | 产出 HTML 文件,用 present_files 交付 |
| 「把这几条记录整理成周报」 | 按下方规则解析,输出 Markdown 报告 |
| 「生成月报」 | 同上,按月维度聚合 |
步骤 2:产出 HTML 文件
以 assets/周报月报生成器.html 为基准模板,复制后按需调整,不要从零重写。模板已内置全部功能。
可调整的维度:
SECTIONS对象:周报/月报的章节标题与顺序CAT_META:六个类别的名称与配色KW/scoreText():分类关键词表:root内的--bg--card--ink--brand等主题变量
保留的结构性约束(改动会破坏功能):
- 存储键
zbrpt_blocks_v1(记录)与zbrpt_prefs_v1(偏好)不可随意变更 buildReport()是生成入口,返回含byCat/entries/metrics/stats的报告对象renderReport()依赖buildReport()的返回结构parseBlock()是单条记录的解析入口- 移动端与 PC 端共用同一份 DOM,靠
@media断点切换布局,勿写死视口宽度
步骤 3:解析用户的记录
解析顺序固定为 日期 → 标签 → 分类,详细规则见 references/parsing-rules.md。
快速判断示例:
| 输入 | 日期 | 类别 | 标签 |
|---|---|---|---|
| 11月4日 已完成订单归档 | 11-04 | 完成 | — |
| 【项目甲】已完成首批交付 | — | 完成 | 项目甲 |
| 风险:排期没排上,影响交期 | — | 风险 | — |
| 下周一 要出成本测算 | 下周一 | 计划 | — |
| 供应商报价已经确认,走新合同 | — | 决策 | — |
| 和供应商沟通报价,还在等回复 | — | 进展 | — |
解析完成后向用户回显:各板块条目数 + 重点风险项,让用户立刻发现误解。
步骤 4:生成报告
章节顺序(周报):
- 工作分布(按项目/主题统计,横向条形图)
- 数据指标(表格原始数据 + 数值列的条数/合计/均值/最小/最大)
- 一、本周完成
- 二、进行中事项
- 三、关键决策
- 四、问题与风险
- 五、下周计划
- 六、其他记录
月报把标题换成「本月关键成果 / 重要进展 / 下阶段计划」等,其余结构相同。
步骤 5:交付
- HTML 文件用 present_files 交付,会在预览面板直接打开
- 文本报告同时给出 Markdown 版本(可直接贴进钉钉/企微/邮件)
- 提醒用户数据存在浏览器本地,清缓存会丢
输入输出
输入:用户的零散记录文本,或「做个周报工具」「把这些记录汇总一下」这类请求。
输出:
- HTML 文件:单文件、离线可用、双击即开、PC 与移动端自适应
- 结构化报告:六个板块的条目 + 表格指标统计
- Markdown 文本:可直接粘贴发送
修改与扩展
新增一个类别
- 在
CAT_META加一项(name/color/soft/hex) - 在
scoreText()的sc对象加同名字段,并在CAT_ORDER排好优先级 - 在
SECTIONS的两个 mode 里各加一个章节
调整关键词
改 scoreText()。规则:strong 命中 +4 分、weak 命中 +2 分,≥3 分算强信号。一条可同时命中多个类别,主类别得分最高,其余标为「兼属」。
验证改动
改动后必须做三件事:
node --check或new Function()校验脚本语法- 跑单元测试断言分类、日期、表格解析的正确性
- 用真实视口验证:headless Chrome 的
--window-size与 CSS 视口可能不一致,测移动端必须通过 CDP 的Emulation.setDeviceMetricsOverride真实模拟,否则会误判溢出。同时检查横向溢出与触控目标尺寸。
发布到 SkillHub
本技能已在 SkillHub 上架,标识如下:
| 项 | 值 |
|---|---|
| slug | report-auto-generator |
| 完整坐标 | @user_7084a5f1/report-auto-generator |
| 详情页 | https://skillhub.cn/skills/user_7084a5f1/report-auto-generator |
| skillId | 308211 |
迭代发布(slug 保持不变,只改 version 与内容):
export PATH="$HOME/.local/bin:$PATH"
cd ~/.workbuddy/skills
PYTHONIOENCODING=utf-8 skillhub publish ./report-auto-generator --changelog "本次变更说明"
发布前先跑自检:
PYTHONIOENCODING=utf-8 python scripts/verify_parsing.py
注意:
- Windows 下
skillhub publish必须带PYTHONIOENCODING=utf-8,否则中文 changelog 会乱码 - 先用
--dry-run预检,通过后再正式发布 slug一经提交不可更改,更新版本时不要动它(初版weekly-report-generator因已被他人占用,改为report-auto-generator)- 发布后安全扫描(keen / sanbu)处于排队状态,审核通过后才会公开展示和可安装
注意事项
- 不编造内容:报告条目必须来自用户给的原始记录,原始记录里没有的不写
- 不丢弃条目:识别不出类别的归入「其他记录」,而不是丢掉
- 数值一律实时计算:不写死任何统计数字
- 隐私:数据只存本地浏览器,不上传任何服务器,技能本身不读取用户隐私文件
- 脱敏:对外分发前必须移除公司名、客户名、地理与线路等业务专有词、真实单号、真实金额、本地绝对路径与用户名;示例数据一律用通用占位(项目甲 / 订单号 ORD… / 区域华东)
- slug 不可变:若要发布到 SkillHub,
slug一经提交不可更改,需谨慎命名