15 KiB
15 KiB
项目文件治理计划
当前任务:重启控制面并恢复 AgentBus 连接(已完成)
- 目标: 按用户明确授权,优雅重启标准 8786 控制面,使刚出现断线的 AgentBus 渠道重新建立会话并通过稳定性复核。
- 安全边界: 仅重启控制面并做只读进程、健康、数据库和 AgentBus 状态检查;不重载扩展,不创建、确认、重试或派发任务,不访问或写入 ERP,不部署或外发。
阶段
- 确认唯一监听、live/ready 当前状态,并确认在途 task 与
accepted/runningattempt 均为 0。 - 优雅停止当前进程组,并从标准
pnpm run dev入口恢复唯一服务实例。 - 核验数据库、Schema、迁移与 4/4 AgentBus 渠道重连,并观察连接状态保持稳定。
完成结论
- 重启前服务端健康接口已显示 4/4 渠道重新连接,但用户侧刚观察到断线;在途 task 与
accepted/runningattempt 均为 0,因此仍按授权执行干净重启。 - 旧进程组
62152已退出;运行会话管理器随即从标准pnpm run dev入口拉起新进程组66218、服务 PID66228,没有再启动第二份实例,8786 保持唯一监听。 - 新实例 live/ready、数据库、Schema、迁移
014_task_input_attachments均正常;连续 25 秒共 6 次采样均为 AgentBus 总连接与 session ready 正常、4/4 渠道 ready。 - 未创建、确认、重试或派发任务,未重载扩展,未访问或写入 ERP,未部署或外发。
- 重启后门禁通过:仓库治理 9/9、TypeScript、控制面 127/127、legacy 248/248、build 与
git diff --check。
错误记录
- 首批并行门禁附带的一次
/tmp临时健康文件清理被安全策略拒绝,导致该批结果未汇总;该操作与服务、数据库和 AgentBus 无关。跳过清理后完整门禁已重新运行并全部通过。
当前任务:将运行态切换到整团游客信息新版(已完成)
- 目标: 按用户明确授权,优雅重启标准 8786 控制面并重载本地 Chrome 扩展,使 Program parser
v1.0.6、输入契约0.5.123与扩展0.5.157在运行态生效。 - 安全边界: 仅做进程/扩展运行态切换和只读健康、版本检查;不创建、确认、重试或派发任务,不访问 ERP 业务数据,不执行 ERP 写入、部署或外发。
阶段
- 确认 8786 live/ready、数据库/Schema/迁移与 4/4 AgentBus 渠道正常,并确认活动任务和
accepted/running在途 attempt 均为 0。 - 优雅停止旧进程组并从项目标准
pnpm run dev入口启动新控制面。 - 核验 live/ready、唯一监听、解析器/输入契约版本,并重载扩展后确认
0.5.157握手。
错误记录
- 旧监听停止后首次启动命令未显式传入 bundled Node PATH,
pnpm在运行迁移前即因node: command not found退出;没有数据库或任务变更。已改为在启动进程环境中显式设置 bundled Node/fallback PATH。 - 旧标准入口在 TERM 后由其会话管理器自动拉起新进程组
62152;因此第二次手工启动完成迁移检查后在绑定前以EADDRINUSE安全退出。该临时实例的 AgentBus listeners 已自行关闭,in-flight tasks 与 pending replies 均为 0;保留自动拉起的新实例作为唯一标准运行态。 - 收敛记录后的首轮五道门禁由 bundled Node 主进程启动,但其子脚本 PATH 中没有
node,所以均在进入检查/测试前退出;显式加入同一 bundled Node 目录后原样重跑并全部通过。
完成结论
- 标准
pnpm run dev进程组62152、服务 PID62164是 8786 的唯一监听;live/ready、数据库、Schema、迁移014_task_input_attachments与 4/4 AgentBus 渠道均正常。 - 已通过已登录操作台的只读 API 确认
confirmation_export运行在program模式,版本为ltjt-program-parser-v1.0.6,输入契约为business-input-templates-0.5.123。 - 已重载精确匹配的本地“联泰下单助手”扩展;操作台握手为插件
0.5.157/ 最低版本0.5.157/ 兼容,桥接已连接、ERP 会话正常、最近错误为无。诊断字段“ERP 链路恢复”仍显示failed,本轮未扩大授权去访问 ERP 业务页复测。 - 切换前后活动任务、在途 task 与
accepted/runningattempt 均为 0;未创建、补充、确认、重试、删除或派发任务,未访问 ERP 业务数据、执行 ERP 写入、部署或外发。 - 运行态切换后规定门禁再次通过:仓库治理 9/9、TypeScript、控制面 127/127、legacy 248/248、build 与
git diff --check。
当前任务:散拼母团“整团游客信息”导出接入(已完成)
- 目标: 保留统一
confirmation_exportaction,在文件类型:整团游客信息时明确锁定shared_plan,只用母团tid调用orders_Visitor.asp;现有独立团和散拼具体子单“游客名单”继续使用did+tid,不得混淆范围。 - 安全边界: 本轮只修改源码、契约、测试和本地发布物;不访问 ERP,不创建、补充、重试或派发真实任务,不重载扩展、重启、部署或外发。
阶段
- 先补解析、Schema、执行计划和页内导出的失败回归,固定母团
tid-only与子单/独立团did+tid的分流。 - 修改 Program parser、解析态/执行态契约、ERP 唯一解析与导出适配器,并保持母团只允许该窄文件类型。
- 同步运营模板、
lwlt-confirmationSkill、业务登记、mapping、平台校验与版本。 - 重建运营 DOCX、Skill 包、Chrome ZIP 和发布清单,逐文件/逐页核验。
- 运行规定全量门禁并收敛 planning files;运行态切换仍等待另行授权。
已确定的设计
- 历史只读 ERP 证据确认两者共用
/System/Business/orders_Visitor.asp,但散拼母团使用tid,独立团/散拼子单使用did+tid。 - 不新增业务 action;用
existing_refs.kind表达对象范围。shared_plan只对单一visitor-list开放,不把“全部”或依赖子单did的其他文件类型放宽到母团。 - 当前
program_invalid_value属于安全停止,但用户提示应由“不识别文件类型”改为可执行的窄能力或真正的对象定位问题。
错误记录
- 测试先行阶段的四组定向回归均按预期红灯:Program 仍返回
agent_parse_needs_input;Agent/插件 strict gate 仍拒绝shared_plan;执行计划仍固定did+tid;页内 exporter 尚无母团分支。这些红灯证明缺口完整覆盖,不属于环境或测试基础设施故障。 - 核心实现后四组回归中仅一条旧测试仍要求 blocker 包含“母团”;新规则已不再一概禁止母团,但该无类型、未唯一解析的请求仍安全阻断。测试已改为断言真实缺失项,并补充对象范围契约断言。
- bundled Python 运行官方 Skill 校验器时缺少
PyYAML,在生成任何新包前即停止;本机 Python 已确认具备PyYAML 6.0.3,后续用它运行同一个官方校验器。 - 首次组合定向命令有两项非行为性失败:直接用 Node 执行 TypeScript 测试未加载
tsx,以及 lifecycle 中另一个旧位置仍断言平台最低版本0.5.156。前者改用项目规定的--import tsx,后者同步为0.5.157。 - 首次
check:repo为 8/9;唯一失败是治理测试仍固定运营模板版本0.5.122。已同步为新 DOCX 单一源基线0.5.123,其余目录、哈希、包/源码和链接检查均已通过。 - 首次
test:control-plane为 126/127;唯一失败是操作台测试仍固定旧app.js缓存键。已同步为20260828-shared-plan-visitor-export-1;全部业务/解析测试(含新增整团游客信息用例)本轮均已通过。 - 最后一组补充语法检查首次未显式带 bundled Node PATH,因当前非登录 shell 找不到
node而未启动;随后改用 bundled Node 绝对路径重跑,不影响已通过的五道规定门禁。
完成结论
整团游客信息现在确定性解析为confirmation_export / shared_plan / visitor-list;母团唯一解析后只生成orders_Visitor.asp?tid=<tid>,且解析态、执行态、插件门禁和页内 exporter 都拒绝其他类型、混合范围及任何子单did/ddid。普通“游客名单”的独立团/具体子单did+tid路径未改变。- 发布基线已推进为扩展
0.5.157、Program parserv1.0.6、输入契约/DOCX0.5.123、五 Skill0.5.125。扩展 ZIP SHA-256 为872640668c52cf1ef0135ff51ec33e3c1f5dee304434fbb58ceee4cb3518fcd7;DOCX 12/12 页视觉检查通过,Skill 与扩展包均逐文件匹配源码。 - 门禁通过:仓库治理 9/9、TypeScript、控制面 127/127、legacy 248/248、build、JS/JSON/ZIP/Skill、DOCX 与
git diff --check。该任务完成时未访问 ERP、处理历史任务、重载扩展、重启服务、部署或外发;后续运行态切换已按用户另行授权完成,见本文件顶部任务。
当前任务:名单人数超过 ERP 容量时使用业务提示(已完成)
- 目标:
passenger_list_import在 ERP 原生游客位少于名单所需人数时,不再向用户显示passenger_native_*等技术码;明确提示本次名单人数和该订单的 ERP 可录入上限。 - 安全边界: 原技术 blocker 继续保留在技术详情中;仍在父表单保存前失败关闭并保持
no_erp_write=true。不修改或重试历史任务,不访问 ERP,不重载扩展、重启或部署。
阶段
- 先补回归,固定“16 个游客位 / 25 人名单”的业务错误码、中文提示和技术详情保留规则。
- 修改插件错误映射,并同步版本、平台最低版本、mapping、业务登记与发布门槛。
- 生成版本化 ZIP、更新发布清单并运行规定全量门禁。
错误记录
- 新回归先按预期红灯,证明旧后台没有容量业务映射;实现后转绿。一次组合门禁因 PATH 只作用于首条命令而未启动后续 Node,改为在受控 shell 内导出 bundled Node PATH 后完整通过。
完成结论
passenger_native_target_row_count_not_reached:16:25及 DOM 同类码现在归并为erp_passenger_count_limit_exceeded,用户看到“本次名单共 25 人,超过该独立团在 ERP 中最多可录入的 16 人”;原始 blocker 仍在技术详情。- 容量失败仍发生在父表单保存前,保持
no_erp_write=true。扩展、平台最低版本和 mapping 已推进到0.5.156;新 ZIP SHA-256 为9a0d4941728a49a40a8734c560b4dfcb3f5026756ffb46af3f32f38fbbac652a,旧0.5.155ZIP/清单已归档。 - 门禁通过:仓库治理 9/9、TypeScript、控制面 126/126、legacy 246/246、build、JS/JSON/ZIP 与 diff 检查。未处理历史任务、访问 ERP、重载扩展、重启或部署。
当前任务:名单覆盖确认后始终覆写(已完成)
- 目标:
passenger_list_import收到full_replace + confirmed=true后,不再根据 ERP 当前游客值判定“无变化”;附件中所有指定序号都执行原生覆写和父表单保存,ERP 明确成功即完成。 - 安全边界: 未确认时,任一目标序号已占用(包括同值)仍要求覆盖确认;继续保留附件/Program-only、唯一对象、结构、游客与领队写前投影及 ERP 明确成功响应门禁。不处理历史任务,不访问 ERP,不重载扩展或重启服务。
阶段
- 先补失败回归:确认覆盖的同值行必须进入 changed/write 集合;未确认的同值占用行仍要求确认。
- 修改合并计划、版本和业务契约,确认覆盖不再产生
passenger_import_no_changes。 - 扩展、平台最低版本和 mapping 推进到
0.5.155;旧0.5.154ZIP/清单已归档,新 ZIP 已生成。 - 运行规定全量门禁并收敛发布 SHA、进度和完成结论。
错误记录
- 首次补充“未确认同值占用行”回归时,一个多文件补丁因上下文未精确命中而整体未应用;拆成精确小补丁后完成,没有产生部分修改。
- 首轮
check:repo发现根task_plan.md为 17304 字节,超过 16 KiB。已先完整冻结到 2026-08-28 计划快照,再语义压缩本文件;历史未丢失。
完成结论
- 合并计划先区分授权而非“值是否相同”:未确认且目标序号已占用时统一要求覆盖确认;
full_replace + confirmed=true后,全部附件指定序号都进入 changed/write 集合,同值也执行DaoRuDones、写前完整投影和父表单保存。 - 父表单 ERP 明确成功即完成,仍不执行写后逐行名单回查;其他 lifecycle action 的回查规则未改变。
- 当前扩展为
0.5.155,ZIP SHA-256 为3159e6700fcb9aea6d18099c5c84bccf2578de6bceaf3b7e2f369ec44ff66574;0.5.154ZIP 与清单已日期化归档。 - 门禁通过:仓库治理 9/9、TypeScript、控制面 125/125、legacy 245/245、build、JS/JSON/ZIP 与
git diff --check。未处理历史任务、访问 ERP、重载扩展、重启或部署。
最近完成:名单明确成功响应终结与 8786 重启
passenger_list_import在全部写前门禁通过后,只调用一次父表单原生保存;ERP 明确成功即生成passenger_list_explicit_server_success完成凭据,不执行写后逐行回查或自动名单对账。- 控制面只对名单 action 接受上述专用凭据,其他 lifecycle action 仍要求真实 fresh requery。
- 用户授权后,旧 8786 进程组
13643已优雅退出;新标准入口进程组29571、服务 PID29588成为唯一监听,live/ready、数据库、Schema、迁移 014 与 4/4 AgentBus 渠道正常。 - 该次运行态仍是
0.5.154最低版本;本次0.5.155尚未重载扩展或重启服务。
最近有效里程碑
- 两类名单业务固定为 Program-only:先以文字识别业务并等待单个
.xls/.xlsx,附件到齐后才解析;第一行忽略、第二行固定 14 列表头,规范化为 13 列 canonical TSV。 - 独立团 16 行、散拼子单 31 行只是初始合并基线,5000 行是技术上限;未指定行保留,已占用目标行需要覆盖确认。
- 唯一严格
领队备注行生成passenger_list.leader_contact,并在父表单保存前投影到jj_lianxiren/jj_dianhua;多行、缺姓名/电话或结构不一致均失败关闭。 - 当前运营模板单一源为
agent设计规范/templates/business-input-templates.md;运营 DOCX、五 Skill 及其发布物保持各自现有基线,本次只改变 Chrome 执行策略。
相邻待处理项
- AgentBus OSS 附件曾因本机 DNS 返回私网/保留地址而被 SSRF 门禁拒绝;与本次平台手工附件和名单覆写规则独立。后续若处理,应采用受控公有 DNS/主机白名单回退,不能全局放宽私网阻断。
历史与持续边界
- 本次压缩前完整计划见 2026-08-28 快照;更早快照见同目录 README 和
archive/project-history/,均只供追溯,不定义当前规则。 - 当前发布版本、文件名和 SHA-256 只以 发布清单 为准。
- 真实 ERP 写入、任务 mutation、扩展重载、服务重启、部署和外部发送仍需用户另行明确授权。