Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
98ebe47
feat(community): 重构游戏社区工具
Lance0174 Aug 31, 2026
e75e617
refactor(community): 将功能入口改为主页页签
Lance0174 Aug 31, 2026
b740bea
fix(community): 完成 P1-P2 社区工具整改
Lance0174 Aug 31, 2026
e0b7c50
fix(community): 修复凭据与活动接口
Lance0174 Sep 1, 2026
ba219f0
chore(skills): 统一社区工具技能入口
Lance0174 Sep 1, 2026
8c909d6
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 1, 2026
981d46f
refactor(community): 完成游戏社区第二轮重构
Lance0174 Sep 1, 2026
5d2c07d
feat(community): 新增库街区短信登录
Lance0174 Sep 1, 2026
f7d3c3a
feat(community): 新增米游币与云原神签到
Lance0174 Sep 2, 2026
7318761
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 2, 2026
2faeeca
fix(community): 完善五款游戏日常便笺展示
Lance0174 Sep 2, 2026
a8072a1
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 3, 2026
33e2bd3
feat(community): 支持绝区零安卓设备信息配置
Lance0174 Sep 3, 2026
2b3c3f1
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 3, 2026
c80f280
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 3, 2026
2d7c92e
feat(community): 完善社区登录与免配置便笺
Lance0174 Sep 3, 2026
a4ec0e4
fix(community): 收敛签到与便笺链路
Lance0174 Sep 4, 2026
35111fc
fix(community): 收紧便笺展示与塔吉多详情
Lance0174 Sep 4, 2026
3de2568
merge: 同步 dev 并保留社区工具本地改动
Lance0174 Sep 4, 2026
0a857f1
fix(community): 完善社区签到与便笺并统一任务通知
Lance0174 Sep 8, 2026
67a8c4c
chore(merge): 合并最新 dev 并保留社区修复
Lance0174 Sep 8, 2026
e6e1d1c
chore(merge): 合并最新 dev 并保留社区修复
Lance0174 Sep 8, 2026
d10f6ef
fix(community): 修复社区重构分支上的 18 个测试失败与扫码覆盖表单 (#623)
qiyinxi Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
- `mas-schema-naming`:用于统一后端 schema 的命名方式,减少字段语义漂移。
- `mas-script-specialized-adapter`:用于新增或维护专项脚本适配,按脚本前端架构线完成问诊、前端表面与后端任务接入。
- `mas-plan-schedule`:用于新增、重构或审查计划表类型与调度配置。
- `mas-game-sign`:用于新增、重构或审查游戏社区签到,涵盖平台注册表、凭据加密与登录路由、签到锁与触发路径、结果与通知契约
- `mas-community`:用于新增、重构或审查社区工具,涵盖凭据、角色、日常便笺、签到调度、通知与历史兼容
- `grill-me`:用于对方案做高强度问诊,不属于 AUTO-MAS 工程规则 hub 的默认路由。

## 使用方式
Expand Down
130 changes: 130 additions & 0 deletions .agents/skills/mas-community/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
name: mas-community
description: >-
Define, add, refactor, or review AUTO-MAS community tools, including
credential parsing, role discovery, daily activity, sign scheduling,
notifications, provider capability evidence, and compatibility migration.
---

# 游戏社区工具

## 目标

将不同游戏社区的凭据、角色、日常活动、签到和通知纳入统一的社区工具语义,
为后续新增社区提供稳定边界。`game_sign`、`GameSign` 和历史路由/配置键是兼容
标识,不作为新增业务的首选语义;不得为了改名批量迁移旧字段或破坏旧客户端。

## 术语

新增代码和用户可见文案优先使用:

| 语义 | 首选名称 | 兼容说明 |
| --- | --- | --- |
| 总能力 | 游戏社区 / 社区工具 | 旧“游戏签到”只在兼容文案或历史记录中保留 |
| 外部平台 | 社区 provider / 社区平台 | 例如森空岛、米游社、库街区、塔吉多 |
| 凭据 | 社区凭据 | 继续读写旧 `GameSignAccount` 字段 |
| 角色 | 社区角色 / 游戏角色 | 由角色发现层归一化,不把 UID 当账号组 ID |
| 查询 | 日常活跃度 / 社区便笺 | 只读查询不能触发签到或任务提交 |
| 动作 | 社区签到 | 仍受既有签到锁、日期标记和结果契约约束 |
| 消费 | 社区通知 / 任务报告 | 复用同一结构化结果,不重复请求上游 |

不要在新模块中用 `game_sign` 表达整个社区领域,也不要为同一语义同时新增
`CommunityToken`、`GameSignToken` 等平行凭据字段。

## 模块边界

遵守 AUTO-MAS 的分层方向:

| 层 | 归属 | 责任 |
| --- | --- | --- |
| schema | `app/models/schema.py` | API 输入/输出类型和字段描述 |
| api | `app/api/*.py` | 输入校验、调用 core、输出映射 |
| core | `app/core/community_*.py` | 账号组编排、锁、调度和状态协调 |
| tools | `app/tools/community*.py`、`app/tools/game_sign.py` | provider 注册与执行、角色归一化、请求规格、解析 |
| legacy | `app/tools/game_sign*.py` 中的旧导出 | 旧签到入口、旧符号和兼容结果 |

provider 不得导入签到编排入口;schema 不得访问配置、网络或文件;API 不得持有
角色遍历、重试或上游协议细节。社区 facade 可以提供新语义别名,但不能复制一份
平台清单或绕过旧注册表。

## Provider 契约

新增社区时先明确以下能力,不得把参考项目中“存在接口”直接当作已接入:

1. 凭据格式、字段完整性、刷新方式和失效表现。
2. 角色发现路径、游戏标识、区服字段和角色 UID 的归一化规则。
3. 日常活动的确认接口、请求头/设备要求、角色隔离和可识别响应字段。
4. 签到路径、请求间隔、重试、已完成判据和结果错误码。
5. 通知需要的结构化字段以及失败、受限、空数据和不可用状态。

请求规格可以包含公开 URL、角色参数、请求头配置和签名 profile,但不得包含
Cookie、Token、Authorization、完整请求体或设备敏感值。认证值只在 provider 内存
执行时注入,失败文案和日志不得回显原始响应。

参考项目只作为能力证据和协议线索。`CommunityPluginReference` 中的能力表示
参考项目展示过该能力,不表示 AUTO-MAS 已接入、接口当前可用或可以跳过风控审查。

## 凭据规则

1. 旧账号组字段继续使用既有加密、校验和保存契约;不得因 UI 输入宽度截断长 Token。
2. 解析器只返回格式、字段名和本地校验状态,不返回或持久化 Token 内容。
3. Cookie、Token、设备信息和一次性登录值只在必要的内存作用域存在,日志只记录脱敏状态。
4. provider 刷新后的凭据只能通过编排层的统一回写契约发布;查询失败不得覆盖原凭据。
5. 缺少 `stoken_v2`、设备登记失败、上游风控和真实过期必须分别表达,不能统称为网络失败。
6. Token 时效没有时间样本或官方依据时,不得承诺长时效;需要保留用户重新登录入口。

## 角色与日常活动

角色发现和日常查询必须与签到分离:

1. 角色发现先按 provider 的游戏标识分流,再构造每个游戏的独立目标。
2. 未明确游戏标识的绑定列表不得猜测归属;宁可返回不可用状态,也不能交叉映射。
3. 每款游戏返回独立快照,包含账号、角色、完成数/目标数、任务、资源、状态、原因和来源。
4. 活动查询使用独立的活动锁和并发上限,不获取签到锁,不修改签到日期,不触发签到通知。
5. `success`、`empty`、`limited`、`unavailable`、`failed` 的含义必须稳定;上游 HTTP 200 不等于业务成功。
6. 未确认的实时接口不得构造请求;应返回可见的 `limited` 状态并说明限制原因。

## 签到与调度

实际签到由 `app/core/community_sign.py` 统一编排,社区 facade 和旧入口都转发到
该实现;provider 注册与平台执行仍以 `app/tools/game_sign.py` 的唯一注册表为来源:

1. 平台凭据字段、平台日志名、runner、平台解析和错误游戏继续以既有注册表为单一来源。
2. 社区日常锁与签到流程锁不可合并;签到请求和结果落盘在签到锁内,通知在锁外。
3. 快速失败锁不得静默排队;API 返回冲突,定时器按既有策略跳过。
4. 保留账号级/全局 `LastSignDate` 语义、跨零点重新取日期、重试和排序行为。
5. 新平台的成功/失败状态必须进入既有结果兼容层,不得为通知单独重新请求上游。
6. `game_sign.py`、`GameSignAccount`、`GameSign` 和 `/api/tools/sign` 属于历史兼容协议;
新调用使用社区语义,但不得为了改名复制状态、迁移配置或破坏旧客户端。

## 通知与日志

只吸收日志采集配置 PR 中已验证的结果消费思路:先聚合结构化签到结果,
再复用到文本通知、Markdown、HTML 和任务报告。不要搬运完整日志采集配置、
编辑器、采集器或规则 UI。

结构化结果必须保留平台、游戏、账号、状态、奖励和失败原因;业务失败不能被
格式化成成功。Markdown 自动识别属于通知消费层能力,不能改变签到执行结果。

## 新社区接入顺序

1. 先补 provider 能力证据和脱敏合同,再决定是否支持角色发现或日常活动。
2. 在 `tools` 层实现凭据解析、角色归一化、请求规格和响应解析。
3. 在 `core` 层接入账号组编排和独立锁;复用旧注册表读取兼容凭据。
4. 在 `schema`/`api` 层完成类型化契约;禁止手改 OpenAPI 生成客户端。
5. 由维护者在隔离开发服务中重新生成客户端,再接入前端;原有 Token 保存和 UI 未经批准不得迁移。
6. 补充纯逻辑、脱敏 Mock、锁隔离和结果映射测试;真实账号 E2E 单独说明,不用 Mock 冒充。
7. 更新 `res/version.json` 的下一未发布版本,并在开发报告中更新阶段清单。

## 审查清单

- [ ] 新增代码使用社区工具/社区 provider 语义,旧 `game_sign` 仅为兼容入口。
- [ ] 平台和凭据字段没有重复注册表;历史配置字段可继续读取。
- [ ] 角色按明确游戏标识分流,未标识响应不猜测。
- [ ] 日常活动不获取签到锁、不改签到日期、不触发签到通知。
- [ ] 每个游戏独立返回空、成功、受限、不可用和失败状态。
- [ ] Token 保持完整、不进入日志/API 错误、不因输入框宽度截断。
- [ ] 上游 HTTP 200 与业务成功已分离,风控和失效状态可见。
- [ ] 文本、Markdown、HTML 和任务报告复用同一结构化签到结果。
- [ ] 没有手改 `frontend/src/api/**`;生成客户端由维护者在隔离服务中重新生成。
- [ ] 测试、错误、真实 E2E 缺口和版本记录均已留痕。
Loading