# 07 任务模型、调度与三阶段状态机 听文视频工作台 · 技术架构与实现 · 1.0.2 图示:阶段状态与显式恢复 阶段状态与显式恢复 重启 通过校验 pause/resume idle/未开始 视频等待素材确认 queued/等待 launch接受步骤 working/处理中 执行worker/更新进度 ready/done 音频图ready · 视频done failed/失败 素材保留 · 显示错误 cancelled/已取消 Control取消后worker退出 interrupted/待恢复 进程重启时busy转入 显式重试或再次确认 检查状态/版本/费用/试用额度 paused独立标记 检查点等待/编码SIGSTOP 图8|单个步骤状态机。音频/图片成功为ready,视频成功为done;paused/cancelled是跨阶段标志,resume并不自动启动中断步骤。小屏可横向滚动查看图示 系统不是一个单独全局状态枚举。每个job有独立的audio_state、image_state、video_state,以及paused、cancelled、submitting等跨阶段标记。音频、图片成功状态为ready;视频成功为done。queued/working用于活动判定,failed/cancelled/interrupted表示不同终止或恢复情形。 ## 创建与工作器 新任务先规范化标题、验证正文/音色/配图方式、解码或校验照片与来源配置。在RLock内检查ACTIVE,若有活动任务则409拒绝创建;生成规范UUID、写job快照、创建Control,启动audio。手机上传图已在请求中处理并保存,所以无需另启动image线程;URL和Seedream会启动image,与音频工作器可并行。 ACTIVE是(job_id,part)集合,CONTROLS映射每任务共享控制对象。launch()避免同一步重复启动,用daemon线程执行WORKERS映射中的函数。Android启动覆盖WORKERS['video'],其他业务继承PC规则。全局RLock协调任务读写、活动集和动作,不形成跨进程数据库事务。 ## 状态与动作关系 动作 | 状态改变/处理 | 活動限制 | create | audio queued,image queued或ready,video idle | ACTIVE非空拒绝新任务 | pause | 设置paused事件及持久标志 | 对在途云图片不能撤回服务端处理 | resume | 清paused/cancelled,必要时新Control | 取消尚未完成则拒绝;不自动launch中断步骤 | cancel | cancelled事件,清前端暂停显示;未运行busy步骤设cancelled | 正在运行worker在检查点停止 | retry-audio | 重置audio queued,清素材确认,video idle | 同步/视频/导图或其他任务忙时拒绝 | retry-image | 重置image queued,沿用任务来源/模型 | manual图不使用这一AI重试入口 | regenerate | 更新prompt,重生成当前来源/模型图 | 新要求非空;Seedream重新认证/同意 | change-source | 使用新来源/模型配置并更新prompt | Android只有Seedream可选AI来源 | use-image | 保存手机图或下载直链,更新image_version | 允许同任务音频仍在处理,拒其他冲突步骤 | select-images | 原图库保留非空子集,新image_version | 有图/视频冲突步骤时拒绝,至少一张 | confirm | 保存当前confirmed_version/digest,video queued并launch | audio/image都ready,无暂停/取消/ACTIVE | worker生命周期会记录开始、完成、失败或取消事件,finally清ACTIVE。异常消息替换当前Key,取消且所有相关步骤结束后清Control Key。没有retry-video独立action;视频失败或中断由confirm重新核对素材后启动。 图片存储、换图和删图都会清确认标识,使video回idle。旧MP4不立即删除,job_view单独查磁盘上保留成片并返回入口;再次成功合成以同名路径replace,属于一任务一个当前输出路径,并非永久多版本归档。 依据:app.py:35–58,163–195,325–366,590–643,667–839、android_runtime.py:181。 --- 招商合作微信:wzqy2019。添加备注:听文合作。 原网页:https://tingwen-creator-studio-102.pages.dev/guide/technical-07