224 lines
28 KiB
Markdown
224 lines
28 KiB
Markdown
# 项目进度
|
||
|
||
## 2026-08-24 — ERP 异常状态链接刷新加固(已完成)
|
||
|
||
- 已按治理规则读取 README、活动 planning 文件并运行 `git status --short`;工作区存在大量既有改动,均保留不回退。
|
||
- 已通过 `business-adaptation-registry.md` 确认本轮属于插件宿主维护能力;已核对 lifecycle mapping、`background.js`、`business-bridge.js`、popup 和 `tools/erp-session-keepalive.test.mjs`。
|
||
- 已确认当前保活只做定时只读探测:异常后不刷新现有 ERP 链接,且没有“恢复后二次探测”的状态闭环;下一步实现受控恢复并补回归。
|
||
- 已实现异常恢复单飞锁、2 分钟冷却、现有 allowlisted ERP 标签页绕缓存刷新、加载完成后的只读复测,以及恢复状态持久化;执行中任务、关闭开关、无现有标签页和权限异常均保持跳过/失败关闭。
|
||
- 平台状态新增 ERP 会话和链接恢复告警;异常或恢复中不领取新任务,业务 operation/Schema/Skill 未扩展。
|
||
- 定向验证:background/popup/platform/inpage/team-batch 语法通过;保活回归 4/4、生命周期契约 47/47;已生成 `dist/ltjt-order-assistant-0.5.140.zip`,SHA-256 为 `5d2eceb77a337849bd20bc3e03dea4c86b617c789dd196b8a47bbb33c0da0338`,旧包已归档。
|
||
- 完整门禁通过:`check:repo` 9/9、`check`、串行 `test:control-plane` 66/66、`test:legacy` 214/214、`build`、`git diff --check`;并行首轮控制面测试的 50ms listener 断言波动已通过串行复跑确认不是本次改动回归。
|
||
- 本轮未执行真实 ERP 写入、任务重试、重启、部署或外部发送;当前未提交改动及其他既有工作区改动均保留。
|
||
|
||
## 2026-08-22 — 取消产品/客户来源地强制匹配(已完成)
|
||
|
||
- 已从用户日志确认阻断来自 `product_customer_source_region`,产品“贵阳八天”与客户来源信息不一致;任务在 ERP 写入前停止。
|
||
- 已移除散拼子单、散拼母团可选客户、独立团单/批量下单的产品/客户来源地兼容阻断,并移除产品参与客户候选消歧;产品和客户仍分别要求唯一 ERP 候选,客户自身来源词 fallback 保留。
|
||
- 已同步业务页、mapping、生命周期夹具、扩展说明、控制面测试和静态契约;扩展/平台/mapping 版本为 `0.5.139`,旧 ZIP 已归档,新 ZIP 哈希见 `findings.md`。
|
||
- 定向语法、产品/客户解析、生命周期契约和 AgentBus 测试通过;完整验证 `check:repo` 9/9、`check`、控制面 66/66、legacy 213/213、`build`、`git diff --check` 全部通过。未重试任务、未写 ERP、未重启、未部署、未外发。
|
||
|
||
## 2026-08-20 — AgentBus 通讯测试(已完成)
|
||
|
||
- 面板 PID `74544` 仍监听 `127.0.0.1:8786`;`/health/ready`、`/api/status` 通过,数据库、Schema、迁移和 4 个 AgentBus 渠道均 `connected=true`、`session_ready=true`。
|
||
- 重启后日志确认 4 次 WebSocket 握手、4 次 `session.ready`、1 次入站消息受理、2 次出站回执发送;无 `socket_close` 或本地出站失败。未主动发送新的测试消息。
|
||
- 上游返回 2 个 `type=error` 帧,当前监听器按协议将非 `event` 帧忽略;不影响连接状态,但如需确认远端渠道最终收件,还应结合 AgentBus 服务端回执核对。
|
||
|
||
## 2026-08-20 — ERP 会话待机保活(已完成)
|
||
|
||
- 已确认当前扩展只有任务执行期间保活;已按业务登记、`lwlt-confirmation` Skill/契约、生命周期 mapping 和现有宿主实现核对,待机保活属于插件维护能力,不属于业务 operation。
|
||
- 已实现 `chrome.alarms` 定时调度:首次约 1 分钟、之后每 5 分钟;仅对现存 allowlisted ERP 标签页发起带 Cookie 的 `GET /System/Mainlt.asp`,不刷新页面、不新开标签、不执行 ERP 写入。
|
||
- 已增加执行中跳过、automation/独立保活开关、登录/权限响应识别、本地最近状态记录、桥接回传和 popup 状态展示;浏览器/系统休眠延迟属于明确边界。
|
||
- 定向语法与回归已通过:background/business-bridge/popup `node --check`,ERP 保活测试 3/3,生命周期契约 50/50;已生成 `dist/ltjt-order-assistant-0.5.138.zip`,SHA-256 为 `751dfe6022d61c7388c602089c703b88a9bfeebf67f81edacea1555545d7bcd0`。
|
||
- 项目规定验证通过:`check:repo` 9/9、`check`、控制面 66/66、legacy 218/218、`build`、`git diff --check`;未进行真实 ERP 登录/写入、任务重试、外部发送、重启或部署。
|
||
|
||
## 2026-08-19 — AgentBus 无状态消息但任务成功(进行中)
|
||
|
||
- 已读取 README、活动 planning 文件并运行 `git status --short`;既有工作区改动全部保留。
|
||
- 已选择只读诊断范围:AgentBus 契约、`confirmation_export` 业务登记、任务事件、消息路由、渠道 listener、outbox 和回归测试。
|
||
- 已确认对外契约只定义 accepted 与最终 result,不定义 processing;生产数据库渠道先持久化 accepted,再在 accepted 送达且任务终态后入队 result。
|
||
- 已确认成功任务与 AgentBus 回执解耦:手工来源或缺少 `channel_id`/入站 frame 路由时,任务照常可完成但不会写入 AgentBus delivery;连接/`session.ready` 不可用时,delivery 留在 pending/failed 等待重试。
|
||
- 已确认执行结果提交只写任务与内部生命周期事件;AgentBus 的 result 在 listener 后置 flush 中生成,故需同时检查任务终态和 `agentbus_deliveries`/`outbound_*` 日志。
|
||
- 已完成源码、契约、迁移和回归测试核对:processing 不发送;accepted 依赖入站路由与渠道 outbox;result 依赖 accepted 已送达且任务终态。
|
||
- 当前 `/health/ready` 只读检查通过,4 个 AgentBus 渠道均已连接并 session-ready;未取得用户所指历史任务 ID,因此保留历史归因边界。
|
||
- 验证通过:`check:repo` 9/9、`check`、`test:control-plane` 66/66、`test:legacy` 215/215、`build`、`git diff --check`。
|
||
- 本轮未修改业务源码、未重试任务、未发送外部消息、未重启或部署。
|
||
- 用户补发任务后从 `/private/tmp/lwltAPI-dev.stdout.log` 定位到 `TASK-20260819102429-R13bn8w`;accepted/result 均已由控制面写出并收到 AgentBus server 的 accepted/delivered 回执,未见本地发送错误。
|
||
- 诊断结论更新:问题不在任务执行成功与否,也不在控制面 outbox/WS 发出阶段;需由 AgentBus 网关/微信适配器检查下游展示。未向该下游主动发送测试消息。
|
||
|
||
## 2026-08-19 — confirmation_export Chrome host 权限阻断(已完成)
|
||
|
||
- 已确认两份日志均为同一主机权限失败:外部解析和 operation 契约成功,浏览器执行阻断,`no_erp_write=true`。
|
||
- 已在 `background.js` 增加 host permission 前检、批准 ERP origin 复核、同源导航竞态重试和 fail-closed 诊断码;`readErpSessionStatus()` 会暴露 `host_permission_granted`,平台页面会显示并据此阻止新的 handoff。
|
||
- 已新增生命周期静态回归,覆盖 manifest host、注入封装、错误码和平台权限门禁;定向语法检查、operation plan 40/40、生命周期契约 47/47 通过。
|
||
- 扩展已递增到 `0.5.137`,同步 `inpage.js`、`team-batch-inpage.js`、平台最低版本、mapping、README 和版本断言;已生成 ZIP/发布清单。
|
||
- 已将旧 `0.5.136` ZIP 归档,生成 `dist/ltjt-order-assistant-0.5.137.zip`,SHA-256 为 `6c00c6e8240fad80bc8fbe8e932dfaf22ad32e494c957717c2d7537785f09fd5`;`check:repo` 9/9 确认发布清单、版本、哈希和扩展源码逐文件一致。
|
||
- 完整验证通过:`check`、控制面 66/66、legacy 215/215、`build`、`git diff --check`;定向 operation plan 40/40、生命周期契约 47/47。
|
||
- 本轮没有重试用户任务、写入 ERP、发送外部消息、重启或部署;由于固定 ERP URL 的只读网络探测超时,未宣称 live 浏览器复测成功。
|
||
|
||
## 2026-08-18 — visitor-list XLSX 转换失败排查(进行中)
|
||
|
||
- 用户确认继续排查并修复附件日志中的 `visitor_xlsx_conversion_failed:conversion_failed`。
|
||
- 已确认 Agent 解析成功、ERP 只读读取发生且 `no_erp_write=true`;最终任务被阻断,原始 XLS 未向 AgentBus 外发。
|
||
- 下一步:用脱敏 HTML-in-XLS fixture 复核转换器和运行环境,定位具体失败点后补修复与回归验证。
|
||
- 首次复现脚本因 Node 24 的 ESM/CommonJS 混用在转换前退出,已记录;下一次改用纯 ESM 脚本。
|
||
- 用当前 bundled `soffice` 重跑后复现真实失败:HTML 输入按 Writer/Web 加载,Calc XLSX 导出触发 `SIGABRT`;下一步比较保留 `.xls` 导入与中间格式路径。
|
||
- 已确认保留 `.xls` 扩展名即可让 LibreOffice 按 Calc 文档导入并成功输出真实 XLSX;`convertDocumentToXlsx()` 已修正,定向转换器测试 6/6 通过,真实 bundled LibreOffice fixture 生成 6,114 字节 ZIP/XLSX。
|
||
- 完整门禁通过:`check:repo` 9/9、类型检查、控制面 66/66、legacy 214/214、build、`git diff --check`;随后已优雅重启面板,新实例 PID `24717`,`/health/live` 与 `/health/ready` 通过,4 个 AgentBus 渠道均 `connected=true`、`session_ready=true`。未触发 ERP 重试或写入。
|
||
|
||
## 2026-08-18 — 散拼母团创建写后回查假阴性修复(已完成)
|
||
|
||
- 用户已确认本次 2027 年计划实际创建成功,并明确要求开始修复。
|
||
- 已定位确定性恢复缺口:完整返回团号时即使精确列表回查全空,也不会进入按日期兜底;精确查询还未显式清空其他列表筛选。
|
||
- 实施边界为纯写后只读恢复:清空筛选、有限延迟重试、失败即按日期兜底;不执行真实 ERP 写入、任务重试、重启或部署。
|
||
- 已在 `split-plan-reconciliation.js` 增加完整筛选值构造、返回团号有限重查、恢复触发判定和回查行合并纯函数;尚未接入页面执行函数。
|
||
- 已接入 `createSplitParentLive()`:精确团号查询显式清空非目标筛选并按 `0/750/2000ms` 有限重查;任一团号持续未命中、响应异常、数量不符或事实探针启用时均进入逐日期兜底。恢复路径只调用列表查询,不再次调用保存。
|
||
- 已补充纯函数行为测试和生命周期静态门禁,覆盖首次全空、第二次可见、完整团号仍需兜底、回查行优先合并,以及创建函数只保留一次保存捕获调用。
|
||
- 定向测试通过:`tools/split-plan-reconciliation.test.mjs` 14/14,生命周期回查门禁 1/1;两个修改后的插件脚本语法检查通过。
|
||
- 扩展源码、manifest、平台最低版本、生命周期 mapping、散拼计划 mapping、README 与版本断言已同步递增到 `0.5.135`;版本化 ZIP 和发布清单待生成。
|
||
- 已核对旧 `0.5.134` ZIP 的 SHA-256 与当前发布清单一致,并将其移动到 `archive/releases/2026-08-18/`;可从归档恢复。
|
||
- 首次打包因相对路径多退一级而未创建任何 ZIP;已记录错误,下一次使用扩展目录到项目 `dist/` 的正确 `../../dist` 路径。
|
||
- 已生成并逐文件核对 `dist/ltjt-order-assistant-0.5.135.zip`,压缩测试无错误,SHA-256 为 `9f49f5529083cb1cc497bfc52c56d0142076394c034552fcdd77e34e70ce7f14`;发布清单已同步。
|
||
- `check:repo` 9/9 通过,确认发布清单哈希、版本化 ZIP 与当前扩展源码逐文件一致。
|
||
- 完整验证首次运行:`check:repo` 与 `check` 通过;控制面 60/61,唯一失败为当前工作区的游客名单 `.xlsx` 转换测试桩未生成输出,后续 legacy/build 因 `set -e` 尚未运行。本次回查相关定向测试不受影响。
|
||
- 单独继续验证时 legacy 213/214;唯一失败是本次版本递增遗漏的一处转义正则仍断言 `0.5.134`。构建因 `set -e` 尚未执行,待修正版本断言后重跑。
|
||
- 已修正全部版本断言并重跑:legacy 214/214、build、`git diff --check` 通过。本次散拼回查修复验证完成。
|
||
- 控制面保持 60/61:唯一失败为本任务开始前已有的游客 XLSX 并行改动测试桩只生成 PDF、而当前转换器要求 XLSX;为避免越权改变未确认的游客交付策略,本轮保留该既有改动并明确记录。
|
||
- 最终复核中 `check:repo` 9/9 与 `git diff --check` 已通过;后续哈希命令因子 shell 未继承 bundled Node PATH 中止,改用绝对 Node 路径补跑。
|
||
- 使用 bundled Node 绝对路径补跑哈希复核通过:ZIP 与发布清单均为 `9f49f5529083cb1cc497bfc52c56d0142076394c034552fcdd77e34e70ce7f14`;最终 `git diff --check` 通过。
|
||
- 用户明确授权后已重启控制面:旧服务进程组优雅退出,自动恢复出的新实例 PID 4554 独占 `127.0.0.1:8786`;live/ready、数据库、Schema、迁移与 4 个 AgentBus 渠道均正常。竞争拉起实例因端口占用安全退出,未触发任何 ERP 任务重试。
|
||
|
||
## 2026-08-18 — visitor-list AgentBus XLSX 交付(已完成)
|
||
|
||
- 已确认 ERP `Visitor.xls` 是 HTML-in-XLS 伪 Excel:桌面 Excel 可兼容打开,手机/微信通常不支持;插件、控制面和 OSS 均保持源字节,未发现传输损坏。
|
||
- 用户确认“原始 `.xls` 保留在平台归档 + 生成真实 `.xlsx`”,并明确 AgentBus 返回 `.xlsx`。
|
||
- `document-converter.ts` 新增真实 XLSX 转换和 ZIP magic/大小校验;`task-service.ts` 为 visitor-list 保存源 XLS 与派生 XLSX,其他类型继续 PDF/源文件回退。
|
||
- AgentBus 直连、耐久 outbox 和统一用户回执均按 `agentbus_visible` 过滤,转换失败 fail-closed,不回传原始 XLS。
|
||
- 已同步 Skill、输出契约、AgentBus 契约、Schema、mapping、平台/扩展提示、测试夹具和运营模板;未写入 ERP、未重试、未重启或部署。
|
||
- 表格结构已通过 artifact-tool 导入/检查/渲染验证;定向控制面回归 66/66 通过。
|
||
- 最终门禁已通过:`check:repo` 9/9、`check`、`test:control-plane` 66/66、`test:legacy` 214/214、`build`、`git diff --check`;Skill 校验通过,运营 DOCX 15 页渲染通过。
|
||
|
||
## 2026-08-18 — 三次团队文件导出同错诊断(已完成)
|
||
|
||
- 用户指出同一导出模块包含多个内容;已查看截图并转入逐类型只读核查,本轮不实施原文件策略。
|
||
- 截图可见 9 个 ERP 导出按钮;契约定义 10 种 canonical type,将继续对照路由、文件名/MIME 和历史源文件证据。
|
||
- 已确认 10 种导出内容共用一个 `confirmation_export` action;截图中的 `JOB Order`/游客信息/大交通预订单与契约中的中文名称存在同义命名。
|
||
- 已读取 `exportConfirmationSources()`:10 种类型各自请求 ERP 原生 URL,保留原响应元数据,插件固定标记 `converted=false`;待继续从历史证据确认各类型的实际文件扩展名。
|
||
- 已读取历史全类型源读取证据:10 种类型的原生响应包含 Word 附件、Excel/HTML 响应和 HTML 打印页,四轮均为 10/10 HTTP 200;归档未保留全部文件名,但保留了字节/SHA-256。
|
||
- 已确认插件内 `normalizeExportType` 不直接映射截图中的部分中文/界面别名,下一步核对外部 Agent 解析层与测试覆盖,避免把“按钮名称”误判为 canonical type。
|
||
- 已核对外部 Agent 校验与测试:`confirmation.type`/`export_types` 只接受 10 个 canonical 字符串,现有 Skill/测试未直接覆盖截图的 `JOB Order`、`游客信息`、`大交通预订单` 文案;该别名覆盖缺口与 PDF/原文件策略相互独立。
|
||
- 已定位并记录逐类型 ERP 路由、源响应元数据和历史格式矩阵;同时确认控制面 `prepareExecutionArtifacts()` 才是全类型统一转 PDF 的实际调用点。
|
||
- 已读取本轮 920 行日志,确认 action 为 `confirmation_export`,ERP `.xls` 源文件被转为 `.pdf` 后成功交付。
|
||
- 已确认用户的新要求是仅 `visitor-list`(游客信息)保留 ERP 源 XLS 并生成真实 XLSX,AgentBus/微信只交付 XLSX,其余 9 类继续转 PDF;已完成实现与回归。
|
||
- 已定位最小实现点:控制面 `prepareExecutionArtifacts()` 按 artifact type 选择转换;转换器、插件源读取、存储和下载链路均保留。
|
||
- 已完成控制面双文件交付:`visitor-list` 保留源 XLS 归档并生成真实 XLSX,其他类型沿用 PDF/失败回退;同步契约、过滤和测试均已验证。
|
||
- 已同步控制面、Skill、业务登记、输出契约、mapping、Schema、插件提示、发布门槛和测试;选择性转换回归测试通过,运营 DOCX 已重建并完成 15 页渲染检查。
|
||
- 首轮全量验证发现的两个同步项已收敛:0.5.134 扩展 ZIP 已按当前源码重打并逐文件核对,operation-plans 提示断言已同步;控制面测试 61/61 已通过。
|
||
- 最终验证通过:`check:repo` 9/9、`check`、控制面 61/61、legacy 208/208、`build`、`git diff --check`;`lwlt-confirmation` Skill 官方校验通过,DOCX 15 页渲染检查通过。未执行 ERP 写入、重试、重启或部署。
|
||
- 新增诊断与实施已完成:`Visitor.xls` 是 ERP 返回的 HTML-in-XLS 伪 Excel,native 分支与 OSS 链路保持原字节;平台现在生成真实 XLSX,移动端/微信通过 AgentBus 只收到 XLSX。
|
||
- 已通过业务登记和 Skill 确认当前 PDF 规则是 action 级全局默认,不是本次 `.xls` 的特例。
|
||
- 已核对 Schema、mapping、插件源文件契约、控制面 artifact 准备/保存、平台下载、AgentBus 附件回传、Skill 包和运营 DOCX 的影响面。
|
||
- 用户已确认共享理解;本轮已修改业务实现并完成本地验证,未部署或重启。
|
||
- 已读取三份日志并确认它们是独立运行但具有相同失败签名。
|
||
- 共同失败发生在 `confirmation_export` 的浏览器来源解析:`row_count=0`、`child_link_count=0`,尽管响应存在 `ddid/tid`;插件按安全门禁阻断。
|
||
- 三次均未写入 ERP;下一步对比各自查询条件和当前适配器实现。
|
||
- 第一份任务已确认前置唯一解析成功,失败集中在随后按母团/日期加载来源页面后的行与子单链接识别。
|
||
- 已通过业务登记定位到 `lwlt-confirmation` / `confirmation_export`,开始核对该业务页、Skill、Schema、mapping 和插件实现。
|
||
- 已完整读取 `lwlt-confirmation` 主 Skill;Agent 侧职责与日志中的成功解析一致,继续检查输入/输出契约及插件二次查询。
|
||
- 已核对输入/输出契约、执行态 Schema 和生命周期 mapping;三份日志里的执行态引用满足契约,故障定位进一步收敛到散拼母团查询响应中的子单叶子行解析。
|
||
- 已读取 `exportConfirmationSources()` 与唯一解析辅助函数:错误中的 `ddid/tid=true` 只是已解析引用兜底;二次查询现场连母团行也为零。正在核对强制“收客中”过滤与母团子单展开逻辑。
|
||
- 已定位历史散拼子单导出证据集,准备对比成功运行的 preflight/查询字段与当前三次失败。
|
||
- 已排除把生成清单的 `ok=true` 误当成 ERP 浏览器成功;继续从 replay state 和证据登记提取真实执行结果。
|
||
- 已确认旧基线存在两轮散拼子单导出真实成功证据(各运行合计 40/40、失败 0);下一步对比当前工作树与旧实现/查询条件,识别回归点。
|
||
- Git 提交历史不足以定位细粒度变更,已改用归档版本化扩展 ZIP 做逐版本函数对比。
|
||
- 0.5.84 已包含当前类型的严格散拼导出二次门禁,排除“0.5.133 最近才引入”这一简单解释;继续查 0.5.81 证据源码及查询状态差异。
|
||
- 已完成 0.5.84/0.5.93/0.5.118/0.5.132/0.5.133 导出函数对比:查询门禁未变,当前根因最高概率为只读导出强制 `收客中` 与目标母团实际状态冲突。
|
||
- 已确认三次都针对同一子单/母团/日期/内部引用;显式 `收客中` 通过原生菜单点击和 AJAX 真正参与查询。三次同错诊断完成,未改业务代码、未重试、未写 ERP。
|
||
- 完整本地验证通过:`check:repo` 9/9、`check`、控制面 60/60、legacy 207/207、`build`;未重启服务或部署。
|
||
- 用户已确认本轮实施:仅移除 `confirmation_export` 散拼子单二次查询的固定“收客中”过滤,继续保留母团/子单/`ddid`/`tid` 唯一核验;不触发 ERP 重试或写入。
|
||
- 已确认当前源码改动点为 `chrome-extension/ltjt-order-assistant/inpage.js` 的 `exportConfirmationSources()`,接下来补回归测试并同步扩展版本与版本化交付物。
|
||
- 已移除该函数对 `S_zhuangtai='收客中'` 的固定赋值;新增回归测试验证导出查询不携带生命周期状态过滤,同时保留母团/子单/`ddid`/`tid` 门禁。
|
||
- 扩展源码、manifest、平台最低版本、mapping 和插件 README 已递增到 `0.5.134`;版本化 ZIP 与 release manifest 待打包后更新哈希。
|
||
- 已生成并校验 `dist/ltjt-order-assistant-0.5.134.zip`,SHA-256 为 `7434d8221f8bf80a432aed64a10c4c2cf46c9160ccef5d97f86173a95102ddea`;旧 `0.5.133` 包移入 `archive/releases/2026-08-18/`,待完成全量验证。
|
||
- 完整验证通过:`check:repo` 9/9、`check`、控制面 60/60、legacy 208/208、`build`;`git diff --check` 通过。首轮直接调用 bundled Node 的 `--run` 因脚本子进程 PATH 缺失失败,显式前置 bundled Node 路径后通过。
|
||
- 最终补跑 `check:repo` 9/9 与 `git diff --check` 仍通过;本轮修复闭环完成,未触发 ERP 写入、重试、重启或部署。
|
||
|
||
## 2026-08-18 — “取消订单”外部解析超时诊断(已完成)
|
||
|
||
- 用户日志显示外部会话创建成功,但 SSE 连接后约 120 秒没有任何事件,最终为 `external_cancelled`;`event_count=0`。
|
||
- 已确认 `agent_returned=false`、未进入插件、未写入 ERP;问题发生在外部解析请求阶段,不是 ERP 订单状态或写入失败。
|
||
- 已核对客户端 abort/timeout 路径,并用 bundled Node 的挂起 SSE 探针复现:单次读流超时因 abort 竞态被归类成 `external_cancelled`。
|
||
- 已确认当前 `order_cancel` 的解析/执行契约只接收单个 `existing_refs.identifier`;用户给出的 3 个单号需要拆成 3 个独立任务,不能拼成一个标识。
|
||
- 本轮未读取 `.env`,未发送外部请求,未修改代码,未执行 ERP 写入;后续若修复错误归类或增加批量取消能力,需用户明确授权。
|
||
|
||
## 2026-08-18 — 散拼计划创建回执不确定诊断(已完成)
|
||
|
||
- 新日志的 SSE 解析正常完成(174 个事件),已进入 `shared_plan_create` 插件执行;不是外部解析超时。
|
||
- ERP 写入请求返回 HTTP 200 和“操作成功,共计新增 3 个团队”,返回团号 `LW-260107A-H`、`LW-260115A-H`、`LW-260126A-I`;已确认跨过 ERP 写入边界。
|
||
- 写后逐团号回查三个均未命中,任务安全地进入 `execution_uncertain` / `reconciliation_pending`,停止且不自动重试;当前不能判定未写入。
|
||
- 已定位当前实现:当返回团号数等于指定日期数且未启用 probe 时,不执行按日期 fallback,可能放大回查假阴性;本轮只诊断,未修改代码。
|
||
- 后续安全动作是先在 ERP 散拼团计划表逐个精确核验三个团号,并核对 2026 年 1 月日期是否符合原意;未核验前不得重新创建。
|
||
- 显式注入 workspace bundled Node PATH 后完成项目验证:`check:repo` 9/9、控制面 60/60、legacy 202/202、build 通过;首次 shell 未找到 `node` 已修正。
|
||
|
||
## 2026-08-18 — 散拼计划日期跨年归一化诊断(待策略确认)
|
||
|
||
- 已确认原始输入没有年份,运行日期为 2026-08-18;用户意图是 2027-01-01 至 2027-01-30,指定 01-07/01-15/01-26。
|
||
- 已确认错误 operation 在外部 Agent 阶段生成了 2026 年日期;插件只消费四位年份,不负责推断或纠正年份。
|
||
- 当前 Skill 与运行时提示不一致:Skill 允许“年份不确定时追问”,但宿主没有强制执行;需要确认是否改为新建业务按下一次发生日自动补年。
|
||
- 未修改代码、未对既有错误计划执行 ERP 变更;策略确认前禁止重试。
|
||
|
||
## 2026-08-18 — 散拼计划日期跨年归一化修复(已完成)
|
||
|
||
- 用户确认:新建业务无年份日期按下一次发生日补年;修改/查询保留既有 ±1 年匹配逻辑。
|
||
- `LianSyn-platform/external-agent-client.mjs` 已增加宿主侧确定性补年:只作用于四类 `lwlt-newbooking` 新建 action;明确年份和生命周期修改/查询 action 不改写;续问时合并原任务历史日期上下文。
|
||
- Agent Prompt、`lwlt-newbooking` Skill 和宿主接入文档已同步到 `ltjt-agent-prompt-v1.5-next-date-rollover` 规则。
|
||
- 定向回归测试 72/72 通过,覆盖 2027-01 跨年、当年未来日期、显式年份、修改不变和补充信息续问。
|
||
- 五个 Skill 已发布为 `0.5.119` 版本,旧 `0.5.118` 制品已移入日期归档,`dist/release-manifest.json` 已同步哈希和版本。
|
||
- 完整验证通过:`check:repo` 9/9、`check`、控制面 60/60、legacy 207/207、`build`;未执行真实 ERP 写入、部署或重试。
|
||
|
||
## 2026-08-18 — PDF 转换内容完整性修复(已完成)
|
||
|
||
- 源 `.doc` 确认为 Word 生成的 HTML;旧 PDF 缺失中文是 LibreOffice 子进程未加载字体配置造成的。
|
||
- 转换器固定使用 `writer_pdf_Export` 分页 PDF 导出,并自动加载显式、系统或随转换器捆绑的 fontconfig;失败继续回退源文件。
|
||
- 修复 Word HTML 宽表在 A4 右侧被裁切:按最大声明宽度动态缩放到可打印区域;实际附件 2 页 A4 的右边框、右栏和正文均完整。
|
||
- 控制面已重启,AgentBus 健康检查通过。
|
||
- 源文件引用的远程图片因当前 DNS 不可达无法获取,未将其误判为可恢复内容。
|
||
|
||
## 2026-08-18 — AgentBus 渠道状态同步修复(已完成)
|
||
|
||
- 修复旧控制面进程停机回写 `disabled` 覆盖新连接的问题。
|
||
- `/api/channels` 优先使用当前 listener 实时状态,启用且已握手的渠道显示 `connected`。
|
||
- 状态回写增加 session epoch 防护;listener 重载/进程关闭不再等同于管理员停用。
|
||
- 控制面测试 59/59、类型检查、build、`git diff --check` 通过。
|
||
- 重启后 3 个启用渠道均为 `enabled=true`、`connected=true`、`session_ready=true`;重复兼容渠道保持停用。
|
||
|
||
## 2026-08-18 — 文件获取统一转 PDF(已完成)
|
||
|
||
- `confirmation_export` 成功获取文件后统一转 PDF;转换失败、超时或无效输出回退源文件。
|
||
- OSS/AgentBus 附件链路保持一致;实际 `.doc` 已验证可生成有效 `.pdf`。
|
||
- 转换器路径已固定到运行环境的 bundled LibreOffice,面板已重启并通过 AgentBus 健康检查。
|
||
|
||
## 2026-08-18 — 外部 Agent 解析契约错误(进行中)
|
||
|
||
- 已读取用户提供日志:SSE 正常完成,但标准解析契约校验拒绝结果;确认没有插件调用和 ERP 写入。
|
||
- 已核对 `normalizeParseResult()`、解析结果 Schema、`lwlt-confirmation` 输入/输出契约和外部 parser prompt;当前阻断规则一致且不应绕过。
|
||
- 当前待确认:外部实际返回的 `status`、`blockers` 内容、`operation` 摘要及已发布 Profile 版本。未读取 `.env`,未发送外部请求,未修改业务代码。
|
||
- 定向解析器测试 50/52 通过;2 个 HTTP 边界用例因沙箱 `listen EPERM` 未执行成功,已记录为环境限制。
|
||
|
||
## 最近已完成里程碑
|
||
|
||
- AgentBus 源文件附件回传、HTTPS OSS URL-only 协议和平台下载入口已接通。
|
||
- 多用户渠道、持久化 accepted/result 回执、插件串行队列和历史任务超时自愈已完成。
|
||
- 历史文件名乱码读取兼容已修复;前端渠道页使用独立 `/channels` 路径。
|
||
|
||
## 验证与边界
|
||
|
||
- 项目规定的 check:repo 9/9、check、control-plane 59/59、legacy 202/202、build 和 git diff --check 均已通过。
|
||
- 本轮未执行 ERP 写入、未发送新的外部业务探测消息;用户既有未提交改动全部保留。
|
||
- 不读取、复制或输出 `.env` 等本地秘密配置内容。
|
||
|
||
## 归档
|
||
|
||
- 本文件压缩前完整快照:[archive/project-history/2026-08-18/progress-pre-compression-agentbus-status.md](archive/project-history/2026-08-18/progress-pre-compression-agentbus-status.md)。
|
||
- 更早历史进度和 findings 快照位于 `archive/project-history/`;归档仅供追溯,当前规则以源码、契约和本文件为准。
|