Files
iddaai-be/src/modules/coupons/dto/coupons-request.dto.ts
T
2026-04-16 17:21:48 +03:00

77 lines
1.5 KiB
TypeScript

import {
IsArray,
IsString,
IsOptional,
IsNotEmpty,
IsNumber,
IsEnum,
ArrayMaxSize,
Min,
Max,
} from "class-validator";
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
export enum CouponStrategyEnum {
SAFE = "SAFE",
BALANCED = "BALANCED",
AGGRESSIVE = "AGGRESSIVE",
VALUE = "VALUE",
MIRACLE = "MIRACLE",
}
export class AnalyzeMatchDto {
@ApiProperty({ description: "Match ID to analyze" })
@IsString()
@IsNotEmpty()
matchId: string;
}
export class DailyBankoDto {
@ApiPropertyOptional({
description: "Optional match IDs — system fetches if empty",
example: ["match-1", "match-2"],
})
@IsOptional()
@IsArray()
@IsString({ each: true })
@ArrayMaxSize(50)
matchIds?: string[];
}
export class SuggestCouponDto {
@ApiPropertyOptional({
description: "Match IDs — system fetches if empty",
example: ["match-1", "match-2"],
})
@IsOptional()
@IsArray()
@IsString({ each: true })
@ArrayMaxSize(50)
matchIds?: string[];
@ApiPropertyOptional({
enum: CouponStrategyEnum,
default: CouponStrategyEnum.BALANCED,
})
@IsOptional()
@IsEnum(CouponStrategyEnum)
strategy?: CouponStrategyEnum;
@ApiPropertyOptional({ description: "Maximum matches in coupon", example: 5 })
@IsOptional()
@IsNumber()
@Min(1)
@Max(20)
maxMatches?: number;
@ApiPropertyOptional({
description: "Minimum confidence threshold (0-100)",
example: 60,
})
@IsOptional()
@IsNumber()
@Min(0)
@Max(100)
minConfidence?: number;
}