Skip to content

feat(pool): 支持号池筛选结果快照批量操作#616

Open
novcky wants to merge 7 commits into
fawney19:mainfrom
novcky:feat/pool-selection-snapshots
Open

feat(pool): 支持号池筛选结果快照批量操作#616
novcky wants to merge 7 commits into
fawney19:mainfrom
novcky:feat/pool-selection-snapshots

Conversation

@novcky
Copy link
Copy Markdown
Contributor

@novcky novcky commented Jun 1, 2026

背景

管理端号池批量操作里,“全选筛选结果”之前会在执行时按当前筛选条件重新解析账号。

这在筛选结果较大、账号被并发导入/删除/更新,或执行动作前筛选结果发生漂移时,容易让用户确认时看到的选择范围和实际执行范围不完全一致。尤其是删除、禁用、配置代理这类批量写操作,更适合基于确认时的固定账号集合执行。

改动

  • 新增号池筛选结果 selection snapshot,创建时把当前筛选命中的账号 ID 固化到 runtime KV。
  • 新增 /keys/selection-snapshot 本地管理端接口,用于创建筛选结果快照,并返回数量/分页漂移信息。
  • 扩展 /keys/resolve-selection,支持通过 snapshot 解析已选账号,同时报告快照成员中已不存在的账号数量。
  • 扩展 /keys/batch-action,支持 snapshot-backed selection,批量启用、禁用、删除、配置代理、清除代理时按快照成员执行。
  • 前端批量操作弹窗在“全选筛选结果”时先创建快照,并锁定当前选择范围,后续执行写操作直接提交 snapshot 引用。
  • 保留刷新额度、刷新 OAuth、导出凭据等需要逐账号前端处理的动作,通过 snapshot 解析账号后继续执行。
  • 保持号池列表既有搜索语义:未显式传 search_scope 时,状态筛选、快捷筛选、评分排序等旧路径继续按 full search 匹配备注、套餐、代理状态等字段;显式 search_scope=name 时仍只匹配名称/ID。
  • 补充快照漂移、非法引用、大结果集、并发变化、快照成员删除、前端选择锁定等回归测试。

行为变化

  • “全选筛选结果”后的写操作不再按执行时的实时筛选结果重新计算账号集合,而是按创建快照时的固定成员执行。
  • 如果快照过期、数量不匹配、Provider 不匹配,或不属于当前管理员,会拒绝执行并提示重新选择。
  • 单个管理员在单个 Provider 下只保留有限数量的近期快照,旧快照会被清理。
  • 超过快照上限的筛选结果会要求缩小筛选范围后重试。

范围

本 PR 聚焦管理端号池账号列表的批量选择和批量写操作,不改变普通调度路径,也不改变单个账号操作路径。

验证

  • cargo test -p aether-gateway selection_snapshot -- --nocapture
  • cargo test -p aether-gateway gateway_pool_list_keys_keeps_legacy_full_search_for_default_filtered_scope -- --nocapture
  • cargo test -p aether-gateway classifies_admin_pool -- --nocapture
  • cargo test -p aether-gateway gateway_handles_admin_pool_batch_action_locally_with_trusted_admin_principal -- --nocapture
  • pnpm vitest run src/features/pool/components/__tests__/PoolAccountBatchDialog.selection.spec.ts
  • pnpm -s exec vue-tsc --noEmit

风险说明

改动涉及管理端号池本地路由、runtime KV 快照存储和前端批量操作弹窗。快照设置了 TTL、数量上限、管理员归属校验和 Provider 校验,避免长期占用 runtime 状态或跨管理员复用。

主要行为变化是批量写操作会更严格地绑定用户确认时的账号集合,降低筛选结果漂移导致误操作的风险。

@novcky novcky force-pushed the feat/pool-selection-snapshots branch from aadae3a to f7b96d4 Compare June 6, 2026 12:24
@novcky novcky marked this pull request as ready for review June 6, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant