diff --git a/docs/02-architecture-and-code-map.md b/docs/02-architecture-and-code-map.md index cf10f5a..7072cc3 100644 --- a/docs/02-architecture-and-code-map.md +++ b/docs/02-architecture-and-code-map.md @@ -2,8 +2,8 @@ generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Architecture-and-Code-Map wiki_url: https://git.ilapage.cn/OPC/goauto/wiki/Architecture-and-Code-Map.- -wiki_revision: dcd927c0e8eafeb1fa1fb9c4a1e472767eb29aaa -synchronized_at: 2026-09-09T07:26:03Z +wiki_revision: 223cb9035a6b6e63072aa6b075889fcd0d6c2f23 +synchronized_at: 2026-09-09T08:18:24Z # 架构与代码地图 @@ -369,11 +369,11 @@ Web 唯一展示位置为“采集采购 → SYB 同步记录”:列表状态 ## Android 连续临时采集收尾(#250) -实现绑定 `fe321b6`(0.9.71 / 84)。仅 Android;无 Admin/API/权限/数据库迁移。 +当前实现绑定 `37e8b56`(Agent 0.9.72 / 85),用户确认 v5 按次数返回后切回 Agent。仅 Android,无 Admin/API/权限/数据库迁移;取代 v1~v4 首页导航。 -- `AgentSettingsFragment` 在采集间隔后复用卡片加入主题兼容的 SwitchMaterial;正常仅显示标题与开关,保存失败或任务忙碌时显示反馈;`AgentSettingsStore` 在私有 `goauto_agent_settings` 保存 `continuous_collection`,缺省 false,commit 失败恢复先前值。无网络配置或批次表。 -- `requestCurrentPageCollection` 在现有互斥锁内依据 `ContinuousCollectionPolicy.applies` 固定本次是否连续;其他 executeTask 调用维持默认 false。`executeTaskWhileAwake` 仍先提交结果并结束图片上传,再返回带 resultStatus 的 `TaskExecutionSummary`;连续模式只抑制 idle-return,不改变采集 cooldown。 -- `ContinuousCollectionPolicy.finish` 仅对 acknowledged completed 调用 `PddCollectionHomeNavigator`;导航失败/异常只影响提示,不改变 successful、error code 或 resultStatus。调用在 executeTask 的唤醒锁与原任务互斥范围内,结束后沿原 finally 释放,不与下一任务竞争页面。 -- `PddCollectionHomeNavigator` 只使用现有 PddCollectorDriver.capture/back/clickFresh;前台和安全页面证据每步重查,最多 4 次动作,每次动作后以 500ms 间隔最多 3 次回读未变化页面;全屏非点击 FrameLayout“拍照搜索”层优先返回,不点击底层导航;终点要求搜索层已退出,再用底部首页选中子节点与顶部拍照搜索验证。无 OCR/VLM、深链、启动 Intent、点击坐标、订单/付款动作。 -- 返回结果只记 taskId、attemptNumber、deviceId、规则快照 SHA-256 、continuousHome 布尔值、固定原因码 reason 与动作尝试数 actions(GoAutoCollector Logcat),不记录节点文案、坐标、原始树或整屏截图;不扩大 #249 采购诊断存储范围。 -- 本地验证:`:app:testDebugUnitTest :app:assembleDebug`,377 tests 通过(累计新增 18 项),包括偏好持久化/失败回退、范围与终态分流、实际首页结构、逐步返回/动作上限、前台变化和导航异常隔离。0.9.70 已安装并启动;0.9.71 构建通过但未安装。拍照搜索层与底部导航共存已取得只读结构,新增搜索层优先、延迟回读和风险停止回归测试;新包完整连续采集仍未真机验证。 +- `AgentSettingsFragment` 在采集间隔后复用卡片和 SwitchMaterial;仅开启显示“返回次数”按钮,Material 单选框选择 1~5 次(默认 3),立即保存或取消。成功无常驻反馈,错误/忙碌显示原因。任务忙碌禁用,弹窗选定时再检查。 +- `AgentSettingsStore` 在私有 `goauto_agent_settings` 保存 `continuous_collection`(false)与 `continuous_collection_return_count`(3);次数越界或读取错误回落 3,写入失败恢复旧值,无网络加载。 +- `requestCurrentPageCollection` 保留原范围判断;`executeTask` 在采集开始固定次数。`executeTaskWhileAwake` 提交结果、结束图片上传后返回 resultStatus;`ContinuousCollectionPolicy.finish` 仅对完整确认成功调用新 `PddCollectionReturnNavigator`。失败/部分成功不导航。冷却间隔不变,连续模式不启动旧 idle-return。 +- 删除 `PddCollectionHomeNavigator` 和专属首页/搜索层判据。新导航器仅使用 capture/back、当前包名、openAgentPreservingTab;1~5 次 Back,每次后 500ms,前台离开 PDD 终止剩余 Back;保留风险场景停止。最后打开 Agent 并等待 500ms 验证包名,不验证 PDD 首页。仍在原任务互斥与唤醒锁范围内完成,结束后原 finally 释放。 +- `GoAutoCollector` 日志关联 taskId、attemptNumber、deviceId、规则快照 SHA-256;记录 continuousReturn、configuredBacks、固定 reason 和 actions。原因含 count_completed、left_pdd、back_failed、unsafe_page、agent_launch_failed、agent_not_confirmed、navigation_exception、invalid_count;actions 为 Back 尝试数,不代表最终页面。无节点文字、树、截图或个人数据落盘;不扩大采购诊断存储。 +- `ContinuousCollectionTest` 覆盖范围/终态、1~5 次、无变化仍按次数、前台变化、风险、动作/启动失败、包名确认和异常;`ContinuousCollectionSettingsTest` 覆盖开关与次数持久化、默认/越界/写入失败。`:app:testDebugUnitTest :app:assembleDebug` 376 项通过。旧首页专属测试随旧行为替换,新版未安装,UI 大字体/横屏、多设备和完整采集真机链路尚未验证。 diff --git a/docs/03-business-rules-and-glossary.md b/docs/03-business-rules-and-glossary.md index 1608a81..eb93785 100644 --- a/docs/03-business-rules-and-glossary.md +++ b/docs/03-business-rules-and-glossary.md @@ -2,8 +2,8 @@ generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Business-Rules-and-Glossary wiki_url: https://git.ilapage.cn/OPC/goauto/wiki/Business-Rules-and-Glossary.- -wiki_revision: 738471f12ed1c29df1efb449f6b093af02d9487c -synchronized_at: 2026-09-09T07:26:09Z +wiki_revision: 5a49f94d2c8bebe4e05bf3343834567e294e3894 +synchronized_at: 2026-09-09T08:18:31Z # 业务规则与术语 @@ -514,12 +514,12 @@ Web 唯一展示位置为“采集采购 → SYB 同步记录”:列表状态 ## 临时采集连续模式(#250) -实现绑定 `fe321b6`,Agent 0.9.71 / versionCode 84;代码、单元测试和 Debug 构建通过,真机连续采集闭环尚待验收。 +当前实现绑定 `37e8b56`,Agent 0.9.72 / versionCode 85。2026-09-09 用户批准 v5:按配置次数返回后切回 Agent,替代此前“识别并停留 PDD 首页”的方案;不保证 PDD 最终停在首页。代码、376 项 Android 单测及 Debug 构建通过,新版设置与完整真机闭环待验收。 -- 设置页“连续采集”默认关闭,本机保存;切换即时保存,失败恢复原值,任务执行时禁用。只作用于本次从采集 Tab 新建的普通临时采集(source=agent_current_page、attemptNumber=1、无替换来源)。Admin 下发、历史重新采集、替代商品采集和采购不进入连续模式。 -- 开启时完整 completed、服务端确认提交、既有图片上传流程结束后,尝试回到 PDD 首页;图片上传失败仍按既有非致命规则处理,不因回首页流程重写结果。部分成功、失败、提交未确认均保留现场,不启动自动返回 Agent 的倒计时。关闭开关保持原行为;采集间隔不改变、不绕过。 -- 导航仍在原任务本地互斥保护内完成,随后释放占位;不修改服务端租约/调度。前台不是 PDD、Activity 不可得或存在登录/验证码/风险/地址编辑/订单详情/付款页证据时停止,不抢回前台。 -- 首页成功证据来自目标手机只读结构:底部唯一首页文字位于可点击父节点内且 selected=true,底部同时有聊天、个人中心,顶部有独立可点击拍照搜索。不是启动 App 请求成功即完成,也不把屏幕任意“首页”文案视为首页。 -- 最多 4 个导航动作。可见启用的非点击 FrameLayout 标记“拍照搜索”且宽高均覆盖页面至少 80% 时,视为搜索层,优先一次返回,不能点击底层首页或判定已经回首页;普通顶部小型拍照入口不匹配此条件。无搜索层时沿用底部首页点击、商品/规格证据或唯一顶部返回入口。每次动作后以 500ms 间隔最多读取 3 次,画面变化后再决定下一步;持续无变化、目标歧义、未知页面或动作失败停止。每次读取均检查前台与风险证据,不猜测坐标、不使用手势兜底、不清除应用数据。 -- 回首页失败仅提示“采集已完成,请手动返回拼多多首页”,不得把成功采集改成失败或自动重采。回到首页后由人工拍照搜索、选商品、再次发起采集;不自动搜索、不自动创建下一任务,不触发采购或付款。 -- 首页结构只读验证不等于商品页经拍照搜索结果页返回首页的整段真机验证;真实路径、横屏/大字体设置显示和两次连续采集仍需验收。 +- 连续采集默认关闭,本机即时保存,失败恢复原值;开启后显示返回次数选择,1~5 次、默认 3,取消不改,写入失败恢复旧值。任务忙碌时开关和次数均禁用,选择提交时再次检查;无新增权限。只用于本次人工新建普通临时采集(source=agent_current_page、attemptNumber=1、无替换来源),Admin 下发、重试、替代与采购不参与。 +- 单任务执行开始固定返回次数。完整 completed、服务端提交确认且既有图片上传流程结束后,执行有限 Back,每次后等待 500ms;不要求识别商品/搜索/相机/首页,也不要求画面发生变化。图片上传仍沿用既有非致命行为,不因收尾更改结果。 +- 每次 Back 前检查前台仍为 PDD,读取页面后再次检查;离开 PDD 则停止余下 Back。次数完成、离开 PDD 或 Back 动作失败后,尝试打开 Agent 保持原 Tab,等待 500ms 并验证前台包名。动作失败不重试,不把请求启动成功直接当作切回成功。 +- 沿用风险页安全边界:登录/验证码/风控、地址编辑、订单详情或支付等证据时保留现场,不发送 Back 或强行切回;Activity 缺失、读取异常明确停止。以上例外不引入首页门禁。 +- 导航在原任务互斥和唤醒锁内完成,不变更租约/调度。返回失败只显示人工处理提示,不把成功采集改为失败或自动重采。 +- 失败、部分成功、提交未确认保留现场,不运行返回步骤,也不触发旧空闲返回倒计时。关闭开关保持原流程,采集间隔不变。 +- 不自动拍照、搜索或创建下一任务,不涉及采购/订单/付款;不使用深链、浏览器、OCR/VLM 或坐标兜底。