feat: implement comprehensive Polymarket weather analysis service with frontend dashboard and market scanning capabilities

This commit is contained in:
2569718930@qq.com
2026-04-23 20:45:32 +08:00
parent 4f57d4ed1a
commit 54b326ff42
12 changed files with 323 additions and 154 deletions
+5
View File
@@ -303,6 +303,7 @@ export const dashboardClient = {
cityName: string,
options?: {
force?: boolean;
lite?: boolean;
marketSlug?: string | null;
targetDate?: string | null;
},
@@ -318,9 +319,13 @@ export const dashboardClient = {
if (options?.marketSlug) {
params.set("market_slug", options.marketSlug);
}
if (options?.lite) {
params.set("lite", "true");
}
const requestKey = [
cityName,
force ? "force" : "cached",
options?.lite ? "lite" : "full",
options?.targetDate || "",
options?.marketSlug || "",
].join("::");
+11
View File
@@ -369,23 +369,34 @@ export interface MarketScan {
temperature_bucket?: ProbabilityBucket | null;
model_probability?: number | null;
market_price?: number | null;
midpoint?: number | null;
spread?: number | null;
edge_percent?: number | null;
signal_label?: string | null;
confidence?: string | null;
probability_engine?: string | null;
probability_calibration_mode?: string | null;
yes_token?: MarketToken | null;
no_token?: MarketToken | null;
yes_buy?: number | null;
yes_sell?: number | null;
yes_midpoint?: number | null;
yes_spread?: number | null;
no_buy?: number | null;
no_sell?: number | null;
no_midpoint?: number | null;
no_spread?: number | null;
last_trade_price?: number | null;
liquidity?: number | null;
volume?: number | null;
quote_source?: string | null;
quote_age_ms?: number | null;
price_analysis?: MarketPriceAnalysis | null;
sparkline?: number[];
top_buckets?: MarketTopBucket[] | null;
all_buckets?: MarketTopBucket[] | null;
recent_trades?: unknown[];
scan_scope?: "lite" | "full" | string | null;
websocket?: Record<string, unknown>;
}
+11
View File
@@ -283,18 +283,28 @@ export interface MarketScan {
temperature_bucket: any | null;
model_probability: number | null;
market_price: number | null;
midpoint?: number | null;
spread?: number | null;
edge_percent: number | null;
signal_label: "BUY YES" | "BUY NO" | "MONITOR";
confidence: "low" | "medium" | "high";
probability_engine?: string | null;
probability_calibration_mode?: string | null;
yes_token: MarketToken | null;
no_token: MarketToken | null;
yes_buy: number | null;
yes_sell: number | null;
yes_midpoint?: number | null;
yes_spread?: number | null;
no_buy: number | null;
no_sell: number | null;
no_midpoint?: number | null;
no_spread?: number | null;
last_trade_price: number | null;
liquidity: number | null;
volume: number | null;
quote_source?: string | null;
quote_age_ms?: number | null;
sparkline: number[];
top_buckets?: Array<{
label?: string | null;
@@ -311,6 +321,7 @@ export interface MarketScan {
is_primary?: boolean;
}>;
recent_trades: Trade[];
scan_scope?: "lite" | "full" | string | null;
websocket: any;
}