bw-mini-app-server/src/entities/template-execution.entity.ts

146 lines
5.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
Index,
} from 'typeorm';
import { N8nTemplateEntity } from './n8n-template.entity';
import { PlatformType } from './platform-user.entity';
/**
* 模板执行状态枚举
* 定义AI内容生成任务的生命周期状态
*/
export enum ExecutionStatus {
PENDING = 'pending', // 待处理 - 任务已提交,等待执行
PROCESSING = 'processing', // 处理中 - 任务正在执行AI模型生成中
COMPLETED = 'completed', // 已完成 - 任务成功完成,内容已生成
FAILED = 'failed', // 执行失败 - 任务执行出错,生成失败
CANCELLED = 'cancelled', // 已取消 - 用户主动取消或系统超时取消
}
/**
* 执行类型枚举
* 定义模板执行的内容输出类型
*/
export enum ExecutionType {
IMAGE = 'image', // 图片生成 - 输出图片内容
VIDEO = 'video', // 视频生成 - 输出视频内容
}
/**
* 模板执行记录实体类
* 记录用户使用AI模板生成内容的完整执行过程
* 包含执行状态、性能指标、积分消耗和结果数据
* 支持图片和视频两种类型的AI生成任务追踪
*/
@Entity('template_executions')
@Index(['templateId']) // 模板ID索引 - 快速查询特定模板的执行记录
@Index(['userId']) // 用户ID索引 - 快速查询用户的执行历史
@Index(['platform']) // 平台索引 - 按平台筛选执行记录
@Index(['status']) // 状态索引 - 快速筛选不同状态的任务
@Index(['type']) // 类型索引 - 按执行类型(图片/视频)筛选
@Index(['creditTransactionId']) // 积分交易ID索引 - 关联积分消费记录
export class TemplateExecutionEntity {
/** 主键 - 模板执行记录的唯一标识符 */
@PrimaryGeneratedColumn()
id: number;
/** 模板ID - 关联的N8N模板ID标识使用的模板配置 */
@Column({ name: 'template_id' })
templateId: number;
/** 用户ID - 发起执行任务的用户标识 */
@Column({ name: 'user_id' })
userId: string;
/** 执行平台 - 任务发起的平台来源 */
@Column({ type: 'enum', enum: PlatformType, enumName: 'PlatformType', })
platform: PlatformType;
/** 执行类型 - 标识生成内容的类型(图片或视频) */
@Column({ type: 'enum', enum: ExecutionType })
type: ExecutionType;
/** 用户提示词 - 用户输入的内容生成描述作为AI模型的输入 */
@Column({ type: 'text' })
prompt: string;
/** 输入图片URL - 作为参考或处理基础的输入图片地址(可选) */
@Column({ name: 'input_image_url', length: 500, nullable: true })
inputImageUrl: string;
/** 输出内容URL - 生成完成后的图片或视频文件地址 */
@Column({ name: 'output_url', length: 500, nullable: true })
outputUrl: string;
/** 缩略图URL - 生成内容的预览缩略图地址,用于快速预览 */
@Column({ name: 'thumbnail_url', length: 500, nullable: true })
thumbnailUrl: string;
/** 执行状态 - 当前任务的处理状态 */
@Column({
type: 'enum',
enum: ExecutionStatus,
default: ExecutionStatus.PENDING,
})
status: ExecutionStatus;
/** 执行进度 - 任务完成百分比(0-100),用于显示进度条 */
@Column({ default: 0 })
progress: number;
/** 错误信息 - 任务失败时的详细错误描述 */
@Column({ name: 'error_message', type: 'text', nullable: true })
errorMessage: string;
/** 执行结果 - AI模型返回的完整结果数据包含生成参数和元信息 */
@Column({ name: 'execution_result', type: 'json', nullable: true })
executionResult: any;
/** 积分消耗 - 本次执行实际消耗的用户积分数量 */
@Column({ name: 'credit_cost', default: 0 })
creditCost: number;
/** 积分交易ID - 关联的积分消费记录ID用于财务对账和退款处理 */
@Column({ name: 'credit_transaction_id', length: 100, nullable: true })
creditTransactionId: string;
/** 输入参数 - 用户提供的完整输入参数,包含提示词、样式、尺寸等配置 */
@Column({ name: 'input_params', type: 'json', nullable: true })
inputParams: any;
/** 执行配置 - 模板执行的技术配置,包含模型参数、生成选项等 */
@Column({ name: 'execution_config', type: 'json', nullable: true })
executionConfig: any;
/** 开始执行时间 - 任务实际开始处理的时间戳 */
@Column({ name: 'started_at', nullable: true })
startedAt: Date;
/** 完成时间 - 任务执行完成(成功或失败)的时间戳 */
@Column({ name: 'completed_at', nullable: true })
completedAt: Date;
/** 执行时长 - 任务的实际处理时间(毫秒),用于性能分析和优化 */
@Column({ name: 'execution_duration', nullable: true })
executionDuration: number;
/** 创建时间 - 执行记录的创建时间戳 */
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
/** 更新时间 - 记录最后修改时间,用于状态变更追踪 */
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
/** 模板关系 - 与N8N模板实体的多对一关系 */
@ManyToOne(() => N8nTemplateEntity)
@JoinColumn({ name: 'template_id' })
template: N8nTemplateEntity;
}