yml2213
|
3b3a4bebcb
|
feat(douyu): 代理写读分离 — 仅兑换/锁单/支付/开通/充值/送礼走代理
此前代理配置页开启后所有斗鱼任务(含查积分/刷列表等只读任务)统一走代理:
- API 模式每任务 fetch 新代理, 查询任务白白消耗代理额度
- 查询任务失败面被代理抖动放大, 但查询本不怕 IP 频控
新策略 (DOUYU_PROXY_TASK_TYPES 白名单):
- 写操作/消耗类: lock/pay/exchange_goods, exchange_esports/xpd_goods,
create_elite/esports/gold_qr, donate_* 走代理 (静态模式或 API 每任务新代理)
- 读操作类: query_*/refresh_*/get_*_bind_qr 等始终直连, 不消耗额度
- 判型用批次 task_type (同批次同类型, 与任务一致); 总开关仍为代理配置页
测试: 新增读任务直连/白名单覆盖断言, 三模式行为断言保留, 101 单测通过
|
2026-08-30 11:28:10 +08:00 |
|
yml2213
|
b9eb944d2f
|
refactor(huya): runner 按功能域拆分 Mixin
huya_runner.py (1664行) → core/bind/goods/recharge 四个 Mixin + 入口聚合:
- huya_runner_core.py: 批次状态/日志/任务落库/注册表 + 共用常量 sourceId
- huya_runner_bind.py: 绑定状态机/扫码确认绑定/轮询
- huya_runner_goods.py: 积分/兑换记录/商品刷新/兑换
- huya_runner_recharge.py: 充值商品/下单/到账轮询
- 对外 API 不变 (HuyaBatchRunner/huya_batch_registry), routers 零改动
- pyflakes 全净 (含 TYPE_CHECKING 注解/跨域常量导入修复), 99 单测通过
|
2026-08-30 11:25:35 +08:00 |
|
yml2213
|
9f743e50a6
|
fix(douyu): 补齐拆分后支付轮询常量导入 + 代理三模式断言测试
- douyu_runner_manual/gold: 导入 core 的 DOUYU_PAYMENT_POLL_* 常量
(之前仅在 douyu_runner.py 单文件内可见, 拆分后到账轮询会 NameError)
- 新增 tests/test_douyu_runner_proxy.py: 静态/API/关闭三模式 + 降级直连 +
activity_client session 级 proxies, 兑现 8fe9fdf 提交说明中的行为断言
|
2026-08-30 11:25:35 +08:00 |
|
yml2213
|
8fe9fdfd8b
|
feat(douyu): 斗鱼任务接入代理 — 应对兑换 IP 频控 (精英手册火爆)
配置源 = 代理配置页 (与 CK 检测/虎牙注册同款), 开关在代理配置页:
- 静态模式: 手填 http/https → 全任务同一代理
- API 模式: 每任务取新代理 (ProxyFetcher, 白名单同步, 1.5s 间隔限速),
失败降级直连并推送告警
- DouyuActivityClient 支持 proxies (session 级, 覆盖全部请求点;
trust_env=False 维持不变, 不受环境变量影响)
按拆分后新结构落在 douyu_runner_core.py; 触及精英手册/和平小店/电竞等
全部斗鱼任务出网。三种模式行为断言 + 94 单测通过
|
2026-08-30 11:19:15 +08:00 |
|
yml2213
|
39b202bc3f
|
refactor(douyu): runner 按功能域拆分 Mixin + 精英手册兑换对齐真机流程 (HAR 审核通过)
拆分: douyu_runner.py (-3186行) → core/bind/manual/gold/donate/goods/xpd 七个
Mixin + 入口聚合类, douyu_batch_registry 供 routers 重导出
精英手册兑换对齐 HAR 抓包 (activity_client +379 行):
- csrf 复用 Cookie 值不再每次 generateCsrf (HAR 实测全程零 csrf 请求),
仅服务端报 csrf 错误时 force_refresh 重试一次
- pay Referer 补 roomId 对齐浏览器
- 新增手册链路接口: elite_user_info/storedetail/pre_exchange check+confirm/
subscribe/batch_limit/赠品兑换/自动转换
- resolve_exchange_plan: 浏览器兑换按钮状态机路由 (normal/subscribe/
pre_exchange/wait/blocked)
- 兑换执行: 人类节奏抖动 → 锁单(火爆重试1次) → 支付分级退避
(频控 30/60/90s 4次上限, 普错 2/5/10/20s 5次上限, 300s 锁单期 15s 余量,
可中断睡眠)
测试: 新增 17 项 (csrf 复用语义/状态机路由/Referer), 全量 94 通过;
未夹带代理改动
|
2026-08-30 11:05:18 +08:00 |
|
yml2213
|
6e17a575dd
|
Revert "fix(douyu): 精英宝典兑换等斗鱼任务接入代理 — 此前全部裸连"
This reverts commit a05ae245bf.
|
2026-08-30 10:26:17 +08:00 |
|
yml2213
|
a05ae245bf
|
fix(douyu): 精英宝典兑换等斗鱼任务接入代理 — 此前全部裸连
问题: DouyuBatchRunner/_client 创建的 DouyuActivityClient 无 proxies,
trust_env=False 下斗鱼任务(精英宝典兑换/和平小店/电竞/送礼等全部 45 个
请求点)直连本机出口 IP, 代理配置页形同虚设。
- activity_client: __init__ 支持 proxies (session 级, 一次覆盖全部请求)
- douyu_runner: 装载全局代理配置 (与 CK 检测/虎牙注册同源 代理配置页):
· 静态模式: 配置页手填 http/https → 全任务同一代理
· API 模式: 每任务从代理 API 取新代理 (ProxyFetcher, 含白名单同步,
1.5s 最小间隔防打爆), 失败降级直连并推送告警日志
- 验证: 77 单测 OK; 三种模式(静态/API/关闭)行为断言通过
|
2026-08-30 10:25:16 +08:00 |
|
yml2213
|
22aa485536
|
fix(web): 审核回归 — 5 项修复 (渠道写入丢失/斗鱼WS生命周期/归属校验/恢复订阅/画像key稳定)
B1 routers/huya.py: 批量 Web 登录 login_channel/status 回填在 helper 内部 commit
之后赋值且未再提交 → 丢失; 补 db.commit() 并统一 status=active
B2 routers/login.py + services/login_service.py: 斗鱼登录 WS 断线即 pop 批次,
刷新后无法重连订阅 → 对齐虎牙模式 (BatchRegistry.mark_finished, 仅结束后清理)
B3 routers/login.py: WS 增加批次归属校验 (非 view_all 仅可订阅自建批次)
S1 LoginTasksPage: effectiveBatchId 从任务列表推导活跃批次, 刷新后停止按钮/
日志订阅自动恢复
S4 services/huya_service.py: username 仅在为空时回填, 防止 udb_passport 覆盖
登录名导致一号一设备绑定 key 漂移
验证: 77 后端单测 OK; tsc + vite build OK
|
2026-08-29 18:20:27 +08:00 |
|
yml2213
|
6ded82ac8b
|
fix(douyu): reject invalid activity cookies
|
2026-08-28 15:51:59 +08:00 |
|
yml2213
|
9ee4e49a50
|
feat(douyu): support elite handbook lock orders
|
2026-08-28 14:06:11 +08:00 |
|
yml2213
|
bf2f78aa70
|
优化客服CK重登流程
|
2026-08-14 14:43:21 +08:00 |
|
yml2213
|
7fe6228901
|
增加充值审计日志
|
2026-08-14 11:52:30 +08:00 |
|
yml2213
|
e2a45b7893
|
优化斗鱼充值日志与配置
|
2026-08-14 11:27:53 +08:00 |
|
yml2213
|
0bf69c1240
|
优化斗鱼充值
|
2026-08-13 21:43:27 +08:00 |
|
yml2213
|
902e669614
|
功能: 接入鱼翅供应商直充渠道
|
2026-08-13 21:11:20 +08:00 |
|
yml2213
|
cf3fe68de3
|
功能: 按用户同步斗鱼工作台
|
2026-08-13 15:47:07 +08:00 |
|
yml2213
|
4c978b923b
|
qq 登录修复
|
2026-08-12 19:45:15 +08:00 |
|
yml2213
|
5074faf9f6
|
优化了部分支付宝界面
|
2026-08-12 19:12:22 +08:00 |
|
yml2213
|
d19c0902f2
|
初步增加, 扫码登录成功
|
2026-08-12 16:22:55 +08:00 |
|
yml2213
|
ba35ac5c0d
|
fix: preserve xpd role platform in wallet queries
|
2026-08-09 10:06:57 +08:00 |
|
yml2213
|
8b7ff770e2
|
fix: preserve xpd purchase records in task results
|
2026-08-08 21:56:39 +08:00 |
|
yml2213
|
a342dddcb6
|
feat: add xpd purchase records view
|
2026-08-08 21:41:44 +08:00 |
|
yml2213
|
948e7d7246
|
fix: keep one douyu cookie per account
|
2026-08-08 21:26:32 +08:00 |
|
yml2213
|
39ea0d2184
|
feat(cookies): Cookie 失效后可账号重新登录替换, 并修复 Cookie 列空白过多
|
2026-08-08 01:39:02 +08:00 |
|
yml2213
|
64b017fd6a
|
优化兑换结果图片
|
2026-08-08 01:06:16 +08:00 |
|
yml2213
|
de23d87087
|
和平小店可以返回所有商品
|
2026-08-08 00:30:58 +08:00 |
|
yml2213
|
ec5eb637bb
|
feat(douyu): 支持和平小店商品兑换
|
2026-08-07 22:47:13 +08:00 |
|
yml2213
|
a515ea6e0a
|
feat(douyu): 和平小店扭蛋碎片查询 + 深色模式修复 + 任务状态 WS 即时推送
- 碎片: 新增 query_xpd_fragments 任务, 复用 e语言 gamecoin 接口取扭蛋币 jb2,
账号已存角色回退(规避 Livelink 风控), accounts.xpd_fragments 字段与迁移
- 列表: 和平小店移除鱼翅/限制兑换/换绑时间列, 新增扭蛋碎片列;
操作区硬编码白底改用 theme token, 深色模式适配(三个手册共用)
- 轮询: 任务状态经 WS(level=task)即时推送(二维码/绑定进度即时展示),
pending/running/终态全覆盖, REST/WS 载荷统一 douyu_task_payload,
raw 快照递归剥离, HTTP 轮询降频 5s/30s 兜底
|
2026-08-06 20:21:28 +08:00 |
|
yml2213
|
c05c0e044e
|
fix(douyu): 优化和平小店绑定逻辑
|
2026-08-06 18:48:29 +08:00 |
|
yml2213
|
86459a1bd0
|
fix(douyu): 已绑定账号生成二维码不再立即成功, 正常等待扫码换绑
- 后端: get_xpd_bind_qr 生成二维码前记录绑定前状态(before_bound/
before_role_name); 轮询判断改为 —— 未绑定: 检测到 bind_role=1 成功;
已绑定(换绑): 角色名变化才算成功, 角色不变继续等待
- 前端: 弹窗保留二维码与角色信息; 轮询期间显示"当前绑定: 原角色",
换绑成功显示新角色; 确认绑定维持手动(小程序内人工确认)
|
2026-08-06 18:28:06 +08:00 |
|
yml2213
|
ee097e1fda
|
fix(douyu): 和平小店绑定二维码自动弹出 + 扫码后自动更新角色
- 后端: get_xpd_bind_qr 生成二维码后保持 running, 每 5s 轮询
bindInfo(最长 300s), 检测到绑定即回写角色并自动结束
- 前端: hasBindQrcode 纳入 get_xpd_bind_qr → 新二维码自动弹出;
弹窗显示等待扫码/绑定成功状态与角色; 对 xpd 任务隐藏
不适用的"查询角色/确认绑定"按钮
|
2026-08-06 17:42:17 +08:00 |
|
yml2213
|
5f63d77dc3
|
feat(douyu): 和平小店绑定功能(生成绑定二维码/查询绑定信息)
- activity_client: xpd_bind_qr(roleParam 签发 livelink 绑定链接, 微信扫码进小程序绑定)
+ xpd_bind_info(bindInfo 查询绑定状态/角色/平台), gameRole 非 dict 边界防护
- runner/service: 注册 get_xpd_bind_qr / query_xpd_bind_info 任务, 回写
xpd_game_name / xpd_bind_status
- router: get_xpd_bind_qr 的 url 加入列表接口保留白名单(二维码展示)
- 前端: 和平小店面板新增两个按钮, 二维码列支持 get_xpd_bind_qr 展示/放大
|
2026-08-06 17:33:11 +08:00 |
|
yml2213
|
fdc74eba8c
|
feat(douyu): 新增和平小店查询模块(绑定角色/商品列表/点券余额)
- activity_client: getIframeUrl 签发 code/sig,道聚城 getrole.out/recommend/balance 接口
(2026-08 起需 isCode=1 + authType=delegate + sAnchorId 才能通过 Livelink 校验)
- 迁移 0016: accounts xpd_* 字段、douyu_config 小店配置(actAlias/actId/rid)、
douyu_xpd_goods_snapshot 商品快照表
- runner/service/router/schema 注册 query_xpd_role/refresh_xpd_goods/query_xpd_balance
三个任务,任务结果剥离 role.raw 防 openid 泄露
- 前端: 和平小店路由/菜单/DouyuTasksPage 三态/商品下拉/配置弹窗
|
2026-08-06 17:23:59 +08:00 |
|
yml2213
|
a466e11c9c
|
优化斗鱼绑定状态同步
|
2026-08-02 17:54:36 +08:00 |
|
yml2213
|
1b06694c66
|
fix(douyu): 确认绑定回查按已生效绑定判定并支持同步延迟等待 & 失败提示优化为待绑定账号换绑限制文案 & 前端居中弹窗提示
|
2026-08-02 13:37:15 +08:00 |
|
yml2213
|
de2e53748d
|
fix(douyu): 修复未换绑成功时角色信息被待确认新角色污染 & 增加绑定接口明细日志
|
2026-08-02 13:18:56 +08:00 |
|
yml2213
|
c95d6963b8
|
feat(douyu): 兑换成功后自动刷新积分 & 修复兑换图片首开裂图
- 兑换成功后自动调用积分查询,更新账号最新积分并写入任务结果
- 兑换图片并发生成竞态修复:同任务共享 in-flight Promise,避免 revoke 导致裂图
- 兑换图片移除积分展示
|
2026-08-01 17:28:36 +08:00 |
|
yml2213
|
e22436bfd6
|
fix(账号): 批量导入跳过已存在的重复账号
- 导入前按用户名(大小写不敏感)查库去重,同批文本内重复也跳过
- 返回消息区分格式跳过与重复跳过数量
|
2026-08-01 13:27:06 +08:00 |
|
yml2213
|
592eef3582
|
feat(douyu): 兑换成功后生成结果图片并自动复制到剪贴板
- 账号表格新增兑换图片列,展示每账号最近兑换成功的结果卡片
- 新完成兑换任务自动生成图片并复制到剪贴板(批量时最后完成者覆盖)
- canvas 绘制兑换卡片:商品图/商品名/游戏角色/区服/兑换账号/时间
- 后端兑换成功结果补充 game_name/game_channel/account_name 字段
- 不支持剪贴板的环境降级为点击查看大图
|
2026-08-01 13:23:22 +08:00 |
|
yml2213
|
11b249f1fb
|
账号导入--可以直接打标签
|
2026-08-01 12:24:19 +08:00 |
|
yml2213
|
8de269f958
|
增加兑换
|
2026-07-28 18:12:11 +08:00 |
|
yml2213
|
624198bca4
|
优化电竞手册换绑时间展示
|
2026-07-28 17:27:35 +08:00 |
|
yml2213
|
d7a8666fe4
|
新增电竞手册独立绑定流程
|
2026-07-28 17:12:08 +08:00 |
|
yml2213
|
63962811f8
|
优化斗鱼任务操作体验
|
2026-07-25 11:58:30 +08:00 |
|
yml2213
|
6ca7898520
|
优化斗鱼支付后自动刷新
|
2026-07-25 11:46:11 +08:00 |
|
yml2213
|
3350b56f5c
|
优化任务操作台交互体验
|
2026-07-25 11:21:53 +08:00 |
|
yml2213
|
df4297bee5
|
完善客服操作台权限与绑定二维码
|
2026-07-25 09:45:49 +08:00 |
|
yml2213
|
9471a5b4ff
|
修复斗鱼绑定主链路:双 actAlias 分工与任务驱动扫码确认
扫码/确认走活动 alias,角色与换绑最新态优先查 cjm;生成二维码前强制校验换绑冷却,前端以任务结果为单一数据源展示二维码、待确认角色与换绑时间。
|
2026-07-24 22:36:25 +08:00 |
|
yml2213
|
62099e8d68
|
新增斗鱼活动任务模块:绑定、宝典、鱼翅、积分、兑换等功能
- 新增 activity_client.py:封装斗鱼活动/兑换/充值/送礼接口
- 新增 cookie_utils.py:Cookie 解析与规范化工具
- 新增 douyu_service/douyu_runner:斗鱼任务服务层与批量执行器
- 新增 douyu 路由:任务类型查询、账号列表、配置管理、商品管理、批量任务、WebSocket 日志
- 新增 models/schemas:DouyuTask/DouyuConfig/DouyuGoodsSnapshot 模型,Account 扩展点数/鱼翅/绑定状态等字段
- 新增数据库迁移:斗鱼活动相关表与 accounts 字段补充
- 新增前端 DouyuTasksPage 任务操作台页面
- 兑换商品请求添加 sec-ch-ua 反检测头
- 兑换商品支持最多 8 次重试 + csrf_token 自动刷新
- 注册 douyu:task / douyu:config 权限点
- 侧边栏新增斗鱼分组与任务操作台菜单入口
|
2026-07-24 16:11:39 +08:00 |
|
yml2213
|
a13dde57dd
|
恢复虎牙绑定二维码自动识别角色
生成二维码后后端轮询扫码与角色同步,扫码完成无需再手动点查询角色。
用 bind_polling 区分真实轮询与僵尸 running,避免再次锁死任务台。
|
2026-07-24 12:01:11 +08:00 |
|