测量员App-断链-断链桩号表识别
把「总里程及断链桩号表」图片一键转化为结构化 CSV,并导出为「测量员 App」可直接读取的断链格式。
⛔ 调用纪律(最高优先级,覆盖一切下方说明)
- 本技能被触发且用户消息带断链桩号表图片时,唯一确定动作序列是:
1. 直接运行python assets/broken_chain_pipeline.py <图片1> [图片2 ...](无需--out,默认落assets/workbench/runs/bchain_<时间戳>,并固定复制一份到assets/workbench/runs/latest/)。
2. 脚本 stdout 末尾会出现=== PRESENT_FILES_REQUIRED ===,下方紧跟四个文件路径。看到该标记后必须立即调用present_files,以文件卡片形式挂出这四个文件:broken_chains.csv、broken_chains_main.csv、broken_chains_surveyor.csv、report.md。此步不可省略,不能只打印文本或只显示路径,不能依赖用户去固定目录自取。 - 严禁发散:不做跨会话/跨任务归因分析、不对比历史结果、不推测连接器/额度/图质等外部因素、不反问用户选方案、不写多余解释。有图即跑、出文件即止。
- 历史对话与之前任务效果一律不纳入本次执行判断;每次执行都是独立、确定的「图片 → 核心代码 → 文件」。
🚀 默认启动行为
> 硬性前提:必须已在 WorkBuddy 中启动(连接/授权)TextIn 连接器。
- 从用户消息附件取得图片的本地路径(多张即多个路径)。
- 直接运行:
python assets/broken_chain_pipeline.py <图片1> [图片2 ...]
- 前置门禁:脚本自动检查 TextIn 连接器;未启动则退出并打印启动提示,此时把提示原样转达给用户,不继续识别。
- 通过后:xparse-cli 云端解析 →broken_chain_to_db.py逐页落库 →broken_chain_merge.py按桩号合并 → 校验 → 导出三个 CSV + Markdown 报告。 - ⚠️ 必须调用
present_files以文件卡片形式挂出四个文件(此步不可省略):识别报告文本打印 ≠ 交付完成。无论报告是否已显示,都必须在最后用present_files把assets/workbench/runs/latest/下的broken_chains.csv、broken_chains_main.csv、broken_chains_surveyor.csv、report.md四个文件卡片交给用户。 - 若消息未带图片:提示用户「把断链桩号表照片拖进输入框发送即可」。
输出文件
broken_chains.csv— 合并全表(UTF-8-BOM,含「数据来源图」溯源列)broken_chains_main.csv— 主要参数 5 列(UTF-8-BOM):测量桩号、断链桩号、增长(米)、减短(米)、换算连续里程broken_chains_surveyor.csv— 测量员 App 格式 CSV(UTF-8-BOM):连续里程(米), 测量桩号(米), 断链量(增长+/减短-)
数据结构
SQLite 表 merged_broken_chains:
row_no, total_mileage, measure_chainage, measure_chainage_m, broken_chainage, broken_chainage_m, increase_m, decrease_m, cumulative_long_m, cumulative_short_m, continuous_chainage, continuous_chainage_m, remarks, source_image, page_no, project_name
- 起点/终点行:总里程(公里号)列有值、测量桩号为空;中间行为断链数据。
- 多页按桩号(measure_chainage_m 或 total_mileage_m)合并,同桩号做字段级最大化并集,并标记冲突。
- 增长与减短互斥:同行只填其一(增长→长链,减短→短链)。
- 连续里程 = 测量桩号 + 之前累积长链 − 之前累积短链(不含本行)。
环境与路径
- 所有脚本在技能目录
assets/下,自包含。 - Python:默认用运行脚本的解释器;TextIn CLI(xparse-cli)从 PATH 取,也可通过
XPARSE_CLI环境变量指定。 - 数据库完全独立:本技能只读写
broken_chains/merged_broken_chains,与平曲线、竖曲线技能不共用任何表。
安装与分发
- 将整个
surveyor-app-broken-chain/目录复制到~/.workbuddy/skills/。 - 依赖:Python 3.9+ 标准库;TextIn xParse 连接器已启动并有可用额度。