4.0 KiB
4.0 KiB
api-server 合并后编译修复记录
日期:2026-05-02
背景
codex/ddd 合入 master 后,api-server 编译失败。问题集中在合并后的跨 crate 契约缺口:api-server 已引用新接口或新字段,但对应的领域 crate 与 HTTP 转接层没有同步补齐。
修复范围
module-auth补齐个人资料更新契约:- 新增
UpdateProfileInput与UpdateProfileResult。 AuthUser增加avatar_url与created_at,并通过serde(default)兼容旧认证快照。PasswordEntryService::update_profile统一校验昵称与头像 data URL,并写回认证快照。
- 新增
- 微信绑定手机号结果补齐
activated_new_user:- 待绑定微信账号绑定新手机号时返回
true,用于注册奖励发放。 - 待绑定微信账号合并到已有手机号账号时返回
false。
- 待绑定微信账号绑定新手机号时返回
- 拼图运行态补齐 HTTP 转接:
POST /api/runtime/puzzle/runs/{run_id}/drag读取DragPuzzlePieceRequest。- 转发到 SpacetimeDB client 的
drag_puzzle_piece_or_groupprocedure 包装。
- runtime story 聊天接口改用当前 shared contract:
- 旧
runtime_story::RuntimeStorySnapshotPayload已删除。 api-server侧临时别名到story::StoryRuntimeSnapshotPayload,保持现有请求结构不漂移。
- 旧
api-server全量测试修复:custom_world_foundation_draft的 mock LLM 响应仍是旧 Chat Completions 结构。- 当前
LlmClient默认走 Responses API,测试 mock 已改为output[].content[].text结构。
- 前端全量测试期望补齐:
- 自定义世界结果页的第二幕场景预览断言改为校验第二幕生成图。
- 拼图下一关交互测试保留后端下一关调用断言,并明确只调用一次。
- 拼图正式 run 客户端补回
/drag调用包装,测试 mock 同步走正式 run 的swap/drag服务路径。
- 前端门禁合并缺口修复:
- 拼图测试运行前更新作品时同步提交
levels,对齐当前updatePuzzleWork契约。 - 大鱼和 Match3D 测试 mock 对齐当前共享契约,避免 typecheck 阻塞。
- 移除 Vite dev proxy 中重复的
/api/creationkey,避免 build gate 将 warning 视为失败。
- 拼图测试运行前更新作品时同步提交
验证
本次修复应至少通过:
cargo check -p module-auth --manifest-path server-rs\Cargo.toml
cargo check -p api-server --manifest-path server-rs\Cargo.toml
cargo test -p module-auth --manifest-path server-rs\Cargo.toml
cargo test -p api-server --manifest-path server-rs\Cargo.toml
npm run check:encoding
npm test
npm run typecheck
npm run build
npm run check:content
后端代码变更后,按项目约束还需要用 npm run api-server 做一次启动验证。
本轮最终结果:
cargo test -p module-auth --manifest-path server-rs\Cargo.toml已通过,结果为17 passed; 0 failed。cargo test -p api-server --manifest-path server-rs\Cargo.toml已通过,结果为237 passed; 0 failed; 4 ignored。cargo test --manifest-path server-rs\Cargo.toml已通过,结果同api-server默认测试。npm test已通过,结果为160 passed个测试文件、704 passed个用例。npm run typecheck、npm run build、npm run check:content、npm run check:encoding、git diff --check已通过。npm run api-server已完成启动烟测,/healthz返回200;期间 Maincloud 订阅恢复出现503warning,但未阻止服务启动。
仍需单独处理的非本轮阻塞:
cargo test --workspace --manifest-path server-rs\Cargo.toml在 Windows 原生测试链接 SpacetimeDB module crate 时失败,缺失bytes_sink_write、console_log、table_id_from_name、identity、datastore_table_scan_bsatn等 SpacetimeDB 宿主符号;这是 module crate 原生 Windows test 链接环境问题。npm run check当前仍会停在全仓lint:eslint,涉及大量既有 import 排序、未使用符号和 hook dependency lint debt;本轮触碰文件已清掉 lint error,仅PlatformEntryFlowShellImpl.tsx保留既有 hook dependency warnings。