大交通检索修复

This commit is contained in:
andy committed 2026-09-16 11:50:50 +08:00
1 parent 364ef4ae30
commit 8a0f02c9be
29 files changed
+1175 -33

No files matched your search

@@ -0,0 +1,12 @@
# 团队安排记录与回执汇总验证
本目录为 2026-09-16 的不可变验证证据,不作为当前业务规则;当前实现以源码、迁移和任务记录为准。未保存真实客户数据、配置、连接密钥或业务附件。
- 源任务:`.project-docs/30-worklog/tasks/20260916-arrangement-ledger-01a0858b.md`。
- 范围:按当前账号和完整团号记录成功安排明细,冻结回执五类状态;归档/强制删除保留明细及成功凭据。
- TypeScript check/build 与 diff whitespace 检查通过;控制面 266/266,最终聚焦回归 21/21。
- 干净源码副本:仓库检查 10/10,legacy 411/411。原目录既有 IDE/OS 元数据和历史日志会触发整洁检查;原 sandbox 不允许 HTTP 测试临时 localhost listen。副本保留所有受版本管理源码、任务新增文件以及 release manifest 的交付物,不读/复制 `.env`,原文件不变。
- PostgreSQL 16 独立临时数据库:从 001 至 025 的全部现有迁移文件通过(019 已退役,共 24 个)。真实事务验证:成功落库与平台/AgentBus 回执、重复去重、组织及账号隔离、回执快照冻结、删除任务不级联删除业务明细、按行清除、失败完整回滚、首次删除前历史补入、管理员与跨组织 owner 拒绝。
- 临时 schema 与容器均清理;未对本地项目数据库、生产数据库或 ERP 执行操作,未部署/重启服务。
- `tools/arrangement-ledger-postgres-smoke.mjs` 提供可复用显式本地临时数据库验证。
- `verification.json` 保存结果和本次相关源码哈希;不包含运行日志。
@@ -0,0 +1,54 @@
{
"date": "2026-09-16",
"base_commit": "364ef4ae304630f2fa028db52170a9cb38a3fbd3",
"check": "PASS",
"build": "PASS",
"control_plane": {
"passed": 266,
"failed": 0
},
"focused_final": {
"passed": 21,
"failed": 0
},
"clean_snapshot": {
"repository": {
"passed": 10,
"failed": 0
},
"legacy": {
"passed": 411,
"failed": 0
}
},
"postgres_smoke": {
"ok": true,
"migrations": 24,
"verified": [
"real migrations",
"result ingestion and public/AgentBus receipts",
"deduplication",
"account/org isolation",
"frozen receipts",
"force-delete retention",
"row-specific clear",
"transaction rollback",
"archived historical backfill before delete",
"admin and cross-org ownership constraints"
]
},
"erp_write": false,
"deployment": false,
"project_db_migration": false,
"source_sha256": {
"control-plane/migrations/025_arrangement_ledger.sql": "df493ca783113a4eb225657ef47f01eefd915b540b47e5f99f30140549125d51",
"control-plane/src/arrangement-ledger.ts": "75cd61d1e0fdfe418133f70ac2bd7498f3a396001cceb87e5db8ace3d544ca70",
"control-plane/src/task-service.ts": "81a42f623ff670f654b83d2953f066156ec937481dd744b98e5e9c0e9a167f98",
"control-plane/src/reply-contract.ts": "c744551327a2cb423cb9824ce2cd9014d2e00b503fd0bc969a38ad27bbe3d63a",
"control-plane/src/db.ts": "dd60baa03c450d28b554c3cdf1548d1d0a80bac18c32b92b2e1024ac692c637a",
"control-plane/test/arrangement-ledger.test.ts": "b083fd277f10a48723183d5c202b056b695b91127cfc1b73a10a5bc29fda8b08",
"control-plane/test/control-plane.test.ts": "890d89916d24d478edd86e033d35af23c90cf280d365bb6318bd65cb590266d7",
"LianSyn-platform/app.js": "0cdd8f059dc6ca0850187d05cf76f214dd104a95cee4876278a3a6d651a1044d",
"tools/arrangement-ledger-postgres-smoke.mjs": "555a83907a4c4c161d818e6d6acc9e22e8d412ddf75d980d24a38708a137441c"
}
}
@@ -0,0 +1,14 @@
# 大交通说明匹配修复:本地验证证据
本目录为日期化、只读历史证据,不定义当前业务规则;当前源码、mapping 与 `dist/release-manifest.json` 是发布依据。
- 修复前:空格删除后 `C91 12:52` 合并成 `C9112:52`,车次过滤误认为命中了更长数字,返回零候选。
- 修复后:归一化检索保留原位置数字边界;线路+车次可唯一选中不同目的地/车次候选,连续更长数字仍不匹配。只写线路在唯一时允许、多条时停止,未填说明的原行为不变。
- 失败提示分别说明没有匹配、候选未加载和候选不唯一;歧义最多显示 5 个供应商/说明,字段长度和控制字符受限,不返回 ID、价格列或完整元组。
- 合成浏览器页面回归覆盖新增、变更、实际原生联动前复核,以及候选变化/多条时不操作字段;未执行真实 ERP 测试。
- 定向 31/31,控制面 266/266,完整 legacy 417/417(干净源码副本),仓库检查 10/10(干净源码副本),类型检查、构建及差异空白检查通过。
- 原工作区已有 IDE 元数据及旧日志影响整洁检查,普通 sandbox 禁止两项 localhost 测试监听;保留用户文件,临时副本使用获准的本地测试监听,不更改断言来回避问题。
- 插件 0.5.186 发布包的 20 个文件与源文件逐字节一致;前版包和清单原样保存在 `archive/releases/2026-09-16/transport-description-match-01a0858b/`。
- 未部署、未重启、未重载实际扩展、未重试业务任务、未读写生产 ERP。
机器可读版本、源码哈希和验证结果见 [verification.json](verification.json)。
@@ -0,0 +1,53 @@
{
"task_id": "20260916-transport-description-match-01a0858b",
"date": "2026-09-16",
"extension_version": "0.5.186",
"artifact": {
"kind": "chrome_extension",
"version": "0.5.186",
"path": "dist/ltjt-order-assistant-0.5.186.zip",
"source": "chrome-extension/ltjt-order-assistant",
"sha256": "c79d108ce4cbed85a856b336e1643fd990d81f21d16a0bbd66be27510d1c2568"
},
"source_sha256": {
"chrome-extension/ltjt-order-assistant/inpage.js": "6c1b62283834bf3b815b09532a975a2c62e6342f4636b55e105eb181ec75f569",
"chrome-extension/ltjt-order-assistant/background.js": "6e19bb6fa3fe06549dd073c191cd37c1dcbfb3358a64530b06e8a5c712235d4a",
"chrome-extension/ltjt-order-assistant/manifest.json": "029e919535b8545bb09fe99718e6fd900cc704dc1de97e449cd6efd2001bf201",
"chrome-extension/ltjt-order-assistant/team-batch-inpage.js": "b4e5d230ecafe32fbbc9bfc321b2b76b4627e3ed0a1c78f392283d134f28b6ea",
"chrome-extension/ltjt-order-assistant/README.md": "2bbbe76ba47c6905a6a6abdceb8578c9d307156d922d040361eef1e5e176b3db",
"LianSyn-platform/app.js": "6043f0b84777d3c976c1330f0b0e8e11b894cfbdff754f28613567e5cfed7340",
"mappings/lifecycle.mapping.json": "00873f0e63009e39e4a0dda6332aeca318891c338194f923e9439c48bfa8d577",
"tools/arrangement-update-unified.test.mjs": "ee2de0065a9beee105bec174bec04ada3bb781f5af56f9901d68538ea893b15f",
"tools/lifecycle-contract.test.mjs": "26764fa805c08bbdfdde9fe8b91fea7f7c7a3e5d2714e22856fc99302106cc7b",
"dist/release-manifest.json": "61ea6db9044928e68a7f31d7713ecbf415cd73b21fda37f8921002663bd081f2"
},
"checks": {
"targeted_tests": {
"passed": 31,
"failed": 0
},
"control_plane_tests": {
"passed": 266,
"failed": 0
},
"legacy_tests_clean_source": {
"passed": 417,
"failed": 0
},
"repository_checks_clean_source": {
"passed": 10,
"failed": 0
},
"typecheck": "passed",
"build": "passed",
"diff_check": "passed",
"zip_source_files_verified": 20,
"final_review": "PASS (single-agent read-only review)"
},
"limitations": [
"Original worktree hygiene fails on pre-existing IDE metadata and ignored historical logs; these were preserved.",
"Temporary clean copy and permitted localhost listeners used for complete legacy regression.",
"Synthetic test evidence only; no real ERP access, task retry, extension reload, service restart or deployment."
],
"prior_release_preserved": "archive/releases/2026-09-16/transport-description-match-01a0858b"
}
@@ -0,0 +1,3 @@
# Historical release before transport description matching fix
Historical, read-only material; not current business rules or release instructions. Extension 0.5.185 and its original release manifest are preserved byte-for-byte. Current deliverables are defined by `dist/release-manifest.json`.
@@ -0,0 +1,69 @@
{
"manifest_version": 1,
"generated_on": "2026-09-15",
"baselines": {
"chrome_extension": "0.5.185",
"skills": "0.5.127",
"business_instruction_docx": "0.5.134",
"agent_prompt": "ltjt-agent-prompt-v1.8-independent-headcount-categories"
},
"artifacts": [
{
"kind": "chrome_extension",
"version": "0.5.185",
"path": "dist/ltjt-order-assistant-0.5.185.zip",
"source": "chrome-extension/ltjt-order-assistant",
"sha256": "42d12ea2a9e090af3202b683f66a4418fa7aac199686bfb7840251e1fb9b899c"
},
{
"kind": "skill",
"name": "lwlt-arrangement",
"version": "0.5.127",
"path": "dist/lwlt-arrangement-0.5.127.skill",
"source": "agent设计规范/skills/lwlt-arrangement",
"sha256": "ae3fc66965d2a7968aeaa2ecf371d75e5365ef4cc4dfd8ef080f9343e0d0f09c"
},
{
"kind": "skill",
"name": "lwlt-confirmation",
"version": "0.5.127",
"path": "dist/lwlt-confirmation-0.5.127.skill",
"source": "agent设计规范/skills/lwlt-confirmation",
"sha256": "c2f3689d8a0b4d6b250bb2cfce572fe3a9fca3f5519ea5fae5ef0d382b44dae4"
},
{
"kind": "skill",
"name": "lwlt-lifecycle",
"version": "0.5.127",
"path": "dist/lwlt-lifecycle-0.5.127.skill",
"source": "agent设计规范/skills/lwlt-lifecycle",
"sha256": "f0b5cdea11e65657fb9b10e4f7d020769d5477cc8ceddfcfd6a284513345f6bc"
},
{
"kind": "skill",
"name": "lwlt-newbooking",
"version": "0.5.127",
"path": "dist/lwlt-newbooking-0.5.127.skill",
"source": "agent设计规范/skills/lwlt-newbooking",
"sha256": "b64593d88145966cd4e702d2532ffe3ea85052e8d56fbe75d503a19ababa1715"
},
{
"kind": "skill",
"name": "lwlt-updating",
"version": "0.5.127",
"path": "dist/lwlt-updating-0.5.127.skill",
"source": "agent设计规范/skills/lwlt-updating",
"sha256": "54f10dd6bd6d2ddf47c700f1bca4b1fcd3346dc6143bf27118a23587b1b11736"
},
{
"kind": "business_instruction_docx",
"version": "0.5.134",
"path": "dist/老挝联泰AI指令表-0.5.134.docx",
"source": "agent设计规范/templates/business-input-templates.md",
"builder": "tools/build_business_instruction_docx.py",
"sha256": "b6c1f677b93cb4f7356cfb26c6af01860587be1288ffe9e8aff8295929074490",
"source_sha256": "7446e4560e2eaaf6f490c8ed7523d6aadcee6f94f58cb620f7e71db674404471",
"builder_sha256": "c162884210da22e3b78368749b66f1f177df5e9fc6155f4fd9954bd516d187f1"
}
]
}