feat(agent): randomize collection task interval (#102)
This commit is contained in:
@@ -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: d234ec2be1a4f6d01a9a46a90a901abdebd229be
|
||||
synchronized_at: 2026-08-26T14:04:38Z
|
||||
wiki_revision: 800b2e0845f8cc69759246d33083793df4cbef7f
|
||||
synchronized_at: 2026-08-27T01:31:41Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 业务规则与术语
|
||||
@@ -265,10 +265,10 @@ synchronized_at: 2026-08-26T14:04:38Z
|
||||
|
||||
## Agent 采集任务间隔
|
||||
|
||||
- Agent 设置页提供设备本地“采集间隔”,允许 0~600 秒整数,默认 15 秒;0 表示不等待。设置只影响之后结束的采集任务,已开始的间隔不随设置修改。
|
||||
- 只有采集任务已经开始且成功向服务端提交完成、部分完成或失败结果后才开始间隔;领取前失败、配置/认证错误或结果未安全提交不开始间隔。采购任务结束不开始采集间隔。
|
||||
- Agent 设置页提供设备本地“采集任务执行间隔”,起止值均只接受 0~600 秒整数,默认 `15~15`;每次在闭区间内等概率随机一个整数秒。`0~0` 表示不等待,范围包含 0 时允许本次抽到 0。设置只影响之后结束的采集任务,已开始的间隔不随设置修改。
|
||||
- 只有采集任务已经开始且成功向服务端提交完成、部分完成或失败结果后,Agent 才按当时保存的范围随机一次并开始间隔;领取前失败、配置/认证错误或结果未安全提交不随机也不开始间隔。采购任务结束不开始采集间隔。
|
||||
- 间隔只阻止下一次采集任务的请求、领取和开始;心跳、采购任务优先领取与执行、采购 Outbox、历史刷新和同步继续运行。间隔结束只触发现有调度器一次,不新增轮询器。
|
||||
- 状态页下拉检查和采集记录“重新采集”不得绕过间隔,统一提示“采集间隔中,还需 N 秒”。
|
||||
- 间隔状态持久保存在设备本地,Agent 进程或前台服务重启后继续等待;系统时间回拨时最多按该次原始间隔重新计算,避免无限等待。
|
||||
- 本次抽中的秒数、开始时间和截止时间作为同一间隔票据持久保存在设备本地;Agent 进程或前台服务重启、设置修改都只恢复剩余时间,不重新随机。系统时间回拨时最多按该次已抽中的原始秒数截断,避免无限等待。
|
||||
- 间隔期间保持屏幕常亮;既有“任务结束 15 秒后返回 Agent”是独立机制,返回 Agent 不清除采集间隔。采购任务接管执行时不重复持有间隔亮屏锁,采购完成后若间隔尚未结束则恢复。
|
||||
- 该设置不上传服务端,不改变采集任务状态、租约、规则快照或服务端接口,不打开 PDD、不修改地址、不创建订单、不支付。
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Local-Development-and-Verification
|
||||
wiki_url: https://git.ilapage.cn/OPC/goauto/wiki/Local-Development-and-Verification.-
|
||||
wiki_revision: c31d953495bb18ebfb1c7de0015e987c42dd43e4
|
||||
synchronized_at: 2026-08-26T14:05:00Z
|
||||
wiki_revision: a75499ddf3d238810d1f845050cdd4b46e49297e
|
||||
synchronized_at: 2026-08-27T01:31:49Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 本地开发与验证
|
||||
@@ -243,9 +243,9 @@ adb shell am start -n cn.ilapage.goauto.agent/.MainActivity
|
||||
|
||||
### Android Agent 采集任务间隔检查(#102)
|
||||
|
||||
- 运行 `cd android && .\\gradlew.bat testDebugUnitTest assembleDebug assembleRelease`;单元测试至少覆盖 0/15/600 秒、越界输入、倒计时向上取整、过期清理、系统时间回拨截断和亮屏策略。
|
||||
- 真机覆盖安装前确认设备无活动任务。设置页检查默认 15 秒、0~600 整数校验、保存反馈,以及修改设置不改变已经开始的倒计时。
|
||||
- 运行 `cd android && .\\gradlew.bat testDebugUnitTest assembleDebug assembleRelease`;单元测试至少覆盖两个输入的 0/15/600 秒边界、起始值大于结束值、`0~0`、固定范围、包含上下边界的可控随机、倒计时向上取整、过期清理、系统时间回拨截断和亮屏策略。随机源必须可注入,禁止概率性测试。
|
||||
- 真机覆盖安装前确认设备无活动任务。设置页检查“采集任务执行间隔”默认 `15~15` 秒、两个 0~600 整数输入、左值不得大于右值、保存反馈,以及修改设置不改变已经开始的倒计时。
|
||||
- 分别以成功、部分完成和失败的采集任务确认:结果被服务端接收后进入“在线 · 采集间隔中”;状态页下拉和采集记录“重新采集”均显示剩余秒数且不能绕过;间隔结束后现有调度器继续领取下一条采集任务。
|
||||
- 间隔期间创建采购任务,确认采购仍优先执行;采购结束后若原间隔未到期,采集继续等待。心跳、采购 Outbox、记录刷新与同步不受影响。
|
||||
- 间隔期间重启 Agent 前台服务,确认倒计时按设备本地状态恢复;使用 `adb shell dumpsys power` 确认 `:collection-cooldown` WakeLock 有界持有并在到期或服务停止后释放。
|
||||
- 将范围设为非固定值并完成一次采集,记录状态页显示的实际剩余秒数;间隔期间重启 Agent 前台服务,确认按同一抽取结果恢复且没有重新随机。使用 `adb shell dumpsys power` 确认 `:collection-cooldown` WakeLock 有界持有并在到期或服务停止后释放。
|
||||
- 此项验证不要求创建正式采购订单;没有单独授权时不得点击创建订单,永久禁止支付。
|
||||
|
||||
Reference in New Issue
Block a user