# Rust API Server 路由索引(2026-04-23) 更新时间:`2026-04-23` ## 1. 文档目标 本文件记录当前 `server-rs/crates/api-server/src/app.rs` 中已挂载的 Rust Axum 路由面,用于对照 Node 后端 `96` 条路由能力基线。 本文件只做路由索引,不替代单个阶段的设计文档;接口字段、权限、错误模型仍以各阶段技术方案和 `shared-contracts` 为准。 ## 2. 当前统计 当前 Rust `api-server` 从 `app.rs` 可抽取到 `101` 条路由: 1. 管理后台接口:`5` 条。 2. 内部鉴权调试接口:`2` 条。 3. AI task 接口:`9` 条。 4. assets / OSS 接口:`15` 条。 5. auth 接口:`12` 条。 6. custom world / agent 接口:`23` 条。 7. llm proxy 接口:`1` 条。 8. profile / runtime profile 接口:`12` 条。 9. runtime story / story gameplay 接口:`15` 条。 10. legacy generated 静态路径兼容:`6` 条。 11. health check:`1` 条。 ## 3. 路由清单 ### 3.1 管理后台 1. `GET /admin` 2. `POST /admin/api/login` 3. `GET /admin/api/me` 4. `GET /admin/api/overview` 5. `POST /admin/api/debug/http` ### 3.2 内部鉴权调试 1. `GET /_internal/auth/claims` 2. `GET /_internal/auth/refresh-cookie` ### 3.3 AI Task 1. `POST /api/ai/tasks` 2. `POST /api/ai/tasks/{task_id}/start` 3. `POST /api/ai/tasks/{task_id}/cancel` 4. `POST /api/ai/tasks/{task_id}/complete` 5. `POST /api/ai/tasks/{task_id}/fail` 6. `POST /api/ai/tasks/{task_id}/chunks` 7. `POST /api/ai/tasks/{task_id}/references` 8. `POST /api/ai/tasks/{task_id}/stages/{stage_kind}/start` 9. `POST /api/ai/tasks/{task_id}/stages/{stage_kind}/complete` ### 3.4 Assets / OSS 1. `POST /api/assets/direct-upload-tickets` 2. `POST /api/assets/sts-upload-credentials` 3. `POST /api/assets/objects/confirm` 4. `POST /api/assets/objects/bind` 5. `GET /api/assets/read-url` 6. `POST /api/assets/character-visual/generate` 7. `GET /api/assets/character-visual/jobs/{task_id}` 8. `POST /api/assets/character-visual/publish` 9. `POST /api/assets/character-animation/generate` 10. `GET /api/assets/character-animation/jobs/{task_id}` 11. `POST /api/assets/character-animation/publish` 12. `POST /api/assets/character-animation/import-video` 13. `GET /api/assets/character-animation/templates` 14. `GET /api/assets/character-workflow-cache/{character_id}` 15. `GET / POST /api/assets/character-workflow-cache` ### 3.5 Auth 1. `GET /api/auth/login-options` 2. `GET /api/auth/me` 3. `POST /api/auth/logout` 4. `POST /api/auth/logout-all` 5. `GET /api/auth/sessions` 6. `POST /api/auth/refresh` 7. `POST /api/auth/phone/send-code` 8. `POST /api/auth/phone/login` 9. `GET /api/auth/wechat/start` 10. `GET /api/auth/wechat/callback` 11. `POST /api/auth/wechat/bind-phone` 12. `POST /api/auth/entry` ### 3.6 Custom World / Agent 1. `GET /api/runtime/custom-world-library` 2. `GET /api/runtime/custom-world-library/{profile_id}` 3. `POST /api/runtime/custom-world-library/{profile_id}/publish` 4. `POST /api/runtime/custom-world-library/{profile_id}/unpublish` 5. `GET /api/runtime/custom-world-gallery` 6. `GET /api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}` 7. `GET /api/runtime/custom-world/works` 8. `POST /api/runtime/custom-world/agent/sessions` 9. `GET /api/runtime/custom-world/agent/sessions/{session_id}` 10. `POST /api/runtime/custom-world/agent/sessions/{session_id}/messages` 11. `GET /api/runtime/custom-world/agent/sessions/{session_id}/messages/stream` 12. `GET /api/runtime/custom-world/agent/sessions/{session_id}/operations/{operation_id}` 13. `GET /api/runtime/custom-world/agent/sessions/{session_id}/cards/{card_id}` 14. `POST /api/runtime/custom-world/agent/sessions/{session_id}/actions` 15. `POST /api/custom-world/entity` 16. `POST /api/runtime/custom-world/entity` 17. `POST /api/custom-world/scene-npc` 18. `POST /api/runtime/custom-world/scene-npc` 19. `POST /api/custom-world/scene-image` 20. `POST /api/custom-world/cover-image` 21. `POST /api/custom-world/cover-upload` 22. `POST /api/runtime/custom-world/cover-image` 23. `POST /api/runtime/custom-world/cover-upload` ### 3.7 LLM Proxy 1. `POST /api/llm/chat/completions` ### 3.8 Profile / Runtime Profile 1. `GET /api/profile/dashboard` 2. `GET /api/runtime/profile/dashboard` 3. `GET /api/profile/play-stats` 4. `GET /api/runtime/profile/play-stats` 5. `GET /api/profile/wallet-ledger` 6. `GET /api/runtime/profile/wallet-ledger` 7. `GET /api/profile/browse-history` 8. `GET /api/runtime/profile/browse-history` 9. `GET /api/profile/save-archives` 10. `GET /api/runtime/profile/save-archives` 11. `POST /api/profile/save-archives/{world_key}` 12. `POST /api/runtime/profile/save-archives/{world_key}` ### 3.9 Runtime Story / Gameplay 1. `POST /api/runtime/save/snapshot` 2. `GET /api/runtime/settings` 3. `GET /api/runtime/story/state/{session_id}` 4. `POST /api/runtime/story/state/resolve` 5. `POST /api/runtime/story/actions/resolve` 6. `POST /api/runtime/story/initial` 7. `POST /api/runtime/story/continue` 8. `POST /api/story/sessions` 9. `POST /api/story/sessions/continue` 10. `GET /api/story/sessions/{story_session_id}/state` 11. `POST /api/story/battles` 12. `POST /api/story/battles/resolve` 13. `GET /api/story/battles/{battle_state_id}` 14. `POST /api/story/npc/battle` 15. `GET /api/runtime/sessions/{runtime_session_id}/inventory` ### 3.10 Legacy Generated 路径 1. `GET /generated-character-drafts/{*path}` 2. `GET /generated-characters/{*path}` 3. `GET /generated-animations/{*path}` 4. `GET /generated-custom-world-scenes/{*path}` 5. `GET /generated-custom-world-covers/{*path}` 6. `GET /generated-qwen-sprites/{*path}` ### 3.11 Health 1. `GET /healthz` ## 4. 维护规则 1. 新增、删除或改名 Rust 路由时,必须同步更新本索引。 2. 如果 Rust 后端公开能力面发生变化,必须同时更新本索引、当前后端实现基线与对应阶段任务清单。 3. 任何 breaking route change 都必须先更新阶段设计文档,再改代码。 4. 真实切流前,必须用本索引对照代理层、前端调用面和 smoke 清单,避免只完成编译而遗漏外部可访问路径。