4.3 KiB
4.3 KiB
名单 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 check:PASS;node --run build:PASS。node --run test:control-plane:194/194 PASS。node --run test:legacy:290 项全部已验证通过(含本任务新增 3 项)。首次 287 通过;1 项发现 ZIP 多套一层目录,已修正为 manifest 位于 ZIP 根目录并通过完整 10 项 repository-hygiene 检查;另 2 项因沙箱禁止监听 127.0.0.1 失败,获本地测试权限后定向补跑 2/2 PASS。没有连接真实服务。node --run check:repo:10/10 PASS,验证副本/private/tmp/ltjt-roster-verify-uhqh_lyb使用当前 tracked 文件及本任务新文件,排除已有.idea/、Finder 文件及秘密,复用依赖。原工作目录的 IDE/Finder 文件保持不动,仍构成 2 项无关 hygiene 问题。- 新 ZIP 完整 entry set 和全部 20 个文件(包括 README)与源码逐字节一致;清单哈希、旧版归档原始哈希均通过。
git diff --check:PASS。 - 最终本地复核:实现仅调整 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 验收仍待部署方完成。本任务不更新共享索引或集成快照。