3.9 KiB
3.9 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SDK taskProgress 封装 | 将 slot_sdk(或你们的 SDK 仓库)加入工作区后,可按现有 Wallet Client 模式直接实现 `player-task/task-progress` 的调用封装;wallet 侧接口文档已就绪,可作为契约来源。 |
|
false |
SDK 工作区加入后的直接开发方案
结论
可以。 当前工作区只有 slot-wallet,已具备接口契约文档 doc/player-task-progress-api.md 与实现对照(PlayerTaskController、PlayerTaskQueryService 等)。把 SDK 仓库 作为第二个根目录(或 monorepo 子目录)加入工作区后,我可以:
- 阅读 SDK 里现有 Wallet/HTTP Client 的命名、基类、错误处理、DTO 约定;
- 新增
taskProgress(或团队统一命名)方法、路径常量、请求/响应类型; - 若有单测/示例,补一条调用示例或 Feature 测试;
- 保证字段 snake_case 与 HTTP JSON 一致,成功判定
code === 0。
flowchart LR
subgraph workspace [Cursor Workspace]
Wallet[slot-wallet]
SDK[slot_sdk]
end
Doc[player-task-progress-api.md]
Wallet --> Doc
SDK -->|reads patterns| SDK
Doc -->|contract| SDK
SDK -->|POST player-task/task-progress| Wallet
你需要做的准备
| 项 | 说明 |
|---|---|
| 加入工作区 | Cursor:File → Add Folder to Workspace,选中 SDK 仓库根目录 |
| 告知路径 | 例如 company/ray/slots/slot_sdk(与你们实际目录一致即可) |
| 语言确认 | 若是 PHP slot_sdk、Go、TS 等,我会跟现有 Client 语言一致,不另起一套风格 |
无需改 wallet 代码即可开始 SDK 开发;wallet 接口已实现完毕。
我会按什么写(预期产出)
以 SDK 现有 Wallet Client 为模板(具体类名需打开 SDK 后确认),典型改动:
- 路径常量:
player-task/task-progress - 请求:
uid,currency(可选统一附带trace_id若其他接口都有) - 响应模型:
summary+bonus_tasks[]+deposit_tasks[],字段与 doc/player-task-progress-api.md §5 一致 - 错误:复用 SDK 已有
WalletApiError/code !== 0处理
跨仓库发布(团队规范)
按 .cursor/rules/slot-wallet-layers-and-delivery.mdc §8–9:
- 先在 SDK 仓库
commit→push; - 消费方(如 slot-wallet 若通过 composer 依赖 SDK)再
composer update并锁composer.lock。
当前 composer.json 尚未声明 slot_sdk 依赖,说明 SDK 可能独立发布或由其他服务引用——这不影响我在 SDK 仓库内直接编码。
建议的确认项(加入工作区后第一条消息说明即可)
- SDK 仓库在本机的绝对路径或文件夹名;
- 方法命名偏好:
taskProgress/getPlayerTaskProgress/ 与现有wallet()等方法对齐; - 是否需要 foundation 常量(如
source_type)进 SDK,还是仅透传 int。
不在本次默认范围
- 修改 wallet 服务端实现(已满足 PRD §26.1);
- 自动
composer update到其他服务(除非你明确要求并给出目标仓库)。