yml2213
|
99db772ddd
|
feat(douyu): 精英宝典支持查询开通状态,开通前先校验且不再误判到账
线上两个问题:工作台看不到账号有没有开通精英宝典;点开通时二维码会「闪一下
就变小」——大图弹窗 2~4 秒后自动关闭,只剩列表里 56px 的小二维码。
根因:
- getUserInfo 的 manualType/expireTime 才是开通状态的权威口径,但只有兑换
流程用过一次,没有任务类型对外暴露;前端只看积分列,而「开通后积分花完」
和「从未开通」都是 0 分,区分不了(实测 13456 manualType=1/score=0);
- 开通前不查状态,且到账判定写成「积分 >= 300」:账上本来就有 680 分的账号
在出码后第一轮轮询就被判成功,前端按 paymentArrived 自动关掉了弹窗。
改动:
- 新增任务类型 query_elite_status:查 manualType/manualScore/expireTime 并
落库到 accounts.elite_opened / elite_expire_time(迁移 20261001_0036),
精英工作台加查询按钮与「宝典状态」列(已开通+到期 / 未开通);
- create_elite_qr 开通前先查状态:已开通直接判成功、不再生成支付码(方案 A),
既消除二维码闪现,也避免给已开通账号开出真实支付单;
- 到账判定改为「积分比开通前增长」,基线用与轮询同源的 credit/balance 取,
取不到基线才退回旧口径;
- 支付弹窗不再自动关闭:到账/失败/停止都在弹窗里给结论 + 手动关闭;列表小
二维码在任务进终态后隐藏。
新增 9 条测试覆盖上述行为,回退 runner 时其中 8 条失败。
|
2026-10-01 19:08:25 +08:00 |
|
yml2213
|
6a25097412
|
fix(douyu): 替换 CK 是最后一步,只有登录成功才写回记录
上一版把可见性改成「记录里还有 CK」,账号不会再消失,但根因还在:批次启动
时就把复用的成功记录改成 pending(旧 CK 仍在),停止或失败后没人恢复状态,
记录一直显示成一次没完成的登录。
按「替换 CK 是最后一步」把两者拆开:
- login_tasks 新增 attempt_status / attempt_message / attempt_batch_id /
attempt_at,批次只写 attempt_*,status/cookie/message 只在登录成功时更新;
- _begin_attempt 只登记尝试,_mark_attempt_failed 只记录失败(已有 CK 的记录
原样不动),_write_login_success 是唯一替换旧 CK 的入口;
- 停止批次、代理不可用、登录异常、进程重启清理全部改为收敛 attempt_*,
因此停止一个批次不可能再让账号失去 CK;
- 复用的记录改用「持有 CK 的记录」,不再创建第二条记录,失败记录在无 CK 时
才复用;
- 登录任务列表/统计按 attempt_* 展示「这次登录怎么样了」,批次筛选同时匹配
attempt_batch_id;CK 操作页的重登状态也从 attempt_* 映射;
- 迁移 20261001_0035 归一存量数据:持有 CK 的记录 status 统一为 success、
历史状态搬进 attempt_*,无 CK 且卡在 pending/running 的收敛为 failed。
新增测试:批次失败/停止不碰旧 CK、成功后替换 CK、列表展示尝试状态、
迁移存量数据归一。
|
2026-10-01 18:29:49 +08:00 |
|
yml2213
|
64c399617a
|
fix(douyu): 账号只要还持有 CK 就不再从工作台消失
线上事故:分配给客服的账号(如「远行者103」)在斗鱼工作台与 CK 列表里
查不到,只有账号管理里还能搜到。原因是可见性判定写成了
LoginTask.status == "success",而按设计保留旧 CK 的三种状态都不再是
success:
- 普通登录批次启动时会把复用的成功记录置为 pending/running(旧 CK 保留),
批次被停止或失败后一直停在 pending,账号永久消失;
- CK 重登失败置为 relogin_failed(旧 CK 保留),账号从工作台消失;
- 普通登录失败置为 failed(复用记录的旧 CK 未清空),同样消失。
线上现状:12545 个账号持有 CK,但只有 11703 个能出现在工作台,842 个
(644 重登失败 + 176 排队中 + …)对客服和管理员都不可见。
改动:
- douyu_service 新增 cookie_holding_filter()/latest_cookie_login_task(),
以「记录里还留着 Cookie」作为唯一判据,并抽出 LOGIN_IN_FLIGHT_STATUSES
与 cookie_operable_filter() 供检测/重登入口复用;
- 斗鱼工作台账号列表、任务账号校验、账号管理 has_cookie 筛选、分配校验与
概览、CK 管理/操作列表、首页 CK 统计统一改用该判据;
- 工作台取 CK 从 latest_success_login_task 换成 latest_cookie_login_task,
保证重登失败/排队中的账号仍能被任务正常执行;
- 新增 cleanup_orphan_login_tasks():进程重启后把遗留的 pending/running
收敛为 failed 并保留旧 CK,避免页面永久显示排队中。
新增回归测试覆盖上述状态下的可见性、可执行性与启动清理。
|
2026-10-01 18:18:02 +08:00 |
|
yml2213
|
b58c6b4357
|
执行 Ruff 安全自动修复
|
2026-08-31 10:28:14 +08:00 |
|
yml2213
|
c891ac982e
|
type: 收敛测试 schemas 与协议层类型
|
2026-08-30 20:35:08 +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
|
e2a45b7893
|
优化斗鱼充值日志与配置
|
2026-08-14 11:27:53 +08:00 |
|
yml2213
|
902e669614
|
功能: 接入鱼翅供应商直充渠道
|
2026-08-13 21:11:20 +08:00 |
|
yml2213
|
cf3fe68de3
|
功能: 按用户同步斗鱼工作台
|
2026-08-13 15:47:07 +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
|
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
|
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
|
8de269f958
|
增加兑换
|
2026-07-28 18:12:11 +08:00 |
|
yml2213
|
d7a8666fe4
|
新增电竞手册独立绑定流程
|
2026-07-28 17:12:08 +08:00 |
|
yml2213
|
3350b56f5c
|
优化任务操作台交互体验
|
2026-07-25 11:21:53 +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 |
|