044c10f0fb
Project CI / AI game creator shell Rust crates (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 / Backend tests (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
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
- 依据客户端提交 `5d01e43b6`:AGC 的 `CreationSource` 新增 `PlatformGame`,按 serde snake_case 落到线上取值 **`platform_game`**(同提交的 `creation_source_gains_platform_game_without_breaking_existing_values` 用例显式给出该字面量),上报字段仍是 `project_create_success` 的属性 `creation_source`。服务端枚举此前没有它,整条事件会被判 `invalid_properties` 直接丢弃
- `shared-contracts/src/agc_analytics.rs`:`values!(CreationSource { .. })` 追加 `PlatformGame`(注释与客户端一致);解析走 serde 派生,无需新增匹配分支
- `module-runtime/src/agc_analytics.rs`:新增 `agc_accepts_every_creation_source_and_rejects_unknown`——五个受支持取值(home_game / home_design / template / selected_directory / **platform_game**)逐个通过整批校验(事件形如 `project_create_success` 且带 `project_id`),未知取值(`remix` / `platform` / `PLATFORM_GAME` / 空串)仍然失败关闭为 `invalid_properties`
- 文档:`docs/technical/【技术方案】客户端本地埋点与主站入库契约-2026-09-21.md` §6.6 的 `creation_source` 取值列表补 `platform_game`(保持 `/` 分隔与 snake_case 风格)
- 全仓核对:该枚举只有两处定义(AGC `analytics/contract.rs` 与 `shared-contracts`),**无第二处服务端镜像**、无 TS 联合类型、无 schema/OpenAPI 取值表;生成绑定不含该类型(埋点批量跨模块边界走 `payload_json: String`),因此无需重跑 spacetime generate
shared-contracts 共享 crate 说明
日期:2026-04-21
1. crate 职责
shared-contracts 是前后端兼容 contract 共享 crate,后续负责:
- HTTP 请求与响应 DTO
- SSE 事件结构与事件名约定
- response envelope、错误结构、兼容头部契约
- 各模块对外暴露的共享协议类型
2. 当前阶段说明
当前阶段已完成 Stage1 最小真实落地:
- 统一 response envelope / 头部常量
auth/login-optionsauth/meauth/sessionsruntime/settings
当前阶段继续补齐的 Stage2 鉴权 DTO:
auth/entryauth/refreshauth/logoutauth/logout-allauth/phone/send-codeauth/phone/loginauth/wechat/startauth/wechat/callbackauth/wechat/bind-phoneauth/wechat/miniprogram-login
当前阶段继续补齐的 Stage3 公开请求 DTO:
assets/direct-upload-ticketsassets/read-urlassets/objects/confirmassets/objects/bindstory-sessions/beginstory-sessions/continue
当前阶段继续补齐的 Stage4 显式成功响应 DTO:
assets/direct-upload-ticketsassets/read-urlassets/objects/confirmassets/objects/bindstory-sessions/beginstory-sessions/continue
当前阶段新增 Stage6 character visual 兼容 DTO:
assets/character-visual/generateassets/character-visual/jobs/:taskIdassets/character-visual/publish
当前阶段新增 Stage7 character animation 模板与导入兼容 DTO:
assets/character-animation/templatesassets/character-animation/import-video
当前阶段新增 Stage8 character workflow cache 第一批兼容 DTO:
assets/character-workflow-cacheassets/character-workflow-cache/:characterId
当前阶段新增 Stage9 character animation 主链兼容 DTO:
assets/character-animation/generateassets/character-animation/jobs/:taskIdassets/character-animation/publish
当前阶段新增 Stage5 story session scoped runtime story 写读 DTO:
BeginStoryRuntimeSessionRequestResolveStoryRuntimeActionRequestStoryRuntimeProjectionResponseStoryRuntimeMutationResponseStoryRuntimeSnapshotPayload仅用于 story session scoped 写侧持久化边界,不复用旧/api/runtime/story/*总入口 contract。
WP-DEL 已删除旧 runtime story HTTP DTO:RuntimeStoryStateResolveRequest、RuntimeStoryBootstrapRequest/Response、RuntimeStoryActionResponse 和旧 RuntimeStorySnapshotPayload。runtime_story 模块中仍保留的 RuntimeStoryViewModel、RuntimeStoryPresentation、RuntimeStoryPatch 与 battle presentation 是当前投影/表现构件,不作为旧 HTTP 写入口。
当前仍刻意未做:
- SSE 事件结构
- 自动代码生成或跨语言 contract 同步
- 其他尚未收口模块的 handler 响应体显式 DTO 化
3. 边界约束
shared-contracts只放协议类型与兼容结构,不承接业务规则、供应商适配或状态写入逻辑。- 各模块 crate 对外暴露的协议优先复用这里的共享定义,避免重复散落。
- 前端兼容契约一旦进入本 crate,就必须与任务清单和基线文档同步维护。
assets模块依赖platform-oss的稳定返回类型,默认通过oss-contractsfeature 给api-server使用;SpacetimeDB WASM 构建链路必须通过 workspace 依赖关闭默认 feature,避免把platform-oss/reqwest/wasm-bindgen带进spacetime-module。