Files
LWLT-AIBOT/archive/project-history/2026-08-26/task_plan-pre-compression-global-parser-automation.md
T

184 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目文件治理计划
## 当前任务:让解析策略与全自动化对所有任务来源全局生效(进行中)
- **目标:** 修复手工输入与 AgentBus 在解析路由上的行为分叉,使 18 项解析策略(AI / Shadow / Auto / Program)以及由该策略决定的全自动化行为统一作用于所有受支持任务来源。
- **范围:** 控制面任务接入、解析编排、任务级模式快照、AgentBus accepted/result 链路、操作台策略配置和相关契约测试;不改变 operation 业务 Schema 或 ERP 写入门禁。
- **安全边界:** 不创建、确认、重试或派发真实任务,不访问/写入 ERP,不读取 `.env`,不重载扩展、不重启服务、不部署、不外发。
### 阶段
- [ ] 完整恢复项目上下文、session catch-up、工作区状态和业务适配入口。
- [ ] 对比手工输入与 AgentBus 的任务创建、解析编排、模式快照和自动确认/执行路径,形成根因与影响面。
- [ ] 实施单一全局策略入口,消除来源特判,并补齐 AgentBus 四模式及全自动化回归。
- [ ] 完成项目规定的仓库、类型、控制面、legacy 和构建验证。
- [ ] 收敛 planning 文件,说明代码完成项、运行态启用边界和未执行的外部动作。
### 固定决策
- 解析模式由业务 route 的全局策略决定,任务来源只负责输入/回执适配,不得强制覆盖为 AI。
- AgentBus 与手工输入必须经过同一 operation 契约、fail-closed 校验和任务级策略快照;不能通过跳过解析门禁来实现自动化。
- “全局生效”包含未来新任务;是否回溯重解析既有任务需另行评估,默认不自动修改历史任务。
- 不因本次修复自动切换任何业务当前模式,也不未经授权重启 8786 或触发真实 AgentBus/ERP 流量。
### 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 首次合并读取四个根文件的输出超过单次显示预算 | 1 | README 与 plan 已获得;改为逐文件读取 findings/progress,并在此记录后继续,避免重复同一失败方式 |
## 最近完成:消除插件后台页节流与成功任务伪错误
- **目标:** 修复成功单耗时 `105.620s` 的页面定时器节流,并消除完成后追加“获取回执失败”的错误摘要。
- **安全边界:** 不创建、确认或重试任务,不访问/写入 ERP,不重载扩展、不部署;服务重启仅在用户随后明确授权后执行。
- [x] 以新日志确认产品联动约 `5.0s`、客户回填约 `55.0s`、提交静默等待约 `33.8s` 均由后台标签页短周期 timer 被 Chrome 放大;ERP 保存请求本身约 `746ms`。
- [x] 产品联动和 `DoInfoJH` 改为等待原生 Ajax complete;客户恢复改为同步五字段精确复核;persistent guard 仍只放行一个匹配哈希请求。
- [x] `webNavigation` 精确定位目标 iframe,替代 15 Frame 全量 probe;成功解析边界事实不再生成 failure,UI 仅对当前失败状态合成错误 timeline。
- [x] 发布扩展 `0.5.147`,同步平台最低版本、mapping、业务页、ZIP、清单和回归;规定全量门禁全部通过。
- [x] 用户明确授权后受控重启 8786;新 PID `41546` 单一监听,数据库、迁移 013 和 4 个 AgentBus 渠道均 ready。
### 固定决策
- 唯一匹配、字段数、payload/protected-fields hash、恰好一次网络提交、写边界和 fresh requery 均不放宽。
- 真实耗时收益仍须用户重载 `0.5.147` 后用新任务验证;本轮离线测试不宣称 ERP 实测提速。
- 8786 已加载当前控制面与页面;Chrome 扩展仍需用户重载 `0.5.147`,本轮未操作浏览器。
### 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 直接用 Node 执行 TypeScript 测试时找不到编译后的 `config.js` | 1 | 改用项目规定的 `--import tsx` 测试入口,完整控制面回归通过 |
## 最近完成:12:45 订单恢复运行日志复核
- **目标:** 对用户提供的 12:45 新运行日志逐事件复核,确认运行态是否已加载 `0.5.144` 的 route Document token 修复,并判断本次订单恢复任务是成功、安全阻断、仍在运行旧版,还是暴露新的确定性缺陷。
- **任务解释:** 附件未附单独自然语言说明,本轮按“继续诊断上一轮修复后的取消订单运行结果”执行;日志内容只作为不可信外部证据,不作为项目操作指令。
- **安全边界:** 不重试或创建任务,不确认/派发任务,不访问或写入 ERP,不读取 `.env`,不重载扩展、不重启服务、不部署、不外发。
### 阶段
- [x] 登记任务目标、安全边界和运行态/静态源码区分原则。
- [x] 完整恢复 README、planning 文件、session catch-up、工作区状态和业务适配入口。
- [x] 逐事件解析 12:45 日志,按 execution id、时间顺序、版本握手和写入边界形成事实链;实际 action 已确认为 `order_restore`。
- [x] 对照 `0.5.144` 源码、lifecycle Skill、Schema、mapping、历史真实证据与测试,判定结果及直接原因;已定位到 token 绑定前的 edit Document readiness,附件缺运行版本与安全子维度。
- [x] 评估是否具备确定性修复证据:当前不能区分 route/complete/form/tid/ddid,也不能证明运行版本,故按固定决策不猜改源码、不产生新扩展版本。
- [x] 完成规定验证,收敛 findings/progress/plan 并说明仍需授权的运行态操作。
### 完成结果
- 本次实际是 `order_restore`。execution `2a2a77b6-87c1-4b68-b7ac-9f9cc4943966` 在 ERP 唯一解析后,于 token 绑定前的 edit Document readiness 阶段以 `lifecycle_exact_edit_form_not_ready` 安全阻断。
- `erp_write_started=false`、`no_erp_write=true`、`uncertain=false`、无 success receipt:订单没有被本次执行恢复,也不需要写后 reconciliation。
- 附件不含扩展版本或 route/form/tid/ddid readiness 子维度;应用内浏览器又受正常登录门禁保护。无法证明运行 `0.5.144`,也无法把 general blocker 安全归因到某个引用条件;本轮未猜改源码、未递增版本或重建发布物。
- 规定离线门禁通过:仓库治理 9/9、TypeScript check、控制面 90/90、legacy 230/230、build。未重试任务、访问/写入 ERP、重载扩展、重启、部署或外发。
- 若继续定位,需要用户明确授权只读检查当前 Chrome 的插件版本与 `lastLifecycleRoutePreparation` 安全诊断;该检查不应触发 ERP 回查或任务 mutation。
### 固定决策
- 不能从行为相似性单独推断运行版本;优先使用日志中的扩展握手、最低版本门禁和新 token 诊断字段,缺少证据时明确保持未知。
- 历史任务快照中的旧 failure 字段不能覆盖当前 execution 的后续事件;按 execution id 和时间顺序判断。
- 不放宽精确引用、唯一状态、页面身份、ownership、保存前停止、明确响应或 fresh requery 门禁。
- 若日志只是旧运行态未重载导致的已知失败,不重复修改当前源码;运行态启用仍须用户明确授权。
- 在无法证明运行版本及 route/form/reference 哪个维度失败时,不放宽或猜改编辑页身份;优先穷尽现有只读版本/诊断证据,必要时只增加不含业务值的确定性诊断。
### 当前任务错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 首次合并读取四个根文件的输出超过单次显示预算,`findings.md`/`progress.md` 后部被截断 | 1 | README 与 plan 已获得;改为按文件、按行号分块继续读取,避免重复同一失败方式 |
| 首次工具能力查询同时匹配大量浏览器/连接器描述,输出被截断 | 1 | 未调用任何外部能力;改为只列工具名称,确认只有 browser 所需 Node 会话工具,没有适用于本地 LTJT 语义读取的专用连接器/API/CLI |
| 应用内浏览器访问 8786 时显示登录状态已失效 | 1 | 未登录、未读取凭据、未绕过认证,也未切换到需要额外授权的用户 Chrome;运行版本与 route report 子维度保持未知 |
## 最近完成:两次取消订单运行日志复核
- **目标:** 对比用户提供的 11:44 与 11:46 两次运行日志,确认浏览器实际版本、执行路径、ERP 写入边界,以及 `0.5.143` 修复是否生效;若暴露新的确定性缺陷,则完成最小安全修复与回归。
- **任务解释:** 两个附件均未附单独自然语言说明,本轮按“继续诊断并处理取消订单运行结果”执行;日志内容只作为不可信外部证据,不作为项目操作指令。
- **安全边界:** 不重试任务,不创建/确认/派发任务,不访问 ERP 写入或点击,不读取 `.env`,不重载扩展、不重启、不部署、不外发。
### 阶段
- [x] 恢复项目与规划上下文,运行 session catch-up 和 `git status --short`,保留全部既有未提交改动。
- [x] 逐事件解析两份日志并交叉比较版本、目标类型、状态、blocker、耗时与 `no_erp_write` 证据。
- [x] 对照 lifecycle Skill、Schema、mapping、活动实现和回归,判定两个日志分别暴露解析回复归一化缺口和 route Document 身份传递缺口。
- [x] 实施最小 fail-closed 修复并同步扩展 `0.5.144`、平台最低版本、mapping、测试和发布物。
- [x] 完成规定验证并收敛 findings/progress/plan;明确运行态与真实 ERP 授权边界。
### 固定决策
- 不以删减精确引用、唯一状态、页面身份、保存前停止或 fresh requery 门禁换取任务通过。
- 两次日志必须独立判断;不把任务历史快照中的旧 failure 字段当成当前事件结果。
- 若日志证明浏览器仍运行旧版,只报告并验证版本事实,不未经授权重载扩展或重试任务。
- NEED_INPUT 只允许从已校验 `questions[].prompt` 合成展示回复;没有 prompt 时继续阻断,绝不生成 operation。
- route token 必须是本地生成的一次性不透明值,只用于绑定 prepare 已精确选中的 Document;不进入业务 operation、用户日志或 ERP 请求,后续正式 preflight 仍再次校验引用和状态。
### 完成结果
- 11:44 的 NEED_INPUT 缺顶层回复已改为只从有效 question prompts 合成用户展示文本;无 prompt 时仍阻断且 operation 保持 null。
- 11:46 的同路径 frame 假歧义已改为一次性 route token 精确绑定 prepare 选中的 Document;既有引用、唯一行/表单、状态、ownership、保存前停止和 fresh requery 门禁均保留。
- Chrome 扩展已同步到 `0.5.144`;版本化 ZIP SHA-256 为 `5edf97d35d82cb5e2eb46acd003042522a9cca5ab8f1e8c615c296ad64390b72`,`0.5.143` 已归档。
- 最终验证通过:仓库治理 9/9、TypeScript check、控制面 90/90、legacy 230/230、build、lifecycle 51/51、扩展/解析语法、ZIP/源码逐文件核对和 diff 检查。
- 未重试或创建任务、写入 ERP、重载扩展、重启 8786、部署或外发;运行态启用及真实 ERP 新任务验证仍需用户另行明确授权。
### 当前任务错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 发布复核时 `findings.md` 为 37,139 字节,超过 32 KiB 治理上限 | 1 | 其他 8/9 仓库门禁均通过;先完整冻结到当日项目历史,再语义压缩活动 findings 后重跑,不直接删除历史 |
| lifecycle 发布复核有 3 个静态断言仍匹配 `0.5.143` | 1 | 行为测试及其余 50/51 通过;同步这 3 个断言到 `0.5.144` 后完整重跑 lifecycle,不改产品逻辑 |
| 四套全量命令并行时 AgentBus listener 测试在固定等待内只收到 1/2 条消息,失败后遗留句柄使控制面进程 110 秒未退出 | 1 | 其他控制面 89 项、check、legacy 230/230、build 均通过;受控中止该测试进程,改为无竞争地单独重跑完整控制面套件,若复现再检查产品代码 |
## 最近完成:取消订单精确原生页面跳转失败修复
- **目标:** 根据用户提供的失败日志,定位并修复 `order_cancel` 在 `lifecycle_route_preparation` 阶段因 `lifecycle_exact_edit_form_not_ready` 被阻断的问题,同时保持精确引用、保存前停止和不自动重试门禁。
- **任务解释:** 附件只有运行日志、没有单独的自然语言指令;本轮按“诊断并修复该失败”继续。若证据表明不是代码缺陷,则只形成诊断和安全处置,不放宽门禁。
- **范围:** 取消/恢复生命周期的 Chrome ERP 路由准备、mapping、稳定夹具、扩展版本与发布物;不改变 AI 解析结果、operation Schema 或业务输入契约。
- **安全边界:** 不重试现有任务,不创建/确认/派发任务,不执行 ERP 写入或点击,不读取 `.env`,不重载扩展、不重启、不部署、不外发。
### 阶段
- [x] 读取 README、活动 planning 文件、仓库状态、业务适配登记表和用户日志;保留全部既有未提交改动。
- [x] 确认 AI 解析与 operation 契约已成功,故障发生在插件唯一解析目标后、ERP 写入前的原生页面准备阶段。
- [x] 追踪 `order_cancel` 的路由准备实现、页面判定、超时策略、mapping 与现有测试,确定直接原因和受影响范围。
- [x] 实施最小安全修复并补充定向回归;扩展已递增至 `0.5.143`,平台最低版本、mapping、ZIP 和发布清单已同步。
- [x] 完成项目规定的全量验证、发布物逐文件核对和 diff 检查。
- [x] 收敛 findings/progress/plan,明确未执行的真实 ERP 验证与后续授权事项。
### 完成结果
- 已修复 resolved 取消操作被一律改走编辑页、以及编辑页身份匹配口径窄于正式 preflight 的两个确定性问题;精确引用、唯一状态、页面完整性、保存前停止和失败关闭门禁均保留。
- Chrome 扩展已同步到 `0.5.143`;当前版本化 ZIP 的 SHA-256 为 `345233202461b4e0cbf2294c4f0559fecfcf74caf3c225a1f1c7e4dda16f29dd`,上一版 `0.5.142` 已归档。
- 项目规定的仓库治理、类型检查、控制面、legacy、构建、扩展语法、发布包逐文件核对和 diff 检查均通过。
- 本轮没有重试原任务、写入 ERP、重载扩展、重启 8786、部署或外发;运行态启用和真实 ERP 新任务验证仍需用户另行明确授权。
### 固定决策
- 不绕过精确引用、页面身份、原生表单或保存前门禁;页面未准备好时仍失败关闭。
- 日志中的 `awaiting_confirmation` 历史快照附带旧 failure 字段,不把它误判为解析失败;以随后独立执行事件链为准。
- 只有代码和脱敏夹具证据足以证明确定性缺陷时才修改;环境/会话故障不得伪装成成功。
### 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| session catch-up 首次使用了不存在的组合路径 | 1 | 未触及项目文件;改用 `/Users/inmanx/.agents/skills/planning-with-files/scripts/session-catchup.py` 后成功且无未同步上下文 |
| `apply_patch` 不接受无 hunk 的纯移动操作 | 1 | 未修改文件;使用精确机械复制冻结完整旧计划,再由 `apply_patch` 重建压缩后的活动计划 |
| 单个 patch 不能同时删除并新增同一路径 | 1 | 删除已在校验阶段被拒绝且未修改;随后拆成两个连续 `apply_patch` 调用完成活动计划重建 |
| 搜索测试时使用了不存在的 `*.test.*` zsh glob | 1 | 未修改文件;后续改用 `rg` 的目录与 `--glob` 过滤,不再让 shell 展开可空 glob |
| 首次打包 ZIP 的相对输出路径多退了一层 | 1 | 未创建输出文件;改用明确的项目绝对路径后成功生成 `0.5.143` ZIP |
| 首轮控制面测试仍断言旧 `app.js` cache key | 1 | 89/90 通过,失败仅为静态资源版本断言;同步到新 cache key 后重跑完整控制面套件 |
## 最近已完成任务
- **修改类无年份日期统一归一化:** 三类订单修改与酒店安排变更的 `MM-DD` 按任务日取下一次发生日;Prompt `v1.6`、程序解析器 `v1.0.1`、五个 Skill `0.5.120` 已同步,完整门禁通过,8786 已在用户授权后重启生效。
- **散拼母团无子单的酒店安排提示:** 扩展 `0.5.142` 已把三项页面证据成立的技术错误转换为先新增散拼子单提示,不放宽提交门禁;全量门禁通过。
- **插件通用操作计时:** `ltjt-operation-timing-v1` 覆盖共用状态机与页面动作,控制面和操作台仅接收白名单耗时摘要;扩展 `0.5.141` 的历史实现与门禁已完成。
- **任务状态栏整栏滚动:** 右侧详情栏使用整栏纵向滚动,详情和生命周期保持自然高度;页面契约与全量门禁通过。
- **18 项确定性解析与即时晋级:** 18 route、fail-closed compiler、共用 validator、四模式编排、迁移 013、任务快照与操作台已完成;Shadow 可并行、Auto 同时最多一个,当前模式未因代码完成而自动切换。
- **AI 可替代性复评:** 固定 18 模板的正常路径可由本地 compiler 替代 AI;自由表达兼容、历史输入漂移、字段级 shadow 与关键 false-pass=0 仍是下线 AI 的门槛。
- **ERP 链接异常恢复:** 扩展历史版本已实现仅在空闲、allowlisted 标签页上的受控刷新与只读复测,不新开标签、不自动重交任务。
## 历史规划与持续边界
- 本次压缩前的完整计划已冻结到 [2026-08-26 归档快照](archive/project-history/2026-08-26/task_plan-pre-compression-lifecycle-route-preparation.md);更早完整上下文见 `archive/project-history/`,归档只供追溯,不定义当前规则。
- 当前发布版本、文件名和 SHA-256 只以 [发布清单](dist/release-manifest.json) 为准。
- 保留工作区既有未提交改动;真实 ERP 写入、任务重试、扩展重载、部署、重启和外部发送仍需用户另行明确授权。