大交通检索修复
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# 团队安排记录与回执汇总
|
||||
|
||||
## Scope / 用户决定
|
||||
|
||||
- 当前账号 + 完整团号隔离汇总导游、用车、酒店、大交通、其他/备案五类安排。
|
||||
- 仅使用本系统成功执行记录,不查询或同步 ERP 外部修改;结果不确定不计作成功。
|
||||
- 保存安排明细及变更历史,回执展示已安排/未安排;多条安排的已安排表示至少一条有效记录。
|
||||
- 强制删除任务和归档均保留独立安排明细与历史;原任务删除后仍可保留来源编号和成功快照。
|
||||
- 本次实现服务端记录与回执汇总,详情展示入口后续扩展;不执行 ERP 写入、部署或重启。
|
||||
|
||||
## Worktree gate
|
||||
|
||||
- Mode: Feature
|
||||
- Branch: main
|
||||
- Worktree: /Users/andy/IdeaProjects/LWLT-AIBOT
|
||||
- Base commit: 364ef4ae304630f2fa028db52170a9cb38a3fbd3
|
||||
- Existing changes: untracked .idea/、dist/ltjt-order-assistant-0.5.185.zip,均保留且不触碰。
|
||||
- Other worktrees: 无。
|
||||
- Overlap result: Clear,既有改动与服务端记录/回执范围不重叠。
|
||||
- 单线程工作,无子 Agent。
|
||||
|
||||
## Plan / Progress
|
||||
|
||||
- 已完成。迁移 `025_arrangement_ledger` 新增按组织/不可变任务账号隔离的初始化记录与成功事件明细,源任务/执行编号不设置 task 外键;任务物理删除保留明细与成功快照,标注来源任务已删除。
|
||||
- 明细使用现有字段密钥加密,保存实际选中资源、已验证日期/项目/数量/备注、原始安排字段和成功依据;团号规范化后完整匹配,保留后缀差异。数据库复合外键限制组织归属,并禁止管理员作为明细 owner。
|
||||
- `recordExecutionResult` 通过原执行权、终态、回执验证后,在原事务内写入事件并冻结五类安排汇总。每个执行编号最多记录一次,结果不确定、失败或解析成功不计入;只读核验最终成功按原执行开始时间排序,避免迟到旧结果覆盖后续安排。
|
||||
- 酒店/用车/大交通/其他按已验证 ERP 行编号追踪,清除只影响对应行;导游按真实单例处理。窄变更保留未提供的旧详情,已验证空值仍能覆盖,历史快照不变。
|
||||
- 本账号首次成功入账或首次强制删除前,分页补入仍保留的历史成功安排(包含归档任务);不读取 ERP,不补入其他账号、失败或无成功依据的记录,不改写旧回执。已物理删除的历史任务无源数据,无法恢复;无 ERP 行编号的旧证据保留独立执行记录,不猜测其与其他行的关联。
|
||||
- 平台与 AgentBus 复用现有成功消息,追加“本系统安排情况(当前账号)”;同一类型至少一条有效记录即已安排,不表示行程覆盖齐全。回执读取重建保持生成时汇总且不重复追加。
|
||||
- 更新强制删除确认说明,明确安排明细、历史和成功凭据保留。详情页面/新查询入口未在本次扩展,数据已独立持久化,可供后续实现。
|
||||
- Chrome 插件、输入模板、Skill 和发布包均未修改;无需新插件版本。
|
||||
|
||||
## Validation / Result
|
||||
|
||||
- `node --run check`、`node --run build`、`git diff --check` 通过。
|
||||
- 控制面测试 266/266(新增 13 项安排记录测试);最终相关回归 21/21(包含 PG Date 毫秒精度、窄修改字段保留)。
|
||||
- 原工作区 `check:repo` 的 2 项失败来自既有 `.idea/`、`.DS_Store` 和旧证据 `.log`;这些文件保持原样。原 sandbox 的 legacy 另外 2 项 HTTP 测试因 localhost listen EPERM 失败。
|
||||
- 在只含当前 tracked 源码、新增文件和 release manifest 交付物的临时副本中复验:`check:repo` 10/10,允许临时 localhost 监听的 `test:legacy` 411/411;未修改检查规则、未清理未知用户文件。
|
||||
- 使用独立临时 PostgreSQL 16 数据库和随机 schema 执行现有 24 个迁移文件(编号 019 退役,最新 025),通过真实结果落库/平台和 AgentBus 消息、账号/组织隔离、重复结果去重、旧回执冻结、删除保留、按行清除、事务回滚、首次删除前归档历史补入以及管理员/跨组织 owner 约束验证。
|
||||
- 可复用验证入口:`tools/arrangement-ledger-postgres-smoke.mjs`,要求显式 `LTJT_ARRANGEMENT_TEST_DATABASE_URL` 指向 localhost 的 `ledger_test`,不读取 `.env`。测试 schema 和本次临时容器均已清理。
|
||||
- 证据:[验证记录](../../../archive/evidence/2026-09-16/arrangement-ledger-01a0858b/README.md)(仓库实际路径为 `archive/evidence/2026-09-16/arrangement-ledger-01a0858b/`)。
|
||||
- 未部署、未重启本地/生产服务、未运行项目数据库迁移、未触发 ERP 写入或外部发送。上线需先完成 025 迁移;当前 `npm run dev`/`npm start` 已含迁移与 schema readiness 门禁。
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- `40-domain/business-rules.md` / `20-architecture/data-flow.md`:新增当前账号完整团号范围内的成功安排事件记录与五类回执汇总,明细加密独立存储。
|
||||
- AUTH-002 / `00-brief/success-criteria.md` / `20-architecture/system-overview.md`:强制删除仍删除任务所属运行记录,新增明确例外为用户授权保留的独立安排明细、历史与成功凭据;不可再笼统描述所有业务内容全部消失。用户已在本会话明确同意此例外。
|
||||
- `30-worklog/current-state.md`:新 schema readiness 为 025,历史成功按账号延迟补入,旧回执不回写;插件仍为 0.5.185。本 Feature 未改 canonical 快照。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 大交通车票说明匹配与候选提示
|
||||
|
||||
## Scope / 用户意图
|
||||
|
||||
- 修复车票说明在车次后紧接时刻时,空格归一化把 `C91 12:52` 连为 `C9112:52` 而误判零候选的问题。
|
||||
- 供应商和车票说明共同匹配同一候选;唯一时继续,多条时停止并展示有限候选,帮助用户补充车次或时刻。
|
||||
- 不改变省略车票说明时既有的首条候选规则,不扩大到自动选任意车次,不执行真实 ERP 写入、重试任务、重启或部署。
|
||||
- 前一任务的安排记录功能已完成,本次保留其未提交代码与验证记录。
|
||||
|
||||
## Worktree gate
|
||||
|
||||
- Mode: Feature;单线程,无子 Agent。
|
||||
- Branch: main
|
||||
- Worktree: /Users/andy/IdeaProjects/LWLT-AIBOT
|
||||
- Base commit: 364ef4ae304630f2fa028db52170a9cb38a3fbd3
|
||||
- Existing changes: 前一已完成任务 `20260916-arrangement-ledger-01a0858b` 的控制面、测试、平台删除提示、任务/证据记录;既有 `.idea/` 与清单所引用的 `dist/ltjt-order-assistant-0.5.185.zip`。全部已知,保留既有内容。
|
||||
- Other worktrees: 无。
|
||||
- Overlap result: Clear。插件与相关测试无既有改动;平台仅递增最低插件版本,避开前一任务的删除提示。
|
||||
|
||||
## Plan
|
||||
|
||||
1. 为说明匹配保留原字符数字边界,同时兼容空格、括号、大小写和全角输入;新增/变更共用同一规则。
|
||||
2. 零候选给出明确资源检索提示;多候选只展示有限供应商/说明,保留原生唯一性与写入前阻断。
|
||||
3. 补充业务回归(路线、车次、时刻、不同供应商、C91/C911、车辆数字边界、重复候选和旧省略行为)。
|
||||
4. 同步扩展版本、平台最低版本、mapping、测试及发布 ZIP/清单;执行仓库要求的验证,逐文件核对发布包。
|
||||
|
||||
## Progress / Validation
|
||||
|
||||
- 修复前已使用当前函数复现:`拉邦-万荣 C91` 为零候选,带完整时刻为一条;仅路线在多车次数据下保持多候选阻断。
|
||||
- 已完成:说明检索继续忽略空格、括号、大小写及全角差异,数字边界通过归一化字符到原标签位置的映射检查;车次后的空格/括号与时间分隔保持有效,连续更长数字仍拒绝匹配。共用的用车类型筛选也完成数字边界回归。
|
||||
- 大交通新增与变更在供应商和说明的同一条候选上筛选。仅路线且唯一允许;仅路线/车次且多条,或不同供应商/不同目的地不满足条件时均不选择、不修改表单;填写说明不会退回首条,未填说明的旧行为保留。
|
||||
- 路由失败区分零匹配、候选未加载和多匹配。多匹配仅返回最多 5 条已匹配的供应商/说明,每字段最多 120 字符并移除控制字符,不返回内部 ID、整行原始元组或价格列。仅失败歧义才添加该候选证据,已有成功回执与安排记录未改变。
|
||||
- 扩展 `0.5.186`、MAIN-world 版本、平台最低版本、mapping 与固定版本测试同步;旧 `0.5.185` 包和清单按原字节归档,新 ZIP 的 20 个文件逐字节匹配源文件。Skill、输入模板和 DOCX 契约未修改。
|
||||
- 定向回归 31/31(本次新增 6 项覆盖新增/变更、时刻邻接、全角/括号/空白、C91/C911、不同供应商/目的地、路线唯一/歧义、重复候选、诊断边界和既有原生联动);控制面 266/266;类型检查与构建通过;`git diff --check` 通过。
|
||||
- 初次完整回归中遗漏的旧版本正则断言已同步修正。原工作区整洁检查仍有 2 项既有 `.idea/`、`.DS_Store`、旧证据日志失败;普通 sandbox 下两项临时 HTTP 服务器监听被 EPERM 阻断。未删除/移动这些用户工作区文件,未修改检查规则。
|
||||
- 在当前源码、任务文件和清单交付物的临时干净副本中,以允许 localhost 测试监听的环境完成 `test:legacy` 417/417、`check:repo` 10/10。副本不含 `.env`,测试未连接真实 ERP。临时日志只保留在系统临时目录。
|
||||
- 完成单线程最终只读差异审查;未创建子 Agent。保留前一任务的所有控制面实现和平台删除提示。
|
||||
- 验证证据:[本地验证记录](../../../archive/evidence/2026-09-16/transport-description-match-01a0858b/README.md)(仓库路径 `archive/evidence/2026-09-16/transport-description-match-01a0858b/`)。
|
||||
- 未提交/推送、未部署/重启、未重载实际插件、未自动重试任务、未访问或写入真实 ERP。本修复无需新数据库迁移;使用新功能需同步更新插件和平台静态资源并刷新已有页面。
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- 将车票说明数字边界修复与有限候选提示纳入下次 canonical 集成快照,标明合成验证与真实 ERP 待验收的边界。现有输入契约(说明选填,提供后供应商 AND 说明唯一匹配)保持。
|
||||
- 后续截图诊断必须逐条核对目的地,不能将“万象”与“万荣”视为同一线路;是否输入充分要以当前 matcher 与实际候选共同验证,避免把实现缺陷解释成用户信息不够。
|
||||
Reference in New Issue
Block a user