feat: 支持定时监控

This commit is contained in:
richarjiang
2026-09-23 20:03:13 +08:00
parent d4f55a97dc
commit 0843146d12
11 changed files with 310 additions and 26 deletions

View File

@@ -11,7 +11,7 @@
- `src/main/`:Electron 主进程、第三方网络请求、凭证和适配器注册。
- `src/main/settings/`:按球场保存的本机配置与原子写入逻辑,存储位置使用 Electron `userData` 目录。
- `src/main/bookings/`:待支付锁场订单摘要与恢复逻辑;不得持久化支付签名。
- `src/main/monitors/`:空场监控任务、10 秒轮询调度、整点立即检查、变化去重和系统通知;只允许调用无凭证列表接口。整点检查必须绕过常规轮询冷却,但不得与已有检查并发或在同一整点重复触发。
- `src/main/monitors/`:空场监控任务、10 秒轮询调度、整点立即检查、变化去重和系统通知;范思伯特继续使用无凭证列表;大湾区允许由专属适配器在主进程读取登录凭证查询列表。整点检查必须绕过常规轮询冷却,但不得与已有检查并发或在同一整点重复触发。
- 带报名活动(如双打活动)的时段统一视为已订场地;不得计入可订数量,也不得触发空场监控提醒。
- 空场监控日期可选;未指定日期的任务持续滚动检查主界面支持的未来 7 天数据,不能在跨日时自动失效。
- 自动预定是监控任务级、用户显式开启的一次性写操作。开启前必须明确告知“只锁场不支付”并校验球场访客凭证;成功后立即转为待支付且禁止再次下单。服务端明确失败只允许重试一次,第二次失败后自动熔断;结果不确定时禁止重试并立即熔断。
@@ -67,6 +67,13 @@
## 多凭证球场与外部订单处理
- 通用登录凭证使用 `credential` 按球场存储,旧球场的 `visitorId` 保持兼容;字段标签由适配器元数据提供。凭证仅允许在设置弹窗短暂回填,关闭立即清除。
- 需要登录的列表通过适配器独立的鉴权查询方法调用;后台监控必须使用无凭证查询路径,此类球场不得创建监控任务。
- 需要登录的列表通过适配器独立的鉴权查询方法调用;后台监控按适配器能力选择匿名或主进程鉴权查询;需要鉴权的球场创建或恢复任务前校验已配置凭证。
- 未接入取消或订单查询的球场必须提示用户到原小程序处理。清理本机记录使用独立 IPC 和明确的已处理确认,不得宣称远端取消成功;清理前仍禁止重复下单。
- `src/main/adapters/dawanqu/` 存放大湾区适配器、契约测试和脱敏 fixture;项目、区域及第三方时段参数只在适配器内处理。新增抓包只提取响应 fixture,不保存请求头或用户凭证。
## 放场优先调度
- 大湾区每天北京时间 09:00 开放包含当天在内的第三天(当天 +2 日);放场规则属于球场元数据,不在公共调度器中按球场 ID 分支。
- 放场首分钟优先检查已授权自动锁场任务的目标日期,再检查其他日期。目标日期一旦返回完整连续组合,立即复用原有下单状态机,不等待其他日期响应。
- 整点有独立唤醒;已有检查尚未结束时不得并发重入,完成后立即补查新整点,不能使用整点前的缓存。
- “秒杀任务”指用户开启的一次性自动锁场。接口的优惠/秒杀价格属于另一种请求契约;未证实优惠参数时不得猜测请求体或跳过核价。