- 注册表:docs/architecture/README.md §2,37 份 canonical(frontmatter topic+canonical:true)与表双向机器对账
- 门:.agents/tools/docs-gate.py 六检(品牌根/canonical唯一/死链/入口卫生/留痕隔离/设计档申报),挂 .githooks/pre-commit(本仓已激活)+ .gitea/workflows/docs-gate.yml(待runner)+ wave-close 第8步;旧 check-deadlinks.sh 退役并入 G3
- 清缩:删 54 项历史档(plans 16/agent-specs 设计与spike 20/brainstorms 5/memorys 3/goals+作战清单完成史归档/王蓝莓design/SAA现状html/add-game-template);channel-spike 564K 代码资产迁仓级 spikes/;六件删前蒸馏已迁(代码评审16条open项→进度总账§5、prefix-cache字段表→cheap-model skill、意图基线29条→需求清单附录、九门降级rationale→验收门、A11 TODO→tech-decisions、3layer边界→littlejs-game-dev 指针)
- 修口径约90处:六处SAA『现行主线』旧标、Nacos/RocketMQ『未部署』旧述(07-01反转)、gameDefinition残留、全部死链改 git show 定位;AGENTS.md 249→136行(决策史归tech-decisions);_index 改纯在飞板;对外演示版 md→html
- 依据:docs/agent-specs/2026-07-02-文档治理-{全量普查与裁决-report,SoT注册表与治理门-设计}.md(四路普查191份md+Codex/Opus双评审必修项已折入);恢复基线 8ea97234(单档 git checkout 8ea97234 -- <路径>)
11 KiB
topic, canonical, date
| topic | canonical | date |
|---|---|---|
| 后端域总览 | true | 2026-07-02 |
后端域 · 服务实现视角
这是什么:绘境AI 后端域的入口文档,从"这 13 个业务模块在工程上怎么落地、怎么组织代码"这个角度切入——也就是服务实现视角(包结构、分层约定、模块归属、构建与运行形态)。它不重复回答"每个模块各自管什么领域、彼此怎么依赖",那是架构域(../架构/)的职责。 给谁看:要动后端代码的工程师、做后端 code review 的人、排查跨模块依赖的人。 怎么读:本页很短,先建立"后端长什么样、边界划在哪、权威源在哪"的认知;真要写某个模块、查某个 T-id、看某条依赖,直接跳到文末三个权威源。
1. 边界声明:本域 = 13 个后端业务模块的服务实现视角
绘境AI 的后端不是一个空泛的"服务端",而是一组边界清晰、各管一摊的业务模块:从创作编排(studio)、无状态生成原子(aigc)、编译与多渠道发布(runtime),到项目生命周期(project)、游戏信息流(feed)、遥测数据底座(telemetry),再到支付(pay)、分账结算(trade)、社区互动(community)、素材与授权(ip)、内容安全与审核(compliance)、B 端定制(biz)、广告引擎(ad)——一共 13 个 game 业务模块,叠加在 Huijing Cloud(一套基于 Spring Cloud Alibaba 的开源 Java 企业级后台框架,我们 fork 它做二次开发;下文简称 Huijing)提供的用户、权限、工作流、文件等基座能力之上。
需要先讲清楚一件事:"13 个模块各自负责什么领域、它们之间的依赖关系"属于架构域,不在本页展开。本页只回答工程落地层面的问题——这些模块在代码里怎么摆、包怎么命名、构建产物长什么样、当前哪些已经建成在跑。换句话说,架构域回答"模块是什么(WHAT/边界)",本后端域回答"模块在工程上怎么实现(HOW/落地)"。两者各守一摊、互不重复,这样无论是改架构还是改代码,都只有一处需要更新。
把这套实现视角浓缩成一张图,就是下面这个分层与依赖示意:
flowchart TB
subgraph HJ["Huijing fork — 基座(开箱即用,不属于业务)"]
SYS["system<br/>用户 / 权限 / OAuth2"]
INFRA["infra<br/>文件 / 任务 / 日志"]
BPM["bpm 工作流"]
PAYN["pay(huijing 原生)<br/>当前未接入单体"]
end
subgraph BIZ["13 个 game 业务模块 — 本域主体"]
direction LR
STU["studio 创作编排"]
AGC["aigc 生成原子"]
RT["runtime 编译/发布"]
PRJ["project 生命周期"]
FED["feed 游戏流"]
TEL["telemetry 遥测"]
TRD["trade 分账结算"]
CMU["community 社区"]
IP["ip 素材/授权<br/>(seam 寄宿 compliance)"]
CMP["compliance 安全/审核"]
BIZM["biz B端定制"]
AD["ad 广告"]
end
subgraph PKG["每个模块的两段式工程结构"]
API["-api 包<br/>枚举 / 错误码段 / 跨模块 DTO·Feign"]
SRV["-server 包<br/>controller / service / dal / convert"]
end
BIZ --> HJ
STU --> PKG
AGC --> PKG
RT --> PKG
note["全部以 jar 聚合进 huijing-server 单体运行<br/>包名统一 com.wanxiang.huijing.game.module.{模块}.{层}"]
PKG -.-> note
图里把 pay 单独画在基座里:pay 是 Huijing 原生模块,MVP 阶段还没接入这套单体;而 ip 不独立建模块,而是作为一条 seam(接缝/横切能力)寄宿在 compliance 里。这两点是后端实现上的两个特殊归属,后面"权威源"里有完整说明。
2. 为什么这份文档这么薄
一句话:逐模块的详细设计不该有两份。 这份后端域 README 刻意保持薄,是为了防止它变成一份和架构域内容重叠、却又各自漂移的"影子文档"——那是文档治理里最该避免的反模式(同一件事写两遍,迟早一份过期、读者不知道信哪份)。
具体来说,后端的知识天然分布在三个层次,各有各的归宿,不该在本页重抄:
- 模块边界与技术功能注册表(WHAT/结构权威) —— 每个模块的职责、IN/OUT 边界、依赖关系,以及每一项技术功能的
T-{模块}-{nn}编号(例如T-AGC-04= aigc 模块的"GameConfig 结构化生成 + JSON Schema 校验"),全部集中在架构域的 13模块.md。那是结构权威:T-id 只增不改号、废弃打墓碑标记。本页若再列一遍模块卡片,只会制造第二份会过期的副本。 - 工程落地现状与代码锚点(HOW/实现现状) —— 包名怎么命名、
-api/-server怎么分、Flyway 迁移脚本放哪、错误码段怎么分配、哪些模块已经建成接入单体、哪些还是桩——这些随代码演进而变的实时状态,归 game-cloud/.agent。它跟着代码走,改了结构就改它,是后端工程现状的单一事实源。 - 横切进度与 13 模块完成度 —— 哪个模块是真实现、哪个是桩、哪个未建,以
docs/mvp/MVP进度总账.md的 §2 矩阵为准(它是模块进度的单一 SoT)。
把这三层钉死在各自的权威源,本页就只需要做一件事:讲清楚"后端是什么形状、边界划在哪",然后把读者准确地导到该去的地方。这不是偷懒,而是治理纪律——薄,是为了不和权威源打架。
至于一条冲突该信谁,后端工程沿用架构域定下的读序:状态 > 实现 > 结构。也就是说,进度总账里的真/桩/未建状态最高,其次是 game-cloud 里的实现现状,最后才是 13模块.md 的结构定义;当三者表述不一致时,按这个优先级裁断。
3. 几条贯穿全后端的工程约定(速记,细节见权威源)
下面这些约定不是新规定,而是把散落在 .agents/rules/engineering-conventions.md 和 game-cloud .agent 里、且对"看懂后端长什么样"最关键的几条拎出来速记。任何一条的完整版都在那两处,本页只给指针级的一句话:
- 包名统一:所有业务代码都在
com.wanxiang.huijing.game.module.{模块}.{层}之下(例如...game.module.project.service)。这条命名规则也是端前缀自动生效的前提——控制器按包路径**.controller.app/admin.**通配,Huijing 框架据此自动给上/app-api、/admin-api两个端前缀,控制器代码本身零改。 - 两段式模块结构:每个 game 模块拆成
-api与-server两个 Maven 子模块。-api只放对外契约面——枚举、错误码常量、跨模块 DTO 与 Feign 接口;-server放真正的实现——controller(app/admin 双端)、service、dal(DO/Mapper)、convert。跨模块只能依赖对方的-api,不能直接碰-server,这是低耦合的硬边界。 - 错误码分段:错误码格式为
1-{模块段}-***-***,每个模块独占一段、互不重叠(例如 project 占段 100,Wave1 闭环脊柱 4 模块 aigc/runtime/feed/telemetry 顺延占段 101–104)。完整分配表在.agents/rules/engineering-conventions.md §1.3。 - 契约不放后端:API/DB/SDK/event 等 8 类跨端契约的单一事实源是仓根的
contracts/,后端只引用它、不在模块里另立一份。数据库 schema 的源在contracts/db-schemas/,Flyway 执行副本放在huijing-server/.../db/migration/(两边 diff 必须一致,因为 Flyway 对校验和敏感)。 - 物理形态 = 单体:13 个模块是逻辑划分,物理上全部以 jar 聚合进
huijing-server单体进程运行(monorepo 先行、后续再拆独立仓)。Nacos、RocketMQ、Sentinel 已于 2026-07-01 反转为 MVP 生产基建(自托管 mini-infra:Nacos 配置中心 + 服务发现已enabled=true指 mini-infra、RocketMQ 异步 gen 队列、Sentinel 准入侧流控;接入实现进行中,见 git 与配置控制面设计)——它们是单体接的生产基建,不改变单体聚合运行的形态、也不是拆微服务的前提。 - 技术栈基线:Java 17 + Spring Cloud Alibaba + MySQL 8.0 + Redis 7 + Flyway;生成框架收敛到 AgentScope,按 AI 参与深度分三档(全模板化),经 new-api 网关(一个 OpenAI 兼容的多模型 LLM 网关)调便宜 LLM(如 DeepSeek / MiniMax),SAA(Spring AI Alibaba)裸图等编排基建降为最低优先级、留作远期适配验证可插拔——这部分的现行架构归架构域的生成引擎子文档,不在后端域展开(其中 tier2 富游戏档的 0 号 spike 已 accept、核心已落,产品化排期待定,同归该子树)。
- 三档生成的控制面 / 管理面:把三档生成配置、观测、审计、管起来的治理层(D12 运行治理门 + 配置注册表 + 观测审计仓,其中 D12 现仅覆盖浅介入档的编排路径、tier2 富游戏档治理待接),设计同样归架构域的运行时 SoT 生成引擎/agentic运行时架构图说.md,后端域不展开。
建设现状(随代码演进,以权威源为准):13 个模块中已建成并接入单体的有 11 个(project / aigc / runtime / feed / telemetry / ad / trade / compliance / studio,以及 Wave4 的 community / biz);ip 作为 seam 寄宿 compliance、不独立建;pay 为 Huijing 原生、当前未接入单体。这个数字会变,任何时候都以 docs/mvp/MVP进度总账.md §2 矩阵 + game-cloud .agent 为准,不以本页为准。
4. 权威源指针:要动后端,去这几处
本页到此为止只做了"定形状、划边界"。真正要写代码、查 T-id、看依赖、对进度,请直接去下面三个权威源——它们才是各自维度上"读它 = 当前真相"的单一事实源:
| 权威源 | 它是什么维度的真相 | 什么时候去 |
|---|---|---|
| ../架构/13模块.md | 结构权威:13 模块卡片(职责 / IN-OUT 边界 / 依赖)、全部 T-{模块}-{nn} 技术功能注册表、横切关注点 owner |
要查某模块边界、某条 T-id、模块间依赖时 |
| ../架构/README.md | 架构骨架:六层分层图、关键选型的"为什么"、13 模块全局依赖图 | 要建立后端整体技术认知、理解选型理由时 |
| game-cloud/.agent | 工程现状:目录规划、-api/-server 落地、Flyway 版本、各 Wave 建设进度、代码锚点 |
要实际改代码、看哪些已建成 / 还是桩时 |
| 鉴权与权限.md | 鉴权权威:谁能做什么——OAuth2/RBAC、B 端 RBAC 与 C 端归属隔离两套并存模型、匿名 / 登录准入矩阵、网关双重校验纠偏 | 要判某端点该不该登录 / 有没有权限、写鉴权代码时 |
| 数据模型.md | 数据权威:全平台数据模型总图——按 Flyway 真实表的跨域 ER、五条业务链路、软关联与数据语义坑 | 要动表结构、写跨模块查询、做数据侧 review 时 |
纪律:后端域只讲"后端的工程形状与边界",不重抄模块详设(在 13模块.md)、不重抄实现现状(在 game-cloud/.agent)、不重抄进度(在 MVP进度总账.md)。这份文档薄,是因为它的价值在于把人准确导到对的权威源,而不是再造一份会过期的副本。