问题
#70 建立了 AppShell 与占位路由,但已拆分的前端功能尚未在组合根统一装配真实 API、WorkflowRun Service 与 WorkflowController。页面若各自创建依赖,会产生多份运行状态;若把未合入模块复制进装配 PR,又会破坏最小提交边界。
目标
在依赖模块进入 main 后,由应用组合根一次性创建真实依赖并注入页面。AppShell 只负责组合、路由与导航,不承载业务规则。
范围
包含:
- 在组合根创建一次 CharacterApis、GenerationApis、WorkflowRunStore、WorkflowRunService 与 WorkflowController
- 将同一 WorkflowController / Store 实例注入 Quick Start 与 History
- 收口 Home、Projects、History、Asset Library、Quick Start、Playtest 与 404 路由
- 保留项目上下文、直接刷新与返回路径
- 未配置真实依赖时显示明确不可用原因,不回退到 Mock 成功
- 路由、依赖单例和导航集成测试
不包含:
- Workflow Editor(已取消)
- Project 或 Asset Library 模块内部实现(由对应负责人提供,本项只消费公开入口)
- 修改页面内部业务流程
- 新增 WorkflowRun、Generation、Character 或 Project 规则
- 后端、Mock 业务数据和构建产物
目标路由
/
/quick-start
/quick-start/:runId
/projects
/projects/new
/projects/:projectId
/projects/:projectId/history
/projects/:projectId/assets
/playtest
/playtest/:characterId/:outfitId?actionId=...
*
验收标准
- 所有声明路由均可直接访问和刷新,不渲染占位成功页
- Quick Start 与 History 使用同一个 WorkflowController / Store 实例
- 外部 Project 页面进入 History 与 Asset Library,正式动作进入 Playtest
- 未知路径进入 404,导航不丢失 projectId,也不存在循环跳转
- 未配置依赖时相关入口被禁用,并显示具体原因
- PR 只包含
main.tsx、app/** 与必要测试,不复制任何业务模块
- CI 五步通过:
format:check / lint / typecheck / test / build
依赖
本 Issue 最后实施。必须等待 WorkflowRun、WorkflowController、Quick Start、History、Playtest、Generation,以及外部负责人提交的完整 Projects / Asset Library 公开入口进入 main。当前不得为了提前开 PR 而夹带这些依赖的源码。
参考
问题
#70 建立了 AppShell 与占位路由,但已拆分的前端功能尚未在组合根统一装配真实 API、WorkflowRun Service 与 WorkflowController。页面若各自创建依赖,会产生多份运行状态;若把未合入模块复制进装配 PR,又会破坏最小提交边界。
目标
在依赖模块进入 main 后,由应用组合根一次性创建真实依赖并注入页面。AppShell 只负责组合、路由与导航,不承载业务规则。
范围
包含:
不包含:
目标路由
//quick-start/quick-start/:runId/projects/projects/new/projects/:projectId/projects/:projectId/history/projects/:projectId/assets/playtest/playtest/:characterId/:outfitId?actionId=...*验收标准
main.tsx、app/**与必要测试,不复制任何业务模块format:check/lint/typecheck/test/build依赖
本 Issue 最后实施。必须等待 WorkflowRun、WorkflowController、Quick Start、History、Playtest、Generation,以及外部负责人提交的完整 Projects / Asset Library 公开入口进入 main。当前不得为了提前开 PR 而夹带这些依赖的源码。
参考