Files
smart_grid_iot/server/src/dto/job.dto.ts
T
andyesfly 22d27a940d feat: 重构勘察业务为明细模式并新增定时任务人性化配置
- 重构勘察业务:移除SOP相关表,新增勘察明细表支持建筑/楼层/房间/照片管理
- 新增定时任务人性化频率配置,支持分钟/小时/天/周/月/自定义六种模式
- 新增频率预览接口,支持配置转换为cron表达式与执行时间预览
- 更新系统品牌名称为鑫潼智电,修改全局标题与登录页文案
2026-10-17 10:08:42 +08:00

81 lines
1.7 KiB
TypeScript

import { IsNotEmpty, IsOptional, IsString, IsInt, IsObject, Min, Max, MaxLength } from "class-validator";
/** 频率配置:字段按 freqType 取用,由 util/cron_schedule 统一校验与翻译 */
export class UpdateJobDTO {
@IsString()
@IsNotEmpty({ message: "频率类型不能为空" })
@MaxLength(16, { message: "频率类型非法" })
freqType!: string;
@IsOptional()
@IsObject()
freqConfig?: Record<string, any>;
@IsOptional()
@IsObject()
params?: Record<string, any>;
@IsInt()
@Min(0, { message: "重试次数不能小于 0" })
@Max(5, { message: "重试次数不能超过 5" })
retryTimes!: number;
@IsInt()
@Min(10, { message: "重试间隔不能小于 10 秒" })
@Max(3600, { message: "重试间隔不能超过 3600 秒" })
retryInterval!: number;
@IsOptional()
@IsString()
@MaxLength(255, { message: "备注最大 255 字符" })
remark?: string;
}
/** 频率预览入参:只传频率配置,cron 与下次执行时间由后端计算 */
export class CronPreviewDTO {
@IsString()
@IsNotEmpty({ message: "频率类型不能为空" })
@MaxLength(16, { message: "频率类型非法" })
freqType!: string;
@IsOptional()
@IsObject()
freqConfig?: Record<string, any>;
}
export class JobStatusDTO {
@IsInt()
@Min(0, { message: "状态值非法" })
@Max(1, { message: "状态值非法" })
status!: number;
}
export class JobLogQueryDTO {
@IsOptional()
@IsInt()
@Min(1)
page?: number = 1;
@IsOptional()
@IsInt()
@Min(1)
@Max(200, { message: "分页大小不能超过 200 条" })
pageSize?: number = 10;
@IsOptional()
@IsInt()
status?: number;
@IsOptional()
@IsInt()
triggerType?: number;
@IsOptional()
@IsString()
startDate?: string;
@IsOptional()
@IsString()
endDate?: string;
}