Files
Genarrative/docs
suzmii d0176f48b7
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
feat(游戏共创): 衍生作品发布必填「本次核心改动说明」(版本级存储 + 可达错误码)
按需求文档 revision 1554「发布设置页 → 二创信息区(必填项)」:衍生作品(有血缘行)发布新版本时**必须**
提供「本次核心改动说明」;母版(0 代)不需要——提供了也忽略、不校验、不落库。

- **存储**:`game_distribution_version` **表尾追加** `change_summary: Option<String>`(`#[default(None)]`);
  列序属 wire format,`game_distribution_version_type` / `_version_snapshot_type` / `_create_version_input_type`
  三个绑定同步重生成(仓外临时 out-dir,只回写受影响文件)。
- **请求**:`GameDistributionCreateVersionRequest.change_summary`(`#[serde(default, skip_serializing_if)]`:
  缺省不序列化 `null`,保住旧客户端的幂等摘要)。
- **校验**:纯函数 `game_distribution_change_summary_violation(value, is_derivative)`,trim 后按**字符**计
  **20..=500** —— 20 是「能写清改了什么」的下限,500 约 1 KiB 上限,兼顾详情页/族谱展示与存储;
  超限或缺失**失败关闭**,错误码 `FORK_CHANGE_SUMMARY_REQUIRED` / `FORK_CHANGE_SUMMARY_INVALID`(均 **400**),
  已登记进 api-server 的 `FORK_` 映射表并纳入「FORK 码由模块真实文案可达」的枚举测试(防上次那种不可达码)。
- **公开投影**:`currentVersion.changeSummary`(衍生为字符串、母版 `null`,发键不发值),版本负载键集合
  逐字钉死为 id/version/entryUrl/sha256/publishedAt/controls/changeSummary,不带对象键/素材 id/审核字段。
- **契约与登记**:Rust DTO + TS 镜像 + parity(`version_summary_payload` 加 `mustEmit: ['changeSummary']`)。
- **文档**:技术方案 `§3.4`(请求增量 + 长度口径与理由 + 两个错误码 + 幂等摘要口径 + 公开投影)、数据契约
  文档的版本表小节(表尾追加列)。
- **测试**:纯函数 5 条(衍生缺失/超短(ASCII 与汉字)/超长(ASCII 与汉字)/区间内 trim 边界/母版忽略)+
  事务 4 条 + 接口 3 条(含公开负载键集合与母版 null)。

门禁:`SPACETIME_SCHEMA_BASE_REF=9f4c7d76 npm run check:spacetime-schema` 0(98 表);`cargo check --all-targets` 0;
`cargo test -p module-game-distribution` **119 passed**;`cargo test -p api-server game_distribution` **104 passed**;
DTO parity 0(62 组 / 17 构建器 / 15 手拼类型);`check:encoding` 0(5535 files);
`cargo fmt --all --manifest-path server-rs/Cargo.toml -- --check` 0;`git diff --check` 0。

注:本块**未提交** `scripts/check-game-distribution-lineage-e2e.mjs` / `check-game-distribution-theme-e2e.mjs` /
`capture-game-lineage-visual.mjs` 的配套改动(属别的 session 的文件,工作区里保留未提交,需其 owner 决定:
衍生作品发布若不传 `changeSummary` 现在会 400,那三个脚本需要同步补字段)。
2026-10-06 17:24:42 +08:00
..

文档总览

本目录只把当前实现依据、公开契约和仍在维护的专题合同作为入口。代码、当前文档与项目记忆冲突时,以当前代码和最新专题文档为准;未列入下表的材料不作为实现依据。

必读入口

  1. Agent 工作入口与执行准则
  2. 规范驱动开发工作流
  3. 文档生命周期与现状索引
  4. 当前产品与工程约束
  5. server-rs 与 SpacetimeDB 数据契约
  6. 本地开发验证与生产运维
  7. 项目记忆入口

文档治理

当前产品与平台

  • 当前产品与工程约束:现役入口、账号钱包、UI 和后端分层。
  • 平台入口与玩法链路:平台壳、图片画布、游戏分发与在线游玩合同;网站游戏评分与评价已实现并通过本地验证,待用户验收,未部署。
  • 网站游戏评分与评价里程碑:唯一评价、编辑预填、4000 字符、公共分页与平均分/人数的验收边界与本地证据。
  • 创作者主页与关注粉丝合同:前后端已实现并通过工程验证,用户已确认提交交付,未部署。第四项默认进入自己主页,他人的关注/粉丝列表统一只读并支持主页跳转。
  • 创作者主页与关注粉丝工程设计:分层落点、关系表/DTO、授权、关系列表分页、组件状态、深链与验证边界;游戏列表沿用最多 48 项限制,不做额外分页改造。
  • 后台游戏评价管理合同:查找、分页、隐藏/恢复/删除、必填原因、统计与个人状态联动;已实现并通过本地验证,待用户验收,未部署。
  • 后台游戏评价管理里程碑与实施计划:单里程碑范围、接口/schema 边界及验收要求;本地证据已回写主规范。
  • 游戏广场评分展示合同、里程碑与实施计划:已实现并通过本地定向验证,待用户验收,未部署;公开列表/详情携带真实摘要,卡片显示一位小数均分与人数,复用有效评价统计。
  • 游戏买断制泥点付费与播放鉴权合同与里程碑:已实现,本机真实栈 E2E 由人工验收脚本 check:game-distribution-purchase-e2e 覆盖(最近一次人工运行 76 PASS / 0 FAIL / 1 WARN),该脚本不在 CI 自动门禁内;待用户验收,未部署;作者可选买断制泥点付费,购买后永久可玩,后台审核可见价格且审核员不限次试用;网页与 AGC 两个发布入口一致支持定价并共用 packages/shared 组件 PlatformGamePricingField,AGC 定价的前端用例与 Rust 预填单测已覆盖,AGC 真实栈发布未覆盖。
  • 游戏游玩次数计数:点「开始游戏」前端上报一次游玩,api-server 纯内存聚合(5s flush、30min 去重、IP+game 限流、关停不强制 flush),批量 procedure 自增现有 game_distribution_game.play_count,不 bump updated_at。
  • 游戏共创与作品 Fork:共创授权三态(只升不降)、作品级血缘与代际、成品包与工程源包两条改造路径、族谱树与溯源署名的产品设计与技术方案;同时作为该功能主规范,已评审通过,按 M1 逐里程碑实现。
  • 外部 OpenAPI 与 API Key 接入方案
  • 外部 MCP 语义工具说明与参数设计:15 个新增语义工具与全部原工具并存,复用现有 External API;包含工具说明、action、参数、幂等和兼容合同。
  • External v1 OpenAPI:公开 HTTP 契约唯一机器可读来源。
  • External v1 游戏场景生成路由:external v1 结构化场景生成专用路由与 AGC 美术包背景阶段迁移合同。

AI 游戏创作与 Agent Runtime

图片画布与媒体

钱包与会员计费

  • 双余额泥点与会员补差升级实施计划:每日免费 / 月度 / 永久三池并列投影、按开通日自然月计期、年付 12 期与补差升级的规则细则、里程碑与验收判据;已落地(会员购买与升级的 C 端 UI 未做)。
  • 泥点三池与会员计费后端设计:后端 DB schema、账本与幂等、领域数据结构与 HTTP 契约;会员档位改为枚举、目录表以枚举为主键,含破坏性迁移计划、遗留清理清单与落地状态;已落地。
  • 会员与泥点前端改造:共享充值弹层改为「会员与泥点」双 Tab(套餐卡 / 周期切换 / 补差升级 / 六档充值 / 套餐对比 / 确认页),金额只读后端目录与报价接口;Web 平台入口、图片编辑器与 AGC 桌面壳三处共用;含已确认决策与验收判据。
  • 泥点三池以单一总额为权威:存储层保留 wallet_balance 单一权威总额,对外并列三池;永久泥点暂为推导余数,另记独立存储的 TODO。
  • 会员账期按开通日自然月:北京时间开通日锚点、自然月推进与月末夹取、年付 12 期的期数表达与取整口径。
  • 会员订单复用充值订单与补差升级幂等锚点:会员订单复用 profile_recharge_order、MembershipUpgradeGrant 账本幂等、后端只读报价与退款人工复核边界。
  • 会员档位以枚举为权威:档位身份改为 Rust 枚举、目录表 profile_membership_plan 以枚举为主键、删除两处 tier 列与旧档位枚举、并发用哨兵值 128 表示不设上限。
  • 模型权限与并发上限的强制边界:并发上限只在认领事务按账号过滤队列 job、只算 running;模型权限只约束 AGC LLM 模型、缺省 Basic 由后台人工标 Full;raw gpt-image-2 等直连同步生成暂不计入并发。

后端、运维与测试

已核准专题补充

以下文档已有源码、测试或运行时证据,现纳入 current 集合:

维护规则

  • 当前文档只保留稳定合同、公开契约和仍在推进的专题;一次性计划、实施记录和已关闭实验完成后删除或融合,不再长期堆积。
  • 文档现行/历史/待复核状态以文档生命周期与现状索引为准;未列入当前入口的文档不能直接作为实现依据。
  • docs/project-memory/shared-memory/ 只保存长期有效的概览、决策、流程和踩坑;plans/、todos/ 仅保存仍开放且有明确下一门禁的事项。
  • 修改 /api/external/v1 必须同步 OpenAPI 和契约测试;修改 SpacetimeDB schema 必须同步 migration、表目录、绑定和 schema 检查。
  • 当前入口、公开契约和数据对象只以现役代码、路由树、shared-contracts 与 SpacetimeDB schema / bindings 为准;未登记对象不得作为兼容目标恢复。
  • 新增 Markdown 使用 【标签名】中文标题-YYYY-MM-DD.md 命名;不要把个人配置、密钥、Token、日志或构建产物写入文档。