first (part 3: src directory)
Deploy Iddaai Backend / build-and-deploy (push) Successful in 33s

This commit is contained in:
2026-04-16 15:12:27 +03:00
parent 2f0b85a0c7
commit 182f4aae16
125 changed files with 22552 additions and 0 deletions
@@ -0,0 +1,76 @@
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;
}