背景
后端目前不存 Workflow,以后接管。前端已在 entities/workflow-run 实现本地状态推进
(见 #59),模型为单方面假设。本 Issue 只确认边界,不要求现在实现。
前端当前模型
interface WorkflowRun {
id: string
projectId: number
characterId: number | null // 建出角色前为 null
driver: 'ai' | 'manual'
intent: 'create-character' | 'edit-character' | 'add-action'
status: 'draft' | 'running' | 'paused' | 'completed' | 'failed'
currentStepId: string | null
steps: WorkflowStep[]
}
interface WorkflowStep {
id: string
type: 'generate-template' | 'confirm-template'
| 'add-action' | 'generate-action' | 'review'
status: 'pending' | 'running' | 'done' | 'failed'
actionId: number | null
taskId: string | null
}
推进方式:前端提交命令,本地校验后改写步骤状态,如 { kind: 'add-action', name: '行走' }。
需要确认
1. Workflow 与 WorkflowRun 是一个对象还是两个?
可保存复用的节点图与一次具体执行,前端当成了同一个。07-22 会议提过这个歧义。
2. 一个项目能有几条 WorkflowRun?
前端按一对多实现,项目详情页列出未完成的供用户选择。但 windup_project.workflow_id
是单数字段——若为一对多,该字段表示什么?
3. 步骤在创建时排好,还是随操作追加?
前端是追加:初始两步(生成母版、确认母版),每加一个动作追加两步。
五种步骤类型是否够用?
4. 一个步骤能关联几个任务?
前端每步只有一个 taskId。生成失败重试会产生第二个任务,是否需要保留任务历史?
5. 后端接管后谁校验命令、谁推进状态?
现在前端全权。将来后端是只负责存取(前端算好整份提交),还是校验命令并返回权威状态?
前端提交非法状态(母版未确认就加动作)时,后端是否拦截?
6. 三个字段的归属
characterId:谁在何时写入?实测走完建角色流程后仍为 null,「给已有角色补动作」
入口因此不可达。
intent:区分新建角色 / 编辑角色 / 补动作三种入口,后端持久化还是纯前端状态?
id:架构文档写 string,windup_project.workflow_id 是 BIGINT。
本次范围
只确认领域模型与责任边界。SSE 事件格式、精灵尺寸口径、鉴权、动作帧数另开 Issue。
Refs #58 #59
背景
后端目前不存 Workflow,以后接管。前端已在
entities/workflow-run实现本地状态推进(见 #59),模型为单方面假设。本 Issue 只确认边界,不要求现在实现。
前端当前模型
推进方式:前端提交命令,本地校验后改写步骤状态,如
{ kind: 'add-action', name: '行走' }。需要确认
1. Workflow 与 WorkflowRun 是一个对象还是两个?
可保存复用的节点图与一次具体执行,前端当成了同一个。07-22 会议提过这个歧义。
2. 一个项目能有几条 WorkflowRun?
前端按一对多实现,项目详情页列出未完成的供用户选择。但
windup_project.workflow_id是单数字段——若为一对多,该字段表示什么?
3. 步骤在创建时排好,还是随操作追加?
前端是追加:初始两步(生成母版、确认母版),每加一个动作追加两步。
五种步骤类型是否够用?
4. 一个步骤能关联几个任务?
前端每步只有一个
taskId。生成失败重试会产生第二个任务,是否需要保留任务历史?5. 后端接管后谁校验命令、谁推进状态?
现在前端全权。将来后端是只负责存取(前端算好整份提交),还是校验命令并返回权威状态?
前端提交非法状态(母版未确认就加动作)时,后端是否拦截?
6. 三个字段的归属
characterId:谁在何时写入?实测走完建角色流程后仍为null,「给已有角色补动作」入口因此不可达。
intent:区分新建角色 / 编辑角色 / 补动作三种入口,后端持久化还是纯前端状态?id:架构文档写string,windup_project.workflow_id是BIGINT。本次范围
只确认领域模型与责任边界。SSE 事件格式、精灵尺寸口径、鉴权、动作帧数另开 Issue。
Refs #58 #59