Skip to content

feat: 提供手动触发签到/余额刷新的入口(HTTP 端点或信号) #34

Description

@AllenReder

背景

当前签到与余额刷新只由内部调度器在 schedule.checkin_hours(默认 9/21 点)自动执行,没有对外的触发方式。这带来两个实际不便:

  1. 部署/重启后积分长时间显示为 0credits 初始值 0,只有签到任务调用上游 get-user-resource 后才写入池状态。若在 9 点后、21 点前部署,WebUI / /status 会一直显示 0,直到下一个整点,容易误判为「没积分」。
  2. 无法即时验证:想确认账号余额是否恢复、硬冷却(402 余额不足,本应签到解冻)能否提前解除,只能干等到下一个签到时点。

补充:仓库自带的 signin.sh / cmd/signin 是独立进程,能签到但只更新 auth 文件,不会回写运行中容器的内存池状态,因此无法用来刷新 /status

期望

提供一个手动触发入口,语义与调度器到点时执行的 RunCheckinNow() 完全一致(签到 + 余额查询 + 冷却解冻,末尾顺带旅行)。可参考的实现方向(任选其一):

  • HTTP 端点:如 POST /admin/checkin,挂在 withAuth 下,复用现有 api_key 鉴权;触发后同步或异步执行,返回简要结果(成功/已签到/失败的账号数)。
  • 信号触发:监听 SIGHUP(或自定义信号)执行一次 RunCheckinNow(),无需新增路由。

个人更倾向 HTTP 端点:便于 WebUI/脚本集成,也不与容器信号语义混淆。

备注

  • 安全上,端点应走 api_key 鉴权,避免暴露成未授权的高频上游调用入口;建议加最小触发间隔(如 60s)防误刷。
  • 如果设计上倾向「不做手动触发」,也欢迎说明理由;至少可考虑在启动时对 credits 未知的账号做一次余额拉取,以缓解第 1 点的误导。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions