Files
LWLT-AIBOT/chrome-extension/ltjt-order-assistant
..
2026-08-25 10:33:29 +08:00

联泰下单助手

Chrome Manifest V3 扩展,在用户已登录的 LTJT ERP 页面内执行经过平台确认、Schema 校验和 ERP 只读唯一解析的确定性业务操作。

职责边界

  • 平台与 Agent 负责业务意图、用户事实、任务/会话、确认和通讯。
  • 插件负责前门禁、ERP 对象/资源解析、页面联动、严格写前校验、原生提交与 fresh requery。
  • 插件不解释新的自然语言含义,不绕过候选唯一/首条选择规则,不维护主数据,不凭 HTTP 200 宣称成功。
  • operation.source 只允许显式历史测试上下文;普通平台元数据不得混入业务 operation。

当前版本

当前源码版本为 0.5.140。版本化 ZIP、文件哈希和 Skill/DOCX 基线见 ../../dist/release-manifest.json。旧版本实现流水已冻结在 ../../archive/project-history/2026-08-16/chrome-extension-README.pre-governance.md。

0.5.140 当前重点:

  • 产品与客户分别执行 ERP 唯一解析;来源地关键字仅保留客户侧候选辅助,不再强制要求产品与客户来源地相互匹配。
  • 散拼母团创建收到 ERP 成功响应后,精确团号回查会清空无关筛选并进行有限延迟只读重查;任一团号仍未命中时转逐日期唯一回查,整个恢复过程不重新提交创建请求。
  • 无编号独立团检索以客户 + 出发日期为主条件;客户支持中文分词匹配和日期回退。
  • 产品与领队只作候选补充校验,不作为原生列表硬筛。
  • SGL/TWN 房型映射到 frenshu0/frenshu1,三类人数映射到 darenshu/xiaorenshu/quanrenshu,均有非负校验和 fresh 表单回查;这些新增映射仍待授权 ERP 实写复测。
  • ERP 明确返回业务规则拒绝时保留原生提示,任务标记为业务阻断,不进入“结果不确定/待回查”,也不自动重试。
  • 跨订单列表和计划列表合并候选后,再用已提供的产品/领队可见文本做二次筛选;仍不唯一时继续阻断,不猜选。
  • 恢复/取消进入精确编辑页后读取当前状态;目标状态相同则返回“无需迁移”,只有状态不同才继续写入前门禁。
  • 恢复订单按对象类型主动切换 ERP 原生【已取消】或母团【收客中】状态标签;状态标签由原生菜单点击触发,避免遗留筛选把已取消记录排除在候选集之外。
  • 插件实际领取任务后 10 分钟无最终结果自动失败;启动/重载时清理过期运行态、无执行孤儿缓存和超过 30 分钟的残留当前任务指针,可能跨过 ERP 写入边界的记录保留只读回查,不自动重试。
  • ERP 页面脚本注入前检查 host permission 和批准 origin;重定向到非白名单页面、站点访问被关闭或 Chrome 拒绝注入时 fail-closed,并回传可操作的诊断码,不再把原始权限异常当作普通导出失败。
  • ERP 待机保活默认开启:Chrome alarm 约每 5 分钟在已有 ERP 标签页内发送一次带 Cookie 的只读 GET /System/Mainlt.asp;执行任务期间跳过,不新开标签、不刷新页面、不修改业务数据,可在插件面板单独关闭。
  • ERP 只读探测发现会话失效、页面注入异常或链路失败时,在无插件执行任务且已有同源 ERP 标签页的前提下,按 2 分钟冷却最多自动绕缓存刷新一次现有标签页,并等待完成后再次只读复测;失败只保留告警,不自动重交业务任务。
  • 其他未验证独立团字段保留在 operation 并转人工复核,不静默丢弃。

完整开放/阻断边界见 生命周期发布门槛。

本地加载

  1. 打开 chrome://extensions。
  2. 启用开发者模式。
  3. 选择“加载已解压的扩展程序”。
  4. 选择本目录 chrome-extension/ltjt-order-assistant/。
  5. 每次源码或版本更新后在扩展管理页重载,并通过平台握手确认运行版本。

ZIP 仅用于交付,不从 ZIP 目录直接维护源码。

执行链

平台领取任务
  → validateDispatchOperation
  → 找到已登录 ERP 页面
  → resolveLifecycleOperation / 资源解析
  → validateOperation 严格门禁
  → 原生页面操作
  → 明确服务端响应
  → fresh requery
  → 结构化结果回传平台

零候选、多候选、页面身份不一致、登录失效、联动失败、状态不支持、提交不确定或回查不一致都必须在写前阻断或进入只读 reconciliation。不得自动重提同一写操作。

主要源码

文件 职责
background.js 平台桥接、任务领取、版本握手和调度
business-bridge.js 页面与扩展消息桥
operation-plans.js 前门禁、严格门禁和执行规划
inpage.js ERP 页面发现、列表检索和业务路由
lifecycle-adapters.js 生命周期表单操作、写入和回查
team-batch*.js 独立团/散拼创建与批量执行
product-lookup.js、source-region.js 产品候选和客户候选解析;来源地仅作客户侧辅助
lifecycle-result.js、split-plan-reconciliation.js 结果统一与只读收敛

验证

node --check chrome-extension/ltjt-order-assistant/background.js
node --check chrome-extension/ltjt-order-assistant/inpage.js
npm run test:legacy
npm run check:repo

修改插件源码时必须递增 manifest.json 版本,同步平台最低版本、mappings/lifecycle.mapping.json、回归断言、版本化 ZIP 和 dist/release-manifest.json。真实 ERP 写入仍需用户针对本轮对象明确授权。