Files
LWLT-AIBOT/.project-docs/30-worklog/tasks/20260916-roster-optional-phone-01a0858b.md
T
2026-09-16 17:11:16 +08:00

3.3 KiB
Raw Blame History

名单附件兼容缺少电话列

范围与授权

  • 用户授权:兼容修复已提供的 XLSX 名单因缺少“电话”表头而被拒绝的问题。
  • 仅修改名单附件标准化和相关测试、当前业务契约;缺少电话列时输出空电话,已有电话列的内容继续保留。
  • 不修改原始客户附件,不将真实旅客资料保存为测试夹具,不执行 ERP 写入、部署或重启。

Worktree 检查

  • Branch: main
  • Worktree: /Users/andy/IdeaProjects/LWLT-AIBOT
  • Base commit: 8a0f02c9be4141feb9aecfdeb0051ea6c0748bf3
  • Existing changes: 未跟踪 .idea/,与本任务无关,保留原样。
  • Other worktrees: 无。
  • Overlap: Clear。使用当前工作区;Feature 模式只写本任务的项目记忆记录。

已知证据

  • 原附件 11269 字节,SHA-256 a109854555d0cc9343fa7e416cf469418cde6748c4baf4fb3bd6627a89a4de3c,与用户生产日志一致。
  • 当前 v1.6.0 复现 roster_workbook_header_not_found;第 2 行缺少电话表头。
  • 仅在内存增加空电话列后,原附件 8 行通过标准化。未改动原文件。

结果与验证

  • 已完成:名单标准化器升级为 ltjt-passenger-roster-workbook-v1.7.0。电话表头改为可选;缺列输出空电话,存在时照常读取、检查重复表头及非法值。其他 11 个业务字段仍必需,输出仍为 canonical 13 列。
  • 不从无表头的数字推断电话;原表无表头的数字不导入。明确标记为“领队”的记录仍受姓名和电话必填规则约束。
  • 增加缺列、删列、重排列名、合并备注、XLS 转换路径及旧电话校验回归。真实原附件只在内存读取:8 行、8 个空电话,Program Parser 返回 agent_parse_passed,原始 SHA-256 未变。
  • 同步名单输入契约、生命周期 mapping、业务入口和操作说明。输入契约及 DOCX 为 0.5.135;五个 Skill 统一发布为 0.5.128,旧发布物按原哈希归档。插件保持 0.5.186,没有数据库迁移。
  • 验证:定向名单测试 35/35;check:repo 10/10;check 通过;test:control-plane 271/271;test:legacy 417/417;build 通过;git diff --check 通过。
  • 五个 Skill 官方校验和 ZIP/源码逐文件比较通过;当前发布清单、源文件哈希及旧发布物哈希通过。DOCX 渲染后逐页检查全部 16 页,中文正常、无裁切;第 5 页为新名单说明。
  • 完整仓库检查在临时干净源码快照运行,保留工作区既有 .idea/、.DS_Store 和旧忽略日志,不删除或收编。快照中的 2742 个源/文档/发布文件与工作区逐文件哈希一致。首次卫生检查仅因本次 DOCX 预览目录尚未清理失败;清理本次预览目录后 check:repo 和 test:legacy 全部通过。
  • 主线程最终只读复核:PASS;未启用多 Agent。无真实 ERP 写入、部署、服务重启、提交或推送。生效需用户更新并重启服务端。
  • 脱敏验证结论:证据说明。

Promotion Candidates

  • 后续 Integration 可将“名单原文件电话列可选;缺列留空;领队电话仍必填;不推断无表头数字”同步到 canonical 项目记忆。本次 Feature 未修改 canonical 项目记忆。