chore(brand): 造梦AI→绘境AI 全活层品牌不变量收口(441 文件)

把活层退役旧品牌「造梦AI」统一改为现行「绘境AI」,brand-invariant 门红线归零。构成:
~412 Java @author 署名 + game-studio/index.html 浏览器标题 + game-runtime/package.json 描述
+ game-admin/.env VITE_APP_TITLE 运营后台标题 + contracts API title/@Schema 用户协议示例/events 描述
+ docs-design mockup 品牌位 + 各模块注释。全是注释/显示/元数据,零逻辑改动。
zaomeng 拼音持久化标识符按 2026-06-24 评审 GR-05 不动(347 处保留)。
白名单(docs/ip 法律备案 / _archive / 带日期留痕)与 AGENTS.md 门定义自身不动。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lili 2026-06-25 08:29:11 -07:00
parent ce7a4850eb
commit b31cc37a4f
441 changed files with 450 additions and 450 deletions

View File

@ -13,7 +13,7 @@ openapi: 3.0.3
# 与契约#7 对齐:广告位 CRUD 字段严格对齐 ad-slot.schema.jsonslotId/type/provider/placement/providerSlotId/ecpmFloor/enabled/compliance不重造广告位结构
# 与契约#5 对齐:不重造 ad_impression/ad_reward/income_settled 事件(那是 telemetry 分析埋点);本模块只新增计费上报接口与收入台账
info:
title: 造梦AI ad 模块 API
title: 绘境AI ad 模块 API
version: 1.0.0
description: >-
广告引擎("赚得到"上游。SDK Plugin.Ad 拉取启用广告位(契约#7) → 有效曝光/激励视频完成计费上报 →

View File

@ -14,7 +14,7 @@ openapi: 3.0.3
# 子段001 锁风门 / 002 封禁 / 003 分级 / 004 政策正文U4/ 005 申诉U4。publish-blocked 不在本模块登记R1block→admitted=false 不抛异常)。
# 响应统一 Huijing CommonResult 信封:{ code, data, msg }code=0 成功
info:
title: 造梦AI compliance 模块 API
title: 绘境AI compliance 模块 API
version: 1.0.0
description: >-
合规锁风门 Gate"做得出"安全闸门。project.publish 发布前同步调 evaluate → 聚合风格/IP 合规原子产出 verdict

View File

@ -31,7 +31,7 @@ openapi: 3.0.3
# - project-api ProjectApi 取 baseVersion 源项目引用 + 新预览版落库version 产物权威仍在 project源项目独立 game_source_project 表存 V18
# idempotency 语义create/modify/extend 共用):同 userId+operation+idempotencyKey 命中则返回既有 taskChain不重复触发生成缺省=不去重;建议 TTL 24h。
info:
title: 造梦AI studio 模块 API
title: 绘境AI studio 模块 API
version: 1.0.0
description: >-
创作主链路最小版("做得出"工作台)。创作者进工作坊建草稿(移交 project 建游戏拿 gameId→ 一句话生成(委托 aigc

View File

@ -15,7 +15,7 @@ openapi: 3.0.3
# 资金严谨:金额一律用「分」(BIGINT),禁浮点;比例用 DECIMAL所有资金写入有幂等键(biz_no/source_ref + uk);状态机用 tinyint非法流转服务端拒绝。
# 与契约#5 对齐:不重造 income_settled 事件(那是 telemetry 分析埋点 props:amount/source本模块落账走 game_trade_incomeincome_settled 仅为埋点镜像。
info:
title: 造梦AI trade 模块 API
title: 绘境AI trade 模块 API
version: 1.0.0
description: >-
分账/结算/提现域。消费上游 ad 未结算广告收入 → 按 creator_share(Nacos 0.80) T+1 分账入创作者收益账户 →

View File

@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://wanxiang.ai/contracts/events.schema.json",
"title": "TelemetryEvents",
"description": "造梦AI 遥测事件契约 v1契约 #5owner=WS5。前端批量上报 / SDK 上报 → /app-api/telemetry/events/batch → MQ 异步入库 → qualityScore → feed 排序(数据回路闭环)。每事件带 schemaVersion新增字段给默认值、老消费者忽略未知字段不兼容变更用新事件名。【Wave3 GAP-4 评审记录】利用无生产数据 + MQ 未实现窗口,一次性把信封 envelope/user 由 snake_case 统一为 camelCase与 telemetry.yaml 及前端 SDK 对齐),保持 additionalProperties:false豁免本文件 README §2『不兼容变更用新事件名并行』规则本次改的是信封字段命名而非事件名已确认仓外无 snake_case 消费者telemetry.yaml/sdk-interface.d.ts/game-studio 均为 camelCase。",
"description": "绘境AI 遥测事件契约 v1契约 #5owner=WS5。前端批量上报 / SDK 上报 → /app-api/telemetry/events/batch → MQ 异步入库 → qualityScore → feed 排序(数据回路闭环)。每事件带 schemaVersion新增字段给默认值、老消费者忽略未知字段不兼容变更用新事件名。【Wave3 GAP-4 评审记录】利用无生产数据 + MQ 未实现窗口,一次性把信封 envelope/user 由 snake_case 统一为 camelCase与 telemetry.yaml 及前端 SDK 对齐),保持 additionalProperties:false豁免本文件 README §2『不兼容变更用新事件名并行』规则本次改的是信封字段命名而非事件名已确认仓外无 snake_case 消费者telemetry.yaml/sdk-interface.d.ts/game-studio 均为 camelCase。",
"type": "object",
"required": ["envelope", "eventRegistry"],
"additionalProperties": false,

View File

@ -94,7 +94,7 @@ print('%s|%s'%(c,n))
if [ "$ok" = "1" ]; then PASS=$((PASS+1)); _log " ${G}${N} $name ($detail)"; else FAIL=$((FAIL+1)); FAILED_ITEMS+=("$name [$detail]"); _log " ${R}${N} $name ($detail)"; fi
}
_log "${B}造梦AI staging 五链路冒烟门${N} BASE=$BASE TOKEN=${TOKEN:0:2}*** deep=$DEEP"
_log "${B}绘境AI staging 五链路冒烟门${N} BASE=$BASE TOKEN=${TOKEN:0:2}*** deep=$DEEP"
# ---------------- 基础设施 + 鉴权 ----------------
_head "基础设施 / 鉴权"

View File

@ -1,5 +1,5 @@
-- =============================================================================
-- 造梦AI · huijing 死菜单清理2026-06-11 审计版)
-- 绘境AI · huijing 死菜单清理2026-06-11 审计版)
-- 适用库ruoyi-vue-prostagingmini-desktop docker game-staging-mysqlMySQL 8.4.8
-- 性质软删deleted=1全量可回滚备份表 + 固化删除集表)
-- 判据16 棵死顶级子树views 已被 fork 删除,点开全空白);详见

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>造梦AI · studio 设计体系 mockupHJ-FE-DS-001</title>
<title>绘境AI · studio 设计体系 mockupHJ-FE-DS-001</title>
<!--
设计体系蓝图(评审版配套 mockup。自包含、浏览器直开。
本文件的 CSS 变量 = 提案的「真实 token 值」,落地时直接映射到 game-studio/src/styles/tokens.css。
@ -244,7 +244,7 @@ textarea.ctrl{min-height:96px;line-height:1.55;resize:vertical}
<!-- ============ 顶栏 + 语言切换i18n 实证) ============ -->
<header class="topbar"><div class="topbar-in">
<div class="brand"><span class="dot"></span><span class="nm" data-i18n="brand">造梦AI</span></div>
<div class="brand"><span class="dot"></span><span class="nm" data-i18n="brand">绘境AI</span></div>
<span class="note" data-i18n="subtitle">studio 设计体系 mockup · 暗色先行</span>
<span class="spacer"></span>
<div class="lang-toggle" role="group" aria-label="theme" style="margin-right:6px">
@ -427,7 +427,7 @@ textarea.ctrl{min-height:96px;line-height:1.55;resize:vertical}
<div class="sec-h"><h2 data-i18n="s_desk">代表屏 · 响应式桌面(消费居中放大)</h2><span data-i18n="s_desk_d">同一套组件 → 桌面浏览器放大,非 demo 的后台侧栏</span></div>
<div class="desk">
<div class="bar2">
<div class="brand" style="font-size:15px"><span class="dot" style="width:22px;height:22px"></span><span class="nm" data-i18n="brand">造梦AI</span></div>
<div class="brand" style="font-size:15px"><span class="dot" style="width:22px;height:22px"></span><span class="nm" data-i18n="brand">绘境AI</span></div>
<nav class="nav">
<a class="on" data-i18n="nav_feed">游戏流</a><a data-i18n="nav_create">创作</a><a data-i18n="nav_discover">发现</a><a data-i18n="nav_me">我的</a>
</nav>
@ -449,7 +449,7 @@ textarea.ctrl{min-height:96px;line-height:1.55;resize:vertical}
</section>
<div class="foot">
HJ-FE-DS-001 · 造梦AI studio 设计体系 mockup · 暗色先行 / 主题就绪 / 跨端 token 单一事实源 ·
HJ-FE-DS-001 · 绘境AI studio 设计体系 mockup · 暗色先行 / 主题就绪 / 跨端 token 单一事实源 ·
<span data-i18n="foot">配套评审版docs/agent-specs/2026-06-16-studio视觉体系-i18n-组件库-review.md</span>
</div>
</div>
@ -470,7 +470,7 @@ textarea.ctrl{min-height:96px;line-height:1.55;resize:vertical}
<script>
/* i18n 字典mockup 内联演示;落地用 vue-i18n 的 src/locales/{zh-CN,en-US}/*.json */
const I18N={
zh:{brand:"造梦AI",subtitle:"studio 设计体系 mockup · 多档舒适主题",th_dark:"暗色",th_light:"浅色",th_dim:"柔和",
zh:{brand:"绘境AI",subtitle:"studio 设计体系 mockup · 多档舒适主题",th_dark:"暗色",th_light:"浅色",th_dim:"柔和",
s_color:"语义色板semantic tokens",s_color_d:"组件只用语义层 · 主题就绪 · 跨端中立",
s_type:"字号 / 字重 / 间距 / 圆角 / 阴影",t_h1:"标题 H1",t_h2:"标题 H2",t_h3:"小标题 H3",t_body:"正文 Body消费面 ≥14px 保可读)",t_cap:"辅助 Captionmuted",
s_btn:"按钮 AppButton全状态",b_primary:"主操作",b_secondary:"次操作",b_ghost:"幽灵",b_danger:"危险",b_loading:"生成中",b_disabled:"不可用",b_lg:"大号 CTA",b_sm:"小号",

View File

@ -68,4 +68,4 @@
## 6. 专项代码评审留痕
- `2026-06-24-非后端四模块代码评审-review.md`**非后端四模块game-runtime / game-studio / tier2 / wg1跨模块代码评审**4 并行 workflow × 三阶段·静态分析在 mini-desktop·逐条 file:line 证伪,配方 `scratchpad/review/module-review.workflow.mjs`**0 P0 / 9 P1 / 7 P2 / 9 P3**,四模块核心代码语言规范达大厂基线、无 error 级问题。真风险四条:① 生成 worker 成本与幂等闸wg1 `/generate` 无幂等去重、`run_studio.max_tokens` 未透传tier2 ¥硬闸跨 resume 不累计)② 活层 3 处旧品牌「造梦AI」+ 品牌门扫描面有洞(漏 `index.html`/`package.json`/`wg1/`)③ 契约真空 / v1→v2 标注漂移 ④ game-studio vue-i18n 缺失卡类型门 + host CSP 注释失真。逐模块明细嵌于该档 §七。
- `2026-06-24-非后端四模块代码评审-review.md`**非后端四模块game-runtime / game-studio / tier2 / wg1跨模块代码评审**4 并行 workflow × 三阶段·静态分析在 mini-desktop·逐条 file:line 证伪,配方 `scratchpad/review/module-review.workflow.mjs`**0 P0 / 9 P1 / 7 P2 / 9 P3**,四模块核心代码语言规范达大厂基线、无 error 级问题。真风险四条:① 生成 worker 成本与幂等闸wg1 `/generate` 无幂等去重、`run_studio.max_tokens` 未透传tier2 ¥硬闸跨 resume 不累计)② 旧品牌残留 3 处(活层)+ 品牌门扫描面有洞(漏 `index.html`/`package.json`/`wg1/`〔残留 2026-06-25 已全活层清零;门扫描面拓宽仍待办〕③ 契约真空 / v1→v2 标注漂移 ④ game-studio vue-i18n 缺失卡类型门 + host CSP 注释失真。逐模块明细嵌于该档 §七。

View File

@ -7,7 +7,7 @@
## 原文快照(截至 2026-06-11黄金闭环轮
# 造梦AI MVP 作战清单(执行视图 · 你打勾 / 我执行)
# 绘境AI MVP 作战清单(执行视图 · 你打勾 / 我执行)
> 本清单 = MVP「**下一步做什么 + 谁做 + 完成线**」的唯一执行序列。
> **状态以 [`MVP进度总账.md`](./MVP进度总账.md) 为准**(哪些真实/桩、里程碑);本清单只管**排序与归属**,两者勿混。

View File

@ -1,5 +1,5 @@
# 标题(造梦AI 品牌文案;技术框架名 huijing 保留不改)
VITE_APP_TITLE=造梦AI 运营后台
# 标题(绘境AI 品牌文案;技术框架名 huijing 保留不改)
VITE_APP_TITLE=绘境AI 运营后台
# 项目本地运行端口号
VITE_PORT=80

View File

@ -33,10 +33,10 @@ VITE_APP_CAPTCHA_ENABLE=false
# GoView域名
VITE_GOVIEW_URL='http://127.0.0.1:3000'
# API 加解密开关(本地对接造梦AI MVP 后端 http://localhost:48080后端默认未配置 huijing 加解密密钥,
# API 加解密开关(本地对接绘境AI MVP 后端 http://localhost:48080后端默认未配置 huijing 加解密密钥,
# 故本地关闭,覆盖 .env 中的默认 true避免请求被加密导致 401/解析失败。真实环境如启用加解密,需与后端统一密钥后再开启)
VITE_APP_API_ENCRYPT_ENABLE = false
# 造梦AI 运营页 mock 兜底开关true=各 wanxiang api 返回本地 mock 数据MVP 后端未起时也可预览/独立构建);
# 绘境AI 运营页 mock 兜底开关true=各 wanxiang api 返回本地 mock 数据MVP 后端未起时也可预览/独立构建);
# 后端联调就绪后改为 false 走真实 /admin-api。严格贴 admin-api 契约,发现缺口记 contractGaps 不私造。
VITE_APP_WANXIANG_MOCK = true

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
import { isMock, mockPage, mockResult } from './mock'
/**
* AI ad admin 广 + 广
* AI ad admin 广 + 广
* contracts/api-schemas/ad.yaml#7 ad-slot.schema.json广
* - POST /admin-api/ad/slot/create 广slotId
* - PUT /admin-api/ad/slot/update idslotId

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
import { isMock, mockPage, mockResult } from './mock'
/**
* AI feed admin
* AI feed admin
* contracts/api-schemas/feed.yaml
* - GET /admin-api/feed/featured/page zoneId
* - POST /admin-api/feed/featured / + game_feed_rank.pinned/boost

View File

@ -1,5 +1,5 @@
/**
* AI mock
* AI mock
*
* MVP http://localhost:48080 /admin-api可能尚未启动但运营后台需可独立预览与构建。
* wanxiang api isMock() mock request

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
import { isMock, mockPage, mockResult } from './mock'
/**
* AI project admin
* AI project admin
* contracts/api-schemas/project.yaml
* - GET /admin-api/project/review/page status=1
* - POST /admin-api/project/review //

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
import { isMock, mockPage, mockResult } from './mock'
/**
* AI telemetry admin +
* AI telemetry admin +
* contracts/api-schemas/telemetry.yaml
* - GET /admin-api/telemetry/game-stat/page
* - GET /admin-api/telemetry/game-stat/{gameId}

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
import { isMock, mockPage, mockResult } from './mock'
/**
* AI trade admin + + + +
* AI trade admin + + + +
* contracts/api-schemas/trade.yaml
* - GET /admin-api/trade/withdraw/page status=0
* - POST /admin-api/trade/withdraw/audit /

View File

@ -43,7 +43,7 @@ import Logger from '@/utils/Logger'
import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患
// 说明:原 huijing 的 wangEditor 自定义节点插件(@/views/bpm/model/form/PrintTemplate
// 仅服务于 bpm 打印模板模块。该业务模块已在造梦AI MVP 裁剪中移除,故此处一并移除其插件注册,
// 仅服务于 bpm 打印模板模块。该业务模块已在绘境AI MVP 裁剪中移除,故此处一并移除其插件注册,
// 避免对已删视图的死 import 导致构建失败。
import print from 'vue3-print-nb' // 打印插件

View File

@ -235,10 +235,10 @@ const remainingRouter: AppRouteRecordRaw[] = [
}
},
// ===========================================================================
// 造梦AI(wanxiang) MVP 运营页静态路由:
// 绘境AI(wanxiang) MVP 运营页静态路由:
// - 已裁剪 huijing 无关业务模块ai/bpm/crm/erp/iot/mall/member/mp/pay/report的全部静态路由
// 避免对已删视图的死 import 导致构建失败;
// - 新增造梦AI 8 个 MVP 运营页wanxiang/*)静态路由:后端 RBAC 菜单未下发时也可路由可见、
// - 新增绘境AI 8 个 MVP 运营页wanxiang/*)静态路由:后端 RBAC 菜单未下发时也可路由可见、
// 可独立构建mock 兜底见各 wanxiang api 模块),对接我方 admin-api。
// U10 追加 3 页:限曝光控制 / 经营看板 / 赋余额+订阅。)
// ===========================================================================

View File

@ -26,7 +26,7 @@ import java.util.List;
* MVP 单体同进程内由 {@code AdRevenueApiImpl}(@RestController @Primary) 就地解析仿 huijing DictDataApi
* 拆微服务后按 {@link ApiConstants#NAME} 走真实 Feign
*
* @author 造梦AI
* @author 绘境AI
*/
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "RPC 服务 - 广告收入台账")

View File

@ -11,7 +11,7 @@ import java.time.LocalDate;
* 拉取未结算广告收入 creatorUserId 聚合 ×creator_share 分账分账入账后经 markSettled 回标已结算
* 字段严格对齐契约 x-feign-contracts.operations[getUnsettledRevenue].output.itemFields不多不少
*
* @author 造梦AI
* @author 绘境AI
*/
@Data
public class AdRevenueRespDTO {

View File

@ -14,7 +14,7 @@ import java.util.Objects;
* - type=interstitial/banner收入计在 IMPRESSION
* 同一 trace_id IMPRESSION REWARD 各落一条互不覆盖uk_trace=(trace_id,event_type,tenant_id)
*
* @author 造梦AI
* @author 绘境AI
*/
@Getter
@AllArgsConstructor

View File

@ -11,7 +11,7 @@ import java.util.Objects;
* 合法流转0未结算 1已结算trade 分账入账成功后经 AdRevenueApi.markSettled 回标
* 非法回退10 Service 拒绝DO 层不承载校验
*
* @author 造梦AI
* @author 绘境AI
*/
@Getter
@AllArgsConstructor

View File

@ -11,7 +11,7 @@ import com.wanxiang.huijing.framework.common.enums.RpcConstants;
* 拆分微服务后该值即对应 ad 服务的 spring.application.name
* - PREFIXRPC 接口前缀 /rpc-api/ad与业务端 /app-api/admin-api 隔离避免与业务路由冲突
*
* @author 造梦AI
* @author 绘境AI
*/
public class ApiConstants {

View File

@ -8,7 +8,7 @@ import com.wanxiang.huijing.framework.common.exception.ErrorCode;
* ad 模块独占 1-111-***-*** contracts/api-schemas/ad.yaml 头部 + .agents/rules/engineering-conventions.md
* 约定禁止与其它模块错误码段重叠100 project/101 aigc/102 runtime/103 feed/104 telemetry/106 trade新增错误码在此登记
*
* @author 造梦AI
* @author 绘境AI
*/
public interface ErrorCodeConstants {

View File

@ -21,7 +21,7 @@ import static com.wanxiang.huijing.framework.common.pojo.CommonResult.success;
* @RestController + @Primary huijing DictDataApiImpl 同构单体内同进程调用走本实现拆微服务后走 Feign
* 仅做契约转换DO DTO并委托 Service不写业务逻辑业务在 AdRevenueService
*
* @author 造梦AI
* @author 绘境AI
*/
@RestController // 提供 RESTful API 接口 Feign 调用
@Validated

View File

@ -25,7 +25,7 @@ import static com.wanxiang.huijing.framework.common.pojo.CommonResult.success;
* 端前缀 /admin-api 由框架按包名 controller.admin.* 自动添加
* 这是 adtrade seam 的人工对账视图 trade game_trade_income.source_ref 通过台账 id + trace_id 对齐
*
* @author 造梦AI
* @author 绘境AI
*/
@Tag(name = "管理后台 - 广告收入台账")
@RestController

View File

@ -25,7 +25,7 @@ import static com.wanxiang.huijing.framework.common.pojo.CommonResult.success;
* 端前缀 /admin-api 由框架按包名 controller.admin.* 自动添加
* 鉴权RBAC@PreAuthorize 注解 + 网关双重校验
*
* @author 造梦AI
* @author 绘境AI
*/
@Tag(name = "管理后台 - 广告位配置")
@RestController

View File

@ -14,7 +14,7 @@ import java.time.LocalDate;
* 分页参数复用 Huijing PageParam可选按广告位/游戏/创作者/事件类型/结算状态/归集日筛选命中相应索引
* eventType tinyint 入参1 impression / 2 reward DO 一致避免编码转换散落到 Mapper
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "管理后台 - 广告收入台账分页 Request VO")
@Data

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 这是 adtrade seam 的数据源settleStatus=0 的记录由 trade AdRevenueApi.getUnsettledRevenue 拉取做 T+1 分账
* 分账后回标 settleStatus=1eventType 以编码impression/reward对外 DO tinyint 解耦
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "管理后台 - 广告收入台账 Response VO")
@Data

View File

@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
*
* 分页参数复用 Huijing PageParampageNo/pageSize可选按 type/provider/enabled 筛选
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "管理后台 - 广告位分页 Request VO")
@Data

View File

@ -11,7 +11,7 @@ import java.time.LocalDateTime;
*
* providerSlotId admin 可见明文供运营核对区别于 app SDK 配置恒不下发明文
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "管理后台 - 广告位详情 Response VO")
@Data

View File

@ -11,7 +11,7 @@ import lombok.Data;
*
* 新建无 id更新带 idslotId 不可改业务唯一键provider!=mock providerSlotId 必填Service 校验
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "管理后台 - 广告位新建/更新 Request VO")
@Data

View File

@ -37,7 +37,7 @@ import static com.wanxiang.huijing.framework.common.pojo.CommonResult.success;
* 计费链反作弊三条件§6.2缺一不得合入两计费端点 @RateLimiterIP 维度幂等已有(traceId)保持
* 聚合侧剔除桩(telemetry AnomalyFilterService)同时覆盖 ad 计费事件本控制器落条件保持 telemetry
*
* @author 造梦AI
* @author 绘境AI
*/
@Tag(name = "用户 App - 广告")
@RestController

View File

@ -8,7 +8,7 @@ import lombok.Data;
*
* app SDK 下发配置 admin CRUD 入参/详情共用同一形态
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "合规植入规则(未成年人保护)")
@Data

View File

@ -11,7 +11,7 @@ import lombok.Data;
* 区别于 telemetry 分析埋点 ad_impression本上报落 game_ad_revenue决定收入
* traceId 为计费幂等键重复上报只计一次收入
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 有效曝光计费上报 Request VO")
@Data

View File

@ -6,7 +6,7 @@ import lombok.Data;
/**
* 有效曝光计费受理结果 VOapp-api对齐 ad.yaml AdReportResultVO
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 有效曝光计费受理结果")
@Data

View File

@ -11,7 +11,7 @@ import lombok.Data;
* 服务端联盟回调校验防作弊联盟回调携带 transId + sign服务端验签通过才计费发奖
* traceId 为幂等键uk_trace重复回调只计费一次只发奖一次
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 激励视频服务端回调 Request VO")
@Data

View File

@ -8,7 +8,7 @@ import lombok.Data;
*
* 验签通过并计费=accepted/rewarded=true验签失败由错误码 1-111-002-004 拦截不达此 VO
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 激励视频回调受理结果 VO")
@Data

View File

@ -10,7 +10,7 @@ import lombok.Data;
*
* mock 直接校验通过rewarded=truetraceId 为幂等键重复上报只发奖+计费一次
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 激励视频完成校验 Request VO")
@Data

View File

@ -6,7 +6,7 @@ import lombok.Data;
/**
* 激励视频完成校验结果 VOapp-api对齐 ad.yaml AdRewardResultVO
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 激励视频完成校验结果")
@Data

View File

@ -8,7 +8,7 @@ import lombok.Data;
*
* 安全providerSlotId 默认不下发明文本配置恒不含真实联盟由服务端代理拉广告前端不持有联盟广告位 ID
*
* @author 造梦AI
* @author 绘境AI
*/
@Schema(description = "用户 App - 广告位配置SDK Plugin.Ad 渲染用)")
@Data

View File

@ -16,7 +16,7 @@ import java.util.stream.Collectors;
* 单独成层的原因eventType DB tinyint(1/2) admin VO 为编码(impression/reward)需集中转码
* 同时承载 DO 跨模块 DTOAdRevenueRespDTOadtrade seam字段裁剪为契约约定的 5
*
* @author 造梦AI
* @author 绘境AI
*/
public class AdRevenueConvert {

View File

@ -18,7 +18,7 @@ import java.util.stream.Collectors;
* 结构不一致无法 BeanUtils 平铺拷贝需在此集中拆/避免散落到各 Controller/Service
* 安全SDK 配置 toConfigVO 恒不下发 providerSlotId 明文前端不持有联盟广告位 ID
*
* @author 造梦AI
* @author 绘境AI
*/
public class AdSlotConvert {

View File

@ -19,7 +19,7 @@ import java.time.LocalDate;
* 金额单位ecpm / revenue_amount 一律(BIGINT)禁浮点
* 状态机/收入口径合法性由 Service 校验DO 层只承载数据
*
* @author 造梦AI
* @author 绘境AI
*/
@TableName("game_ad_revenue")
@KeySequence("game_ad_revenue_seq") // Oracle/PostgreSQL 等主键自增用MySQL 可忽略

View File

@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
* compliance未成年人保护拆为显式列 block_minor / max_per_session便于查询与计费限流不用 JSON 整块存
* provider=mock 走桩MVP 默认csj/gdt 走审核闸门后由人填 provider_slot_id 注入
*
* @author 造梦AI
* @author 绘境AI
*/
@TableName("game_ad_slot")
@KeySequence("game_ad_slot_seq") // Oracle/PostgreSQL 等主键自增用MySQL 可忽略

View File

@ -21,7 +21,7 @@ import java.util.List;
* - selectUnsettledByDate 命中 idx_settle_date(settle_status, stat_date)trade 扫未结算
* - 分页命中 idx_creator_date / idx_game
*
* @author 造梦AI
* @author 绘境AI
*/
@Mapper
public interface AdRevenueMapper extends BaseMapperX<AdRevenueDO> {

View File

@ -14,7 +14,7 @@ import java.util.List;
*
* 显式列查询MyBatis-Plus 默认按 DO 字段映射不裸 select*分页/筛选命中 idx_provider拉启用命中 idx_enabled
*
* @author 造梦AI
* @author 绘境AI
*/
@Mapper
public interface AdSlotMapper extends BaseMapperX<AdSlotDO> {

View File

@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
* - blockMinorminor 信号缺省为非未成年 不拦截 isMinor 对接点
* - maxPerSession会话计数缺省为 0 不超限 currentSessionCount 对接点后续接 Redis INCR + EXPIRE
*
* @author 造梦AI
* @author 绘境AI
*/
@Component
public class AdComplianceChecker {

View File

@ -5,7 +5,7 @@ package com.wanxiang.huijing.game.module.ad.framework.compliance;
*
* 把合规判定结果建模为枚举 Service 据此决定是否计费抛哪个错误码口径单一可单测
*
* @author 造梦AI
* @author 绘境AI
*/
public enum AdComplianceResult {

View File

@ -7,7 +7,7 @@ package com.wanxiang.huijing.game.module.ad.framework.provider;
* MVP {@link MockAdProvider}provider=mock真实联盟 csj 穿山甲 / gdt 优量汇 由审核闸门后注入留扩展位不实现
* Service 按广告位 provider 选择对应实现getProvider()不在业务层散落联盟分支
*
* @author 造梦AI
* @author 绘境AI
*/
public interface AdProvider {

View File

@ -14,7 +14,7 @@ import java.util.stream.Collectors;
* MVP mock 实现未注册的 providercsj/gdt 尚未注入一律降级到 mock保证 MVP mock 计费可跑通
* 真实联盟注入后自动按 provider 命中其实现无需改本类与 Service
*
* @author 造梦AI
* @author 绘境AI
*/
@Component
public class AdProviderFactory {

View File

@ -6,7 +6,7 @@ package com.wanxiang.huijing.game.module.ad.framework.provider;
* 承载联盟回调携带的验签所需信息联盟交易号 + 签名 + 业务参数
* provider 实现据此用联盟密钥验签mock/callback 桩走桩直通真实 csj/gdt 走真实验签
*
* @author 造梦AI
* @author 绘境AI
*/
public class AdRewardCallbackContext {

View File

@ -30,7 +30,7 @@ import java.security.NoSuchAlgorithmException;
* 真实联盟注入审核闸门后新增 CsjAdProvider/GdtAdProvider 实现真实验签联盟密钥 + 联盟签名算法本类不变
* 工厂按 game_ad_slot.provider 命中provider=callback 命中本类provider=csj/gdt 命中真实实现
*
* @author 造梦AI
* @author 绘境AI
*/
@Component
public class CallbackAdProvider implements AdProvider {

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
* - verifyReward直通返回 true前端上报即视为完成
* 真实联盟csj/gdt走审核闸门后注入新 AdProvider 实现本类不变
*
* @author 造梦AI
* @author 绘境AI
*/
@Component
public class MockAdProvider implements AdProvider {

View File

@ -19,7 +19,7 @@ import java.util.List;
* 承载计费核心有效曝光/激励计费上报合规校验 + 归因 + mock eCPM 计收入 + 幂等落台账
* trade 拉未结算结算回标admin 对账分页计费规则在 Service 强制DO/前端不承载
*
* @author 造梦AI
* @author 绘境AI
*/
public interface AdRevenueService {

View File

@ -43,7 +43,7 @@ import static com.wanxiang.huijing.framework.common.exception.util.ServiceExcept
* 归因gameId ProjectApi 反查 creator_user_id落台账供 trade 按创作者聚合分账跨模块只走 -api Feign
* 结算回标settle_status 仅允许 01Service 强制DO 不校验
*
* @author 造梦AI
* @author 绘境AI
*/
@Service
public class AdRevenueServiceImpl implements AdRevenueService {

View File

@ -9,7 +9,7 @@ import lombok.Getter;
* 本次计入收入 + 是否首次计费从持久化 DO 中剥离避免在 AdRevenueDO 上挂瞬态字段污染持久模型
* firstBilling=false 表示命中计费幂等键重复上报未重复计收入
*
* @author 造梦AI
* @author 绘境AI
*/
@Getter
@AllArgsConstructor

View File

@ -13,7 +13,7 @@ import java.util.List;
* 承载广告位 CRUD + 业务校验slotId 唯一provider!=mock providerSlotId 必填slotId 不可改+ SDK 拉启用项
* 校验规则在 Service 强制前端与 DO 层均不承载
*
* @author 造梦AI
* @author 绘境AI
*/
public interface AdSlotService {

View File

@ -22,7 +22,7 @@ import static com.wanxiang.huijing.framework.common.exception.util.ServiceExcept
*
* 业务校验slotId 唯一provider!=mock providerSlotId 必填slotId 不可改在此承载可单测可追溯
*
* @author 造梦AI
* @author 绘境AI
*/
@Service
public class AdSlotServiceImpl implements AdSlotService {

View File

@ -19,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.*;
* - sign 缺失拒绝二次防御
* - verifyReward前端直通入口callback provider 一律 false强制走回调验签防绕过作弊
*
* @author 造梦AI
* @author 绘境AI
*/
class CallbackAdProviderTest extends BaseMockitoUnitTest {

View File

@ -38,7 +38,7 @@ import static org.mockito.Mockito.*;
* 归因失败拒计停用广告位拒计结算回标幂等这些是钱财闭环上游的规则守卫必须有测试兜底
* mock BaseMapper.insert any(AdRevenueDO.class) 消歧 any() 会因重载报错
*
* @author 造梦AI
* @author 绘境AI
*/
class AdRevenueServiceImplTest extends BaseMockitoUnitTest {

View File

@ -22,7 +22,7 @@ import static org.mockito.Mockito.*;
* 覆盖广告位业务校验slotId 唯一查重provider!=mock providerSlotId 必填新建默认值slotId 不可改
* mock BaseMapper.insert/updateById any(AdSlotDO.class) 消歧 any() 会因重载报错
*
* @author 造梦AI
* @author 绘境AI
*/
class AdSlotServiceImplTest extends BaseMockitoUnitTest {

View File

@ -19,7 +19,7 @@
<name>${project.artifactId}</name>
<description>
造梦AI - ad 模块(广告引擎):联盟接入 / 广告位 AI 植入 / 曝光计费 / eCPM / 归因。
绘境AI - ad 模块(广告引擎):联盟接入 / 广告位 AI 植入 / 曝光计费 / eCPM / 归因。
不做结算提现(归 trade。MVP provider 默认 mock。错误码段 = 1-111-***-***。
</description>

View File

@ -32,7 +32,7 @@ import java.util.List;
* 写类 RPCsubmitGenerate/getTask/retryTask无登录上下文userId 由调用方studio 受信边界显式传入
* 不从匿名上下文推断不裸暴露给前端service 层据此做数据归属校验创作者只见自己任务
*
* @author 造梦AI
* @author 绘境AI
*/
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "RPC 服务 - AI 生成")

View File

@ -10,7 +10,7 @@ import lombok.Data;
* 注意R7 attachments 持久化-only DTO 不含 attachments 字段studio attachments 仅落库持久化本波不透传 aigc
* P1 若需透传 additive 给本 DTO 加字段不在本波私造
*
* @author 造梦AI
* @author 绘境AI
*/
@Data
public class AigcGenerateReqDTO {

View File

@ -7,7 +7,7 @@ import lombok.Data;
*
* 异步语义提交/重试立即返回 taskId(status=0 queued)studio taskId 轮询直至终态getTask
*
* @author 造梦AI
* @author 绘境AI
*/
@Data
public class AigcGenerateRespDTO {

View File

@ -9,7 +9,7 @@ import lombok.Data;
* aigc succeeded(2) 链完成回填 version_idfailed(3)/timed_out(4) 链失败
* 字段为 studio 编排所需的最小集status/progress/versionId/failureReason/traceId不全量镜像 AigcTaskDO
*
* @author 造梦AI
* @author 绘境AI
*/
@Data
public class AigcTaskRespDTO {

View File

@ -9,7 +9,7 @@ import lombok.Data;
* 字段对齐 aigc-server {@code TemplateRespVO}不多不少 {@code AigcApiImpl} 转换后跨模块返回
* 跨模块只依赖 aigc -apicom.wanxiang.huijing.game.module.aigc.dto禁止 studio 依赖 aigc -server
*
* @author 造梦AI
* @author 绘境AI
*/
@Data
public class AigcTemplateDTO {

View File

@ -12,7 +12,7 @@ import com.wanxiang.huijing.framework.common.enums.RpcConstants;
* 拆微服务后该值即对应 aigc 服务的 spring.application.name
* - PREFIXRPC 接口前缀 /rpc-api/aigc与业务端 /app-api/admin-api 隔离避免与业务路由冲突
*
* @author 造梦AI
* @author 绘境AI
*/
public class ApiConstants {

View File

@ -30,7 +30,7 @@ import static com.wanxiang.huijing.framework.common.pojo.CommonResult.success;
* 纯暴露层仅做 DTOVO/DO 转换并委托既有 {@link AigcTaskService}不写任何业务逻辑业务在 service不改
* 删除本类后 aigc 既有单测仍绿service 零改动只暴露不改回滚门
*
* @author 造梦AI
* @author 绘境AI
*/
@RestController // 提供 RESTful API 接口 Feign 调用
@Validated

View File

@ -40,7 +40,7 @@ import java.time.Clock;
* 总开关与回滚双双失效守护单测AigcGenerateExecutorTest开关行为用例以 ApplicationContextRunner
* 断言 enabled 缺省/false Bean 缺席
*
* @author 造梦AI
* @author 绘境AI
*/
@Configuration
@ConditionalOnProperty(prefix = "aigc.executor", name = "enabled", havingValue = "true")

View File

@ -18,7 +18,7 @@ import java.util.Map;
*
* <p>映射锚到现 {@code contracts/templates/*.schema.json}8 个品类 schema作品类 profile 引导锚§4.2
*
* @author 造梦AI固定架构 B2 拓扑扩展
* @author 绘境AI固定架构 B2 拓扑扩展
*/
final class SaaArchetypes {

View File

@ -48,7 +48,7 @@ import java.util.regex.Pattern;
* <li>{@code verdict}(JSON)/{@code playPass}/{@code feedback} play 产出playPass=九门是否全过</li>
* </ul>
*
* @author 造梦AI
* @author 绘境AI
*/
final class SaaGenNodes {

View File

@ -74,7 +74,7 @@ import java.util.concurrent.atomic.AtomicInteger;
* <p><b>Bean 注册铁律§3</b>本类不标 @Component/@Service只经 {@code AigcExecutorConfiguration} @Bean 注册
* aigc.executor.enabled 总开关装配 {@code aigc.executor.dispatcher=saa} 时被执行器选用默认 http 不选
*
* @author 造梦AISAA 迁移 #2 生产收口
* @author 绘境AISAA 迁移 #2 生产收口
*/
@Slf4j
public class SaaGraphDispatcher implements GenerationDispatcher {

View File

@ -25,7 +25,7 @@ import java.util.regex.Pattern;
*
* <p>few-shot Python 同口径 game-runtime/games/_wg1-gen/_goldenpath-probe/factory.js读文件防漂移prompt.py:9-20
*
* @author 造梦AI
* @author 绘境AI
*/
final class SaaPrompts {

View File

@ -62,7 +62,7 @@ import static com.alibaba.cloud.ai.graph.action.AsyncNodeAction.node_async;
* <p>纪律边界本类只产 {@link CompiledGraph} {@link StateGraph} 布线jobstate 入参与 result回调出参的对接在
* {@link SaaGraphDispatcher}形态/ 测试里各自完成本类不耦合 job 契约saver/registry 由调用方构造后传入本类不自建
*
* @author 造梦AISAA 迁移 #2 生产收口
* @author 绘境AISAA 迁移 #2 生产收口
*/
public final class SaaStudioGraph {

View File

@ -58,7 +58,7 @@ import java.util.regex.Pattern;
*
* <p>纪律本步边界emit <b>不接 DifyCallbackReqVO/HMAC 回调</b>那是 step7 形态不接 saverstep5不接 job 契约
*
* @author 造梦AI
* @author 绘境AI
*/
final class SaaStudioNodes {

View File

@ -14,7 +14,7 @@ import com.wanxiang.huijing.game.module.aigc.controller.admin.task.vo.DifyCallba
* 命名注记2026-06-12C2/HJ-GEN-001真实 Dify/OpenGame 已降级远期从未部署本回调面现行由 M-b agent 闭环执行器复用其三表同事务写链语义非空挂亦勿误以为已接真 Dify
* 类名沿用Dify仅历史远期若真启用 Dify 复用同一写链生成主线=new-api 网关 + agent 写码于插件库勿据本类名推断 Dify 为现行依赖
*
* @author 造梦AI
* @author 绘境AI
*/
public interface DifyCallbackService {

View File

@ -37,7 +37,7 @@ import static com.wanxiang.huijing.game.module.aigc.enums.ErrorCodeConstants.AIG
*
* 命名注记2026-06-12C2/HJ-GEN-001真实 Dify/OpenGame 已降级远期从未部署本类是现行 M-b agent 闭环写链的外层编排入口真在用类名Dify仅历史勿据类名推断 Dify 为现行依赖
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
@Service

View File

@ -52,7 +52,7 @@ import static com.wanxiang.huijing.framework.common.exception.util.ServiceExcept
*
* 命名注记2026-06-12C2/HJ-GEN-001真实 Dify/OpenGame 已降级远期从未部署本类是现行 M-b agent 闭环写链的内层事务 Bean真在用类名Dify仅历史勿据类名推断 Dify 为现行依赖
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
@Service

View File

@ -16,7 +16,7 @@ import java.util.List;
* 通道纪律常量温度/节流/重试/超时一并集中本类沿 C1 spike 配方gen_spike.py:28-30/100-110
* llm_client.py:29-33 同源52/52 结构层已验不开放配置面避免误调破坏已验配方
*
* @author 造梦AI
* @author 绘境AI
*/
@ConfigurationProperties("aigc.executor")
@Data

View File

@ -65,7 +65,7 @@ import static com.wanxiang.huijing.game.module.aigc.enums.ErrorCodeConstants.AIG
* 故每任务处理边界 watchdog 收尸统一经 {@link #executeWithSystemIdentity} 注入系统用户
* 安全上下文LoginUser id=0finally 必清理详见该方法注释
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
public class AigcGenerateExecutor {

View File

@ -21,7 +21,7 @@ import java.util.List;
* 扩展纪律 idle/tycoon 在此 List 加列表项即可同时 getTemplateList 加对应 TemplateRespVO +
* PromptResourceLoader/GameConfigSchemaValidator 资源 Map 加行白名单口径单点维护
*
* @author 造梦AI
* @author 绘境AI
*/
public final class AigcTemplateConstants {

View File

@ -24,7 +24,7 @@ import java.security.MessageDigest;
* Bean 注册铁律§3本类经 {@code AigcExecutorConfiguration} @Bean 注册 aigc.executor.enabled
* 总开关一同装配类上不标 @Component/@Service防组件扫描绕过开关
*
* @author 造梦AIP3 派发面·3b-B 服务间签名
* @author 绘境AIP3 派发面·3b-B 服务间签名
*/
@Slf4j
public class CallbackSignatureVerifier {

View File

@ -34,7 +34,7 @@ import java.time.Duration;
*
* Bean 注册铁律§3本类不标 @Component/@Service只经 AigcExecutorConfiguration @Bean 注册
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
public class ExecutorLlmClient {

View File

@ -36,7 +36,7 @@ import java.util.Set;
*
* Bean 注册铁律§3本类不标 @Component/@Service只经 AigcExecutorConfiguration @Bean 注册
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
public class GameConfigSchemaValidator {

View File

@ -28,7 +28,7 @@ import java.util.Map;
* <p><b>纪律不破坏现行行为</b>默认 {@code aigc.executor.dispatcher=http} 即现行 {@link WorkerDispatchClient}
* 行为逐字不变saa 实现 opt-in共用 new-api 单一成本层两实现都经 new-api 网关计费不另起成本面
*
* @author 造梦AISAA 迁移 #2 生产收口
* @author 绘境AISAA 迁移 #2 生产收口
*/
public interface GenerationDispatcher {

View File

@ -44,7 +44,7 @@ import java.util.regex.Pattern;
* Bean 注册铁律§3本类不标 @Component/@Service只经 AigcExecutorConfiguration @Bean 注册
* 防组件扫描绕过 aigc.executor.enabled 总开关
*
* @author 造梦AI
* @author 绘境AI
*/
@Slf4j
public class PromptResourceLoader {

View File

@ -29,7 +29,7 @@ import java.util.Map;
* Bean 注册铁律§3本类不标 @Component/@Service只经 AigcExecutorConfiguration @Bean 注册
* 防组件扫描绕过 aigc.executor.enabled 总开关
*
* @author 造梦AIP3 派发面
* @author 绘境AIP3 派发面
*/
@Slf4j
public class WorkerDispatchClient implements GenerationDispatcher {

View File

@ -22,7 +22,7 @@ import java.util.Map;
* 权重占位执行版 §9-2 待校准playability 0.50 / firstPlay 0.25 / stability 0.15 / efficiency 0.10
* v0 落公式骨架 + 此占位权重上线待质量轨观察真实就绪分布后校准评分只展示不拦截占位权重风险低
*
* @author 造梦AIW-G1 组B · D11 就绪评分
* @author 绘境AIW-G1 组B · D11 就绪评分
*/
@Slf4j
@Component

View File

@ -27,7 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
* 节点工厂{@code designNode/generateNode/...}<b></b> {@code gameRuntimeRoot} 句柄路径在运行时才 resolve
* dummy key + dummy 路径构造全图安全不触网/不触盘这把per-role budget clamp 不抛与真模型/真网关解耦坐实
*
* @author 造梦AIPlan A · U1 · P0-2 专项
* @author 绘境AIPlan A · U1 · P0-2 专项
*/
class SaaAnthropicAssembleTest {

View File

@ -52,7 +52,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* 100.64.0.8 clash 代理 <b>502 TransientAiException</b>{@link SaaStudioGraph#anthropicModel} 内已设
* {@code SimpleClientHttpRequestFactory.setProxy(NO_PROXY)} 旁路{@code -DargLine} nonProxyHosts 是双保险
*
* @author 造梦AIPlan A · U1 Anthropic client 门控烟测
* @author 绘境AIPlan A · U1 Anthropic client 门控烟测
*/
class SaaAnthropicSmokeTest {

View File

@ -69,7 +69,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* </pre>
* 无开关时整类跳过不阻断常规 test-compile/ DB 环境
*
* @author 造梦AISAA 迁移 step5 真恢复验证
* @author 绘境AISAA 迁移 step5 真恢复验证
*/
@EnabledIfSystemProperty(named = "saa.checkpoint.mysql", matches = "1",
disabledReason = "需 staging MySQL(13306) + spike schema saa_spike开关 -Dsaa.checkpoint.mysql=1")

View File

@ -30,7 +30,7 @@ import static org.mockito.Mockito.mock;
* <li>{@code WorkerDispatchClient} {@link GenerationDispatcher}接口抽象就位可灰度切换</li>
* </ol>
*
* @author 造梦AISAA 迁移 #2 生产收口
* @author 绘境AISAA 迁移 #2 生产收口
*/
class SaaDispatcherWiringTest {

View File

@ -28,7 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*
* <p>覆盖happy + 边界/null/越界/非法+ 等价类对齐 ce-workTest Scenario Completeness
*
* @author 造梦AI003-U1 验收门工具化
* @author 绘境AI003-U1 验收门工具化
*/
class SaaFullGraphE2eGateLogicTest {

View File

@ -80,7 +80,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* // 有界并发量测K=4 并行真玩端口对自动错开追加 -Dsaa.e2e.concurrency=4
* </pre>
*
* @author 造梦AIU7 集成顶石003-U1 验收门工具化 + sourceMode/concurrency 量测 flags
* @author 绘境AIU7 集成顶石003-U1 验收门工具化 + sourceMode/concurrency 量测 flags
*/
class SaaFullGraphE2eTest {

View File

@ -33,7 +33,7 @@ import static org.mockito.Mockito.when;
* <li>seam 缺席sourceProjectApi=null 取源旁路空串不崩</li>
* </ul>
*
* @author 造梦AIU6/B7 modify base
* @author 绘境AIU6/B7 modify base
*/
class SaaGraphDispatcherBaseSourceTest {

View File

@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* <li>parse-fail / null-state null 不抛best-effort 纪律 §6.4</li>
* </ul>
*
* @author 造梦AIW-G1 组B · 闭合 SAA split-brain
* @author 绘境AIW-G1 组B · 闭合 SAA split-brain
*/
class SaaGraphDispatcherTraceTest {

Some files were not shown because too many files have changed in this diff Show More