cr
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { ApiProperty } from "@nestjs/swagger";
|
||||
|
||||
export type SignalTier =
|
||||
| 'CORE'
|
||||
| 'VALUE'
|
||||
| 'LEAN'
|
||||
| 'LONGSHOT'
|
||||
| 'PASS';
|
||||
export type SignalTier = "CORE" | "VALUE" | "LEAN" | "LONGSHOT" | "PASS";
|
||||
|
||||
export class MatchInfoDto {
|
||||
@ApiProperty()
|
||||
@@ -34,14 +29,14 @@ export class MatchInfoDto {
|
||||
|
||||
@ApiProperty({
|
||||
required: false,
|
||||
enum: ['football', 'basketball'],
|
||||
enum: ["football", "basketball"],
|
||||
})
|
||||
sport?: 'football' | 'basketball';
|
||||
sport?: "football" | "basketball";
|
||||
}
|
||||
|
||||
export class DataQualityDto {
|
||||
@ApiProperty({ enum: ['HIGH', 'MEDIUM', 'LOW'] })
|
||||
label: 'HIGH' | 'MEDIUM' | 'LOW';
|
||||
@ApiProperty({ enum: ["HIGH", "MEDIUM", "LOW"] })
|
||||
label: "HIGH" | "MEDIUM" | "LOW";
|
||||
|
||||
@ApiProperty()
|
||||
score: number;
|
||||
@@ -52,7 +47,7 @@ export class DataQualityDto {
|
||||
@ApiProperty()
|
||||
away_lineup_count: number;
|
||||
|
||||
@ApiProperty({ required: false, default: 'none' })
|
||||
@ApiProperty({ required: false, default: "none" })
|
||||
lineup_source?: string;
|
||||
|
||||
@ApiProperty({ type: [String] })
|
||||
@@ -69,16 +64,16 @@ export class ConfidenceIntervalDto {
|
||||
@ApiProperty()
|
||||
width: number;
|
||||
|
||||
@ApiProperty({ enum: ['HIGH', 'MEDIUM', 'LOW'] })
|
||||
band: 'HIGH' | 'MEDIUM' | 'LOW';
|
||||
@ApiProperty({ enum: ["HIGH", "MEDIUM", "LOW"] })
|
||||
band: "HIGH" | "MEDIUM" | "LOW";
|
||||
|
||||
@ApiProperty()
|
||||
threshold_met: boolean;
|
||||
}
|
||||
|
||||
export class RiskDto {
|
||||
@ApiProperty({ enum: ['LOW', 'MEDIUM', 'HIGH', 'EXTREME'] })
|
||||
level: 'LOW' | 'MEDIUM' | 'HIGH' | 'EXTREME';
|
||||
@ApiProperty({ enum: ["LOW", "MEDIUM", "HIGH", "EXTREME"] })
|
||||
level: "LOW" | "MEDIUM" | "HIGH" | "EXTREME";
|
||||
|
||||
@ApiProperty()
|
||||
score: number;
|
||||
@@ -156,8 +151,8 @@ export class MatchPickDto {
|
||||
@ApiProperty()
|
||||
playable: boolean;
|
||||
|
||||
@ApiProperty({ enum: ['A', 'B', 'C', 'PASS'] })
|
||||
bet_grade: 'A' | 'B' | 'C' | 'PASS';
|
||||
@ApiProperty({ enum: ["A", "B", "C", "PASS"] })
|
||||
bet_grade: "A" | "B" | "C" | "PASS";
|
||||
|
||||
@ApiProperty()
|
||||
stake_units: number;
|
||||
@@ -170,7 +165,7 @@ export class MatchPickDto {
|
||||
|
||||
@ApiProperty({
|
||||
required: false,
|
||||
enum: ['CORE', 'VALUE', 'LEAN', 'LONGSHOT', 'PASS'],
|
||||
enum: ["CORE", "VALUE", "LEAN", "LONGSHOT", "PASS"],
|
||||
})
|
||||
signal_tier?: SignalTier;
|
||||
}
|
||||
@@ -185,15 +180,15 @@ export class MatchBetAdviceDto {
|
||||
@ApiProperty()
|
||||
reason: string;
|
||||
|
||||
@ApiProperty({ required: false, enum: ['HIGH', 'MEDIUM', 'LOW'] })
|
||||
confidence_band?: 'HIGH' | 'MEDIUM' | 'LOW';
|
||||
@ApiProperty({ required: false, enum: ["HIGH", "MEDIUM", "LOW"] })
|
||||
confidence_band?: "HIGH" | "MEDIUM" | "LOW";
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
min_confidence_for_play?: number;
|
||||
|
||||
@ApiProperty({
|
||||
required: false,
|
||||
enum: ['CORE', 'VALUE', 'LEAN', 'LONGSHOT', 'PASS'],
|
||||
enum: ["CORE", "VALUE", "LEAN", "LONGSHOT", "PASS"],
|
||||
})
|
||||
signal_tier?: SignalTier;
|
||||
}
|
||||
@@ -211,8 +206,8 @@ export class MatchBetSummaryItemDto {
|
||||
@ApiProperty()
|
||||
calibrated_confidence: number;
|
||||
|
||||
@ApiProperty({ enum: ['A', 'B', 'C', 'PASS'] })
|
||||
bet_grade: 'A' | 'B' | 'C' | 'PASS';
|
||||
@ApiProperty({ enum: ["A", "B", "C", "PASS"] })
|
||||
bet_grade: "A" | "B" | "C" | "PASS";
|
||||
|
||||
@ApiProperty()
|
||||
playable: boolean;
|
||||
@@ -240,30 +235,30 @@ export class MatchBetSummaryItemDto {
|
||||
|
||||
@ApiProperty({
|
||||
required: false,
|
||||
enum: ['CORE', 'VALUE', 'LEAN', 'LONGSHOT', 'PASS'],
|
||||
enum: ["CORE", "VALUE", "LEAN", "LONGSHOT", "PASS"],
|
||||
})
|
||||
signal_tier?: SignalTier;
|
||||
}
|
||||
|
||||
export class HtFtPredictionDto {
|
||||
@ApiProperty()
|
||||
'1/1': number;
|
||||
"1/1": number;
|
||||
@ApiProperty()
|
||||
'1/X': number;
|
||||
"1/X": number;
|
||||
@ApiProperty()
|
||||
'1/2': number;
|
||||
"1/2": number;
|
||||
@ApiProperty()
|
||||
'X/1': number;
|
||||
"X/1": number;
|
||||
@ApiProperty()
|
||||
'X/X': number;
|
||||
"X/X": number;
|
||||
@ApiProperty()
|
||||
'X/2': number;
|
||||
"X/2": number;
|
||||
@ApiProperty()
|
||||
'2/1': number;
|
||||
"2/1": number;
|
||||
@ApiProperty()
|
||||
'2/X': number;
|
||||
"2/X": number;
|
||||
@ApiProperty()
|
||||
'2/2': number;
|
||||
"2/2": number;
|
||||
@ApiProperty()
|
||||
pick: string;
|
||||
@ApiProperty()
|
||||
@@ -310,8 +305,8 @@ export class AggressivePickDto {
|
||||
@ApiProperty()
|
||||
playable: boolean;
|
||||
|
||||
@ApiProperty({ enum: ['A', 'B', 'C', 'PASS'] })
|
||||
bet_grade: 'A' | 'B' | 'C' | 'PASS';
|
||||
@ApiProperty({ enum: ["A", "B", "C", "PASS"] })
|
||||
bet_grade: "A" | "B" | "C" | "PASS";
|
||||
|
||||
@ApiProperty()
|
||||
stake_units: number;
|
||||
@@ -468,4 +463,4 @@ export class AIHealthDto {
|
||||
predictionServiceReady: boolean;
|
||||
}
|
||||
|
||||
export * from './smart-coupon.dto';
|
||||
export * from "./smart-coupon.dto";
|
||||
|
||||
@@ -8,28 +8,28 @@ import {
|
||||
ArrayMaxSize,
|
||||
Min,
|
||||
Max,
|
||||
} from 'class-validator';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
} from "class-validator";
|
||||
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
|
||||
|
||||
export class GeneratePredictionDto {
|
||||
@ApiProperty({ description: 'Match ID to generate prediction for' })
|
||||
@ApiProperty({ description: "Match ID to generate prediction for" })
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
matchId: string;
|
||||
}
|
||||
|
||||
export enum CouponStrategy {
|
||||
SAFE = 'SAFE',
|
||||
BALANCED = 'BALANCED',
|
||||
AGGRESSIVE = 'AGGRESSIVE',
|
||||
VALUE = 'VALUE',
|
||||
MIRACLE = 'MIRACLE',
|
||||
SAFE = "SAFE",
|
||||
BALANCED = "BALANCED",
|
||||
AGGRESSIVE = "AGGRESSIVE",
|
||||
VALUE = "VALUE",
|
||||
MIRACLE = "MIRACLE",
|
||||
}
|
||||
|
||||
export class SmartCouponRequestDto {
|
||||
@ApiProperty({
|
||||
description: 'List of match IDs for coupon',
|
||||
example: ['match-1', 'match-2'],
|
||||
description: "List of match IDs for coupon",
|
||||
example: ["match-1", "match-2"],
|
||||
})
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
@@ -44,7 +44,7 @@ export class SmartCouponRequestDto {
|
||||
@IsEnum(CouponStrategy)
|
||||
strategy?: CouponStrategy;
|
||||
|
||||
@ApiPropertyOptional({ description: 'Maximum matches in coupon', example: 5 })
|
||||
@ApiPropertyOptional({ description: "Maximum matches in coupon", example: 5 })
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
@Min(1)
|
||||
@@ -52,7 +52,7 @@ export class SmartCouponRequestDto {
|
||||
maxMatches?: number;
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'Minimum confidence threshold (0-100)',
|
||||
description: "Minimum confidence threshold (0-100)",
|
||||
example: 60,
|
||||
})
|
||||
@IsOptional()
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
*/
|
||||
|
||||
export type CouponStrategy =
|
||||
| 'SAFE'
|
||||
| 'BALANCED'
|
||||
| 'AGGRESSIVE'
|
||||
| 'VALUE'
|
||||
| 'MIRACLE';
|
||||
| "SAFE"
|
||||
| "BALANCED"
|
||||
| "AGGRESSIVE"
|
||||
| "VALUE"
|
||||
| "MIRACLE";
|
||||
|
||||
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'EXTREME';
|
||||
export type DataQualityLabel = 'HIGH' | 'MEDIUM' | 'LOW';
|
||||
export type RiskLevel = "LOW" | "MEDIUM" | "HIGH" | "EXTREME";
|
||||
export type DataQualityLabel = "HIGH" | "MEDIUM" | "LOW";
|
||||
|
||||
export interface SmartCouponRequestDto {
|
||||
match_ids: string[];
|
||||
|
||||
Reference in New Issue
Block a user