games-development-ai/docs/agent-specs/_archive/2026-06-08-admin-wave2并行建设-review.md
zizi 7f24a344d0 docs(agent-specs): B2 归档——64 个闭线工作记录移入 _archive/,热目录顶层 90→26
承接目录治理:上轮只压缩内容未减文件数,闭线工作记录仍平铺致目录看着仍一堆(创始人指出)。本次执行 B2 归档。

64 个 ≤06-15 闭线档(25 压缩桩 + 闭线 review/report/纪要/edit-plan)git mv 入 docs/agent-specs/_archive/(文件名不变、仍 git 跟踪可查)。热目录 ≤06-15 仅留 13 活档(决策/纲领/SoT/活spike)+13 个 06-16 在飞。

活资产 20 处旧路径引用(.agents/docs/memory/_index)同步改 _archive/,引用断裂复测=0;_index 活地图 + 治理档状态收口。约束:0 个 06-16 被移、orchestrator 等未跟踪在飞档零误纳。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 13:26:19 +00:00

80 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# admin + Wave2 变现 并行建设 · Review/编排锚点
> 文档编号 HJ-PAR-002 · 2026-06-08 · 状态:**Phase 0 进行中(契约起草子 agent 运行)**
> 创始人决策(2026-06-08):下一主线 = **game-admin 运营后台 + Wave2 后端变现 并行建设**(AskUserQuestion 选②"admin + Wave2 并行(推荐)")。
> **v2 纠偏(2026-06-08,主 agent 只读勘察后)**:压缩前本 spec 假设"克隆 ad/trade/pay 三模块"。勘察既有代码/契约/架构文档后发现该假设有实质偏差,据权威文档(Doc B 模块职责 + MVP 决策 D3)收敛为**只新建 ad+trade 两模块,pay 复用 huijing-pay/后置**。详见 §一·纠偏。
> 复用方法:三相并行 + 主 agent 验证门(不采信子 agent 自报,见记忆 `wave-parallel-build-orchestration`、`frontend-spine-built` 假绿教训)。
---
## ⚡ 接力锚点(压缩后从这里续)
- **已完成并 push(origin/dev/2.0.0,HEAD=9e95a66)**:后端 Wave1 脊柱 5 模块(project/aigc/runtime/feed/telemetry)+ 8 类契约 + 前端 game-studio 脊柱 + 全栈命名 huijing→wanxiang。
- **本轮 = admin + Wave2 变现(ad+trade)并行**。**进度(LIVE)**:
-**Phase 0 已锁定**:契约 ad.yaml/trade.yaml + V6/V7 起草并经主 agent 独立复核(语法/错误码 111·106/金额用分/资金幂等/状态机/seam 一致);主 agent 收紧 ad 计费 `uk_trace=(trace_id,event_type,tenant_id)` 防丢账;contracts/README 索引已更新;**admin 基线=克隆上游 huijing-ui-admin-vue3 已落 `game-admin/`**(34M/2236文件,去嵌套git)。
- 🔄 **Phase 1 运行中**:Workflow `w2z92q6jm`(脚本 `docs/agent-specs/wf-admin-wave2-phase1.mjs`)。3 Opus agent:后端链 ad→trade(串行,trade 依赖 ad-api)∥ admin 裁剪接线。
-**Phase 2 待办(主 agent 验证门)**:见 §四。等 Workflow 完成通知 → 独立复跑,不采信自报。
- **本轮新增跨模块决策**:ad 归因需 game→creator → 给 **project-api 加 `getCreatorUserId(gameId)` Feign**(照 huijing DictDataApi 模式;仅 ad 碰 project,不撞车,由 ad agent 顺带建)。pay 仍不建(复用 huijing-pay 后置)。
- **命名铁律**:全栈 `wanxiang`(`com.wanxiang.huijing.game`/`WanxiangGameSDK`/`wanxiang-game-sdk`),勿用 huijing。huijing 框架 `com.wanxiang.huijing` + Maven `com.wanxiang` 不动。
- **后端验证门铁律**:`mvn -pl <模块> -am test`(带 -am 避陈旧 jar);前端 `npm run build`(`vue-tsc --noEmit` 假门禁)。
---
## 一、范围与互斥边界(三仓天然解耦,唯一共享=contracts/)
### 纠偏:为何只建 ad+trade,pay 不克隆(勘察实证)
| 勘察发现 | 结论 |
|---|---|
| **`huijing-module-pay` 已存在**(成熟:PayOrder 收单/PayWallet 钱包/PayTransfer 提现/PayRefund/notify 回调,幂等对账齐全),仅在 huijing-server 中被注释未接线 | 克隆 `game-module-pay` = 重复造轮子。pay(收单)留用 huijing-pay,会员/内购收单=P1 再启用 |
| **Doc B 模块边界**:pay=支付**收单**(微信/支付宝/IAP),**钱包/提现归 trade**;trade=分账/结算/对账/钱包打款/提现 | 钱包+提现是 **trade** 的活,trade 自建收益账户;pay 不在 MVP 钱财闭环 |
| **MVP 决策 D3**:广告分成统一 80% / 满5元提现 / 1元=10积分打赏(走同一分账);**会员订阅=P1** | MVP 钱财闭环 = 广告收入→trade 分账(80%)→收益账户→提现。**不含收单**(广告收入非收单;打赏积分=mock/P1) |
| **契约 #7 ad-slot.schema.json 已锁**、**事件 #5 已含 ad_impression/ad_reward/income_settled** | ad 模块消费既有契约,不重造广告位 schema/事件 |
**本轮后端 = 2 个新模块(ad+trade);pay=复用 huijing-pay 后置。**
### 三 Track 互斥边界
| Track | 目录(互斥) | 消费/依赖 | 共享资源争用 |
|---|---|---|---|
| **A. game-admin** | `game-admin/`(全新,**fork 仓内 `game-cloud/huijing-ui/huijing-ui-admin-vue3`**,Vue3+Element Plus) | 只读消费**已锁 admin-api**(project review / feed featured / telemetry game-stat + **本轮新增 ad 广告位/收入 + trade 提现审核/营收**) | 无(独立新仓目录,最干净) |
| **B. game-module-ad** | `game-cloud/game-module-ad/` | 克隆黄金模板 project;AdProvider SPI(mock);消费 #7/#5 | 根 pom / huijing-server pom / Flyway / 契约(Phase 0 锁) |
| **C. game-module-trade** | `game-cloud/game-module-trade/` | 克隆黄金模板;**消费 ad 的 `AdRevenueApi`(Feign seam)**;creator_share/withdraw_min 走 Nacos | 同上 |
> game-admin 与 game-cloud 目录完全互斥 → A 与 B/C 放心并行。B/C 各写互斥模块目录,仅共享后端基建文件(主 agent Phase 2 串行接)。**ad↔trade 有依赖**(ad 收入→trade 分账),其 Feign seam 在 Phase 0 锁死,两侧据此实现。
## 二、Phase 0 · 主 agent 锁共享资源(进行中)
1. **Flyway 版本空间**:Wave1 占 V1-V5 → **ad=V6.0.0 / trade=V7.0.0**。✅ 已定
2. **错误码段**(README §四 已预留):**ad=1-111 / trade=1-106**。✅ 已定(pay=105 留给 huijing-pay/未来)
3. **新契约锁定**(写 `contracts/`):ad.yaml + trade.yaml(API)+ V6/V7(DB)+ **ad↔trade Feign seam**(ad.yaml 内 x-feign-contracts)。⏳ 契约起草子 agent 运行中 → 主 agent 复核(yaml 语法/裸 select* 0/错误码段独占/Flyway 版本唯一/金额用分/幂等键齐/状态机/seam 两侧一致)后锁定。
4. **资金契约红线**(资金域必守):金额用「分」BIGINT、写入幂等键(trace_id/biz_no/source_ref+uk)、状态机 tinyint 非法流转服务端拒、分账幂等 uk(source,source_ref)、全 mock provider/打款但留真实接入位(SPI/回调)。
5. **game-admin 技术基线**:✅ fork 仓内 `huijing-ui/huijing-ui-admin-vue3`(Element Plus),admin-api baseURL + huijing Token 鉴权沿用。
6. **根 pom + huijing-server pom**:Phase 2 串行接(减少并行期 git 冲突面)。
## 三、Phase 1 · 并行建设(Workflow,互斥目录)
- **Track A(game-admin,~2-3 agent)**:地基(fork 裁剪 huijing-ui-admin-vue3 + admin-api 接线/鉴权) ∥ 审核+精选+广告位管理页 ∥ 数据看板+提现审核+营收页。消费已锁 admin-api(直连后端或 mock)。关键 agent 跑 Opus。
- **Track B(game-module-ad,1 Opus)**:克隆黄金模板,实现广告位 CRUD + SDK 拉取 + 曝光/激励计费(mock eCPM)+ 广告收入台账 + **AdRevenueApi(-api Feign,供 trade)**。自验 `mvn -f game-module-ad/... test`
- **Track C(game-module-trade,1 Opus)**:克隆黄金模板,实现收益账户 + 收益流水 + 分账引擎(读 AdRevenueApi×80%)+ 提现申请/审核(满5元 mock 打款)+ 打赏入账。自验单测。
- 子 agent **只写各自目录**,不碰共享文件(pom/Flyway/契约——Phase 0 已锁)。
## 四、Phase 2 · 主 agent 集成验证门(串行 barrier,不采信自报)
1. 接共享文件:根 pom `<modules>` 加 ad/trade、huijing-server pom 加 2 依赖、Flyway V6/V7 复制到 `huijing-server/.../db/migration/`(与 contracts 源 diff-identical)。
2. 后端权威验证:`mvn -pl huijing-server -am compile`(全量集成编译)+ ad/trade 各 `mvn ... -am test`(单测绿)。
3. game-admin:`npm run build` + `/browse` 冒烟运营闭环(审核队列→决策→精选→看板→提现审核)。
4. 残留检查(huijing=0/裸select*=0)、durable 更新(.agent / 记忆 / 本 spec LIVE)。
## 五、为何 contractGaps 靠后(不进本轮并行)
contractGaps 改的是**已有共享契约**(project.publish / runtime.getPackage / feed.ShareMeta / telemetry 命名)+ 跨前后端实现。与本轮并行会让其他 Track 基于旧契约假设,一改即冲突。正解:本轮(admin+Wave2)跑完后,**单独一轮**做 contractGaps + staging 拉起手册,让现有脊柱进真实联调。
## 六、风险与约束
- 并行越宽,Phase 2 集成期问题越集中 → 主 agent 严格独立复跑,不采信自报。
- **资金域(trade)涉及金额/分账/提现**:契约/实现必须含幂等键、状态机、对账锚点(trace_id/source_ref)、补偿路径(即便 MVP mock 打款)。余额变更必有流水,账户表=流水物化汇总。
- ad↔trade 是本轮唯一跨模块强依赖:seam(AdRevenueApi)Phase 0 锁死后两侧不得各自发挥。
- game-admin fork huijing-ui-admin-vue3,与 game-studio 不同栈(Element Plus vs Vant),不复用 studio 组件。
- pay(huijing-pay)本轮不启用:trade 提现 mock 打款,留 SPI/回调位,会员/内购收单(P1)再启用 huijing-pay。