This commit is contained in:
2026-04-23 22:23:35 +03:00
parent 4896323e04
commit 9e04ca5627
13 changed files with 1286 additions and 114 deletions
+2 -1
View File
@@ -10,6 +10,7 @@ import type {
TeamSearchParams,
HeadToHeadParams,
TeamMatchesParams,
PaginatedMatchesResponse,
} from "./types";
/**
@@ -59,7 +60,7 @@ const getTeamById = (id: string) => {
};
const getTeamMatches = (id: string, params?: TeamMatchesParams) => {
return apiRequest<ApiResponse<MatchResponseDto[]>>({
return apiRequest<PaginatedMatchesResponse>({
url: `/leagues/teams/${id}/matches`,
client: "core",
method: "get",
+9
View File
@@ -21,9 +21,18 @@ export interface HeadToHeadParams {
}
export interface TeamMatchesParams {
page?: number;
limit?: number;
}
export interface PaginatedMatchesResponse {
data: import("@/lib/api/matches/types").MatchResponseDto[];
total: number;
page: number;
limit: number;
totalPages: number;
}
// ========================
// Response DTOs
// ========================
+88
View File
@@ -141,6 +141,93 @@ export interface MarketBoardEntryDto {
[key: string]: unknown;
}
// ========================
// V28 Odds-Band Engine DTOs
// ========================
export interface OddsBandEntryDto {
win_rate?: number;
draw_rate?: number;
lose_rate?: number;
over_rate?: number;
under_rate?: number;
yes_rate?: number;
no_rate?: number;
odd_rate?: number;
even_rate?: number;
"1x_rate"?: number;
"x2_rate"?: number;
"12_rate"?: number;
"1x_sample"?: number;
"x2_sample"?: number;
"12_sample"?: number;
sample: number;
[key: string]: unknown;
}
export interface OddsBandCardsDto {
referee_avg: number;
referee_over_rate: number;
referee_sample: number;
team_avg: number;
team_over_rate: number;
team_sample: number;
combined_over_rate: number;
sample: number;
}
export interface OddsBandHtftComboDto {
rate: number;
sample: number;
}
export interface TripleValueEntryDto {
v27_prob?: number;
band_rate: number;
implied_prob: number;
combined_prob?: number;
edge: number;
band_sample: number;
confirmations?: number;
is_value: boolean;
}
export type HtftComboKey =
| "11" | "1x" | "12"
| "x1" | "xx" | "x2"
| "21" | "2x" | "22";
export interface V27EngineDto {
version: string;
approach?: string;
consensus?: "AGREE" | "DISAGREE";
predictions?: Record<string, Record<string, number>>;
divergence?: Record<string, Record<string, number>>;
value_edge?: Record<string, Record<string, unknown>>;
odds_band?: {
ms_home?: OddsBandEntryDto;
ms_away?: OddsBandEntryDto;
ou25?: OddsBandEntryDto;
ou15?: OddsBandEntryDto;
ou35?: OddsBandEntryDto;
btts?: OddsBandEntryDto;
dc?: OddsBandEntryDto;
ht_home?: OddsBandEntryDto;
ht_away?: OddsBandEntryDto;
ht_ou05?: OddsBandEntryDto;
ht_ou15?: OddsBandEntryDto;
oe?: OddsBandEntryDto;
cards?: OddsBandCardsDto;
htft?: Record<HtftComboKey, OddsBandHtftComboDto>;
[key: string]: unknown;
};
triple_value?: Record<string, TripleValueEntryDto>;
}
// ========================
// Main Prediction DTOs
// ========================
export interface MatchPredictionDto {
model_version: string;
match_info: MatchInfoDto;
@@ -157,6 +244,7 @@ export interface MatchPredictionDto {
market_board: Record<string, MarketBoardEntryDto>;
reasoning_factors: string[];
ai_commentary?: string | null;
v27_engine?: V27EngineDto;
}
export interface ValueBetDto {