Files
LWLT-AIBOT/.project-docs/30-worklog/tasks/20260910-roster-trailing-empty-columns-01a0858b.md
2026-09-10 17:30:27 +08:00

4.3 KiB
Raw Blame History

名单 TSV 末尾空列修复

  • Task ID: 20260910-roster-trailing-empty-columns-01a0858b
  • Mode: Feature
  • Status: Complete (local implementation and validation)
  • Authorization: 用户明确要求修复原始 XLS 名单解析失败;仅本地实现与验证。

Concurrent Worktree Check

  • Branch: main
  • Worktree: /Users/andy/IdeaProjects/LWLT-AIBOT
  • Base commit: be7d765018a7c3e5cdfa4631d962327457cf33bd
  • Existing changes: 未跟踪 .idea/,保留且不涉及;忽略的 .DS_Store 同样保留。
  • Other local worktrees: 无。
  • Overlap result: Clear没有与名单校验相关的既有改动。

Scope and constraints

  • 修复 TSV 校验/转换时整体 trim() 删除末尾空字段分隔符的问题。
  • 相关执行端存在同源问题,范围包含服务端统一校验、插件派发和原生名单合并;按发布矩阵同步插件 0.5.173、平台最低版本、mapping、测试、版本化 ZIP 与清单。
  • 保持 13 列、行数、证件类型、序号及领队联系人的现有契约。
  • 使用合成数据补回归测试;用户原始 XLS 仅作本地只读复现,不纳入仓库或日志。
  • 不部署、重启、操作 ERP 或发送外部通知;不修改数据库或 canonical 项目记忆。

Findings

  • 原始 XLS 经现有转换器和 normalizer 得到 19 条完整的 13 列记录。
  • 最后一条备注为空,统一 operation 校验对整段 TSV 调用 trim() 后变为 12 列,复现生产错误。
  • 插件派发校验及原生名单合并也使用整体 trim();只修服务端会在后续插件阶段再次阻断。

Verification

  • 回归先行新测试在旧代码上复现解析、派发和合并异常8 项中 4 失败);实际 12/14 列仍需拒绝的测试也覆盖尾部分隔符不能被静默修正。
  • 修复后定向 8/8 通过覆盖两类名单、19 条记录、尾部一/两列为空、CRLF、覆盖确认、严格列数及领队匹配。
  • 用户原始 XLS → 生产 converter/normalizer → Program Parser → 插件 dispatch validator → 本地空白游客位 merge通过19 条记录,输出每行均为 13 列TSV 内容原样保留,原文件 SHA-256 未改变。合并使用本地模拟游客位,未接触真实 ERP。
  • node --run checkPASSnode --run buildPASS。
  • node --run test:control-plane194/194 PASS。
  • node --run test:legacy290 项全部已验证通过(含本任务新增 3 项)。首次 287 通过1 项发现 ZIP 多套一层目录,已修正为 manifest 位于 ZIP 根目录并通过完整 10 项 repository-hygiene 检查;另 2 项因沙箱禁止监听 127.0.0.1 失败,获本地测试权限后定向补跑 2/2 PASS。没有连接真实服务。
  • node --run check:repo10/10 PASS验证副本 /private/tmp/ltjt-roster-verify-uhqh_lyb 使用当前 tracked 文件及本任务新文件,排除已有 .idea/、Finder 文件及秘密,复用依赖。原工作目录的 IDE/Finder 文件保持不动,仍构成 2 项无关 hygiene 问题。
  • 新 ZIP 完整 entry set 和全部 20 个文件(包括 README与源码逐字节一致清单哈希、旧版归档原始哈希均通过。git diff --checkPASS。
  • 最终本地复核:实现仅调整 TSV 换行/边界空行处理,未放宽 13 列规则、领队来源、占用游客位覆盖授权或原生保存门禁;其余源码改动为发布版本同步。未使用子 Agent未声称独立 Agent 审核。

Outcome and follow-ups

  • 服务端统一校验和插件执行链路均已修复;插件为 0.5.173,旧版 0.5.172 原包与清单已移至日期归档。
  • 部署范围:重建并部署包含 LianSyn-platform/external-agent-client.mjs 与平台最低版本更新的服务镜像,同时加载新版插件并刷新平台/ERP 页面。数据库、Parser/normalizer 输入契约及原始表格不需要修改。
  • 部署、浏览器插件重载、真实 ERP 写入验收由用户后续执行;建议重新提交名单指令并重新上传原始 Excel不自动重放本次失败任务。

Promotion Candidates

  • Target: canonical current state / 名单实现约束。集成时可登记插件 0.5.173 及服务端、插件 TSV 保留末尾空列的修复事实;证据为本任务回归及原始 XLS 只读链路验证。不增加业务能力或修改输入契约,真实 ERP 验收仍待部署方完成。本任务不更新共享索引或集成快照。