采集规则:PDD 识别文案从 Agent 硬编码迁入规则下发 #115

Closed
opened 2026-08-27 17:48:10 +08:00 by ila · 5 comments
Owner

所属与来源

  • 关联工单:#101 当前页面采集、#106 分享点击与诊断、#110 剪贴板中转污染 Activity 证据(前置)。
  • 来源:用户于 2026-08-27 提出:「为什么 PDD 商品页面的定位文字,例如进入规格面板的文字、颜色分类的文字、尺码的文字、下单的文字等等不写在采集规则里,而要写在 Agent 里」,并明确要求「项目是为了更好的开发和使用,尽量把这些配置在采集采购规则里」。
  • 类型:Android Agent + Server + Admin / 采集规则契约扩展 / 消除识别文案硬编码。
  • 工具回退说明:本工单通过 Gitea API 创建。当前会话未提供 Gitea MCP 工具,按 AGENTS.md「Gitea 交互与工单最小读取」记录回退原因。

当前事实(提交 daf7406 复核)

采集规则(schemaVersion 2)目前可配置的文案只有四项:collector.dimensionAliases.color、collector.dimensionAliases.size、currentPageIdentity.shareAliases、currentPageIdentity.copyLinkAliases。

其余识别文案全部硬编码在 android/app/src/main/java/cn/ilapage/goauto/agent/automation/PddProductDetailCollector.kt,含简繁两套,按用途分布如下:

  • 规格面板判定::171 面板标题 确认款式/確認款式、关闭 关闭/關閉;:183-184 数量控件 减少数量/增加数量;:186 支付区域 微信支付/先用后付/支付方式。
  • 维度识别::341-349 颜色/款式/尺码/尺寸/规格/型号/套餐/容量/类型/版本/口味 等后缀与精确名。
  • 已选状态::151、:284、:339 的 已选/请选择/已選/請選擇 前缀。
  • 评价与销量::120-121 正则、:129 商品评价/全部评价/评价详情/评论/晒单/问答、:415-421。
  • 售罄与兜底::103 相似商品、:113 进店/单独购买/发起拼单/立即购买。
  • 购买与危险词::373 buyWords、:374 dangerousWords。

其中 :353-355 存在双事实源缺陷:

config.colorAliases.any { label.contains(it) } || label.contains("颜色") || label.contains("款式") -> "color"
config.sizeAliases.any { label.contains(it) } || label.contains("尺码") || label.contains("尺寸") -> "size"

规则别名与代码字面量是 || 关系,规则只能放宽行为、永远无法收窄;管理员改小 dimensionAliases 不会生效。

代价:PDD 侧任何识别文案变化都必须重新编译发布 APK,采集规则的热更新能力对这部分失效。

目标

  1. 把纯识别性文案迁到采集规则,由服务端下发,成为唯一事实源。
  2. 消除 :353-355 的 || 兜底,使规则可以收窄而不仅能放宽。
  3. 保留安全类禁止词在 Agent 代码内,且不接受规则覆盖。
  4. 不改变任何采集判定的既有行为结果(本工单只搬家,不调逻辑)。

非目标

  • 不修改采购门禁与「不执行付款」永久规则。用户已提出希望调整该门禁,但范围尚未确认(仅改门禁与校验,还是连同支付实现一起做),另行确认后单独建单,不在本工单范围。
  • 不修改规格面板自动弹出的处置逻辑(另建工单,依赖本工单)。
  • 不修改短链展开、goods_id 裁决、前台恢复、剪贴板策略(#107/#108/#109/#110 范围)。
  • 不调整任何判定阈值、超时与遍历上限。
  • 不改变采集结果字段、数据库结构与任务状态机。

文案分类(本工单的设计前提)

  • A 类 · 安全禁止词:PddProductDetailCollector.kt:374 的 dangerousWords(提交订单/确认订单/支付/付款)。作用是禁止采集流程点击,保留在 Agent 代码内,且规则不得覆盖。本工单同时把它从「与识别文案混杂」改为独立命名的拒绝清单,并加注释说明其安全属性。
  • B 类 · 识别性文案:面板标题、关闭、数量控件、支付区域(仅作为面板存在的信号,不用于点击)、维度名与后缀、已选前缀、评价入口词、售罄与兜底词、购买词。本工单迁入规则。
  • C 类 · 结构与语义判定:面板是否打开的多信号组合、价格解析、稳定性判断。逻辑留在 Agent,但其中的文字常量改为从 B 类字段注入。

实施方案

规则契约扩展

  1. 在采集规则 collector 下新增 textAliases 配置块,承载 B 类文案,建议结构:
    • specPanel: titleAliases / closeAliases / quantityAliases / paymentAreaAliases
    • dimension: colorSuffixes / sizeSuffixes / exactNames(与既有 dimensionAliases 合并去重,不新增第二套维度事实源)
    • selection: selectedPrefixes
    • review: entryAliases
    • soldOut: fallbackTopText / mainProductEvidenceAliases
    • purchase: buyWords
  2. 每项限制长度与数量(沿用既有 parseAliases 的 1..20 项、单项 ≤30 字符口径),缺省时使用当前代码中的字面量作为默认值,保证存量规则快照不失效。
  3. 服务端 server/app/goauto/rulecontract 同步新增校验,字段名、上限与 Android 解析保持一致;rejectUnknown 白名单同步更新。
  4. 服务端校验必须拒绝在 B 类字段中出现 A 类安全禁止词,防止绕过采集侧点击禁令。

Agent 改造

  1. PddProductDetailCollector 中 B 类字面量全部改为从 PddCollectorConfig 读取;删除 :353-355 的 || 兜底,改为只依据规则下发的别名判定。
  2. dangerousWords 提取为独立常量并标注为安全清单,不接受配置注入。
  3. 简繁体变体的处理方式保持不变:默认值中继续包含现有简繁两套,不引入运行时转换。

Admin 界面(需先补设计证据,本工单不直接实施)

  1. 规则编辑界面新增上述字段的输入属于用户界面变化,按 AGENTS.md「工单与设计证据双门禁」不适用纯文案豁免。实施顺序为:先提供可审阅原型或明确复用的现有规范并经用户确认,再编写生产代码。
  2. 在设计证据确认前,允许先完成第 1~7 项(契约、服务端校验、Agent 改造),此时新字段通过既有规则 JSON 直接下发,Admin 表单后置。

安全边界

  • A 类安全禁止词不进入规则,服务端额外拒绝其出现在 B 类字段中。
  • 采集规则仍然不能创建订单、不能执行付款(本工单不触碰该边界)。
  • 不新增日志、不记录控件树、截图、链接、goods_id 与剪贴板内容。
  • 不改变 Agent 本地不得猜测规格的约束:删除 || 兜底后,Agent 判定只依据服务端下发内容,方向上更符合该约束。

验收标准

  • 采集规则可下发全部 B 类文案,Agent 按规则内容判定,代码内不再保留同义的判定分支。
  • 将 dimensionAliases.color 收窄为单一别名后,行为确实收窄(此前因 || 兜底不生效)。
  • 未提供 textAliases 的存量规则快照仍可正常采集,结果与本工单实施前一致。
  • 服务端拒绝在 B 类字段中写入 提交订单/确认订单/支付/付款。
  • dangerousWords 仍在代码内生效,任何规则内容都无法使采集流程点击这些控件。
  • Android 与服务端的字段名、数量上限、长度上限完全一致(以两端测试同时通过为准)。
  • Admin 表单在设计证据确认前未进入生产代码。

验证方式

  • cd android && .\gradlew.bat :app:testDebugUnitTest
  • go test ./app/goauto/rulecontract/... ./app/goauto/task/...
  • 存量规则快照回归:用当前线上默认规则跑一次既有采集器单元测试,确认结果不变。
  • 真机:PKG110 上用扩展后的规则完成一次当前页面采集;记录 Agent 版本、规则 ID/快照、任务号与最终状态。
  • 真机、多设备与异常路径未覆盖部分如实回写。

依赖、并行与风险

  • 前置依赖:#110 完成并真机验收通过。#110 未通过前不实施,避免真机失败时无法区分层级。
  • 不建议与其他修改 PddProductDetailCollector 或采集规则契约的工单并行。
  • 风险:删除 || 兜底后,若线上默认规则的别名不全,会出现此前被兜底掩盖的维度识别失败。缓解:默认值取自现有代码字面量,且验收含存量快照回归。
  • 回退:还原本工单提交即可;新增字段为可选,存量快照不受影响。

文档影响

  • 需更新 Wiki Android-Agent-API-Contract(docs/08-agent-api-contract.md):采集规则新增 collector.textAliases 字段说明与默认值来源,并说明安全禁止词不可配置。
  • 需更新 Wiki Business-Rules-and-Glossary(docs/03-business-rules-and-glossary.md):识别文案由服务端下发、安全禁止词留在 Agent 的边界描述。
  • Architecture-and-Code-Map(docs/02-architecture-and-code-map.md)按实际调用路径变化决定是否更新。
  • 按 Wiki-first 门禁:先改线上页面并回读 revision,再执行一轮 sync 与一轮 sync --check,把页面与 revision 写回本工单。

状态

待实施(前置 #110 验收通过)。

## 所属与来源 - 关联工单:#101 当前页面采集、#106 分享点击与诊断、#110 剪贴板中转污染 Activity 证据(前置)。 - 来源:用户于 2026-08-27 提出:「为什么 PDD 商品页面的定位文字,例如进入规格面板的文字、颜色分类的文字、尺码的文字、下单的文字等等不写在采集规则里,而要写在 Agent 里」,并明确要求「项目是为了更好的开发和使用,尽量把这些配置在采集采购规则里」。 - 类型:Android Agent + Server + Admin / 采集规则契约扩展 / 消除识别文案硬编码。 - 工具回退说明:本工单通过 Gitea API 创建。当前会话未提供 Gitea MCP 工具,按 `AGENTS.md`「Gitea 交互与工单最小读取」记录回退原因。 ## 当前事实(提交 daf7406 复核) 采集规则(schemaVersion 2)目前可配置的文案只有四项:`collector.dimensionAliases.color`、`collector.dimensionAliases.size`、`currentPageIdentity.shareAliases`、`currentPageIdentity.copyLinkAliases`。 其余识别文案全部硬编码在 `android/app/src/main/java/cn/ilapage/goauto/agent/automation/PddProductDetailCollector.kt`,含简繁两套,按用途分布如下: - 规格面板判定:`:171` 面板标题 `确认款式/確認款式`、关闭 `关闭/關閉`;`:183-184` 数量控件 `减少数量/增加数量`;`:186` 支付区域 `微信支付/先用后付/支付方式`。 - 维度识别:`:341-349` `颜色/款式/尺码/尺寸/规格/型号/套餐/容量/类型/版本/口味` 等后缀与精确名。 - 已选状态:`:151`、`:284`、`:339` 的 `已选/请选择/已選/請選擇` 前缀。 - 评价与销量:`:120-121` 正则、`:129` `商品评价/全部评价/评价详情/评论/晒单/问答`、`:415-421`。 - 售罄与兜底:`:103` `相似商品`、`:113` `进店/单独购买/发起拼单/立即购买`。 - 购买与危险词:`:373` `buyWords`、`:374` `dangerousWords`。 其中 `:353-355` 存在双事实源缺陷: ```kotlin config.colorAliases.any { label.contains(it) } || label.contains("颜色") || label.contains("款式") -> "color" config.sizeAliases.any { label.contains(it) } || label.contains("尺码") || label.contains("尺寸") -> "size" ``` 规则别名与代码字面量是 `||` 关系,规则只能放宽行为、永远无法收窄;管理员改小 `dimensionAliases` 不会生效。 代价:PDD 侧任何识别文案变化都必须重新编译发布 APK,采集规则的热更新能力对这部分失效。 ## 目标 1. 把纯识别性文案迁到采集规则,由服务端下发,成为唯一事实源。 2. 消除 `:353-355` 的 `||` 兜底,使规则可以收窄而不仅能放宽。 3. 保留安全类禁止词在 Agent 代码内,且不接受规则覆盖。 4. 不改变任何采集判定的既有行为结果(本工单只搬家,不调逻辑)。 ## 非目标 - 不修改采购门禁与「不执行付款」永久规则。用户已提出希望调整该门禁,但范围尚未确认(仅改门禁与校验,还是连同支付实现一起做),另行确认后单独建单,不在本工单范围。 - 不修改规格面板自动弹出的处置逻辑(另建工单,依赖本工单)。 - 不修改短链展开、goods_id 裁决、前台恢复、剪贴板策略(#107/#108/#109/#110 范围)。 - 不调整任何判定阈值、超时与遍历上限。 - 不改变采集结果字段、数据库结构与任务状态机。 ## 文案分类(本工单的设计前提) - **A 类 · 安全禁止词**:`PddProductDetailCollector.kt:374` 的 `dangerousWords`(`提交订单/确认订单/支付/付款`)。作用是禁止采集流程点击,**保留在 Agent 代码内,且规则不得覆盖**。本工单同时把它从「与识别文案混杂」改为独立命名的拒绝清单,并加注释说明其安全属性。 - **B 类 · 识别性文案**:面板标题、关闭、数量控件、支付区域(仅作为面板存在的信号,不用于点击)、维度名与后缀、已选前缀、评价入口词、售罄与兜底词、购买词。**本工单迁入规则。** - **C 类 · 结构与语义判定**:面板是否打开的多信号组合、价格解析、稳定性判断。**逻辑留在 Agent**,但其中的文字常量改为从 B 类字段注入。 ## 实施方案 ### 规则契约扩展 1. 在采集规则 `collector` 下新增 `textAliases` 配置块,承载 B 类文案,建议结构: - `specPanel`: `titleAliases` / `closeAliases` / `quantityAliases` / `paymentAreaAliases` - `dimension`: `colorSuffixes` / `sizeSuffixes` / `exactNames`(与既有 `dimensionAliases` 合并去重,不新增第二套维度事实源) - `selection`: `selectedPrefixes` - `review`: `entryAliases` - `soldOut`: `fallbackTopText` / `mainProductEvidenceAliases` - `purchase`: `buyWords` 2. 每项限制长度与数量(沿用既有 `parseAliases` 的 1..20 项、单项 ≤30 字符口径),缺省时使用当前代码中的字面量作为默认值,保证存量规则快照不失效。 3. 服务端 `server/app/goauto/rulecontract` 同步新增校验,字段名、上限与 Android 解析保持一致;`rejectUnknown` 白名单同步更新。 4. 服务端校验必须拒绝在 B 类字段中出现 A 类安全禁止词,防止绕过采集侧点击禁令。 ### Agent 改造 5. `PddProductDetailCollector` 中 B 类字面量全部改为从 `PddCollectorConfig` 读取;删除 `:353-355` 的 `||` 兜底,改为只依据规则下发的别名判定。 6. `dangerousWords` 提取为独立常量并标注为安全清单,不接受配置注入。 7. 简繁体变体的处理方式保持不变:默认值中继续包含现有简繁两套,不引入运行时转换。 ### Admin 界面(需先补设计证据,本工单不直接实施) 8. 规则编辑界面新增上述字段的输入属于用户界面变化,按 `AGENTS.md`「工单与设计证据双门禁」不适用纯文案豁免。**实施顺序为:先提供可审阅原型或明确复用的现有规范并经用户确认,再编写生产代码。** 9. 在设计证据确认前,允许先完成第 1~7 项(契约、服务端校验、Agent 改造),此时新字段通过既有规则 JSON 直接下发,Admin 表单后置。 ## 安全边界 - A 类安全禁止词不进入规则,服务端额外拒绝其出现在 B 类字段中。 - 采集规则仍然不能创建订单、不能执行付款(本工单不触碰该边界)。 - 不新增日志、不记录控件树、截图、链接、goods_id 与剪贴板内容。 - 不改变 Agent 本地不得猜测规格的约束:删除 `||` 兜底后,Agent 判定只依据服务端下发内容,方向上更符合该约束。 ## 验收标准 - [ ] 采集规则可下发全部 B 类文案,Agent 按规则内容判定,代码内不再保留同义的判定分支。 - [ ] 将 `dimensionAliases.color` 收窄为单一别名后,行为确实收窄(此前因 `||` 兜底不生效)。 - [ ] 未提供 `textAliases` 的存量规则快照仍可正常采集,结果与本工单实施前一致。 - [ ] 服务端拒绝在 B 类字段中写入 `提交订单/确认订单/支付/付款`。 - [ ] `dangerousWords` 仍在代码内生效,任何规则内容都无法使采集流程点击这些控件。 - [ ] Android 与服务端的字段名、数量上限、长度上限完全一致(以两端测试同时通过为准)。 - [ ] Admin 表单在设计证据确认前未进入生产代码。 ## 验证方式 - `cd android && .\gradlew.bat :app:testDebugUnitTest` - `go test ./app/goauto/rulecontract/... ./app/goauto/task/...` - 存量规则快照回归:用当前线上默认规则跑一次既有采集器单元测试,确认结果不变。 - 真机:PKG110 上用扩展后的规则完成一次当前页面采集;记录 Agent 版本、规则 ID/快照、任务号与最终状态。 - 真机、多设备与异常路径未覆盖部分如实回写。 ## 依赖、并行与风险 - 前置依赖:#110 完成并真机验收通过。#110 未通过前不实施,避免真机失败时无法区分层级。 - 不建议与其他修改 `PddProductDetailCollector` 或采集规则契约的工单并行。 - 风险:删除 `||` 兜底后,若线上默认规则的别名不全,会出现此前被兜底掩盖的维度识别失败。缓解:默认值取自现有代码字面量,且验收含存量快照回归。 - 回退:还原本工单提交即可;新增字段为可选,存量快照不受影响。 ## 文档影响 - 需更新 Wiki `Android-Agent-API-Contract`(`docs/08-agent-api-contract.md`):采集规则新增 `collector.textAliases` 字段说明与默认值来源,并说明安全禁止词不可配置。 - 需更新 Wiki `Business-Rules-and-Glossary`(`docs/03-business-rules-and-glossary.md`):识别文案由服务端下发、安全禁止词留在 Agent 的边界描述。 - `Architecture-and-Code-Map`(`docs/02-architecture-and-code-map.md`)按实际调用路径变化决定是否更新。 - 按 Wiki-first 门禁:先改线上页面并回读 revision,再执行一轮 `sync` 与一轮 `sync --check`,把页面与 revision 写回本工单。 ## 状态 待实施(前置 #110 验收通过)。
Author
Owner

建单后的关联修正

建单时未读取 #111~#113(本会话创建 #115 后才发现编号已推进)。补充关联与依赖调整:

  • #113 已覆盖「PDD 自动进入规格/订单确认面板后回顶」的处置:在唯一确认的 RecyclerView 内模拟手指向下拖动、最多 3 次、每次重新解析,并新增 ORDER_CONFIRMATION 形态识别。因此本会话原计划的「规格面板分类与处置」工单不再新建,避免与 #113 重复冲突。本工单只负责识别文案的下发方式,不涉及面板处置逻辑。
  • #113 会修改服务端内置 PDD 详情规则模板的 dimensionAliases.size(新增精确别名「参考分类」),与本工单的规则契约扩展改动同一区域。本工单不得与 #113 并行,须在 #113 落地后实施,并在实施时确认「参考分类」已包含在迁移后的默认值中。
  • #112 将「面板已打开」与「已解析规格值」拆成独立状态,其组合证据用到的文案(确认标题、关闭入口、提交提示、数量控件、支付区域)正是本工单 B 类的迁移对象。实施时以 #112 落地后的实际信号集合为准,不以本工单正文列出的行号快照为准。
  • 前置依赖修正:由「#110 验收通过」改为「#110、#112、#113 全部验收通过」。

正文其余范围、非目标、安全边界与验收标准不变。

## 建单后的关联修正 建单时未读取 #111~#113(本会话创建 #115 后才发现编号已推进)。补充关联与依赖调整: - **#113 已覆盖「PDD 自动进入规格/订单确认面板后回顶」的处置**:在唯一确认的 RecyclerView 内模拟手指向下拖动、最多 3 次、每次重新解析,并新增 `ORDER_CONFIRMATION` 形态识别。因此本会话原计划的「规格面板分类与处置」工单不再新建,避免与 #113 重复冲突。本工单只负责识别文案的下发方式,不涉及面板处置逻辑。 - **#113 会修改服务端内置 PDD 详情规则模板的 `dimensionAliases.size`(新增精确别名「参考分类」)**,与本工单的规则契约扩展改动同一区域。**本工单不得与 #113 并行**,须在 #113 落地后实施,并在实施时确认「参考分类」已包含在迁移后的默认值中。 - **#112 将「面板已打开」与「已解析规格值」拆成独立状态**,其组合证据用到的文案(确认标题、关闭入口、提交提示、数量控件、支付区域)正是本工单 B 类的迁移对象。实施时以 #112 落地后的实际信号集合为准,不以本工单正文列出的行号快照为准。 - **前置依赖修正**:由「#110 验收通过」改为「#110、#112、#113 全部验收通过」。 正文其余范围、非目标、安全边界与验收标准不变。
Author
Owner

校验口径修正(以 #116 为准)

本工单正文「实施方案 → 规则契约扩展」第 4 条与「安全边界」写有:服务端拒绝在 B 类只读识别字段中出现 提交订单/确认订单/支付/付款。

该条与 #113 已证实的真机事实冲突:PDD 订单确认面板必须依靠「提交订单 ¥9.82」「支付方式」等文字作为只读识别信号才能判定形态,这些词是判断依据、不是点击目标。若按原条款校验,订单确认面板的识别文案将永远无法下发,本工单「靠改规则兼容不同页面形态」的目标也无法达成。

修正为(详见 #116):

  • B 类只读识别字段允许出现 支付、付款、提交订单、订单号 等词;
  • 禁止的是把它们用作点击目标,该禁令由采购规则的动作 textAliases 校验与 Agent 侧不可配置的拒绝清单(PddProductDetailCollector.kt:374)共同保证,本工单不削弱这两道防线;
  • 修改地址 / 收货地址 在任何字段中均保持禁止。

依赖调整:#116 先行落地,本工单按 #116 的校验口径实施,两者不并行。相应地,验收标准中「服务端拒绝在 B 类字段中写入 提交订单/确认订单/支付/付款」一条作废,替换为「B 类字段接受上述识别文案,且把它们写入动作点击目标时仍被拒绝」。

## 校验口径修正(以 #116 为准) 本工单正文「实施方案 → 规则契约扩展」第 4 条与「安全边界」写有:服务端拒绝在 B 类只读识别字段中出现 `提交订单/确认订单/支付/付款`。 该条与 #113 已证实的真机事实冲突:PDD 订单确认面板必须依靠「提交订单 ¥9.82」「支付方式」等文字作为**只读识别信号**才能判定形态,这些词是判断依据、不是点击目标。若按原条款校验,订单确认面板的识别文案将永远无法下发,本工单「靠改规则兼容不同页面形态」的目标也无法达成。 修正为(详见 #116): - B 类只读识别字段**允许**出现 `支付`、`付款`、`提交订单`、`订单号` 等词; - **禁止**的是把它们用作点击目标,该禁令由采购规则的动作 `textAliases` 校验与 Agent 侧不可配置的拒绝清单(`PddProductDetailCollector.kt:374`)共同保证,本工单不削弱这两道防线; - `修改地址` / `收货地址` 在任何字段中均保持禁止。 依赖调整:#116 先行落地,本工单按 #116 的校验口径实施,两者不并行。相应地,验收标准中「服务端拒绝在 B 类字段中写入 `提交订单/确认订单/支付/付款`」一条作废,替换为「B 类字段接受上述识别文案,且把它们写入动作点击目标时仍被拒绝」。
Author
Owner

实施完成,待验收

实现

  • 在 v2 采集规则 collector 下新增可选的 textAliases,按 specPanel、dimension、selection、review、soldOut、purchase 六组下发只读识别文案。
  • 未提供 textAliases 的历史规则快照继续使用 Agent 0.9.10 之前的内置默认文案;提供配置时两端严格校验未知字段、1~20 项、单项最多 30 个 Unicode 字符、首尾空白、重复项与地址禁词。
  • pageRecovery.transientSoldOut.exactText/fallbackTopText 改为可配置只读证据;缺省 fallbackTopText 仍兼容“相似商品”。
  • PDD 面板、选择摘要、数量、支付区、订单提交只读证据、评价入口、售罄主商品证据和安全购买入口均改为读取规则配置。
  • 删除颜色/尺码分类的代码字面量 || 兜底;测试证明只收窄 dimensionAliases.color 后旧“颜色分类”不再被归为 color。
  • 创建订单/确认订单/支付/付款点击拒绝清单固定保留在 Agent,规则不可覆盖;“提交订单/支付方式”等可作为只读证据,修改地址/收货地址 在两端仍拒绝。
  • Admin 表单未修改,符合本工单设计门禁。
  • Agent 版本更新为 0.9.11(versionCode 24)。

默认规则与兼容

  • 更新前确认活动采集任务 0、活动采购任务 0。
  • 当前默认规则 id=3(pdd_app采集)只注入 collector.textAliases,保留原有其他配置;JSON_VALID=1,六个配置组完整,size 仍为 ["尺码","尺寸","套餐","参考分类"]。
  • 历史任务快照中含 collector.textAliases 的数量仍为 0;任务 #82 的 size 快照仍为 ["尺码","尺寸","套餐"],未被改写。
  • 无数据库 schema、任务状态机或 Admin UI 变化;主调用路径未变化,因此不更新 Architecture-and-Code-Map。

验证

  • go test ./app/goauto/rulecontract/... ./app/goauto/task/...:通过。
  • .\scripts\verify.ps1 -Component server:通过(go test ./...、build)。
  • .\scripts\verify.ps1 -Component android:通过(Debug/Release 单元测试、Debug APK)。
  • 定向回归:存量缺省规则、只读订单/支付文案、地址禁词、规则真实收窄、订单/支付危险控件不点击均通过。
  • 规则示例与内置模板的 textAliases、dimensionAliases.size 一致。
  • python dev_scripts/harness.py check --strict、git diff --check:通过。
  • Wiki 已在线回读:
    • Android-Agent-API-Contract revision 0bbe3f1041a0795a156dcd1205dbe85474e80f8c
    • Business-Rules-and-Glossary revision b208729957c26801012279a8e89fc18b350f3a87
  • 已按门禁执行一轮 sync 与一轮 sync --check,镜像 revision 与线上一致。
  • Debug APK SHA-256:53B7F881CC0E0AA9F61F313C13832CC69E101D1BC47C7A3BECBD92AF98CA1874。

提交

e117fd2a00f6e3c3da6f5fe59ffcf48b6a05148e — feat(#115): move PDD recognition aliases into rules

未验证与验收建议

PKG110 当前未出现在 adb devices -l,所以未安装 Agent 0.9.11,也未执行真实 PDD 页面采集。请连接 PKG110 后覆盖安装并从当前商品页复采,重点确认规则能识别订单确认面板、颜色与“参考分类”尺码,且全程不触发提交订单或支付。工单保持打开、待用户验收。

## 实施完成,待验收 ### 实现 - 在 v2 采集规则 `collector` 下新增可选的 `textAliases`,按 `specPanel`、`dimension`、`selection`、`review`、`soldOut`、`purchase` 六组下发只读识别文案。 - 未提供 `textAliases` 的历史规则快照继续使用 Agent 0.9.10 之前的内置默认文案;提供配置时两端严格校验未知字段、1~20 项、单项最多 30 个 Unicode 字符、首尾空白、重复项与地址禁词。 - `pageRecovery.transientSoldOut.exactText/fallbackTopText` 改为可配置只读证据;缺省 `fallbackTopText` 仍兼容“相似商品”。 - PDD 面板、选择摘要、数量、支付区、订单提交只读证据、评价入口、售罄主商品证据和安全购买入口均改为读取规则配置。 - 删除颜色/尺码分类的代码字面量 `||` 兜底;测试证明只收窄 `dimensionAliases.color` 后旧“颜色分类”不再被归为 color。 - 创建订单/确认订单/支付/付款点击拒绝清单固定保留在 Agent,规则不可覆盖;“提交订单/支付方式”等可作为只读证据,`修改地址/收货地址` 在两端仍拒绝。 - Admin 表单未修改,符合本工单设计门禁。 - Agent 版本更新为 0.9.11(versionCode 24)。 ### 默认规则与兼容 - 更新前确认活动采集任务 0、活动采购任务 0。 - 当前默认规则 id=3(`pdd_app采集`)只注入 `collector.textAliases`,保留原有其他配置;JSON_VALID=1,六个配置组完整,size 仍为 `["尺码","尺寸","套餐","参考分类"]`。 - 历史任务快照中含 `collector.textAliases` 的数量仍为 0;任务 #82 的 size 快照仍为 `["尺码","尺寸","套餐"]`,未被改写。 - 无数据库 schema、任务状态机或 Admin UI 变化;主调用路径未变化,因此不更新 Architecture-and-Code-Map。 ### 验证 - `go test ./app/goauto/rulecontract/... ./app/goauto/task/...`:通过。 - `.\scripts\verify.ps1 -Component server`:通过(`go test ./...`、build)。 - `.\scripts\verify.ps1 -Component android`:通过(Debug/Release 单元测试、Debug APK)。 - 定向回归:存量缺省规则、只读订单/支付文案、地址禁词、规则真实收窄、订单/支付危险控件不点击均通过。 - 规则示例与内置模板的 `textAliases`、`dimensionAliases.size` 一致。 - `python dev_scripts/harness.py check --strict`、`git diff --check`:通过。 - Wiki 已在线回读: - Android-Agent-API-Contract revision `0bbe3f1041a0795a156dcd1205dbe85474e80f8c` - Business-Rules-and-Glossary revision `b208729957c26801012279a8e89fc18b350f3a87` - 已按门禁执行一轮 `sync` 与一轮 `sync --check`,镜像 revision 与线上一致。 - Debug APK SHA-256:`53B7F881CC0E0AA9F61F313C13832CC69E101D1BC47C7A3BECBD92AF98CA1874`。 ### 提交 `e117fd2a00f6e3c3da6f5fe59ffcf48b6a05148e` — `feat(#115): move PDD recognition aliases into rules` ### 未验证与验收建议 PKG110 当前未出现在 `adb devices -l`,所以未安装 Agent 0.9.11,也未执行真实 PDD 页面采集。请连接 PKG110 后覆盖安装并从当前商品页复采,重点确认规则能识别订单确认面板、颜色与“参考分类”尺码,且全程不触发提交订单或支付。工单保持打开、待用户验收。
Author
Owner

更正上一条“提交”中的完整哈希:e117fd222dd0698fc6a2b0ddbae025ddc318d42d。短哈希与提交说明不变。

更正上一条“提交”中的完整哈希:`e117fd222dd0698fc6a2b0ddbae025ddc318d42d`。短哈希与提交说明不变。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:11 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#115