现场服务每日进度更新包
现场服务团队每天收工后都要写两样东西:一份给自己看的日报,和一份发给客户的进度说明。现实是——这两样东西通常是同一条微信改两遍:给客户的版本里混着材料涨价、工人请假、昨天的返工;给内部的版本又漏了客户已经问过三次的问题。更麻烦的是「计划里写了但今天根本没做」的活,很容易被顺手写成「已完成」。
本技能把这件事拆开:读一份 JSON,输出同源但面向不同读者的两份材料——内部日报(含阻塞、工时偏差、记录缺陷、发送前检查表)和客户进度稿(只描述记录到的事实)。脚本不读图片内容、不访问任何路径或 URL、不发消息、不做质量或安全结论、不承诺工期。
输入与澄清
字段表、状态映射、照片与路径规则见 @references/guide.md(同目录 references/sample.json 是可复现样例,输出分布固定)。
最少确认:as_of(必须带时区偏移)、work_date、plan[]、progress[]。
必须问清的关键点:
- 计划里写了、当天没记录的,不会算完成。这类任务进「无记录待确认」,并生成一条要现场负责人回答的问题。这是本工具最主要的价值点。
- 照片只写文件名,不要写路径或链接。含
/、\、..、https:的引用会被拒绝且不解析(既是防目录穿越,也是防「读取任意文件」),并让整体状态变成BLOCKED。 - 同名照片请重命名。
IMG_2204.jpg出现两次,在默认文件系统上会互相覆盖,客户最后看到的可能是错的那张。工具会标出来,但不会替你改名。 - 记录与项目时区不同步是常见错误。跨时区团队尤其注意:
work_date与as_of在项目时区下的本地日期不一致时会被标出。 - 照片说明不能省。没有说明的照片对客户没有信息量,工具会列入
caption_missing。 - 不要把登录凭据填进来。出现密码、令牌一类字段会被整体拒绝且不回显。
- 不要指望工具替你判断「实际完成了没有」。它只反映你提交的记录;现场是否真的完成,要现场负责人确认。
执行
- 按 @references/guide.md 的字段表整理输入 JSON。第一次使用建议先用 @references/sample.json 跑一遍。
- 用 Python 3.9+ 执行本包脚本(无第三方依赖、不联网):
python3 "<skill-directory>/scripts/run.py" "<input.json>",Windows 可用py -3。 - 先看顶层
status:REJECTED(疑似凭据,已拒绝且未回显);BLOCKED(状态冲突或非法照片引用);INPUT_INCOMPLETE(缺as_of或计划 / 记录);GAPS_FOUND(可用但有缺口)。 - 看
sections.unverifiable:这些一律不能写进客户稿的已完成部分。 - 看
conflicts、unplanned_records、record_gaps。 - 看
blockers与material_gaps:材料缺口要提前告诉客户。 - 看
plan_deviation:偏差大不等于出错,但要能解释。 - 看
photo_issues:同名、缺说明、未被引用三类分别处理。 - 按
human_send_checklist逐项打勾,再取customer_progress_draft发给客户(发送动作由人工执行)。 - 看
clarification_questions,按Q-01顺序去问。
运行约束
- 只读:只读取用户提供的那一个 JSON;不打开链接、不访问路径、不读取图片内容、不写文件。
- 不外发:不向客户或班组发送任何消息;本工具只产出草稿。
- 不结论:不做工程质量、安全验收、工期或责任判断;不计算报价。
- 不猜测:工时、状态、预计解除时间缺失一律保持未知并生成追问,不按 0 计算。
- 确定性:排序全部显式固定(分栏顺序、任务输入顺序、分组键、字段名、问题编号),同一输入输出逐字节一致。
- 记录与任务可对账:计划外记录、重复记录、状态冲突、记录级缺陷(空记录、非法工时、时区偏移不一致)全部分别列出,不静默修复。
- 照片为纯索引:只按文件名与说明列索引,不识别图片内容,也不验证照片是否拍到了所述事项。
- 路径与 URL 拒绝:照片引用与文件名一律按裸文件名处理;含
/、\、..、scheme:的引用被拒绝且不解析。 - 提示注入逐字段检测、位置精确、低误报:覆盖
progress[].note等自由文本叶子,命中时只加标记并在injection_flagged中给出精确路径(如progress[2]/note)。检测要求「动作词 + 目标词」同句共现,正常施工备注不会被误标。 - 不可信文本先转义再入简报,命中即隐藏:两份 Markdown 产物中所有自由文本走同一转义处理(去控制字符、折叠空白、对 Markdown 元字符加反斜杠);命中注入的值改用固定占位「已隐藏疑似提示注入文本」。不做 NFKC,避免把中文全角标点改写成半角。
- 隐私门禁:字段名命中
password、token、api_key一类凭据名,或字符串值具备真实凭据形态,直接拒绝处理且不回显该内容。 - 免责:输出是进度整理材料,不是现场验收结论;实际完成情况以现场负责人确认与验收记录为准。