Skip to content

feat: 融合xbin的自动补货等功能#45

Open
okxlin wants to merge 1 commit intodou-jiang:mainfrom
okxlin:sync/doujiang-squash-merge-xbin2-v3-20260328-2136
Open

feat: 融合xbin的自动补货等功能#45
okxlin wants to merge 1 commit intodou-jiang:mainfrom
okxlin:sync/doujiang-squash-merge-xbin2-v3-20260328-2136

Conversation

@okxlin
Copy link
Copy Markdown

@okxlin okxlin commented Mar 28, 2026

变更说明

相对上游 dou-jiang/codex-console,本 PR 主要补齐自动注册 / 自动补货相关能力,恢复首页可操作入口,并继续修复合并整理过程中发现的调度、取消、监控刷新、计划生成和前端恢复行为等问题,使整条链路更完整、更稳定。

主要差异

新增

  • 新增自动注册核心模块 src/core/auto_registration.py
  • 新增自动注册配置项 registration_auto_*
  • 新增首页自动注册模式入口及配置面板
  • 新增自动注册监控接口 /registration/auto-monitor
  • 新增自动注册相关测试:
    • tests/test_auto_registration_merge.py
    • tests/test_settings_registration_auto_fields.py

补充与修复

自动注册调度与补货执行

  • 补充 CPA auth-files 查询与库存统计能力
  • 补充注册设置接口对自动注册配置的读写与校验逻辑
  • 补充应用启动时自动注册协调器绑定
  • 调整自动补货下一次检查的调度方式,改为基于“本轮完成时间 + interval”计算
  • 修复自动补货检查仅首次生效、后续未按间隔持续执行的问题
  • 修复首次补货后最近检查时间和后续补货时机不稳定的问题

取消链路与状态一致性

  • 修复自动补货批次取消时,子任务未正确同步取消的问题
  • 为注册引擎增加取消感知,在重试等待、验证码等待等阻塞点支持更及时退出
  • 修复取消任务时子任务可能被记录为 failed 而不是 cancelled 的问题
  • 修复并行模式下批次取消后,排队任务仍继续启动的问题
  • 修复流水线模式等待期间取消响应不及时的问题
  • 修复批次 completed/success/failed 统计更新不正确的问题
  • 修复取消后未启动任务未计入 completed/progress 的问题
  • 为批次取消记账增加幂等保护,避免重复累计进度
  • 优化自动补货结束日志文案,区分“已完成”和“已取消”

监控刷新与库存展示

  • 补充首页自动注册前端保存、轮询和状态展示逻辑
  • 修复自动补货批次结束后,前端页面“最近检查”和“Codex 库存”未及时刷新的问题
  • 在补货任务完成或取消后,立即回刷一次自动监控状态,使页面能在下一次轮询时拿到最新库存与检查时间
  • 优化库存刷新兜底逻辑:当刷新失败时保留上一次有效库存值,避免页面短暂显示为 0
  • 对“读取当前库存”和“生成补货计划”做拆分,降低 monitor 回刷与补货计划逻辑之间的语义耦合

补货计划生成

  • 修复结构调整后 build_auto_registration_plan()cpa_service_id 丢失导致的 NameError
  • 确保自动注册库存检查在生成补货计划时,仍能正确保留并传递目标 CPA 服务 ID

前端页面恢复行为

  • 修复注册页在切换到自动注册模式或刷新页面后,前端会自动恢复自动注册监控的问题
  • 调整注册页前端逻辑,进入自动注册模式时只展示配置,不再自动启动监控
  • 清理自动注册模式的页面恢复逻辑,避免因 sessionStorage 残留导致页面加载后自动继续执行

删除

  • 删除临时文件 tmp_app_core.js
  • 删除临时文件 tmp_redirectToPage.js

兼容性调整

  • 将 FastAPI 生命周期事件切换为 lifespan
  • 将 Pydantic 类式 Config 改为 ConfigDict
  • datetime.utcnow() 替换为兼容式 UTC 时间辅助函数
  • 调整 SQLAlchemy 声明式基类导入方式

测试与验证

已通过:

  • python -m pytest tests/test_auto_registration_merge.py
  • python -m pytest tests/test_settings_registration_auto_fields.py
  • 回归测试:19 passed
  • 编译检查:python -m compileall src tests

致谢

感谢 xbin-codex-console 在自动注册 / 自动补货方向上的功能探索与实现积累。本次提交并不是简单搬运,而是基于其已有思路,对相对上游缺失的能力进行了重新梳理、合并修复与兼容整理,以便更接近上游协作和后续 PR 维护。

AI 生成说明

本 PR 中的大部分代码合并与修复工作由 AI 辅助完成,包括差异分析、代码合并、缺失能力补齐、测试补充和说明文案整理。

f0c597c4879a0da5773f08a9c074c222

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