任务表,存储作品生产的任务信息,合并了原队列表和生产表的功能。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 内部主键 |
| task_id | VARCHAR(36) | 任务ID(字符串格式,可空) |
| work_id | VARCHAR(32) | 作品ID(关联作品表) |
| status | ENUM | 任务状态(QUEUING/PRODUCING/COMPLETED/FAILED) |
| is_deleted | INTEGER | 软删除标记(0-未删除,1-已删除) |
| created_at | BIGINT | 创建时间(毫秒时间戳) |
| updated_at | BIGINT | 更新时间(毫秒时间戳) |
| 枚举值 | 说明 |
|---|---|
| QUEUING | 排队中 |
| PRODUCING | 生产中 |
| COMPLETED | 已完成 |
| FAILED | 已失败 |
| 索引名 | 字段 | 说明 |
|---|---|---|
| idx_task_id | task_id | 唯一索引,加速按任务ID查询 |
| idx_work_id | work_id | 加速按作品ID查询 |
| idx_status | status | 加速按任务状态查询 |
| idx_deleted_status | is_deleted, status | 加速按删除状态和状态的复合查询 |
| 接口 | 方法 | 说明 | 权限 |
|---|---|---|---|
| /task/create | POST | 创建任务 | 管理员 |
| /task/list | POST | 查询任务列表 | 管理员 |
| /task/detail | POST | 查询任务详情 | 管理员 |
| /task/update | POST | 更新任务 | 管理员 |
| /task/delete | POST | 删除任务 | 管理员 |
| /task/public/list | POST | 公开查询待处理任务列表 | 公开 |
| /task/public/detail | POST | 公开查询任务详情 | 公开 |
| /task/upload | POST | 上传作品文件 | 公开 |
请求:
{
"work_id": "20260426123456789ABC1234",
"status": "QUEUING"
}响应:
{
"state": 200,
"message": "任务创建成功",
"data": {
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "QUEUING",
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
}
}请求:
{
"work_id": "20260426123456789ABC1234",
"status": "QUEUING",
"page": 1,
"page_size": 10
}响应:
{
"state": 200,
"message": "查询成功",
"data": {
"list": [...],
"total": 1,
"page": 1,
"page_size": 10,
"pages": 1
}
}请求:
{
"id": 1
}响应:
{
"state": 200,
"message": "查询成功",
"data": {
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "QUEUING",
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
}
}请求:
{
"id": 1,
"status": "PRODUCING"
}响应:
{
"state": 200,
"message": "任务更新成功",
"data": {
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "PRODUCING",
"created_at": 1745568000000,
"updated_at": 1745568001000,
"is_deleted": 0
}
}请求:
{
"work_id": "20260426123456789ABC1234",
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "PRODUCING"
}响应:
{
"state": 200,
"message": "任务更新成功",
"data": {
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "PRODUCING",
"created_at": 1745568000000,
"updated_at": 1745568001000,
"is_deleted": 0
}
}请求:
{
"id": 1
}响应:
{
"state": 200,
"message": "任务删除成功"
}请求:
{
"status": "QUEUING" // 可选,不提供则查询所有状态
}响应:
{
"state": 200,
"message": "查询成功",
"data": {
"list": [
{
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "QUEUING",
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
}
]
}
}请求:
{
"work_id": "20260426123456789ABC1234"
}响应:
{
"state": 200,
"message": "查询成功",
"data": {
"task": {
"id": 1,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"work_id": "20260426123456789ABC1234",
"status": "QUEUING",
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
},
"work": {
"id": 1,
"work_id": "20260426123456789ABC1234",
"user_uuid": "123e4567-e89b-12d3-a456-426614174000",
"points_consumed": 10.0,
"models": [1, 2],
"content": "生成一只猫的图片",
"extra_info": "",
"creation_type": "IMAGE",
"time_tag": "20260426",
"result_info": [],
"tags": [],
"status": "QUEUING",
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
},
"models": [
{
"id": 1,
"model_name": "SDXL-Turbo",
"model_type": "TEXT_TO_IMAGE",
"config_info": {...},
"workflow": "text_to_image_workflow",
"points": 10.0,
"created_at": 1745568000000,
"updated_at": 1745568000000,
"is_deleted": 0
}
]
}
}请求:(form-data格式)
- work_id: 作品ID
- task_id: 任务ID
- file: 文件
响应:
{
"state": 200,
"message": "文件上传成功",
"data": {
"file_path": "uploads/productions/20260426123456789ABC1234/550e8400-e29b-41d4-a716-446655440000_1234567890abcdef.png",
"file_url": "/uploads/productions/20260426123456789ABC1234/550e8400-e29b-41d4-a716-446655440000_1234567890abcdef.png",
"original_filename": "cat.png",
"file_size": 1024000
}
}