yml2213
|
bc366fd6b9
|
feat(proxy): 支持多实例独立代理与短效API动态提取
- 实例配置独立:支持为每个实例单独配置 http/https/socks5 代理,避免单机多开挤兑触发斗鱼出口 IP 限流
- 动态 API 提取:原生支持星空代理等平台的 API 提取(兼容 JSON/文本格式),提供前端一键提取填入与连通性/延迟测速
- 定时前自动拉取:针对 3 分钟短效代理,支持在开抢前 15 秒自动提取并绑定最新 IP,并在预热前完成热连接与时间复校
- 修复复校竞态:将 resyncBeforeTrigger 从 3s 提升至 8s,确保三轮采样在开抢前顺利落盘,消除时钟漂移
- 验证方式:通过 go test ./... 全量测试与前端 vue-tsc/vite 编译,实测通过星空代理 API 解析测试用例
|
2026-10-24 19:26:16 +08:00 |
|
yml2213
|
ac6ba0d98c
|
抢购控制台支持查看精英手册兑换记录,发布0.3.7
此前只有和平小店能在控制台查兑换记录,精英/电竞手册只能去别的页面或客户端看。
现在账号作战表直接带上"兑换记录"列:查询一次就能看到每个账号兑换了什么、什么时候、
花多少积分,点"记录"看该账号全部明细。
- 新增 QueryExchangeRecords 批量查询(手册类活动):复用既有的并发 lookupExchangeRecords,
记录不做任何过滤("看我的兑换记录"不该藏东西),记录自带商品名与积分
- 商品筛选为可选项:不选=看全部记录;选了则额外标记该账号是否兑换过它(已兑换/未兑换)
- 手册的商品筛选用本地状态,不写回全局商品选择——免得只是想看记录却把抢购目标改掉;
和平小店沿用原来的全局商品选择
- 账号表"兑换记录"列对所有活动可见;手册侧展示条数与最近一条(商品名 + 时间),
小店的"已兑换/未兑换 + 订单状态"保持原样
- 每行"记录"弹窗:若已批量查询过就直接复用结果不再打接口;否则手册走 VerifyExchange,
小店走原有订单查询。弹窗表格按活动切换列(手册:商品/数量/兑换时间/积分/昵称)
- 聚合逻辑抽成纯函数 buildExchangeRecordsResult 并补测试
(记录不过滤、命中按商品统计、空 Cookie 与查询失败分开计数、未选商品不做命中判断)
|
2026-10-03 20:13:07 +08:00 |
|
yml2213
|
75eb0e8ce2
|
核对到的积分余额同步刷新主界面积分列,发布0.3.6
后端在"导入账号/手动查询/抢购后核对"时都会写入积分基线,但界面一直没有读它:
积分列的 scoreMap 只由"查询积分"按钮填充,所以自动核对完余额后主界面不动,
用户必须再点一次"查询积分"才看到新余额。
- 新增 GetScoreBaselines 绑定:一次性返回各账号最近一次已记录的积分余额
(Scheduler.ScoreBaselines → ScoreBaselineStore.Snapshot),界面直接读取,
不必再为每个账号单独发请求
- 前端 useAccounts 新增 syncScoresFromBackend:把后端基线写入 scoreMap 与
localStorage(与手动查询同一份状态);导入场景下会短暂轮询等待后端异步查询写完
- 抢购状态回到 idle 时自动同步一次(对应抢购结束后的核对结果)
- 导入账号成功后按导入的账号名同步一次
- 新增断言:核对后 ScoreBaselines 返回最新余额
|
2026-10-03 20:06:03 +08:00 |
|
yml2213
|
46c06180a5
|
重构锁单支付重试内核并修复多实例启动,发布0.3.0
- 抢购内核改为"每账号独立重试循环",移除轮次屏障:旧实现在 3 个中签账号卡住
60 秒支付退避时,另外 31 个账号空转 39 秒,还出现过"某一轮只跑 1 个账号、其余整轮没被尝试"
- 锁单退避改为读取配置的"重试间隔策略"(同一账号连续失败成倍放大,封顶 5 秒),
删掉硬编码 30 秒退避与"只重试一次"
- 锁单失败不再提前停止:限流(活动火爆/网络繁忙)继续重试;售罄也继续降频探测
(别人锁单后支付失败或锁单过期,库存会回流),只在窗口结束时按售罄/限流/普通失败分类上报
- 支付重试按斗鱼错误码决策:1644430001/1644400002/1644400014 视为"订单已受理、结果未定"
并快重试(300ms 起),取代按文案把"订单操作进行中"误判成频控的 60 秒退避;
不再设次数上限,只受 120 秒预算与锁单过期约束,超出预算如实报"支付结果未知"
- 已锁订单在 75 秒窗口结束后仍会支付完,不再受窗口约束
- 多实例:为每个实例分配独占的 WebView2 用户数据目录。Wails 默认所有实例共用
%APPDATA%\<可执行文件名>,而一个数据目录只能有一个浏览器进程,导致偶发开不出新实例、
必须全部关掉重开;实例占位因此提前到 wails.Run 之前完成
- 多实例:占位失败不再静默退回默认目录(会让两个进程共享 accounts.txt/config.json、
同秒启动还会写同一个日志文件),改为进程唯一的临时实例目录并记录降级原因
- 多实例:单个槽位锁被瞬时占用(杀软/索引器)时短暂重试,仍失败则继续试下一个槽位
而不是整个分配失败;日志文件改为独占创建,同秒启动自动追加 -2/-3 后缀
- 新增 %LOCALAPPDATA%\douyu-go\startup.log,记录每次启动与失败原因,
便于排查"窗口起不来"这类连应用日志都不会生成的问题
- 修复预热缓存日志每个账号打两遍、"账号尝试"计数误导(改为真实锁单/支付/直接兑换次数)
- 修复前端把含"成功"字样的失败文案显示成抢到(改为只认"成功|"前缀)
- 修复 jitterDuration 在基准小于 10ms 时 rand.Int63n(0) 会 panic 的隐患
- 设置页文案与作用域同步:重试间隔策略明确作用于锁单重试、"尝试包数"明确仅用于和平小店
|
2026-10-03 19:09:19 +08:00 |
|
yml2213
|
266f4a3da1
|
修复库存监控提前停止并发布0.2.0
|
2026-08-09 19:37:30 +08:00 |
|
yml2213
|
0c55da1e97
|
新增小店抢购报告导出并优化停止条件
|
2026-08-09 16:06:46 +08:00 |
|
yml2213
|
8cf29598a5
|
升级版本并改用内部账号存储
|
2026-08-09 13:04:54 +08:00 |
|
yml2213
|
1cd94c0179
|
优化和平小店兑换记录查询
|
2026-08-09 12:54:37 +08:00 |
|
yml2213
|
8919d020c5
|
修复和平小店商品图片和库存展示
|
2026-08-09 12:38:08 +08:00 |
|
yml2213
|
c41fd48b1c
|
fix: preserve xiaodian ios platform in asset queries
|
2026-08-09 10:10:49 +08:00 |
|
yml2213
|
feb72196c1
|
优化和平小店碎片兑换链路
|
2026-08-09 10:07:36 +08:00 |
|
yml2213
|
c6f16dfbee
|
增强和平小店账号管理
|
2026-08-09 09:18:41 +08:00 |
|
yml2213
|
dde2b43d82
|
feat: improve xiaodian seckill flow
|
2026-08-08 23:04:40 +08:00 |
|
yml2213
|
c84940a5dc
|
新增和平小店兑换记录查询
|
2026-08-08 19:44:39 +08:00 |
|
yml2213
|
57344c7874
|
完善CK管理增删改导入
|
2026-08-08 19:30:23 +08:00 |
|
yml2213
|
a4fed8befb
|
增加和平小店关键词固定抢购
|
2026-08-08 18:40:53 +08:00 |
|
yml2213
|
51e91b0483
|
增加和平小店商品分类展示
|
2026-08-08 18:29:31 +08:00 |
|
yml2213
|
395096e229
|
查询扭蛋碎片+点券
|
2026-08-08 17:50:00 +08:00 |
|
yml2213
|
379a9d58d3
|
小店商品列表shujuok
|
2026-08-08 17:40:16 +08:00 |
|
yml2213
|
7c2c5a61a6
|
重构: 账号管理抽离、强类型返回、消除反射、删除死字段
- 抽离账号管理为独立 AccountStore,Scheduler 只持有引用,
职责单一化(scheduler.go 减少 ~110 行)
- Wails 绑定方法返回结构体替代 map[string]any(新增 responses.go),
前端获得强类型,字段名保持兼容无需改前端
- ExchangeRecord 移至 types 包,消除 types↔client 循环依赖
- extractAPIStatus 用 apiResponder 接口替代 reflect 逐字段查找,
types.APIResponse 与 ExchangeListResponse 实现 APIStatus 方法
- 删除 types.Account.Password 死字段(鉴权仅用 Cookie)
- 重新生成 Wails 绑定,前端 vue-tsc 类型检查通过
|
2026-07-29 12:47:01 +08:00 |
|
yml2213
|
3ae9cb4a42
|
重构: 活动热切换并发安全 + 代码清理优化
- 活动切换并发安全:App/Scheduler 增加 client/cfg 读写锁与快照访问,
支持运行中热替换客户端,切换活动不再静默覆盖用户自定义 timeApiUrl
- 启动失败时写入崩溃日志文件便于事后排查
- 前端类型声明从 Wails 自动生成的绑定派生,避免手写契约漂移
- 提取 parseAccountFile 消除 ExportAccounts/OrganizeAccounts 重复解析逻辑
- 删除 utils 中未使用的 ReadJSON/WriteJSON/WriteError 及空目录 internal/app
- gofmt 统一格式化(activity/types/scheduler 字段对齐)
- 新增 logger/seckill/utils 单元测试
- 清理 git 中遗留产物(frontend/app.js、yml.txt、其他日志/)并补全 .gitignore
|
2026-07-29 12:33:16 +08:00 |
|
yml2213
|
f4d33d19c0
|
增加电竞手册
|
2026-07-29 10:36:44 +08:00 |
|
yml2213
|
0f5e85d94e
|
优化抢购逻辑:移除手动提前量、冷却累计停止、默认包数2
- 移除用户手动提前量设置,改为固定 100ms 内部提前量
- 新增冷却累计停止:单账号冷却 ≥5 次自动放弃
- 默认发包数从 1 改为 2
- 前端移除提前量输入框和 localStorage 存取
|
2026-06-27 19:07:02 +08:00 |
|
yml2213
|
c90f80045e
|
优化抢购流程日志和复验性能
|
2026-06-27 08:07:21 +08:00 |
|
yml2213
|
59bd34b004
|
feat: 新增激进抢购模式
- 添加 SeckillMode 类型(标准/激进)
- 激进模式:第一轮完整校验,后续复用 CSRF 直接兑换
- 每轮开始时清空缓存,强制重新获取 CSRF
- 设置面板添加模式切换
- 缓存 30 秒有效期,CSRF 错误时自动回退标准模式
|
2026-06-26 13:58:54 +08:00 |
|
yml2213
|
9bff652c66
|
feat: 自定义重试间隔策略 + 修复按钮hover样式
- 新增重试间隔阶段配置,支持自定义时间分界点和频率
- 默认配置: 0-8秒=130ms, 8-25秒=260ms, 25-75秒=900ms
- 设置面板添加可增删的阶段配置 UI
- 修复按钮 hover 时文字变白的问题
|
2026-06-26 13:46:46 +08:00 |
|
yml2213
|
8790c4ca33
|
增加设置界面、debug日志等级、版本号展示、构建脚本
- 新增设置弹窗: trace开关/正文上限、日志等级(debug/info/warn/error)、并发数、重试次数
- 配置运行时生效,持久化到 config.json
- 日志系统支持 debug 级别过滤
- 工具栏展示版本号(v0.0.2),来源 wails.json + constants.go
- 抢购并发数和重试次数改为读取配置,不再写死常量
- 新增 build.sh 构建脚本,Windows exe 文件名带版本号
- config.json 加入 .gitignore
|
2026-06-24 20:18:33 +08:00 |
|
yml2213
|
154e55d484
|
初步优化成全部go+wails
|
2026-06-24 19:11:02 +08:00 |
|