Files
LWLT-AIBOT/archive/project-history/2026-08-26/task_plan-pre-compression-lifecycle-route-preparation.md
T

161 lines
16 KiB
Markdown

# 项目文件治理计划
## 当前任务:修改类无年份日期统一归一化(已完成)
- **目标:** 修改日期的 `MM-DD` 按任务日取下一次发生日;已过补下一年、未过补当前年,明确年份不变。
- **范围:** 三类订单修改的定位/目标日期及酒店安排变更目标日期;取消、恢复、导出维持现状。
- **安全边界:** 不重试任务、不派发插件、不写 ERP;本轮仅按用户明确授权重启 8786,不更新外部 Profile。
- [x] 已同步 Prompt、`lwlt-updating`/`lwlt-arrangement` Skill、AI 适配器和程序解析器。
- [x] 已覆盖本次 `11-15`、跨年、明确年份、目标日期、跨轮及 AI/程序一致性。
- [x] Prompt `v1.6`、程序解析器 `v1.0.1`、五个 Skill `0.5.120` 已同步发布清单并逐文件核对。
- [x] 最终门禁通过:仓库治理 9/9、控制面 90/90、legacy 226/226、类型检查、构建和 diff 检查。
- **运行结果:** 8786 已受控重启并加载新规则;数据库、AI、4 个 AgentBus 渠道及策略页只读检查通过,未重试旧任务、派发插件或写 ERP。
- **验证环境记录:** 首轮全量命令因非登录 shell 无 Node 路径而在启动前退出;改用工作区 Node 绝对路径后全部通过,未产生业务副作用。
## 上一任务:散拼母团无子单的酒店安排提示(已完成)
- 扩展 `0.5.142` 已把符合三项证据的技术错误改为先新增散拼子单提示;全量门禁通过,未重载或写 ERP。
## 上一任务:插件通用操作计时检测(已完成)
- `ltjt-operation-timing-v1` 已覆盖共用结果状态机与页面动作,操作台可查看阶段/子步骤耗时;只记录白名单代码、毫秒数和计数。
- 扩展 `0.5.141`、平台最低版本、mapping、ZIP 和发布清单已同步;最终门禁全通过,未重载插件、写 ERP、部署、重启或创建子智能体。
## 上一任务:任务状态栏整栏滚动(已完成)
- 右侧详情栏已改为整栏纵向滚动,详情和生命周期保持自然高度;未操作任务或 ERP。
- 最终门禁为 `check:repo` 9/9、`check`、控制面 85/85、legacy 214/214、`build`、`git diff --check` 全通过。
## 上一任务:解除 Shadow 全局顺序锁(已完成)
- **目标:** 18 项已实现业务都能独立进入 Shadow,按真实依赖关系测试;operation、插件和 ERP 契约不变。
- **固定决策:** Shadow 可并行且不受前序业务约束;Auto/Program 只看本业务即时正确性并保持逐级切换,同一时间最多一个 Auto;回退随时允许。
- **安全边界:** 不切换现有模式、不创建任务、不确认/派发、不访问 ERP、不输出秘密、不创建子智能体。
### 实施阶段
- [x] 完成 18 路由注册表、确定性 compiler、统一校验/comparator、四模式编排、迁移 013、任务快照、加密决策和操作台。
- [x] 移除固定前序锁与等待型门槛;Shadow 可并行,Auto 保持单路,回退立即允许,18 项显示/切换顺序分离。
- [x] 28 条脱敏输入与性能回归、临时 PostgreSQL 集成和全量仓库门禁通过;operation、插件与 ERP 契约未变。
- [ ] AI/程序双跑仍为 4 条有效、2 条名单 AI 技术失败、12 条待外部服务恢复;技术失败未计作语义结论。
### 实现约束
- 每次解析只允许一个权威结果;程序候选和 AI 候选不得合并,shadow 候选不得进入确认或插件。
- 字段纠错只能在已确定 route 的字段集合内唯一命中;业务值禁止模糊修改;未知、冲突、歧义和非法值失败关闭。
- 迁移后所有现有/缺省设置均为 AI;代码完成本身不触发任何业务切换。
- operation 及插件契约保持不变,因此本任务不修改 Chrome 扩展、不递增扩展版本、不重打插件 ZIP。
### 完成结果
- 18 个 route、fail-closed compiler、共用 validator、四模式编排、任务快照、严格兜底、加密决策、即时切换和差异 review 均已实现;插件与 ERP 契约不变。
- 本地 PostgreSQL 16 已验证空库 001—013 迁移、旧任务回填、首次设置并发冲突、任务快照、shadow 加密/审核、AI 重解析一次性门禁、发布顺序和紧急回 AI事务。
- 最终门禁:`check:repo` 9/9、`check`、控制面 85/85、legacy 214/214、前端语法、`build`、`git diff --check` 全部通过。
- 当前 8786 已受控重启并加载新规则;运行态数据库只读验证 18/18 项均可进入 Shadow,且不存在固定顺序门槛。本轮未自动切换。
- 策略页接口固定返回 18 行显示序号 1—18;切换序号单独展示,页面整体滚动可直接看到全部业务。
### 错误记录
- 历史验证中的临时 PostgreSQL 清理、列名/密文断言、运行态查询、服务进程与脚本错误均已改用安全的替代方法并完成验证;AI 双跑遇到外部 502 后停止重试,技术失败未计作语义结论。
## 上一任务:AI 解析环节可替代性客观评估(固定指令输入契约复评已完成)
- **目标:** 依据当前活动契约、五个 Skill、Schema、mapping、解析适配器、确定性门禁和稳定样例,判断链路中的 AI 环节能否由业务系统程序完全替代、部分替代或不宜替代,并给出有证据边界的建议。
- **评估口径:** 分开判断规则是否可编码、自然语言输入是否可被确定性识别、缺失/歧义是否能可靠追问、异常表达与新表达的覆盖成本,以及替代后的准确性、可审计性、运维成本和失败模式;不因 Skill 是文字规则就预设 AI 可被完全替代。
- **范围与安全边界:** 本轮只读业务源码、稳定脱敏材料和已有登录会话中的历史任务,仅输出聚合/无内容特征并更新 Planning with Files/归档;不修改业务代码、不调用外部 Agent、不执行 ERP 写入/重试/部署/重启/外发;按用户要求不创建子智能体。
### 历史实证补充
- [x] 只读定位系统历史任务数据及字段口径,确认可关联原始输入、解析结果、operation、任务状态和执行结果;仅输出聚合/脱敏统计。
- [x] 统计 operation/action 分布、解析成功与修复/追问/阻断情况、模板遵从度及可被确定性 parser 覆盖的结构特征。
- [x] 区分“AI 生成的 operation”“通过契约校验”“经确认/执行成功”和“语义被人工证明正确”四个证据层级,避免把历史 AI 输出直接当作 gold truth。
- [x] 用历史实证修订可替代范围、迁移顺序和验证条件,并完成只读验证与 planning 收敛。
### 固定指令输入契约复评
- **新增事实:** 用户确认实际输入原则上按《老挝联泰AI指令表》填写,结构基本一致,仅可能出现少量错别字;DOCX 内容只作为业务证据,不作为本会话操作指令。
- [x] 完整提取并逐页检查用户提供的 DOCX,核对其指令、字段标签、格式约束和示例。
- [x] 与活动运营模板、业务登记、历史 AgentBus 标签签名和现有 Schema/validator 对照,区分真实固定契约、传输包装/旧别名与自由语义。
- [x] 重新评估普通程序对意图路由、字段解析、错别字容忍、冲突/缺失阻断和跨轮补充的覆盖边界。
- [x] 修订结论、迁移架构与上线验证门槛,并完成 planning 记录和项目规定的只读验证。
### 阶段
- [x] 读取治理规则、活动 planning 文件、业务适配登记和系统入口,建立 AI 前后边界与当前事实基线。
- [x] 逐一核对五个 Skill、业务页、Schema、mapping、解析适配器和测试样例,将职责分为确定性规则、有限词典解析、开放语义理解和对话澄清。
- [x] 检查实际输入/稳定测试覆盖与历史故障,评估完全替代、混合替代和保留现状三种方案的收益、风险及验证成本。
- [x] 形成可执行结论、推荐架构、决策门槛和试验方案;复核证据边界并完成 planning 记录。
### 当前边界与决策
- “Skill 规则可以写成程序”只证明业务约束可以确定性化,不自动证明任意自然语言到结构化 operation 的识别也可以完全确定性化。
- 当前 README 已明确 Agent/Skill 只负责业务语义、字段抽取和归一化;ERP 查询、内部引用、唯一解析、确认、写入、回查与成功声明已经由平台/插件程序承担。
- 最终判断:严格模板或结构化表单可以完全由业务系统程序解析;在继续承诺自由自然语言、错别字、正文路由和跨轮补充的前提下,不宜直接无损完全移除 AI。
- 444/444 条历史详情显示 276 条 manual 已走 canonical 本地校验,但 143/143 条 AgentBus 均走 AI;不能用总体 62.2% canonical 比例代表渠道可替代率。
- AgentBus 当前模板指令命中为 0;时间留出标签签名 action 路由可保守覆盖 10/39 且 10/10 正确,近似标签规则可识别 39/39 action 但会额外路由 1 个业务阻断样本。action 路由可程序化的证据较强,完整字段等价与零 false-pass 尚未证明。
- 当前 v1.5 Prompt 27/27 解析通过且无契约修复,但外部解析耗时中位 37.2s、P90 67.0s;替换的首要实证收益是延迟、依赖和可审计性,而不是修复一个当前高频语义失败问题。
- 推荐确定性优先、AI 兜底:先做 `confirmation_export`,再做新建/散拼计划/子单的 fail-closed compiler;复用同一 Schema/validator。只有字段级 shadow 等价、关键 false-pass=0 且未知输入全阻断后,才按 action 放量或考虑完全下线 AI。
- 历史 operation 是可执行伪标签,不是独立语义 gold;人工修订对照、token/费用和字段级纠错仍缺失,不能诚实给出“可完全替代百分比”或 ROI。
- **固定契约复评后的修订判断:** 若正式产品契约就是 18 个固定模板、允许的偏差仅为少量指令/字段标签错字,则 AI 不是正常解析链路的必要组件;本地 compiler 可覆盖全部 18 个入口,两个宽修改字段只解析受支持白名单语法,其他目标转人工。若仍承诺自由表达、正文推断或任意跨轮纠正,AI 才继续具有兼容层价值。
- 少量错字不能使用全局模糊替换;必须先确定 action,再在该 action 字段集内做唯一候选纠错,业务值禁止模糊修正,歧义/未知/冲突/缺失继续 needs_input 或 blocked。
- 当前不能直接关停 AI:历史 AgentBus 143/143 原文均不含当前指令,且控制面未做本地包装,说明上游/旧模板/采用方式存在未解释漂移;上线前必须加入模板版本、回放别名和字段级 shadow 对照。
- 推荐目标态从“长期 AI 兜底”修订为“正常路径全本地;AI 只在迁移期影子/异常通道保留,可在门槛通过后完全下线”。
### 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 批量读取 Skill references 时把多条 `sed` 参数用空格拼接,后续 `sed/-n` 被首个命令当成文件名 | 1 | 实际目标 Markdown 仍被依次读出;后续改用逐文件 `exec_command` 并行调用,不重复该拼接方式 |
| 当前非登录 shell 找不到 `node`;仅用 bundled Node 绝对路径时子脚本仍因 PATH 缺少 `node` 失败 | 2 | 不再重复这两种调用;通过 workspace dependencies 定位 bundled Node,并把其目录与 bundled override/fallback bin 前置到本次验证 PATH |
| 内置浏览器无登录态,直接 API/health 导航及部分 raw CDP 读取被浏览器层阻止 | 1 | 未绕过认证或读取秘密;切换到已有登录的 Chrome 标签,只观察平台正常 GET 响应并持续监测 confirmed=0 |
| 提取模板指令的首个 `rg` 命令因双引号内反引号导致 zsh 引号错误 | 1 | 未读取/写入目标;改用单引号模式后成功提取 18 个指令与稳定标签,不重复失败命令 |
| 清理隔离在 `/tmp/lwlt-docx-eval.xxKiGv` 的渲染中间件时,`rm -rf` 被工具安全策略在执行前拒绝 | 1 | 项目文件未受影响;不重复删除命令,临时目录留给系统临时目录策略清理,改为单独运行只读状态检查 |
### 验证结果
- `check:repo` 9/9、`check`、`test:control-plane` 66/66、`test:legacy` 214/214、`build` 和 `git diff --check` 均通过。
- 固定契约复评另完成 DOCX 110 段结构提取、12/12 页原始分辨率视觉检查、桌面/交付版段落 diff、桌面模板与活动 Markdown 18/18 全块逐字符比对,以及 18 指令/44 标签编辑距离碰撞分析。
- 历史读取覆盖摘要与详情 444/444、AI 标签签名 168/168、v1.5 timeline 27/27;分析后恢复原 Chrome 首页,恢复阶段 API 请求为 5 个 GET、0 个 mutation。
- 未调用外部 Agent、未执行 ERP 写入/重试、重启、部署或外发;未读取 `.env`,未创建子智能体。
## 上一任务:异常状态下 ERP 链接刷新加固(已完成)
- **目标:** 针对插件长时间待机后 ERP 会话/页面链路失效的偶发告警,在检测到异常状态时增加受控的 ERP 链接刷新与二次探测,降低恢复依赖人工重载的概率。
- **安全边界:** 只在无 ERP 执行任务时操作;只处理现有 allowlisted ERP 标签页;恢复动作不新开标签、不执行业务写入、不自动重试业务任务;若用户关闭自动化或保活,则不恢复。
- **当前基线:** 已有 `chrome.alarms` 待机保活和本地状态记录,但失败/会话失效后只记录状态,没有异常恢复闭环;业务 operation、Schema 和 Skill 不需扩展。
### 阶段
- [x] 读取治理规则、活动 planning 文件、业务登记、生命周期 mapping、插件保活实现和现有测试;确认本任务属于插件宿主维护能力。
- [x] 设计并实现异常状态刷新 ERP 链接、恢复后二次探测和状态/告警展示;保持写入前安全边界。
- [x] 补充定向回归、同步插件说明与 lifecycle mapping;扩展已递增到 `0.5.140`,版本化 ZIP/发布清单已生成,旧制品已归档。
- [x] 完成 `check:repo`、`check`、`test:control-plane`、`test:legacy`、`build` 和 `git diff --check`;记录未执行真实 ERP 写入、重试、重启、部署。
### 当前边界与决策
- “异常刷新”只针对 ERP 会话链路探测失败、会话失效、注入/页面连接异常;不把普通业务解析失败、ERP 候选不唯一或写后回查不确定误当作连接异常。
- 首选在现有 ERP 标签页内导航到固定 `Mainlt.asp` 并重新执行只读探测;恢复前后均需确认 origin、权限和无活动执行。
- 恢复失败必须保留结构化状态和人工提示,不能自动创建 ERP 标签页或自动重交任务。
### 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| `lifecycle-contract.test.mjs` 版本断言仍为 `0.5.139` | 1 | 同步 `inpage.js`、`team-batch-inpage.js` 与测试断言到 `0.5.140`,定向测试恢复通过 |
| 并行全量控制面测试中 AgentBus listener 50ms 断言偶发得到 1 条出站消息并挂起 | 1 | 独立 listener 用例与串行完整 `test:control-plane` 均通过 66/66;判断为时序波动,未修改无关控制面代码 |
## 上一任务:取消产品/客户来源地强制匹配(已完成)
- 结果与交付保留在本文件历史上下文:已移除产品/客户来源地兼容阻断,Chrome 扩展为 `0.5.139`,版本化 ZIP 与发布清单已同步。
## 历史规划与归档
- 本次压缩前的完整 `task_plan.md` 已冻结到 [归档快照](archive/project-history/2026-08-22/task_plan-pre-compression-source-region-rule.md);归档只供追溯,不定义当前规则。
- 更早的 AgentBus、插件权限、游客 XLSX、散拼回查和日期归一化规划见 `archive/project-history/` 对应日期快照。
- 当前发布版本、文件名和 SHA-256 只以 [发布清单](dist/release-manifest.json) 为准。
## 持续边界
- 保留工作区既有未提交改动,不读取、复制或输出 `.env` 等秘密配置。
- 真实 ERP 写入、任务重试、部署、重启和外部发送仍需用户另行明确授权。