监理日志自动生成器(双模式 · 可分享版)
本技能把"承包商资料 → 规范监理日志"的全链路做成可复用、可配置的工具,输出为 8.1 母版(SH/T 3903-A.14 石化/建设工程监理日志表式)的 Word 文档。
何时使用
- 需要补写 / 批量生成建设工程监理日志。
- 两种情况:
- 模式一(批量):手头有承包商施工数据 Excel(含「施工内容」「日期」两列)或一摞资料文件,要按天生成。
- 模式二(碎片汇总):白天监理工作很零碎,想把随时记的内容自动汇总成一份完整日志(支持手机端经腾讯文档桥接)。
- 天气按项目城市 + 日期联网查询(Open-Meteo,免费无需密钥)。
两种模式(按便捷度)
模式一:Excel / 文件夹批量生成
- 命令行
--auto:把资料丢进文件夹,自动探测 Excel+模板、识别年份,一键生成。 - 本地网页(推荐非技术用户):双击桌面「监理日志生成器」图标 → 浏览器打开网页 → 上传 Excel + 8.1.docx → 填城市/工程名 → 点生成 → 下载 zip。
- 对话触发:说"补写监理日志",本技能被调用。
模式二:碎片汇总(含手机端腾讯文档桥接)
- 白天:在电脑端对话说"导入监理碎片:9:00 巡查3号罐区钢筋绑扎"(写入本地收件本);或手机端在腾讯文档《监理碎片收集》里逐行追加。
- 下班:每天 18:00–23:00 任一整点(电脑开机即自动补跑,不必 18:00 那刻在线)汇总;或随时说"整理今日日志"立即生成。
- 手机直发原理:手机写腾讯文档 → 电脑 18:00 自动化读云端文档 → 同步到本地收件本 → 整理生成 D 盘 docx(绕开"手机对话进不了电脑本地文件"的限制)。
文件结构(本技能自带,可独立运行)
supervision-log-generator/
main.py # 模式一 CLI 入口(--auto 自动探测 / --dry 预览 / --year 覆盖年份 / --dir / --city)
webapp.py # 零依赖本地网页:上传 Excel+模板,生成 zip 下载(HTTP 标准库实现)
extractor.py # 提取:Excel两列 -> 按日期分组(支持 .xls 与 .xlsx,含纯数字日期兜底)
weather.py # 历史/今日天气查询(Open-Meteo archive+forecast),内置 40+ 城市经纬度
knowledge.py # 施工内容 -> 监理工作文本映射(巡视/旁站/见证取样/隐蔽验收/检验批等)
generator.py # 按 8.1 母版 fill_day() 生成 docx(合并单元格按真实 <w:tc> 去重定位)
daily.py # 模式二:收件本读写 + 腾讯文档同步 + should_summarize 补跑判断 + 8.1 生成
config.yaml # 模式一配置:工程名/编号/记录人/城市/输出路径
daily_config.yaml# 模式二配置:工程名/编号/记录人/城市/腾讯文档 file_id
requirements.txt # python-docx, openpyxl, xlrd==1.2.0(读.xls), pyyaml
监理日志生成器.bat # Windows 一键:前台启动 webapp(窗口常驻)+ 自动打开浏览器
工作流程(agent 执行步骤)
准备运行环境(仅首次)
# 优先使用 WorkBuddy 管理的 Python venv;找不到则回退系统 python3(跨用户可移植)
VENV_PY="$(ls "$HOME/.workbuddy/binaries/python/envs/default/Scripts/python.exe" 2>/dev/null || command -v python3 || command -v python)"
"$VENV_PY" -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
python-docx openpyxl xlrd==1.2.0 pyyaml
模式一:运行(任选其一)
# A. 命令行自动探测(换项目最快)
"$VENV_PY" main.py --auto --dir "D:/某项目/资料目录" --city 天津滨海新区
# 年份填错时覆盖: --year 2026 仅预览提取: "$VENV_PY" main.py --dry
# B. 网页/桌面一键:双击桌面「监理日志生成器」图标 → http://127.0.0.1:8765
- 输出:
监理日志_YYYY-MM-DD.docx(命令行模式落 output.folder;网页模式在 zip 内)。 - 用
present_files展示代表样例。
模式二:碎片汇总
# 1) 白天收集(电脑端对话,且需在 supervision-log-generator 工作目录运行)
"$VENV_PY" -c "import daily,datetime; daily.append_inbox(daily.load_config(), datetime.date.today(), '9:00 巡查3号罐区钢筋绑扎,监理见证取样一组')"
# 2) 汇总前先同步腾讯文档碎片(去重写入收件本)
"$VENV_PY" -c "import daily,datetime; daily.sync_tencent_doc_to_inbox(daily.load_config(), datetime.date.today())"
# 3) 整理四段 + 生成(out_dir 指向 D 盘监理日志目录)
"$VENV_PY" -c "import daily,datetime; daily.generate(date, structured, daily.load_config(), out_dir='D:/某项目/资料目录/监理日志')"
- 自动化已配置:每天 18:00–23:00 整点检查(
rrule FREQ=DAILY;BYHOUR=18,19,20,21,22,23;BYMINUTE=0),should_summarize()判断「收件本非空 且 ≥18:00」才生成,晚于 18:00 开电脑也能补跑。
配置项(两类都改这里)
| 字段 | 含义 | 备注 |
|---|---|---|
project.name |
工程名称 | 填入 8.1 母版工程名栏 |
project.no_prefix |
日志编号前缀 | 如 JLRZ |
project.recorder |
记录人 | 如 边轶猛 |
project.reviewer |
审查人 | 留空则不填 |
weather.city |
项目所在城市 | 在内置表则自动取经纬度 |
weather.lat/lon |
经纬度 | 城市不在内置表时手动填 |
tencent_doc.file_id |
《监理碎片收集》腾讯文档 ID | 模式二桥接用,需先连接腾讯文档 connector |
> 内置城市表含:北京/上海/广州/深圳/成都/杭州/武汉/西安/南京/重庆/天津/天津滨海新区/苏州/郑州/长沙/沈阳/青岛/大连/厦门/昆明/济南/福州/合肥/南昌/哈尔滨/石家庄/太原/长春/南宁/贵阳/兰州/乌鲁木齐/呼和浩特/银川/西宁/海口/拉萨/榆林市 等。缺失城市在 weather.py 的 CITIES 加一笔即可。
如何分享 / 分发本技能
本技能是自包含的(脚本 + 配置全在目录内),三种分发方式:
1. 本机复用:已在 ~/.workbuddy/skills/supervision-log-generator,WorkBuddy 自动加载,对话说触发词即用。
2. 发给同事(本地放置):把整个技能目录打包成 zip,对方解压到自己的 ~/.workbuddy/skills/supervision-log-generator/ 即生效;对方只需改 config.yaml/daily_config.yaml 里的工程名、城市、记录人,并(模式二)连接自己的腾讯文档 connector、新建收集文档填 file_id。
3. 发布到 WorkBuddy 技能市场:需走平台的技能提交/审核流程(非本地直接发布);提交前建议把配置里的绝对路径改为相对路径或占位说明,使他人开箱即用。
关键注意事项
- 年份:Excel 日期列年份默认直接采用;若实为 2026 仅 Excel 填错,用
--year 2026。 - 合并单元格坑:定位填写必须用「按真实
<w:tc>去重」(generator._distinct),勿退回cells[idx]写法。 - 天气来源:Open-Meteo 免费无需密钥;坚持中国天气网原始口径需单独接页面解析(未内置)。
- 碎片通道限制:手机"对话"零发进不了电脑本地文件;正确做法是手机在腾讯文档《监理碎片收集》里写,电脑端自动化读。
- 已生成 docx 不自动更新:改配置或追加碎片后需重新生成("整理今日日志"或等下一个 18:00)。
- 网页中文文件名:Content-Disposition 必须用 RFC 5987
filename*=UTF-8''编码,否则http.server报错(已处理)。
校准建议
若用户给真实文件名样例(如 2026-06-15 三层柱钢筋隐蔽验收记录.doc),按需增强 extractor.py 正则与 knowledge.py 映射关键词,使提取/监理内容更贴合其命名习惯。