Skip to content

Feat/gamesign#272

Open
Lance0174 wants to merge 19 commits into
devfrom
feat/gamesign
Open

Feat/gamesign#272
Lance0174 wants to merge 19 commits into
devfrom
feat/gamesign

Conversation

@Lance0174

Copy link
Copy Markdown

新增游戏社区签到小工具,支持在指定时间段内进行随机签到,也支持在队列启动时进行签到。签到后的通知没修....
米游社新增QR扫码辅助获取token;需要app/api/qr_login.py,app/tools/miyoushe_qr.py这两个文件,移除后则不会显示扫码登录。

DLmaster361 and others added 19 commits June 12, 2026 21:22
后端:
- 新增 GameSignAccountGroup(ConfigBase) 账号组数据模型
- ToolsConfig 中三个扁平 token 字段替换为 MultipleConfig([GameSignAccountGroup])
- 新增账号组 CRUD API: /sign/account/list,add,get,update,delete,reorder
- game_sign.py: run_all_sign_in() 遍历所有账号组执行签到
- timer.py: 游戏签到调度器适配
- 修复 API 数据格式: toDict() 嵌套格式与 schema 扁平格式的转换

前端:
- TabGameSign.vue 账号管理重构为 a-collapse 折叠式多账号组
- 新增 useGameSignAccountApi.ts composable
- 修复签到结果「暂无数据」: editingConfig 未同步 Result
- 修复时间选择器闪烁: updateStatus 绕过 loading 状态
- 修复卡片标题重复: emptyPlatforms 索引计算错误
- 调整排版顺序: 签到结果 → 签到设置 → 账号管理
- 账号名层级区分: 左侧蓝色竖条指示器
- 折叠面板改为表格布局,对齐定时列表风格
- 标签云多色展示(已签绿/部分橙/未签红/未配置灰)
- Tooltip 只绑定该用户数据,按用户名匹配 account_alias
- 砍掉运行设置区(RunOnStartup/ScheduledRun/AutoStart)
- 删除独立签到结果区,信息整合到标签云
- 账号组统一改称用户
- 全部签到按钮不受窗口时间限制(手动签到逻辑)
- timer.py 回退为纯窗口调度
- OpenAPI 重新生成,类型对齐
签完后通过 onRefreshConfig 立即获取最新 Result,不再等 1 秒轮询
清理 loadTools 中残留的 RunOnStartup 默认值
- skland_sign_in 支持 app_code=all,一次调用同时签方舟和终末地
- 所有签到结果统一带 account_uid,前端按 uid 精确匹配用户
- update_game_sign_account 检测 token 变更时自动清空该账号签到结果
- 新增加 _check_system_time 时间校准(偏差>5分钟警告)
- 替换 resultVersion/watch hack 为 userTagsMap computed,社区标签随签到结果实时更新
- 删除 *Enabled 字段(MiyousheEnabled/KuroEnabled/SklandEnabled),无Token=不签到
- 新增 merge_sign_results() 统一结果合并,手动签到 replace=True,定时签到 append
- 森空岛签到返回按游戏分组 {arknights, endfield},避免一个Token重复触发
- 新增 run_all_sign_in(force) 参数,force=False 时按用户 LastSignDate 跳过已签到
- 新增 try_game_sign_for_task() 由定时任务和任务结束事件触发
- 社区标签只显示平台名(如「森空岛」),状态由标签颜色表达
- 默认名称从「账号组」改为「用户」
- 修复 try_game_sign_for_task 缺少 merge_sign_results import 的运行时错误
- 移除 TabGameSign.vue 的 BOM 字符
- 修复 timer.py 重复 import 和 docstring 缩进问题
- 未签名标签颜色从黄色改为灰色
- 用户名/操作列标题文字居中,控件居中并留足两侧间距
- 操作列宽度 180→200px,编辑按钮远离左侧边框线
- 签到跳过顺序:先检查 Enabled 再检查 LastSignDate,避免禁用用户误打日志
- try_game_sign_for_task 日志从英文改为中文,与同文件风格一致
- 放宽 cookie 校验:支持 cookie_token+UID 或 stoken_v2+mid+UID 两种认证策略
- 新增 Passport Token 派生:stoken_v2+mid 可通过 getCookieAccountInfoBySToken 派生 cookie_token
- 补全 UID 别名:确保 API 能识别 ltuid/account_id 等字段名
- 修复角色列表解析:兼容扁平结构和嵌套结构两种 API 返回格式
- 处理 -5003 返回码:识别为已签到状态(之前仅检查 message 文本)
- 移除死代码:_do_sign 中无效的 nickname 循环
- 新增 _RiskControlError 异常类和 _safe_json_parse 安全解析
- API 返回空响应或非 JSON 时识别为风控,返回 status='风控'
- 角色列表、签到状态检查、签到执行三个环节均处理风控
- 前端新增 'risk' 标签状态,深橙色 (#e8590c) 区别于部分签到
- Tooltip 详情中显示'风控'文字和橙色样式
- version.json 更新至 v5.4.0-beta.1,记录游戏签到功能变更
- 手动签到后检查所有用户是否签到完成再标记全局 LastSignDate
- miyoushe/kuro/timer 函数内 import 移至文件顶部
- _do_sign 接收 account 参数,避免与调用方构造格式不一致
P2:
- check_game_sign 仅整分钟执行,避免每秒遍历配置
- _check_system_time 同步 httpx.get 改异步,避免阻塞事件循环
- asyncio.create_task 添加 done 回调记录异常
- 删除账号时清理 _game_sign_result_data 中该用户的结果

P3:
- 库街区 devCode header 大小写统一为小写 devcode
- 前端 loadAccounts catch 改为 logger.error 输出

UI:
- 标题栏状态标签从「已签到/待签到/未启用」改为「已启用/未启用」
- Sync version/dependency state with current dev to avoid merge rollback
- Add response_model for game sign account get endpoint
- Include account_uid on Miyoushe/Kuro exception results
- Mark per-user LastSignDate only after all configured platforms complete
- Replace auto-merge results by platform + account_uid to surface failures/risk states
- Import httpx for async system-time check and respect failed time validation
- Remove extra EOF blank lines in generated frontend API models
- Sync version/dependency state with current dev to avoid merge rollback
- Add response_model for game sign account get endpoint
- Include account_uid on Miyoushe/Kuro exception results
- Mark per-user LastSignDate only after all configured platforms complete
- Replace auto-merge results by platform + account_uid to surface failures/risk states
- Import httpx for async system-time check and respect failed time validation
- Remove extra EOF blank lines in generated frontend API models
MAS 风险补丁相关文件:
- app/tools/miyoushe.py:修复米游社签到接口域名、DS 签名、稳定 device_id、cookie_token 恢复、验证码/高频风控重试,并补充更多米游社游戏配置。
- app/tools/miyoushe_qr.py:新增米游社 Passport 扫码登录工具,创建二维码、轮询确认状态并从 Set-Cookie 提取 token。
- app/api/qr_login.py、app/api/__init__.py、main.py:新增可选扫码登录 API 路由 /api/tools/sign/miyoushe/qr/create、/check、/save,并在服务启动时注册。
- frontend/src/views/tools/TabGameSign.vue:接入米游社扫码登录入口,优化游戏社区签到界面与签到详情悬浮框用户名可读性。
- frontend/scripts/electron-spawn.mjs、frontend/package.json:新增 Electron 启动包装脚本,清理 ELECTRON_RUN_AS_NODE 后再启动 Electron。
- frontend 相关 Vue/TS 文件:同步格式化和界面可读性调整。

使用方法:
1. 启动后端后,前端游戏社区签到页可通过米游社扫码登录生成二维码,用户扫码确认后保存 Token 到对应账号组。
2. 如需手动调用接口,可 POST /api/tools/sign/miyoushe/qr/create 获取 ticket、qr_url、device;POST /api/tools/sign/miyoushe/qr/check 轮询状态;确认后 POST /api/tools/sign/miyoushe/qr/save 保存 cookie。
3. 前端开发启动继续使用 yarn dev 或 yarn dev:fullstack;Electron 由 node scripts/electron-spawn.mjs 代理启动,避免 ELECTRON_RUN_AS_NODE 残留导致运行成 Node。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
更新版本说明,补充 MAS 风险补丁相关的米游社扫码登录、签到接口风控修复与 Electron 开发启动修复内容。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @Lance0174, your pull request is larger than the review limit of 500000 diff characters

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.

4 participants