feat(chrome/server): PDD网页订单遍历与客户端密钥回填Admin(与Agent并存) #316

Open
opened 2026-09-18 14:49:56 +08:00 by ila · 5 comments
Owner

原始需求摘要与当前阶段

  • 来源:2026-09-18 用户需求讨论。手机自动采购后,需遍历 PDD 我的订单,提取地址内 CG 采购编号及订单事实,更新 Admin。Agent 遍历仍有兼容问题,增加电脑 Chrome 插件作为并行入口,不替换、不删除、不影响 Agent 方案。
  • 用户确认:电脑和手机登录同一 PDD 账号;Admin 内 CG 编号唯一;人工开始,默认最近2天;无CG跳过,有CG无订单号报错;无实付金额允许提交且不覆盖旧金额;同CG不同订单号报错、不覆盖。
  • 当前指令仅建工单。状态:待设计/原型审核,禁止直接实施生产代码。

目标/非目标

目标:Chrome 手动发起网页订单遍历,将CG、PDD订单号、下单时间及可选实付金额回填Admin,复用服务端业务逻辑。实付金额仅保存Admin,SYB仅回填PDD订单号。
非目标:不自动下单、支付、取消订单、确认收货;不实现登录/验证码绕过;不替换Agent采集采购及回填;不做后台定时无人值守、多账号自动切换或PDD私有接口逆向;不上传完整地址、姓名、电话、Cookie或网页原始内容。

核验基线与证据

  • 代码基线8821ec9,核验日期2026-09-18,范围为Android订单回填、Server采购路由/回填服务/客户端密钥网关;本结论不是线上版本审计。
  • server/app/goauto/purchase/order_backfill.go:Agent接口按addressSuffix解析任务ID,要求Device Token与设备归属;单批1~50项,requestId为UUID;只允许live任务的order_result_unknown/order_created状态;冲突/订单号占用检查、金额缺失补填、ensureOrderWriteback可复用。
  • server/app/goauto/purchase/router.go:Agent POST /api/agent/v1/purchase-tasks/order-backfill。Admin /syb-order-writeback仅接收任务ID补偿SYB回写,不是网页订单导入接口;/:taskId/resolve-unknown仅用于人工处置且无金额字段。
  • server/app/goauto/clientapi/routes.go、gateway.go:已有客户端密钥认证/授权/审计,但没有采购订单数据回填路由。
  • 已创建订单同号分支目前只补金额,不补缺失下单时间:这是需要在设计审核中明确的小范围差异,不能宣称已有支持。
  • 本地样本pdd_order_list.html、pdd_order_detail.html、pdd_order_detail_expanded.html仅只读核验。展开后正文可提取唯一CG编号、订单号、下单时间和实付金额。样本含真实业务数据,禁止提交Git/Wiki/工单附件;测试必须使用脱敏合成样本。
  • 用户确认列表滚动自动加载,返回列表保留位置。尚未完成自动遍历、跨页稳定性及真实上传验证;浏览器控制连接超时不能作为PDD页面不支持的证据。

前置依赖/并行性/交付单元

  • 复用#237客户端密钥、#306订单金额及既有Agent订单回填、#305 SYB订单号自动回写;与#307及Agent后续修复并存,无需等待Agent遍历修复。
  • Server与插件依赖同一批准契约:先定接口及原型,之后才可按契约并行开发,默认不另拆相互遗漏的工单。
  • 新增chrome-extension/交付单元(目录在设计时确认),Server采购回填与客户端路由/权限目录;Web仅在现有密钥授权目录需要显示回填动作时作必要接入。Android无代码修改。

最小方案(待设计审核)

Chrome端

  1. 使用标准Manifest V3最小结构,不默认引入第三方大型骨架;若选开源模板,审核许可证与维护情况。
  2. 配置Admin Origin与客户端密钥;操作界面包括最近天数(默认2)、开始、停止、统计及逐项错误。运行期间禁止切换目标Admin或密钥,开始时冻结本次配置及时间窗口。
  3. 在用户已登录的PDD网页,串行执行列表识别→安全进入详情→只展开地址/订单信息→读取四项字段→返回原列表→继续滚动加载。订单操作、付款等按钮绝不点击。
  4. 页面脚本只读取DOM并提取CG及必要字段;密钥仅由扩展侧管理,不注入PDD DOM/页面脚本,不读取或上传PDD Cookie;请求只发给用户配置的Admin Origin。最小权限,优先限定PDD域名及按需授权Admin站点,不申请全站权限。
  5. 按订单号去重;滚动以新订单出现判断进展,明确结束/超时/用户停止/登录失效,不能无限循环;具体等待、无进展阈值、MV3后台休眠恢复方式在设计时明确并测试,不把未知当完成。
  6. 最近N天以开始时刻冻结窗口。不得遇到第一条旧订单就假定后续全旧。无已验证排序保证时,继续扫描到可证明末尾或有界上限;触及上限必须显示未完整扫描。下单时间缺失/无效不能误当过期,应报该项问题。
  7. 同CG多个不同订单号须先在本次收集范围内聚合标记冲突,该CG不提交;同CG同号去重。随后分批提交(≤50项)。跨批/历史并发冲突由服务端最终校验。
  8. 服务端失败只重试可重试项,保留提交ID与已确认结果,重复开始不能重复改写订单。停止不回滚已提交项;明确展示已提交/待提交/冲突/跳过/未完整扫描。

Server端

  1. 建议新增薄入口POST /api/client/v1/purchase-tasks/order-backfill,使用现有客户端密钥认证和采购管理模块授权,不使用手机Device Token。
  2. 请求沿用requestId与items[{addressSuffix,pddOrderNo,orderSubmittedAt?,pddOrderAmountCent?}];插件从地址提取规范CG后只提交后缀,不提交完整地址。时间按RFC3339含时区,金额按人民币整数分,不能把实付误读为商品价或推断支付状态。
  3. 抽取共用内部业务逻辑,不复制两套规则;Agent仍强制设备归属检查,客户端入口依据明确授权身份处理,不伪造设备Token或用deviceId=0暗示跳过鉴权。现有客户端审计记录密钥ID和请求ID。
  4. 默认保留live及order_result_unknown/order_created状态边界;失败/执行中/待执行任务返回明确逐项错误,不能按CG存在就改状态。
  5. 同CG同号幂等;不同号冲突不覆盖;同号已被其他任务使用拒绝;可选金额缺失不报错、不清空已有值,已有不同金额按现有警告语义不覆盖。
  6. 设计待确认项:已创建订单同号时是否仅补缺失下单时间,以及已有估算时间是否保留。建议只补空,不静默覆盖已有时间;两入口保持一致,增加回归测试。不得借此扩大任务状态范围。
  7. 成功保存后复用ensureOrderWriteback及#305异步流程;金额仅存Admin,不传SYB。无需插件直接操作SYB。批次部分失败不回滚其他已成功项。
  8. 默认复用现有表,不计划新增数据库迁移;若发现必须迁移、扩大权限或改变安全边界,先记录并取得人工授权。新增客户端回填能力建议沿用采购管理模块中的writeback动作,最终名称/目录展示需设计确认。

设计证据与实施门禁

新增独立用户功能,先制作可访问、版本明确的QuantUX或等效轻量原型,记录链接/App ID/revision、覆盖范围及确认人/时间。
至少覆盖:配置未填/密钥无效或未授权、正常空闲、运行进度、无订单、停止、部分失败、冲突、登录失效、加载超时、未完整扫描、完成结果;设置密钥不出现在截图/日志。用户审核原型及API/授权设计后才能写生产代码。仅建单不代表批准安装扩展、权限写入、真实订单上传、迁移或发布。

验收标准

  • 列表→详情→展开→读取→返回→加载下一批可运行;不修改PDD订单。
  • 四字段准确映射;无CG跳过,有CG无单号报错,可选金额缺失安全跳过。
  • 同CG同号重复无副作用;同CG不同号和跨任务同号冲突可见且不覆盖。
  • 不因首条旧订单提前漏采;终止原因与完整性明确。
  • 插件使用客户端密钥;未授权/已停用密钥拒绝,Agent设备归属校验原样有效。
  • Admin保存订单事实后按既有条件进入SYB队列,实付金额不传SYB。
  • 开始/停止、刷新或后台休眠、超时重试不重复提交已确认项,不无限等待。
  • 不保存原始订单HTML/完整地址或账号凭据,不把密钥暴露给PDD页面。
  • 用户确认原型;合成样本/服务端/插件验证通过,真实端到端另行授权并记录。

验证计划

Server:认证/能力授权、状态边界、CG规范解析、冲突/金额/时间、并发幂等、Agent归属回归、SYB入队测试。
插件:列表与展开详情合成DOM、延迟加载/DOM变化/缺字段/重复页、时间窗口/排序异常/无进展、停止/恢复/重试、密钥隔离;构建与打包。
人工:授权安装扩展后先验证只读采集,再明确授权指定订单数据上传至指定Admin验证端到端;不执行支付。未覆盖项必须明确记录,不把静态HTML可解析当作真机完整验证。

文档影响

实施时更新线上Wiki的Architecture-and-Code-Map、Business-Rules-and-Glossary、Android-Agent-API-Contract(共用回填字段/边界)、Local-Development-and-Verification和Deployment-and-Operations(插件构建安装配置);只更新实际变化页面并在线回读revision,统一一轮sync及sync --check,不直接编辑镜像。新增客户端API契约归入既有权威契约页面,避免第二事实源。

工具说明

本会话未提供Gitea MCP工具,按规则回退Gitea API;凭据从本机安全配置读取,不输出、不写入工单。

## 原始需求摘要与当前阶段 - 来源:2026-09-18 用户需求讨论。手机自动采购后,需遍历 PDD 我的订单,提取地址内 CG 采购编号及订单事实,更新 Admin。Agent 遍历仍有兼容问题,增加电脑 Chrome 插件作为并行入口,不替换、不删除、不影响 Agent 方案。 - 用户确认:电脑和手机登录同一 PDD 账号;Admin 内 CG 编号唯一;人工开始,默认最近2天;无CG跳过,有CG无订单号报错;无实付金额允许提交且不覆盖旧金额;同CG不同订单号报错、不覆盖。 - 当前指令仅建工单。状态:待设计/原型审核,禁止直接实施生产代码。 ## 目标/非目标 目标:Chrome 手动发起网页订单遍历,将CG、PDD订单号、下单时间及可选实付金额回填Admin,复用服务端业务逻辑。实付金额仅保存Admin,SYB仅回填PDD订单号。 非目标:不自动下单、支付、取消订单、确认收货;不实现登录/验证码绕过;不替换Agent采集采购及回填;不做后台定时无人值守、多账号自动切换或PDD私有接口逆向;不上传完整地址、姓名、电话、Cookie或网页原始内容。 ## 核验基线与证据 - 代码基线8821ec9,核验日期2026-09-18,范围为Android订单回填、Server采购路由/回填服务/客户端密钥网关;本结论不是线上版本审计。 - server/app/goauto/purchase/order_backfill.go:Agent接口按addressSuffix解析任务ID,要求Device Token与设备归属;单批1~50项,requestId为UUID;只允许live任务的order_result_unknown/order_created状态;冲突/订单号占用检查、金额缺失补填、ensureOrderWriteback可复用。 - server/app/goauto/purchase/router.go:Agent POST /api/agent/v1/purchase-tasks/order-backfill。Admin /syb-order-writeback仅接收任务ID补偿SYB回写,不是网页订单导入接口;/:taskId/resolve-unknown仅用于人工处置且无金额字段。 - server/app/goauto/clientapi/routes.go、gateway.go:已有客户端密钥认证/授权/审计,但没有采购订单数据回填路由。 - 已创建订单同号分支目前只补金额,不补缺失下单时间:这是需要在设计审核中明确的小范围差异,不能宣称已有支持。 - 本地样本pdd_order_list.html、pdd_order_detail.html、pdd_order_detail_expanded.html仅只读核验。展开后正文可提取唯一CG编号、订单号、下单时间和实付金额。样本含真实业务数据,禁止提交Git/Wiki/工单附件;测试必须使用脱敏合成样本。 - 用户确认列表滚动自动加载,返回列表保留位置。尚未完成自动遍历、跨页稳定性及真实上传验证;浏览器控制连接超时不能作为PDD页面不支持的证据。 ## 前置依赖/并行性/交付单元 - 复用#237客户端密钥、#306订单金额及既有Agent订单回填、#305 SYB订单号自动回写;与#307及Agent后续修复并存,无需等待Agent遍历修复。 - Server与插件依赖同一批准契约:先定接口及原型,之后才可按契约并行开发,默认不另拆相互遗漏的工单。 - 新增chrome-extension/交付单元(目录在设计时确认),Server采购回填与客户端路由/权限目录;Web仅在现有密钥授权目录需要显示回填动作时作必要接入。Android无代码修改。 ## 最小方案(待设计审核) ### Chrome端 1. 使用标准Manifest V3最小结构,不默认引入第三方大型骨架;若选开源模板,审核许可证与维护情况。 2. 配置Admin Origin与客户端密钥;操作界面包括最近天数(默认2)、开始、停止、统计及逐项错误。运行期间禁止切换目标Admin或密钥,开始时冻结本次配置及时间窗口。 3. 在用户已登录的PDD网页,串行执行列表识别→安全进入详情→只展开地址/订单信息→读取四项字段→返回原列表→继续滚动加载。订单操作、付款等按钮绝不点击。 4. 页面脚本只读取DOM并提取CG及必要字段;密钥仅由扩展侧管理,不注入PDD DOM/页面脚本,不读取或上传PDD Cookie;请求只发给用户配置的Admin Origin。最小权限,优先限定PDD域名及按需授权Admin站点,不申请全站权限。 5. 按订单号去重;滚动以新订单出现判断进展,明确结束/超时/用户停止/登录失效,不能无限循环;具体等待、无进展阈值、MV3后台休眠恢复方式在设计时明确并测试,不把未知当完成。 6. 最近N天以开始时刻冻结窗口。不得遇到第一条旧订单就假定后续全旧。无已验证排序保证时,继续扫描到可证明末尾或有界上限;触及上限必须显示未完整扫描。下单时间缺失/无效不能误当过期,应报该项问题。 7. 同CG多个不同订单号须先在本次收集范围内聚合标记冲突,该CG不提交;同CG同号去重。随后分批提交(≤50项)。跨批/历史并发冲突由服务端最终校验。 8. 服务端失败只重试可重试项,保留提交ID与已确认结果,重复开始不能重复改写订单。停止不回滚已提交项;明确展示已提交/待提交/冲突/跳过/未完整扫描。 ### Server端 1. 建议新增薄入口POST /api/client/v1/purchase-tasks/order-backfill,使用现有客户端密钥认证和采购管理模块授权,不使用手机Device Token。 2. 请求沿用requestId与items[{addressSuffix,pddOrderNo,orderSubmittedAt?,pddOrderAmountCent?}];插件从地址提取规范CG后只提交后缀,不提交完整地址。时间按RFC3339含时区,金额按人民币整数分,不能把实付误读为商品价或推断支付状态。 3. 抽取共用内部业务逻辑,不复制两套规则;Agent仍强制设备归属检查,客户端入口依据明确授权身份处理,不伪造设备Token或用deviceId=0暗示跳过鉴权。现有客户端审计记录密钥ID和请求ID。 4. 默认保留live及order_result_unknown/order_created状态边界;失败/执行中/待执行任务返回明确逐项错误,不能按CG存在就改状态。 5. 同CG同号幂等;不同号冲突不覆盖;同号已被其他任务使用拒绝;可选金额缺失不报错、不清空已有值,已有不同金额按现有警告语义不覆盖。 6. 设计待确认项:已创建订单同号时是否仅补缺失下单时间,以及已有估算时间是否保留。建议只补空,不静默覆盖已有时间;两入口保持一致,增加回归测试。不得借此扩大任务状态范围。 7. 成功保存后复用ensureOrderWriteback及#305异步流程;金额仅存Admin,不传SYB。无需插件直接操作SYB。批次部分失败不回滚其他已成功项。 8. 默认复用现有表,不计划新增数据库迁移;若发现必须迁移、扩大权限或改变安全边界,先记录并取得人工授权。新增客户端回填能力建议沿用采购管理模块中的writeback动作,最终名称/目录展示需设计确认。 ## 设计证据与实施门禁 新增独立用户功能,先制作可访问、版本明确的QuantUX或等效轻量原型,记录链接/App ID/revision、覆盖范围及确认人/时间。 至少覆盖:配置未填/密钥无效或未授权、正常空闲、运行进度、无订单、停止、部分失败、冲突、登录失效、加载超时、未完整扫描、完成结果;设置密钥不出现在截图/日志。用户审核原型及API/授权设计后才能写生产代码。仅建单不代表批准安装扩展、权限写入、真实订单上传、迁移或发布。 ## 验收标准 - [ ] 列表→详情→展开→读取→返回→加载下一批可运行;不修改PDD订单。 - [ ] 四字段准确映射;无CG跳过,有CG无单号报错,可选金额缺失安全跳过。 - [ ] 同CG同号重复无副作用;同CG不同号和跨任务同号冲突可见且不覆盖。 - [ ] 不因首条旧订单提前漏采;终止原因与完整性明确。 - [ ] 插件使用客户端密钥;未授权/已停用密钥拒绝,Agent设备归属校验原样有效。 - [ ] Admin保存订单事实后按既有条件进入SYB队列,实付金额不传SYB。 - [ ] 开始/停止、刷新或后台休眠、超时重试不重复提交已确认项,不无限等待。 - [ ] 不保存原始订单HTML/完整地址或账号凭据,不把密钥暴露给PDD页面。 - [ ] 用户确认原型;合成样本/服务端/插件验证通过,真实端到端另行授权并记录。 ## 验证计划 Server:认证/能力授权、状态边界、CG规范解析、冲突/金额/时间、并发幂等、Agent归属回归、SYB入队测试。 插件:列表与展开详情合成DOM、延迟加载/DOM变化/缺字段/重复页、时间窗口/排序异常/无进展、停止/恢复/重试、密钥隔离;构建与打包。 人工:授权安装扩展后先验证只读采集,再明确授权指定订单数据上传至指定Admin验证端到端;不执行支付。未覆盖项必须明确记录,不把静态HTML可解析当作真机完整验证。 ## 文档影响 实施时更新线上Wiki的Architecture-and-Code-Map、Business-Rules-and-Glossary、Android-Agent-API-Contract(共用回填字段/边界)、Local-Development-and-Verification和Deployment-and-Operations(插件构建安装配置);只更新实际变化页面并在线回读revision,统一一轮sync及sync --check,不直接编辑镜像。新增客户端API契约归入既有权威契约页面,避免第二事实源。 ## 工具说明 本会话未提供Gitea MCP工具,按规则回退Gitea API;凭据从本机安全配置读取,不输出、不写入工单。
Author
Owner

Chrome 端轻量原型 v1(待用户审核)

因本会话未提供 Gitea MCP,按仓库规则回退 Gitea API 写入本条设计证据;凭据仅从本机安全配置读取。

  • QuantUX 链接:https://qux.ilapage.cn/#/apps/6aace3da191a826306a7fe85.html
  • App ID:6aace3da191a826306a7fe85
  • 版本:v1
  • 模型 revision 标识:lastUUID=10103
  • 状态:待用户审核;本记录不代表原型已批准,也不解除生产实现、扩展安装、权限写入或真实回填门禁。
  • 结构核验:5 个 420×760 屏幕、77 个组件、9 条交互连线,起始屏幕为“01 配置与空闲”;QuantUX 模型已设为公开审核链接。
  • UTF-8 核验:通过 MCP 以 UTF-8 字节明确解码原始 SSE 回读,应用名、描述、5 个屏幕名和关键中文文案均正常;此前命令行所见乱码仅为 PowerShell 默认响应解码显示问题,未修改原型。

覆盖范围:

  1. Admin Origin、掩码合成密钥、默认最近 2 天;运行期间设置只读;密钥帮助说明“采购管理 → 回填”。
  2. “开始扫描并上传”明确最终包含上传;流程按扫描读取 → 全范围聚合 CG 冲突 → 最多 50 项分批提交。
  3. 统计分别显示已读订单、可提交、已写入、无 CG 跳过、冲突和错误;读取阶段停止明确“已写入 0”,不误报为已上传。
  4. 完成、停止、无订单口径、部分失败、同 CG 不同订单号冲突、登录失效、加载超时、密钥无效/未授权和未完整扫描;未完整扫描不宣称全量。
  5. 仅重试可重试项,保留提交 ID 与已确认结果;后台休眠按检查点恢复,页面证据不符时暂停。
  6. 合成示例使用 CG-123、PO-DEMO-001;网页明确格式可规范化为严格后缀 _cg123,不做模糊猜测;实付金额缺失显示“未提供”,不显示 0。

验证边界:已完成 MCP 模型结构、屏幕数量、组件数量、连线数量、起始屏幕、公开标记与关键文案回读检查;尚未宣称逐屏像素级视觉检查、真实 Chrome 扩展行为、安装、PDD 页面遍历或真实 Admin 上传验证通过。未使用真实密钥、订单、地址或样本值;未导出离线 HTML。

## Chrome 端轻量原型 v1(待用户审核) 因本会话未提供 Gitea MCP,按仓库规则回退 Gitea API 写入本条设计证据;凭据仅从本机安全配置读取。 - QuantUX 链接:https://qux.ilapage.cn/#/apps/6aace3da191a826306a7fe85.html - App ID:`6aace3da191a826306a7fe85` - 版本:`v1` - 模型 revision 标识:`lastUUID=10103` - 状态:待用户审核;本记录不代表原型已批准,也不解除生产实现、扩展安装、权限写入或真实回填门禁。 - 结构核验:5 个 `420×760` 屏幕、77 个组件、9 条交互连线,起始屏幕为“01 配置与空闲”;QuantUX 模型已设为公开审核链接。 - UTF-8 核验:通过 MCP 以 UTF-8 字节明确解码原始 SSE 回读,应用名、描述、5 个屏幕名和关键中文文案均正常;此前命令行所见乱码仅为 PowerShell 默认响应解码显示问题,未修改原型。 覆盖范围: 1. Admin Origin、掩码合成密钥、默认最近 2 天;运行期间设置只读;密钥帮助说明“采购管理 → 回填”。 2. “开始扫描并上传”明确最终包含上传;流程按扫描读取 → 全范围聚合 CG 冲突 → 最多 50 项分批提交。 3. 统计分别显示已读订单、可提交、已写入、无 CG 跳过、冲突和错误;读取阶段停止明确“已写入 0”,不误报为已上传。 4. 完成、停止、无订单口径、部分失败、同 CG 不同订单号冲突、登录失效、加载超时、密钥无效/未授权和未完整扫描;未完整扫描不宣称全量。 5. 仅重试可重试项,保留提交 ID 与已确认结果;后台休眠按检查点恢复,页面证据不符时暂停。 6. 合成示例使用 `CG-123`、`PO-DEMO-001`;网页明确格式可规范化为严格后缀 `_cg123`,不做模糊猜测;实付金额缺失显示“未提供”,不显示 0。 验证边界:已完成 MCP 模型结构、屏幕数量、组件数量、连线数量、起始屏幕、公开标记与关键文案回读检查;尚未宣称逐屏像素级视觉检查、真实 Chrome 扩展行为、安装、PDD 页面遍历或真实 Admin 上传验证通过。未使用真实密钥、订单、地址或样本值;未导出离线 HTML。
Author
Owner

原型确认与开始实施(2026-09-18)

用户已明确批准 #316 Chrome 端 QuantUX v1 原型并授权进入生产代码实施;由主代理审核实现结果。

  • 原型:https://qux.ilapage.cn/#/apps/6aace3da191a826306a7fe85.html
  • App ID:6aace3da191a826306a7fe85
  • 版本:v1
  • 批准时模型 revision:lastUUID=10103(已按 UTF-8 回读核验中文与结构)
  • 确认人:用户;确认时间:2026-09-18
  • 覆盖:配置/默认 2 天、扫描→聚合冲突→分批提交、停止、完成、部分失败、登录失效、加载超时与未完整扫描。

开始实施基线:origin/main@65d1f348656ac687eb781d8607110e7658d1cb9b;独立工作树 D:/OPC/goauto-worktrees/issue-316,分支 feat/316-chrome-order-backfill。本会话未提供 Gitea MCP,按规则回退 Gitea API。

实施边界:新增标准 MV3 轻量插件与客户端密钥薄入口,复用现有订单回填事务并保留 Agent 设备归属;不安装扩展、不修改真实客户端权限、不上传真实订单、不部署、不创建订单或付款、不使用或提交真实 HTML/个人数据。若发现必须迁移、扩大权限或改变安全边界,停止等待人工确认。

## 原型确认与开始实施(2026-09-18) 用户已明确批准 #316 Chrome 端 QuantUX v1 原型并授权进入生产代码实施;由主代理审核实现结果。 - 原型:https://qux.ilapage.cn/#/apps/6aace3da191a826306a7fe85.html - App ID:`6aace3da191a826306a7fe85` - 版本:`v1` - 批准时模型 revision:`lastUUID=10103`(已按 UTF-8 回读核验中文与结构) - 确认人:用户;确认时间:2026-09-18 - 覆盖:配置/默认 2 天、扫描→聚合冲突→分批提交、停止、完成、部分失败、登录失效、加载超时与未完整扫描。 开始实施基线:`origin/main@65d1f348656ac687eb781d8607110e7658d1cb9b`;独立工作树 `D:/OPC/goauto-worktrees/issue-316`,分支 `feat/316-chrome-order-backfill`。本会话未提供 Gitea MCP,按规则回退 Gitea API。 实施边界:新增标准 MV3 轻量插件与客户端密钥薄入口,复用现有订单回填事务并保留 Agent 设备归属;不安装扩展、不修改真实客户端权限、不上传真实订单、不部署、不创建订单或付款、不使用或提交真实 HTML/个人数据。若发现必须迁移、扩大权限或改变安全边界,停止等待人工确认。
Author
Owner

实现完成,待真实 Chrome 联调与用户验收(2026-09-18)

Gitea MCP 在本会话不可用,本次按仓库规则回退 API。已基于用户批准的 QuantUX v1(App 6aace3da191a826306a7fe85,lastUUID 10103)完成代码与自动化验证;未安装扩展、未修改真实权限、未上传真实订单、未部署、未创建订单或付款。

实现

  • 新增 chrome-extension/ Manifest V3 扩展:Admin Origin/key、默认2天、开始/停止、阶段统计、逐项结果、冲突/错误/未完整扫描、可重试项。
  • 真实列表样本仅内存脱敏结构分析:0个订单链接/按钮,改为限定 .react-base-list 卡片商品行,排除店铺头和支付/更多等动作区;详情只展开收货/订单信息并有界等待。真实值和原始 HTML 未写入 Git/工单/Wiki。
  • 扫描必须看到明确末尾证据才标记完整;登录/风控、停止和异常均持久化终态。扫描延迟增长、详情子阶段、已保存 row 与 next cursor 支持 service worker 恢复。
  • 启动全局互斥;content 与可信 UI 消息通道分离;冻结 Origin/key/窗口,storage local/session 限 TRUSTED_CONTEXTS;请求拒绝重定向、不带 Cookie。
  • 批次最多50条,稳定 UUID;未确认批次可重放,已确认批次不重复统计;15秒超时、逐项 retryable、响应数量/索引/字段完整性校验。
  • 服务端新增 POST /api/client/v1/purchase-tasks/order-backfill,要求 purchase_tasks/writeback action 与 client principal,不伪造 deviceId/Device Token;共享事务仍保留 Agent 设备归属及失败回读范围。相同订单仅补空金额/空时间,不覆盖已有时间;补页面时间记录 timeSource=page。

验证

  • cd chrome-extension && npm test:19/19 通过(合成 DOM + Chrome API mock;包含 start/stop/restart/error/timeout/sender/freeze、lazy scan、详情恢复、双展开/延迟字段和 retryable item)。
  • node --check service-worker.js content.js popup.js:通过。
  • go test -p 1 ./app/goauto/purchase ./app/goauto/clientapi:通过,包含客户端 401/403/显式 writeback 授权及时间来源。
  • go test -p 1 ./app/goauto/...:本次相关包通过;既有 sybimport 解析/fixture 套件有12项范围外失败,未修改该目录、未混入修复。
  • Wiki-first 已更新并在线回读:Architecture 53a68c1d、API Contract 6e5ab1f9、Local Verification f8996a09、Deployment c208aeee;已执行唯一一轮 sync 与 sync --check 并通过。同步时线上并发出现 #307 的 Business Rules revision,已从本提交排除,不混入本单。

提交与产物

  • 分支:feat/316-chrome-order-backfill
  • 提交:10be374
  • 已推送。
  • 构建包(本地审核产物,不入 Git):D:/OPC/goauto-worktrees/issue-316-artifacts/goauto-pdd-order-backfill-0.1.0-review4.zip
  • SHA-256:1B190E6F3709FC5A22BBFA9B23D6CD1FA05800763E8C241E1349977DBA2B0A08

未验证 / 验收边界

  • 未在真实 Chrome 安装或运行扩展;未实际点击真实 PDD 卡片、返回列表、展开信息或验证事件委托导航。
  • 未调用真实 Admin 回填、未验证真实客户端密钥/权限/网络、未部署。
  • 因此当前结论仅为“代码与自动化验证完成,待真实 Chrome 联调与用户验收”,工单保持待验收。
## 实现完成,待真实 Chrome 联调与用户验收(2026-09-18) Gitea MCP 在本会话不可用,本次按仓库规则回退 API。已基于用户批准的 QuantUX v1(App `6aace3da191a826306a7fe85`,lastUUID `10103`)完成代码与自动化验证;未安装扩展、未修改真实权限、未上传真实订单、未部署、未创建订单或付款。 ### 实现 - 新增 `chrome-extension/` Manifest V3 扩展:Admin Origin/key、默认2天、开始/停止、阶段统计、逐项结果、冲突/错误/未完整扫描、可重试项。 - 真实列表样本仅内存脱敏结构分析:0个订单链接/按钮,改为限定 `.react-base-list` 卡片商品行,排除店铺头和支付/更多等动作区;详情只展开收货/订单信息并有界等待。真实值和原始 HTML 未写入 Git/工单/Wiki。 - 扫描必须看到明确末尾证据才标记完整;登录/风控、停止和异常均持久化终态。扫描延迟增长、详情子阶段、已保存 row 与 next cursor 支持 service worker 恢复。 - 启动全局互斥;content 与可信 UI 消息通道分离;冻结 Origin/key/窗口,storage local/session 限 TRUSTED_CONTEXTS;请求拒绝重定向、不带 Cookie。 - 批次最多50条,稳定 UUID;未确认批次可重放,已确认批次不重复统计;15秒超时、逐项 retryable、响应数量/索引/字段完整性校验。 - 服务端新增 `POST /api/client/v1/purchase-tasks/order-backfill`,要求 `purchase_tasks/writeback` action 与 client principal,不伪造 deviceId/Device Token;共享事务仍保留 Agent 设备归属及失败回读范围。相同订单仅补空金额/空时间,不覆盖已有时间;补页面时间记录 `timeSource=page`。 ### 验证 - `cd chrome-extension && npm test`:19/19 通过(合成 DOM + Chrome API mock;包含 start/stop/restart/error/timeout/sender/freeze、lazy scan、详情恢复、双展开/延迟字段和 retryable item)。 - `node --check service-worker.js content.js popup.js`:通过。 - `go test -p 1 ./app/goauto/purchase ./app/goauto/clientapi`:通过,包含客户端 401/403/显式 writeback 授权及时间来源。 - `go test -p 1 ./app/goauto/...`:本次相关包通过;既有 `sybimport` 解析/fixture 套件有12项范围外失败,未修改该目录、未混入修复。 - Wiki-first 已更新并在线回读:Architecture `53a68c1d`、API Contract `6e5ab1f9`、Local Verification `f8996a09`、Deployment `c208aeee`;已执行唯一一轮 `sync` 与 `sync --check` 并通过。同步时线上并发出现 #307 的 Business Rules revision,已从本提交排除,不混入本单。 ### 提交与产物 - 分支:`feat/316-chrome-order-backfill` - 提交:`10be374` - 已推送。 - 构建包(本地审核产物,不入 Git):`D:/OPC/goauto-worktrees/issue-316-artifacts/goauto-pdd-order-backfill-0.1.0-review4.zip` - SHA-256:`1B190E6F3709FC5A22BBFA9B23D6CD1FA05800763E8C241E1349977DBA2B0A08` ### 未验证 / 验收边界 - 未在真实 Chrome 安装或运行扩展;未实际点击真实 PDD 卡片、返回列表、展开信息或验证事件委托导航。 - 未调用真实 Admin 回填、未验证真实客户端密钥/权限/网络、未部署。 - 因此当前结论仅为“代码与自动化验证完成,待真实 Chrome 联调与用户验收”,工单保持待验收。
Author
Owner

2026-09-18 用户授权合并 main、构建部署线上 Admin。因无 Gitea MCP,回退 API。main 已快进并推送 10be374;独立 release-316 工作区干净。Server purchase/clientapi 测试通过,Linux amd64 Server 与 Web 生产构建完成,产物已上传 incoming。Server SHA256=81e5af67f4b63163d044f6976acf12ffecf587c2d6aed931fbd1a2deca52d4aa;Web tgz SHA256=452a83d7961bb061d0f4619f4b75ebb8fecb05aedb5ca22c944be18464009062。无数据库迁移。发布前只读检查发现采集任务 567 仍 running 且租约未过期,因此尚未切换 current 或重启,线上仍为 20260918-7e257ca-305;等待采集结束或用户明确允许在途重启。不改任务状态、不执行真实回填;构建有既有 CSS/chunk 大小警告但成功。

2026-09-18 用户授权合并 main、构建部署线上 Admin。因无 Gitea MCP,回退 API。main 已快进并推送 10be374;独立 release-316 工作区干净。Server purchase/clientapi 测试通过,Linux amd64 Server 与 Web 生产构建完成,产物已上传 incoming。Server SHA256=81e5af67f4b63163d044f6976acf12ffecf587c2d6aed931fbd1a2deca52d4aa;Web tgz SHA256=452a83d7961bb061d0f4619f4b75ebb8fecb05aedb5ca22c944be18464009062。无数据库迁移。发布前只读检查发现采集任务 567 仍 running 且租约未过期,因此尚未切换 current 或重启,线上仍为 20260918-7e257ca-305;等待采集结束或用户明确允许在途重启。不改任务状态、不执行真实回填;构建有既有 CSS/chunk 大小警告但成功。
Author
Owner

2026-09-19 随用户授权的 #325 main发布一并上线:current=/home/goauto/releases/20260919-741e4bf-325,包含#316提交10be374,API及Nginx正常。新增客户端回填路由无凭据返回401,首页/资源健康通过。此前执行任务导致的发布暂缓已解除。未安装Chrome扩展或执行真实回填,工单仍待真实Chrome联调/验收;详细发布证据见#325。无新长期运维方式变化,不重复Wiki同步。Gitea MCP不可用,回退API。

2026-09-19 随用户授权的 #325 main发布一并上线:current=/home/goauto/releases/20260919-741e4bf-325,包含#316提交10be374,API及Nginx正常。新增客户端回填路由无凭据返回401,首页/资源健康通过。此前执行任务导致的发布暂缓已解除。未安装Chrome扩展或执行真实回填,工单仍待真实Chrome联调/验收;详细发布证据见#325。无新长期运维方式变化,不重复Wiki同步。Gitea MCP不可用,回退API。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#316