Files
LWLT-AIBOT/findings.md
2026-08-30 00:13:22 +08:00

11 KiB
Raw Blame History

当前关键发现

2026-08-30 — 0.5.156 校验范围恢复

  • 用户明确要求恢复 0.5.156 的校验方式。归档 ZIP 证明该版本的动态正则写成字面 \\d*,所以真实编号 ys_danwei1/ys_danweiid1/ys_jine0 等字段并未进入保护;0.5.160 修正数字后缀后才新增当前强校验。
  • 0.5.163 不整体降级:保留正式控制面域名、MV3 链路恢复、lookup readiness 和 jQuery.active/ajaxStop 稳定态,只移除编号动态 ys_* 的保护投影。日期、客户、产品、人数、房型、跟单人、销售人等静态核心字段继续按摘要漂移失败关闭。
  • 完整 live-gate 回归确认:核心字段变化仍返回 live_submit_blocked 且零网络;仅编号动态应收字段变化时,表单和原生请求的保护摘要均匹配并进入原生提交路径。该策略允许 ERP 在预检后调整动态应收行,属于生产操作方明确接受的行为边界。
  • 0.5.163 ZIP SHA-256 为 90c550054cdf747aa9c2c80bca5ee5fba0d13f126acfd4779f85400764379bf0;专项、全量和构建门禁均通过。生产仍需加载后以新任务验证,旧失败任务不重试。

2026-08-29 — Program 写前受保护字段漂移

  • 0.5.160 生产复测已把实际漂移字段定位为 xiaoshouren(销售人),仍在网络请求前阻断。活动源码确认单团页面只按 ListForm 控件数达到 800 判定就绪,但 ERP 页面会异步请求 ProDanwei_Yuangong,并在回调中两次重新初始化 xiaoshouren;插件写入预检销售人后到 live gate 之间没有第二次插件写入。
  • 真实 lightweightOrderFrameProbe 的离线反馈环稳定证明:zutuanshe/gendanren/xiaoshouren 的原生 SelectBox 数据仍为空时,当前实现仍错误返回 order_frame_ready。散拼子单路径已等待这三个 lookup 的 data 属性,单团路径没有,最可能因此允许 ERP 员工列表回调在预检后改写销售人。由于没有生产页面回调时间戳,这一因果关系属于强证据推断而非直接观测。
  • 0.5.161 虽已等待客户、跟单人和销售人 SelectBox 的 data,生产握手确认该版本后仍先后报告 xiaoshouren,以及 xiaoshouren + ys_danwei*/ys_danweiid* 漂移。这证明 lookup 数据存在不等于页面所有原生 Ajax 已完成;ERP 表单启动阶段还有收款项目、报位、说明和资源等多组 jQuery Ajax。
  • 用户确认生产 0.5.156 没有该阻断。ZIP 差分确认 0.5.156 已保护 xiaoshouren,但数字后缀正则错误使 ys_danwei1 等动态应收字段当时未进入保护;应收行是 0.5.160 修正保护范围后新暴露的真实迟到变化。随后用户明确接受该范围调整风险并要求恢复旧校验效果,当前结论见上方 0.5.163 记录。
  • 真实 frame probe 的第二个离线反馈环证明:三个 lookup 数据均存在、但 jQuery.active=2 时,0.5.161 仍错误返回 order_frame_ready。0.5.162 同时在 frame readiness 要求原生 Ajax 归零,并在 GetProduct 外层完成后等待页面自身 ajaxStop,再应用最终销售人和应收字段;只使用完成事件和失败超时,不使用固定 sleep。
  • 用户提供的服务工作线程状态证明:预检最终表单与其拦截请求的受保护字段 SHA-256 都是 fe3cfc2e72e0e8fafad548717a71012228d63b5f5a10ee20a5ff526e1f12c8e5,实时提交的已批准摘要仍是该值,但当前摘要变为 fa42ee152b1e4d1920d2f5b4329b8dfe1884900a087c932b3dfb8736d05c1276;前后字段数均为 822。
  • 因字段数相同且预检前后摘要一致,这不是错误基线或表单字段总数变化,而是预检结束到真实提交之间至少一个受保护字段的名称/值投影发生了漂移。0.5.159 只持久化聚合摘要,无法从既有日志反推出具体字段。
  • 0.5.160 仅在 ERP 页面运行内存保存预检受保护字段投影。写前不一致时回执只包含变化字段名、数量、基线可用性和 values_redacted=true,不持久化或输出任何字段值,也不放宽阻断条件。
  • 新回归发现动态应收保护规则原先使用双重转义,实际匹配字面 \\d,导致 ys_jine0 等带数字后缀的真实字段未进入保护投影;已改为数字后缀匹配并由行为测试覆盖。
  • 0.5.162 ZIP 与 19 个活动源码文件逐字节一致,SHA-256 为 2b257fd61610e8cb6f21c99441b6072246ce06397e2ea05e96488ef414926f12;定向回归、仓库治理、TypeScript、控制面、legacy 与 build 均通过。生产运行态仍需运维加载该版本后用新任务验证;不重试旧失败任务。

2026-08-29 — ERP 链路恢复状态残留

  • 截图中的插件版本、权限、自动化和 ERP 会话均正常;唯一告警来源是持久化 recovery_status=running。操作台把 scheduled/already_running/running 视为恢复中,并阻断自动与手工插件派发。
  • MV3 服务工作线程可能在恢复写入 running 后被中断;内存 Promise 随工作线程消失,但旧实现没有区分“真实活动恢复”和“只剩持久化状态”,普通保活成功也不清除 recovery_status,因此告警可永久残留。
  • 0.5.159 只在内存恢复 Promise 已不存在时把 running 归一化为 interrupted;真实活动恢复仍保持 running。普通只读保活成功且无恢复在途时把恢复状态转为 idle,不会重放任何业务任务。
  • 同一真实页面状态函数的反馈环确认:无在途 Promise 时页面恢复“已连接”,有在途 Promise 时继续“已连接,有告警”。

2026-08-29 — 正式控制面域名插件接入

  • 扩展 0.5.157 的 Popup 与后台业务系统 URL 判定只允许本地 HTTP,Manifest 的控制面 content script 匹配也只有 localhost/127.0.0.1;当前 ZIP 与源码一致,因此刷新或重新加载旧包不能识别 https://lwlt.nianxx.cn。
  • 0.5.158 只把精确 origin https://lwlt.nianxx.cn 加入 Popup、后台标签发现、host permission 和 content script;相似域名、子域名及其他 HTTPS 站点仍拒绝注入。ERP origin https://lwlt.hisy.cc 未改变。
  • 新 ZIP 19/19 文件与源码逐字节一致,SHA-256 为 99ba7b29d1d4418cb02fcbb345aeaf8494877dbc397ae8592b4e3fdb68b4cf9d;0.5.157 ZIP 和清单快照已日期化归档。
  • 本轮只生成发布物,没有重载用户浏览器中的扩展、部署服务或访问 ERP;运行态仍需用户/运维从 dist/ 加载 0.5.158 后刷新正式操作台。

2026-08-28 — AgentBus 运行态重连

  • 用户侧观察到 AgentBus 断线后,服务端健康接口在重启前已短暂恢复为 4/4 ready,说明该现象可能是间歇性连接或页面状态延迟;当时在途 task 与 accepted/running attempt 均为 0。
  • 按用户授权重启后,标准运行态为进程组 66218、服务 PID 66228;连续 25 秒 6 次只读采样均保持总连接与 session ready 正常、4/4 渠道 ready。若用户界面仍显示断线,应优先刷新操作台状态,不据此重复派发任务。

2026-08-28 — 散拼母团“整团游客信息”导出(已完成)

  • 用户报告的任务已由 confirmation_export / Program v1.0.5 正确路由并抽取客户、出发日期、产品;唯一失败是 export_type=整团游客信息 未登记,任务保持 no_plugin_dispatch=true / no_erp_write=true。
  • 这不是普通文案别名:历史只读 ERP 证据确认“整团游客信息”属于散拼母团,源为 /System/Business/orders_Visitor.asp?tid=<tid>;独立团/散拼具体子单“游客名单”源为同一页面的 ?did=<ddid>&tid=<tid>。二者文件家族相同,但对象范围不同。
  • 已继续复用 confirmation_export 和 canonical visitor-list,由 existing_refs.kind 严格分流;整团游客信息固定为 shared_plan 且只使用母团 tid。母团仅开放单一 visitor-list,不能使用全部、其他文件类型或任何子单 did/ddid。
  • Program parser、双 Schema、平台 validator、operation plan、ERP 唯一解析、页内 exporter、mapping、业务文档及 AgentBus 交付契约已同步。解析态保留母团范围,执行态要求 resolved、母团号/计划号和 tid;源 URL 固定为 orders_Visitor.asp?tid=...。
  • 普通游客名单仍只用于独立团或散拼具体子单并生成 did+tid,未因母团能力而扩大范围。混用整团游客信息/游客名单或母团请求其他文件会在 ERP 请求前失败关闭。
  • 新基线为扩展 0.5.157、Program parser v1.0.6、输入契约/DOCX 0.5.123、五 Skill 0.5.125;完整静态回归、包/源码比对和 DOCX 12 页渲染均通过。服务与扩展运行态已切换到该基线,但母团真实 ERP 导出路径本轮未获访问授权,仍只具历史只读证据。

2026-08-28 — 名单导入当前基线

  • 两类名单导入固定 Program-only:文字定位后等待单个 .xls/.xlsx;第一行团信息、第二行 14 列表头,规范化为加密 13 列 canonical TSV,原始工作簿不持久化。
  • 未确认且目标游客位占用时要求覆盖确认;full_replace + confirmed=true 后附件指定序号全部强制覆写,同值也写。父表单 ERP 明确成功即完成,不再逐行写后回查。
  • 唯一严格领队备注行生成 passenger_list.leader_contact,保存前投影到 jj_lianxiren/jj_dianhua;多行、缺值或结构不一致均失败关闭。
  • 当前扩展 0.5.157 继续包含 0.5.156 引入的游客位容量业务提示;原始技术 blocker 只留技术详情。用户另行授权后,扩展与 8786 服务均已重载/重启到当前版本。

当前解析、执行与发布边界

  • 18 项机器路由、任务级 AI/Shadow/Auto/Program 快照和组织全自动化对手工与 AgentBus 新任务统一生效;两类名单 route 固定 Program-only。
  • 当前 Program parser 基线为 ltjt-program-parser-v1.0.6,输入契约为 business-input-templates-0.5.123;五个 Skill 为 0.5.125,Agent Prompt 为 ltjt-agent-prompt-v1.8-independent-headcount-categories。
  • 生命周期执行仍要求唯一对象、页面身份、ownership、写前投影、明确服务端响应与 action-specific 完成凭据;未知或不确定写入不得自动重试。
  • confirmation_export 是只读 ERP 源导出:游客源归档原始 .xls 并生成真实 .xlsx 供 AgentBus/微信;其他类型转 PDF,失败回退源文件;不定时、不外发、不重保存订单。
  • 真实 ERP 访问或写入、任务 mutation、部署、外部发送及后续运行态变更仍需用户另行明确授权。本轮用户在源码与发布物变更后,又单独授权了当前版本的服务重启和扩展重载;未授权 ERP 业务页访问。

历史与归档

  • 本次压缩前完整 findings 已按相同 SHA-256 17e5c316e5f9e18f4b56374d2e1dba75c03e346396e3f63bdf78cdd4df3fcf84 冻结到 2026-08-28 findings 快照。
  • 先前完整研究、真实只读证据和发布过程见 archive/project-history/、archive/research/ 与 archive/evidence/;归档只供追溯,不反向定义当前规则。
  • 当前业务规则以活动源码、Schema、mapping、Skill、业务登记和 dist/release-manifest.json 为准。