31 KiB
31 KiB
当前关键发现
2026-08-28 — 名单容量提示(已完成)
- 15:44 日志证明独立团 25 人只物化 16 位,保存前阻断;其余缺行/投影码均为连锁证据。
0.5.156将两类行数码映射为erp_passenger_count_limit_exceeded,主提示含 25/16 和对象类型,原码只留技术详情。- 仍为
no_erp_write=true;未重试历史任务、访问 ERP、重载或重启。
2026-08-28 — 名单确认覆盖必写与明确成功终结(已完成)
- 两次真实运行都已取得父表单 ERP 明确成功响应;ERP 最终 25 行及领队联系人也被独立只读证据确认正确,但 raw HTML 与 hydrated 页面逐行比较先后产生假阴性,说明写后逐行读取不适合作为名单成功门禁。
- 业务负责人确认:
full_replace + confirmed=true就是明确写入授权,插件不得因 ERP 当前值与附件相同而生成passenger_import_no_changes;所有附件指定序号都必须进入原生覆写集合。 - 未确认时,任一目标序号已占用(包括同值)仍要求覆盖确认;确认后继续执行游客与领队完整写前投影,父表单 ERP 明确返回成功即完成,不再写后逐行回查或自动对账。
- 该例外只属于
passenger_list_import。其他生命周期 action 仍必须完成写后回查;名单没有取得明确成功响应时仍不宣称成功、不自动重提。 - 扩展和平台最低版本推进到
0.5.155;历史任务不修改、不回查、不重试,运行态重载仍需用户另行授权。
2026-08-28 — 名单领队联系人严格来源与写入边界(已完成)
- 真实模板只读结构核验确认:第一行是团信息,第二行是完整 14 列表头,共 25 条数据;恰好一行
备注严格为领队且该行姓名、电话齐全。核验未输出或归档个人值。 - 联系人来源必须与正文
data.leader分离:正文领队仍是查单/候选补充事实;只有 canonical TSV 中唯一严格领队行才生成嵌套passenger_list.leader_contact={sequence,name,phone}。 - 解析、Schema、平台和扩展都独立核对 leader_contact 与 TSV 的序号、姓名、电话和备注关系。无标记却携带结构、多标记、缺值、篡改或超长值均在浏览器访问/保存前阻断。
- ERP 目标控件是
jj_lianxiren(联系人/领队人)和jj_dianhua(电话)。sj_lianxiren/sj_dianhua属于接送联系人保护字段,只快照恢复,不接受本次名单领队投影。 - 原生
DaoRuDones可能改变父表单,因此适配器在调用前冻结四字段,游客行合并后先恢复全部快照,再按存在的 leader_contact 覆盖两个目标控件;无标记时四字段保持原状。 - 保存前要求目标两字段和全部游客行精确投影;失败时恢复父表单和游客行。保存后 fresh GET 只回传姓名/电话的脱敏哈希匹配事实,不记录明文。
- 该阶段版本为工作簿规范化器
v1.1.0、Program parserv1.0.5、生命周期契约v2.9、扩展0.5.152、五 Skill0.5.124、运营 DOCX0.5.122。8786 已在用户授权下重启并加载当时控制面源码;后续真实运行已证明名单与领队联系人保存成功,当前扩展由下一节推进至0.5.153。
2026-08-28 — 名单确认覆盖行英文名写前纠正(已完成)
- 用户提供的两次平台时间线证明手工附件上传已生效:同一
.xls均被接受并规范化为 25 行,只走 Program;第一次按设计在第 1、2 行覆盖确认处停止,第二次确认覆盖后到达 ERP 原生解析,但在父表单保存前以passenger_native_projection_mismatch:1.english_name,2.english_name停止,两次均明确no_erp_write=true。 - 只读核对工作簿哈希与运行记录一致;前 24 个英文名均为 ASCII 逗号加空格,第 25 个全角逗号会被生产规范化器转换。因此第 1、2 行不是源格式特例;失败恰好对应原来已占用的覆盖目标行。
- 原生解析失败后控件已恢复,无法再直接读取瞬时旧值;结合失败范围,最强解释是
DaoRuDones覆盖已占用行时没有可靠刷新pinyinxm。实现按防御性方式修复,不把推断冒充 ERP 保存证据。 0.5.151在原生解析后只遍历merge.changed_sequences:把 canonicalNAME按原生规则去空白后写回该行英文名控件;既有电话纠正、未变更行快照恢复、完整写前投影、明确响应和保存后 fresh requery 全部保留。- 平台最低扩展版本、mapping、风险登记、release gate 和缓存键已同步;旧
0.5.150ZIP 归档,新 ZIP SHA-256 为51529ca531f1767b4938292c1f8a637f510efa5df5d28d386711854c5f56495f。 - 定向 lifecycle 52/52;规定全量门禁为仓库治理 9/9、控制面 121/121、legacy 244/244、TypeScript 和 build 全绿。当前源码尚未重载到 Chrome,也没有重试真实任务或触发 ERP 保存。
- 先前 AgentBus OSS 地址被 DNS 私网/保留地址判定拒绝是另一条下载边界问题;本轮平台手工附件成功不等于该 AgentBus 网络问题已修复。
2026-08-27 — 运营指令表示例合并与精简(已完成)
- 桌面 DOCX 是较旧契约上的运营改稿:示例值和删减方向有效,但其中两项名单仍为正文 TSV,不能反向覆盖已完成的 Excel 附件等待与 Program-only 契约。
- 18 项示例已按桌面版更新;散拼子单补回当前必填的
人数:15+1,两项名单改为相同定位信息加 Excel 附件,LLW-261101A-A按用户确认保留。 - 运营表已移除
before_snapshot、内部字段、AI 模式名、OSS、内部 action/映射和回查实现等释义;这些约束仍保留在 Skill、release gate、控制面说明和代码中。 - 当前发布基线为扩展
0.5.150、五 Skill0.5.123、运营 DOCX0.5.121。新版由活动 Markdown 单一源生成,共 12 页,逐页检查无字体或布局缺陷。 - 仓库治理 9/9、TypeScript、控制面 121/121、legacy 244/244、build 和 diff 全绿;运行态、ERP 与外部渠道均未改变。
2026-08-27 — 名单 Excel 附件 Program-only 改造(已完成)
- 用户明确两类名单业务不走 AI,只走 Program parser;功能范围不包含 AI Prompt、AI parser、Shadow 或 Auto 附件解析。
- 当前
business_parser_settings默认 AI 且允许四模式,名单 route 没有硬性 program-only 约束;全局紧急 AI 回退也会覆盖全部 route。实现必须在 route、设置和任务快照边界固定两类名单为 Program,不能只依赖当前数据库配置。 - 样例为旧版二进制 WPS
.xls,单 SheetA1:N27:标题/航班元数据行、14 列表头、25 条名单。年龄与有效期含公式,日期同时有文本与序列值,电话可能是数值,英文姓名出现全角逗号;解析必须按数据处理并转换为 canonical 13 列。 - 14→13 的核心转换为
英文姓名→NAME、护照号码→证件号码、自动补证件类型=护照、签发日期→签发日;年龄忽略。非空身份证号码当前无护照名单目标,必须失败关闭或进入人工确认,不能静默丢弃。 - 当前手工/API 只有文本;AgentBus 类型虽有
attachments,处理函数忽略它且附件-only 帧被拒绝。当前task_artifacts强制 execution-bound,只适合 ERP 输出;OSS 上传为public-read,不能保存护照名单输入。 - 当前 Chrome 路由读取页面现有游客行数作为
expected_passenger_count,operation plan 与planPassengerMerge()都拒绝行数/序号超过该值。样例 25 人用于默认 16 行独立团会被错误阻断,故需把“当前行数”改为合并基线而非业务上限,并以 native import 后实际生成/保存行 fresh requery 为准。 - 既有 partial merge、占用行覆盖确认、未指定行恢复和 canonical TSV 复用价值仍成立;动态扩展必须保留这些保护,不能直接把原始 Excel 交给
DaoRuDones。 - 控制面已有 AES-256-GCM
encryptBytes/decryptBytes,但名单解析完成前只需要内存中的原始工作簿和数据库中的加密 canonical TSV;按数据最小化原则无需持久化原始文件字节。新输入附件表可仅保存 hash/类型/大小、脱敏校验状态和加密规范文本,失败文件只留元数据。 - Fastify body limit 已按
ARTIFACT_MAX_BYTES放大,手工页面可沿用 JSON base64 上传而无需再引入 multipart;服务端仍必须严格解码、核对声明大小/hash,并限制一个名单文件。 - 初始
agent_session_messages可以在任务等待附件期间保持queued;附件到齐后只需原子解锁任务为parse_queued。附件-only 续接不应伪造新的用户正文,claim 时从加密输入附件表读取 canonical TSV 并仅拼给 Program parser。 - 为避免多个 queued turn 的顺序歧义,
awaiting_attachment阶段只接受附件续接;普通文本补充仍提示先发文件。Program 真正运行后如缺订单定位字段,再使用现有awaiting_user_input文本会话。 - AgentBus 入站附件预计沿用
payload.attachments[]的name/content_type/size/url/sha256形态;下载必须 HTTPS、限制重定向/大小、校验 hash,并拒绝本机、私网和保留地址。附件-only 帧须有显式 task_id 或同渠道同会话唯一 waiting task。 - 当前实现已把上述约束落到迁移 014、手工/API、AgentBus、TaskService 和解析 claim:原始工作簿只在内存中存在;数据库只保存附件元数据、校验状态、加密 canonical TSV,解析完成或终止后立即清除规范文本。
- 两个名单 route 的任务快照、设置 mutation、紧急 AI 回退和一次性重解析均受机器注册表的
program_only策略约束;非名单 route 保持原四模式行为。 - Chrome 端以
max(页面当前游客行数, 附件最高序号)扩行并保留未指定行、覆盖确认与 fresh requery;16/31 只保留为独立团/散拼子单初始基线,5000 是唯一行数技术上限。 - 真实模板只读验证结果为表头第 2 行、25 条数据、规范化 13 列;没有把文件名、单元格值或工作簿字节写入活动仓库、日志、fixture 或发布物。
- 名单链路发布时基线为运营 DOCX
0.5.120;当前运营 DOCX 已由后续示例合并与精简任务推进到0.5.121。运行态迁移、扩展重载与真实 ERP 保存仍需另行授权。
2026-08-27 — 历史任务手动与批量删除(已完成)
- 修改前已有
DELETE /api/tasks/:taskId、TaskService.hardDeleteTask()和详情区删除按钮,但/history卡片没有行级删除、复选框或批量服务端契约。 - 新增
POST /api/tasks/bulk-delete,请求为 1–100 个不重复task_ids。服务层在一个事务中按组织和稳定顺序锁定全部目标;任一任务缺失(包括其他组织的不可见目标)即返回task_not_found并整批回滚。 - 单删复用批量事务核心。FK 子记录级联删除,task-scoped
audit_events与outbox_events同事务显式清理;删除前冻结关联附件元数据,提交后通过现有TaskArtifactStore.cleanup()清理 OSS 对象。 - 历史页每张卡片增加复选框和独立删除按钮;工具条支持“选择本页”和删除所选。筛选、重置和翻页清空选择,服务端刷新裁掉当前页外选择。
- 单删和批删共享二次确认。若任务已确认或进入插件流程,会显示涉及数量并声明插件停止只是尽力而为、已经发生的 ERP 写入不会撤回;删除期间相关控件统一锁定。
- 删除成功后清理列表、运行态、详情、overlay 和回执队列等本地缓存,并用当前页面会话 tombstone 阻止在途旧同步短暂恢复已删卡片,再刷新服务端权威分页。
- 并行名单附件 WIP 写入前,仓库治理 9/9、TypeScript、页面语法、历史删除定向回归、完整控制面 99/99、build 和相关 diff 通过;其后历史删除定向复跑仍通过。当前全局门禁另受名单 WIP 的缺失 workbook 源文件、两项动态游客行红灯及扩展源码/ZIP 暂时不同步影响,均不属于删除回归。
- 用户随后明确授权重启;新服务 PID 29562 已成为 8786 唯一监听者,数据库、Schema、迁移 014 和 4/4 AgentBus 渠道均 ready。仅以未认证随机假 ID 探测删除路由,返回 401 而非 404;未删除真实数据、未读取
.env内容、未部署。
2026-08-27 — AgentBus 渠道配置删除(已完成)
- 原渠道目录只有创建、启停、改名和 key 轮换,没有删除 API 或 UI;数据库迁移已经预先定义了硬删除语义:
tasks.channel_id ON DELETE SET NULL保留历史任务,agentbus_deliveries.channel_id ON DELETE CASCADE清理该渠道持久化回执,加密 key 随user_channels行删除。 AgentBusChannelService.delete()现在在组织范围事务内锁定目标、验证存在性、记录agentbus_channel.deleted审计(含关联任务数和移除回执数),再删除配置;其他组织的 UUID 与不存在目标统一返回channel_not_found。DELETE /api/channels/:channelId使用现有管理员 same-origin、会话和 CSRF mutation 门禁;事务成功后由 manager reload 停止旧 listener 并只为仍启用渠道重建连接。- 旧
reload()会把并发期间的新 reload 请求直接合并到旧 Promise,理论上可能以旧渠道快照结束。现在 manager 用reloadRequested循环完整重放并发 mutation,单测证明在途 reload 期间追加请求会执行第二次目录读取。 - 完整旧环境变量仍存在时,
ensureLegacyChannel()会自动重建legacy-env。公开渠道模型因此增加deletable;API 对仍由环境托管的兼容渠道返回channel_managed_by_environment,页面显示禁用的“环境托管”按钮。移除环境配置并重启后,遗留数据库行可正常删除。 - 页面删除前明确二次确认:连接停止、服务端 key 与该渠道全部持久化回执记录(包括未发送回执)移除、历史任务保留、操作不可撤销;成功后本地目录立即移除该行,脚本缓存键更新为
20260827-agentbus-channel-delete-1。 - 定向 61/61、TypeScript、页面语法、完整控制面 99/99 与 build 通过。仓库治理 3 个红灯均来自暂挂人数发布链尚未同步的
0.5.119DOCX、扩展源码 0.5.149/清单 0.5.148 和 Skill 源/0.5.121 包;本次未触碰该发布收敛工作。 - 本轮没有读取
.env、调用真实渠道 API、删除配置、重启或部署。
2026-08-27 — 独立团人数分类解析修复(已完成)
- 根因是 Program parser 把报告值归一化为
8+1占+1不占+1后,四段前置校验仍要求全为纯数字;同时 lifecycle 可执行映射漏了已有标准 targetpax.child_no_bed。 - 报告输入现精确生成成人 8、占床儿童 1、不占床儿童 1、领队 1 四个 action。标签倒序按标签归类;旧三段和旧四/五段纯位置格式保持兼容。
- 双标签格式只允许中间两段恰好各有一次“占/不占”;重复或半标注、坏分隔符、负数/小数、超安全整数和全零继续
program_invalid_value,不 Auto fallback、不生成 operation、不派发插件或写 ERP。 - 只写用户能确定的类别;报告四段不生成
pax.infant=0。需要清零必须明确写“婴儿改为0”,该显式 target 仍按现有宽修改能力进入人工复核。 - ERP 活动字段由 Schema/new-order 路径确认是
ertrenshu。operation plan、平台能力目录和 lifecycle adapter 已加入pax.child_no_bed → ertrenshu,同一表驱动覆盖写前快照、非负校验、原生表单设值和 fresh requery;Schema 结构不变。 - 业务登记、Prompt、更新 Skill/契约、运营模板、mapping、扩展说明和 release gate 已统一为成人/占床儿童/不占床儿童/领队四类,并继续标记 SGL/TWN 与四类人数待授权 ERP 实写复测。
- 当前版本为 Program
v1.0.4、Promptv1.8-independent-headcount-categories、扩展0.5.149、五 Skill0.5.122、运营 DOCX0.5.119;发布清单已登记当前制品和哈希,旧制品日期化归档。 - DOCX 已按 Documents 工作流重建并检查全部 15 页;五个 Skill 通过官方 validator,ZIP/Skill 包与源码逐文件一致。规定门禁最终为仓库治理 9/9、TypeScript、控制面 117/117、legacy 244/244 和 build 全绿。
- 未修改或重试报告任务,未调用 AI、派发插件、访问/写入 ERP、重载扩展、重启服务、部署或外发;运行态加载仍需用户另行授权。
2026-08-27 — 09:32 下单错误已定位并修复为严格双哈希门禁
TASK-20260827013256-D06X1n4为 AgentBus、team_order_create、Program revision 3 / v1.0.3、automatic;解析和客户/产品/人员唯一匹配均通过。- 页内
liveSubmitApproved()在网络前比较受保护字段指纹时阻断:current protected business fields do not match the approved preflight。结果明确记录submit_safety.live_submit_attempted=false、native_request=null、server_response=null、requery=null、side_effects=[];没有向 ERP 发出本次保存请求。 - Chrome 扩展后台的原始证据进一步确定了时间边界:预检调用前表单 protected hash 与被拦截的原生请求 protected hash 都是
5f3d…;SubmitInfoForm()返回后的当前表单则是a5f4…,字段数仍为 822。说明 ERP 原生函数在生成请求时同步规范化了浏览器表单;旧代码只保存调用前 form hash,随后错误地拿它校验调用后 form。 0.5.148保留两套互不替代的批准证据:原生函数返回后的 post-intercept form hash 用于正式动作前的当前表单校验,被拦截的 native request hash 用于正式DoInfoJHAjax 放行校验。两处任一漂移仍在网络前阻断,没有降低哈希强度。- 独立的状态分类缺陷也已修复:页内结果现在明确记录
network_request_attempted;只有实际调用原生 Ajax 才进入写边界。后台对经过严格证据函数确认的网络前阻断回退为 blocked/no-write,未知或断连仍保持 uncertain。 - 控制面只允许在“既有结果与纠正结果均含同一零网络页内证据、执行编号/连接一致、attempt 仍待回查”的条件下把 reconciliation 收敛为 no-write。报告任务已通过该门禁变为
blocked / prewrite_blocked / write_attempted=false / no_erp_write=true / queue_released=true,并同步纠正扩展本地副本;没有自动重试或 ERP 写入。 - 当前源码/发布基线为扩展
0.5.148;运行中的 Chrome 仍是0.5.147,未获单独重载授权,因此新逻辑尚未进入浏览器运行态。
2026-08-27 — 全自动化按钮陈旧显示已修复
- 最新 AgentBus 任务
TASK-20260827011515-VRWFVAc是team_order_create / Program / Program;解析事件固定记录automation_enabled=true、confirmation_mode=automatic,任务随后完成写入与回查。数据库组织开关当前也是 true。 - 因而本次不是 AgentBus 绕过门禁:执行端读取了数据库权威值。页面按钮显示“关闭”来自旧标签页的本地状态;此前开关由受控后台方法改变并重启服务,而页面只在登录/整页加载时读取设置,EventSource 自动重连和既有 30 秒刷新均未同步该值。
syncAutomationSettings()现合并并发读取,并与用户 PUT 切换串行;EventSourceopen、30 秒后台刷新、页面重新可见和窗口聚焦都会重新读取/api/settings/automation。解析策略页的自动化提示也随同重绘。- 页面缓存键更新为
app.js?v=20260827-automation-state-sync-1。8786 的静态服务已直接提供新版 HTML/JS,无需服务重启;已打开的旧页面仍需刷新一次。 - 仓库治理 9/9、TypeScript、控制面 96/96、legacy、build、diff、运行态 ready 和已提供脚本检查全部通过。本轮没有修改组织开关、解析策略或任务,没有重启、调用 AI、派发插件或访问 ERP。
2026-08-27 — 微信信封修复已加载,全自动化已开启
- 用户对“重启 8786”和“开启组织全自动化”两项均明确授权。切换前只读确认
automation_enabled=false,且没有 parse/ERP 在途任务。 - 已通过
TaskService.setAutomationEnabled()的同一事务方法把开关设为 true,并写入organization.automation_enabled审计;未直接绕过控制面审计语义。 - 已优雅停止旧服务 PID
76113,用标准pnpm run dev启动 PID84022。8786 只有一个监听,cwd 为项目根目录;数据库、Schema、迁移 013 与 4/4 AgentBus 渠道 connected/session ready。 - 运行态复核:组织全自动化为 true,18/18 parser route 均为 Program revision 3。未来合法的新手工或 AgentBus 任务会共用 Program 与自动确认安全门禁。
- 报告任务仍保持
awaiting_confirmation / manual / parser AI且未确认;本轮没有重解析、确认、派发、AI 调用或 ERP 访问/写入。
2026-08-27 — AgentBus 微信信封 AI 回退已修复(源码)
- 用户提供的新任务日志证实 AI 在重启后仍被调用。只读定位到
TASK-20260827004712-_PGgTzg:任务来源为 AgentBus,但快照为business_route_id=null、parser_mode=ai、revision 0、AI affinity;parse decision 同样记录 route null/configured AI。与此同时数据库 18/18 route 均仍是 Program revision 3,因此不是策略被切回 AI。 - 加密原文的脱敏结构是
New WeChat message、Conversation:、Text: <业务指令>,后接当前登记字段。旧 resolver 对完整信封 unresolved,因为Conversation/Text不是业务标签;任务在快照阶段按兼容策略安全固化为 AI。 - 146 条 AgentBus 任务的只读聚合中,144 条使用这一严格微信信封,修复前 146/146 unresolved;按已证实信封解包后 142 条命中登记 route、4 条继续 unresolved。没有输出或归档原文值。
- 新
extractAgentBusBusinessText()位于 AgentBus source adapter:仅当首行精确为New WeChat message、第二行非空Conversation:、第三行Text:时,才把Text:同行值与后续行交给 TaskService。近似、缺字段或空正文保持规范化后的原包装。 - 不把传输标签注册为业务字段,也不放宽 Program 对未知语法的失败关闭。解包正文仍使用同一 route resolver、任务级模式快照、parser orchestrator 和 operation validator。
- 报告任务原文用新代码只读离线重放:信封成功解包、route exact=
team_order_create、Program v1.0.3=agent_parse_passed、action=team_order_create、无 fallback。 - 定向 AgentBus/parser 33/33、仓库治理 9/9、TypeScript、完整控制面 96/96、legacy 全量、build 与 diff 均通过。适配器随后已在用户授权重启后进入运行态。
- 没有重试/修改报告任务,没有创建、确认、派发任务,没有调用 AI、访问/写入 ERP、切换解析模式或修改组织自动化开关;未读取
.env内容。
2026-08-27 — 8786 已加载全局解析与自动化修复
- 用户明确授权“重启项目”;结合上轮交付边界,本轮授权目标精确为正式控制面
127.0.0.1:8786,未停止独立 8765 解析适配器或其他本机服务。 - 重启前旧服务 PID
41546、启动器 PID41533,使用标准pnpm run dev;/health/live与/health/ready均正常,数据库、Schema、迁移 013 和 4 个 AgentBus 会话 ready。 - 已向旧服务发送 TERM,并确认端口释放及旧进程树退出;随后以相同标准入口启动。新服务 PID
76113、启动器 PID76096,只有一个 8786 监听,进程 cwd 为/Users/inmanx/Documents/lwltAPI。 - 新实例
/health/ready返回ok=true,数据库与 Schema ready,必需迁移为013_business_parser_modes,4/4 AgentBus 渠道 connected 且 session ready。 - 正式页面已实际提供 cache key
app.js?v=20260826-global-parser-automation-1;获取到的脚本包含“所有来源的新任务解析通过后”文案,证明本次全局解析/自动化源码已由运行服务加载。 - 重启记录同步后,仓库治理 9/9、TypeScript、控制面 95/95、legacy 全量、build 与
git diff --check均通过。首次并行门禁留下一个无输出的 AgentBus 测试子进程,已终止并用 AgentBus 11/11、控制面串行 95/95 明确复证;不属于运行服务故障。 - 本轮只执行受控重启和只读健康检查;没有读取
.env内容,没有创建/确认/重试任务、调用 AI、派发插件、访问/写入 ERP、修改 route 模式或组织全自动化开关。
2026-08-26 — 解析策略与全自动化全局生效(已完成)
已证实的根因
- 用户观察到手工输入会遵循解析策略,而 AgentBus 仍走 AI。调查必须拆成两层:route/mode 快照,以及解析通过后的自动确认/执行。
- ParserOrchestrator.parse() 本身不检查任务来源,只读取任务快照中的 route_id、configured_mode 和 engine_affinity;AI / Shadow / Auto / Program 四模式没有 AgentBus 专用旁路。
- createTask() 与 ingestMessage() 创建新任务时都调用同一个 resolveParserModeSnapshot(),写入同一组 parser 字段;AgentBus listener 也把原样 payload.text、配置组织 ID 和 source=agentbus 交给同一 TaskService 与 parse queue。已排除 AgentBus INSERT 或 listener 直接硬编码 AI。
- 实际来源偏差发生在快照之前:旧 resolver 只看原始文本首个非空行。未识别就固化为 route_id=null / mode=ai / engine_affinity=ai。手工模板首行通常是当前指令;历史 AgentBus 文本 143/143 没有当前指令行、141 条带普通包装且后续字段高度结构化,因此表现为渠道始终走 AI。
- 组织全自动化则有直接来源特判:shouldAutomaticallyConfirm() 同时要求 source=agentbus。这使手工任务即使开关开启也永远保留人工确认,与用户要求的全局语义冲突。
- 迁移 013 把旧任务固化为 AI affinity 只是历史保护,不解释新任务,也不应被本次修复回写;全局化只影响未来新任务/新会话。
当前实现与安全边界
- 全消息 route resolver 现在对手工与 AgentBus 共用:
- 任意行存在唯一已登记指令(含登记别名或唯一一字符纠错)即可确定 route/mode 快照;
- 没有指令时,字段签名必须至少包含两个不同标签,所有标签都能在候选 route 中唯一解析,并满足该 route 的定位/业务必填标签,最终只能剩一个候选;
- 多 route、未知标签、不完整签名、两类名单对象以及无恢复状态的取消/恢复等天然歧义保持 unresolved/ambiguous,不猜测。
- 单号替代客户+日期的既有业务规则继续用于签名必填判断;order_update_shared_plan 的完整单号仍可替代出发日期。没有新增业务字段或 ERP 引用。
- 全消息中的嵌入指令只决定 route 快照;Program parser 不静默删除未知前置自然语言。额外包装仍返回 program_unsupported_syntax,Program 下失败关闭,Auto 只按既有技术 allowlist 整体回退 AI。
- 字段签名只为“已经确定是新任务”的输入选 route,不改变等待补充会话的归属。detectBusinessDirective() 仍只把明确业务指令当作新动作,避免完整字段补充被拆成新任务。
- 组织全自动化现在只依赖 needsInput=false、blocked=false 和组织开关;手工与 AgentBus 的合法解析结果使用同一自动确认路径。缺资料、阻断、歧义、插件失败和 ERP 不确定仍停止。
- 来源仍保留在任务信封中用于 UI、渠道 accepted/result 和审计,但不再覆盖 parser 或 confirmation mode。
- operation Schema、ERP mapping、Chrome 扩展写前门禁、单次提交与 fresh requery 均未改变;本次不需要扩展版本或 ZIP。
测试与性能
- 新回归先准确暴露 3 个缺口:嵌入指令无法路由、完整字段签名无法路由、manual automation 被拒绝。
- 回归现固定:
- 嵌入唯一指令能拿到 route,但未知包装仍失败关闭;
- 无指令且完整唯一的登记字段签名可 Program 解析;
- 歧义/单标签不路由;
- 多动作仍返回 program_multiple_actions;
- manual 与 AgentBus 在组织开关开启时都自动确认,缺资料/阻断/开关关闭仍不自动;
- 两个新任务入口各调用同一个模式快照函数,AgentBus listener 不丢来源或回执路由。
- 全消息初版对 500 行名单逐行计算编辑距离,虽未超 250ms P95 门槛但墙钟约 848ms。现在按登记指令长度 ±1 过滤候选行,字段签名最多检查 64 个标签;同一性能测试墙钟约 22—29ms。
- 页面 app.js 语法及 parser/control-plane/AgentBus 定向套件 79/79 已通过;仓库治理 9/9、TypeScript 检查、完整控制面 95/95、legacy 全量、build 和
git diff --check也全部通过。 - 确定性 parser 版本已递增为 ltjt-program-parser-v1.0.3,gold corpus 已加入来源中性字段签名和包装失败关闭样例。
文档与版本同步
- 根 README、控制面 README、设计入口、业务登记、操作台开关提示和生命周期测试说明已统一为“所有来源”;页面 app cache key 已更新。
- 运营输入合同仍推荐首行业务指令。曾短暂修改模板说明,复核治理规则后已撤回;活动 Markdown SHA-256 恢复为发布清单登记的 45b3893e86959d86235ebfc8b34cec4be519624b245ce188e6c52efb61404443,无需重建 DOCX。
- 当前脱敏 corpus 没有未登记历史 AgentBus 旧标签真值;v1.0.3 只对当前登记指令/标签做保守兼容。未登记旧标签不会被猜测为 Program 成功。
当前发布与执行边界
- 当前 Chrome 扩展/制品基线为 0.5.148;本轮新增预检后 form/native request 双哈希与网络前零写分类修复。8786 静态页面已指向该最低版本,但运行中的 Chrome 扩展仍为 0.5.147,需用户另行授权重载。
- 五个业务 Skill 为 0.5.121,Agent Prompt 为 ltjt-agent-prompt-v1.7-lifecycle-date-rollover;当前控制面程序解析器随本次源码变更为 ltjt-program-parser-v1.0.3。
- 18 项运行态曾核验全部为 Program、revision 3,组织全自动化当时关闭;本轮不读取秘密或管理员数据,不假定当前数据库状态未变,也不会自动切换设置。
- 无年份月日规则:新建、三类修改、酒店安排变更及取消/恢复按任务日期取下一次发生日;明确年份保持不变,名单等完整年份契约未放宽。
- 生命周期仍要求精确对象/引用、唯一状态、页面身份、ownership、保存前停止、明确服务端响应和 fresh requery;不确定写入不得自动重试。
- 散拼母团无子单提示只有 resolved kind、ERP 明确无子单数据、提交入口缺失三项同时成立才触发。
安全、验证与归档
- 本轮没有创建、确认、重试或派发真实任务,没有调用真实 AI,没有访问/写入 ERP,没有读取 .env,没有重载扩展、重启 8786、部署或外发。
- 当前 Codex 任务没有附加运行服务的 app terminal;未改用进程环境或秘密补证。
- 活动服务未在本轮重启,因此源码修复要在用户另行授权重启 8786 后才进入运行态;本轮也未改变任何 route 模式或组织全自动化开关。
- 本次压缩前的完整发现已按相同 SHA-256 冻结到 全局解析/自动化 findings 快照;此前完整生命周期与解析研究见同日及 2026-08-25 的 archive/project-history/。归档只供追溯,不定义当前规则。