生图任务¶
源码:
src/backend/db/models/task.py、task_status_event.py、prompt_test_run.py返回 总览 字段表格式:字段 | 中文名 | 类型 | 可空 | 作用
C 端生图任务主表 + 1:1 参数表 + 只追加状态审计;Admin Prompt 试跑记录独立落在 prompt_test_runs。任务状态枚举与合法转移见 backend.core.task_status.TaskStatus。
ER¶
erDiagram
users ||--o{ tasks : owns
ai_models ||--o{ tasks : used
tasks ||--o| task_params : params
tasks ||--o{ task_status_events : audits
tasks ||--o{ consumption_records : costs
admin_users ||--o{ prompt_test_runs : runs
ai_models ||--o{ prompt_test_runs : model
tasks — 生图任务¶
用户侧一次生成任务的生命周期记录。状态机字符串存库,不以 DB enum 约束。
| 字段 | 中文名 | 类型 | 可空 | 作用 |
|---|---|---|---|---|
| id | 任务 ID | UUID | NO | 主键 |
| user_id | 用户 ID | UUID | NO | FK→users.id CASCADE;任务归属用户 |
| ai_model_id | AI 模型 ID | UUID | YES | FK→ai_models.id SET NULL;实际选用的物理模型;模型删除后可置空保留任务 |
| task_type | 任务类型 | String(50) | NO | 业务场景类型(如主图、详情、复刻等) |
| status | 任务状态 | String(30) | NO | 默认 pending;取值:pending / running / completed / failed / cancelled(见 TaskStatus) |
| progress | 进度 | SmallInteger | NO | 0–100 进度百分比;默认 0 |
| result_url | 结果地址 | String(500) | YES | 成功时的结果资源 URL |
| error_message | 错误信息 | Text | YES | 失败原因摘要 |
| started_at | 开始时间 | timestamptz | YES | 进入执行态的时刻 |
| completed_at | 完成时间 | timestamptz | YES | 终态(成功/失败/取消)完成时刻 |
| created_at | 创建时间 | timestamptz | NO | 行创建时间 |
| updated_at | 更新时间 | timestamptz | NO | 行最后修改时间 |
| deleted_at | 删除时间 | timestamptz | YES | 软删标记;非空表示已删除 |
task_params — 任务参数(1:1)¶
与 tasks 一对一;存放请求参数与模特生成属性等 JSON 快照。
| 字段 | 中文名 | 类型 | 可空 | 作用 |
|---|---|---|---|---|
| id | 参数行 ID | UUID | NO | 主键 |
| task_id | 任务 ID | UUID | NO | FK→tasks.id CASCADE;唯一,保证与任务 1:1 |
| params_json | 任务参数 | JSONB | YES | 生图请求参数快照(含批量 snapshot 等扩展字段) |
| model_gen_attrs_json | 模特生成属性 | JSONB | YES | 模特生成相关属性选择快照 |
| created_at | 创建时间 | timestamptz | NO | 行创建时间(无 updated_at) |
task_status_events — 状态审计(只追加)¶
任务状态/镜头级事件时间线,供 Admin 回放;只追加不改写历史行。
| 字段 | 中文名 | 类型 | 可空 | 作用 |
|---|---|---|---|---|
| id | 事件 ID | UUID | NO | 主键 |
| task_id | 任务 ID | UUID | NO | FK→tasks.id CASCADE;有索引 |
| job_id | 批量 Job ID | String(64) | YES | 关联 Redis/批量 Job 标识;有索引 |
| item_index | 镜头序号 | Integer | YES | 批量任务中的条目/镜头下标 |
| event_type | 事件类型 | String(32) | NO | 默认 status_change;取值:status_change / item_result / retry / note |
| from_status | 原状态 | String(30) | YES | 状态变更前的状态值 |
| to_status | 新状态 | String(30) | YES | 状态变更后的状态值 |
| reason | 原因 | String(200) | YES | 变更/重试/备注原因摘要 |
| actor | 操作者 | String(80) | YES | 触发方标识(系统、worker、管理员等) |
| payload | 事件载荷 | JSONB | YES | 结构化扩展信息(镜头结果、调试字段等) |
| created_at | 创建时间 | timestamptz | NO | 事件写入时间;审计轴按此排序 |
prompt_test_runs — Admin Prompt 试跑¶
后台 Prompt 测试页的预览 / 生图 / 批量试跑记录,与 C 端 tasks 分离。
| 字段 | 中文名 | 类型 | 可空 | 作用 |
|---|---|---|---|---|
| id | 试跑 ID | UUID | NO | 主键 |
| admin_user_id | 管理员 ID | UUID | YES | FK→admin_users.id SET NULL;发起试跑的管理员;管理员删除后可置空 |
| run_type | 试跑类型 | String(20) | NO | 业务类型字符串;常见:preview / generate / batch_generate |
| task_type | 任务类型 | String(50) | NO | 试跑对应的业务任务类型(与模板/场景对齐) |
| status | 试跑状态 | String(20) | NO | 运行结果状态;常见:success / failed(亦可扩展异步中间态) |
| params_json | 入参快照 | JSONB | NO | 试跑请求参数完整快照 |
| assembled_prompt_json | 组装 Prompt | JSONB | YES | 拼装后的 Prompt/多段结构 |
| result_json | 结果快照 | JSONB | YES | 试跑输出(含批量条目结果等) |
| ai_model_id | AI 模型 ID | UUID | YES | FK→ai_models.id SET NULL;试跑选用的物理模型 |
| error_message | 错误信息 | Text | YES | 失败原因摘要 |
| created_at | 创建时间 | timestamptz | NO | 行创建时间(无 updated_at) |