feat: implement scan terminal dashboard system and supporting services
This commit is contained in:
@@ -640,27 +640,6 @@ export interface ScanOpportunityRow {
|
||||
ai_confidence?: string | null;
|
||||
ai_reason_zh?: string | null;
|
||||
ai_reason_en?: string | null;
|
||||
ai_model_cluster_note?: string | null;
|
||||
ai_city_thesis_zh?: string | null;
|
||||
ai_city_thesis_en?: string | null;
|
||||
ai_city_confidence?: string | null;
|
||||
ai_city_model_cluster_note?: string | null;
|
||||
ai_predicted_max?: number | null;
|
||||
ai_predicted_low?: number | null;
|
||||
ai_predicted_high?: number | null;
|
||||
ai_forecast_unit?: string | null;
|
||||
ai_forecast_confidence?: string | null;
|
||||
ai_peak_window_zh?: string | null;
|
||||
ai_peak_window_en?: string | null;
|
||||
ai_airport_metar_read_zh?: string | null;
|
||||
ai_airport_metar_read_en?: string | null;
|
||||
ai_forecast_reason_zh?: string | null;
|
||||
ai_forecast_reason_en?: string | null;
|
||||
ai_forecast_match?: "core" | "edge" | "outside" | "watch" | string | null;
|
||||
ai_forecast_match_reason_zh?: string | null;
|
||||
ai_forecast_match_reason_en?: string | null;
|
||||
ai_watchlist_reason_zh?: string | null;
|
||||
ai_watchlist_reason_en?: string | null;
|
||||
v4_metar_decision?: "approve" | "veto" | "downgrade" | "watchlist" | string | null;
|
||||
v4_metar_reason_zh?: string | null;
|
||||
v4_metar_reason_en?: string | null;
|
||||
@@ -668,47 +647,6 @@ export interface ScanOpportunityRow {
|
||||
|
||||
export interface PrimarySignal extends ScanOpportunityRow {}
|
||||
|
||||
export interface ScanAiWatchlistItem {
|
||||
row_id: string;
|
||||
reason?: string | null;
|
||||
reason_zh?: string | null;
|
||||
reason_en?: string | null;
|
||||
}
|
||||
|
||||
export interface ScanAiReview {
|
||||
status?: "ready" | "disabled" | "missing_key" | "failed" | "no_rows" | "no_snapshot" | "snapshot_mismatch" | string;
|
||||
stage?: "completed" | "fallback" | string | null;
|
||||
model?: string | null;
|
||||
cached?: boolean;
|
||||
generated_at?: string | null;
|
||||
snapshot_id?: string | null;
|
||||
input_rows?: number | null;
|
||||
sent_rows?: number | null;
|
||||
sent_cities?: number | null;
|
||||
sent_contracts?: number | null;
|
||||
duration_ms?: number | null;
|
||||
timeout_sec?: number | null;
|
||||
cache_ttl_sec?: number | null;
|
||||
provider?: string | null;
|
||||
base_url?: string | null;
|
||||
finish_reason?: string | null;
|
||||
usage?: {
|
||||
prompt_tokens?: number | null;
|
||||
completion_tokens?: number | null;
|
||||
total_tokens?: number | null;
|
||||
prompt_cache_hit_tokens?: number | null;
|
||||
prompt_cache_miss_tokens?: number | null;
|
||||
} | null;
|
||||
reason?: string | null;
|
||||
summary_zh?: string | null;
|
||||
summary_en?: string | null;
|
||||
watchlist?: ScanAiWatchlistItem[] | null;
|
||||
recommended_count?: number | null;
|
||||
vetoed_count?: number | null;
|
||||
downgraded_count?: number | null;
|
||||
watchlist_count?: number | null;
|
||||
}
|
||||
|
||||
export interface ScanTerminalResponse {
|
||||
generated_at: string;
|
||||
snapshot_id?: string | null;
|
||||
@@ -733,7 +671,6 @@ export interface ScanTerminalResponse {
|
||||
};
|
||||
top_signal?: PrimarySignal | null;
|
||||
rows: ScanOpportunityRow[];
|
||||
ai_scan?: ScanAiReview | null;
|
||||
}
|
||||
|
||||
export interface IntradayMeteorologySignal {
|
||||
|
||||
+10
-10
@@ -96,12 +96,12 @@ const MESSAGES: Record<Locale, Record<string, string>> = {
|
||||
"future.judgement": "判断",
|
||||
"future.confidence": "置信度",
|
||||
"future.maxPrecip": "最大降水概率",
|
||||
"future.ai": "机场报文解读",
|
||||
"future.noAi": "暂无机场报文解读,当前以结构化气象与模型数据为主。",
|
||||
"future.ai": "结构化实况",
|
||||
"future.noAi": "暂无结构化实况,当前以模型数据为主。",
|
||||
"future.weatherGov": "weather.gov 文本",
|
||||
"future.risk": "结算与偏差风险",
|
||||
"future.climate": "当地气候主要受什么影响",
|
||||
"future.chartLegendEmpty": "暂无机场报文或小时级实测数据",
|
||||
"future.chartLegendEmpty": "暂无小时级实测数据",
|
||||
|
||||
"confidence.high": "高",
|
||||
"confidence.medium": "中",
|
||||
@@ -114,8 +114,8 @@ const MESSAGES: Record<Locale, Record<string, string>> = {
|
||||
"section.noProb": "暂无概率数据",
|
||||
"section.models": "多模型预报",
|
||||
"section.noModels": "暂无多模型预报",
|
||||
"section.ai": "机场报文解读",
|
||||
"section.aiEmpty": "暂无机场报文解读,当前以结构化气象与模型数据为主。",
|
||||
"section.ai": "结构化实况",
|
||||
"section.aiEmpty": "暂无结构化实况,当前以模型数据为主。",
|
||||
"section.risk": "数据偏差风险",
|
||||
"section.noRiskProfile": "暂无风险档案",
|
||||
"section.airport": "机场",
|
||||
@@ -278,14 +278,14 @@ const MESSAGES: Record<Locale, Record<string, string>> = {
|
||||
"future.judgement": "Judgement",
|
||||
"future.confidence": "Confidence",
|
||||
"future.maxPrecip": "Max Precip Probability",
|
||||
"future.ai": "Airport METAR Narrative",
|
||||
"future.ai": "Structured Observations",
|
||||
"future.noAi":
|
||||
"No airport bulletin narrative is available. Structured meteorological and model data are used as baseline.",
|
||||
"No structured observations are available. Model data is used as baseline.",
|
||||
"future.weatherGov": "weather.gov text",
|
||||
"future.risk": "Settlement & Deviation Risk",
|
||||
"future.climate": "What Mainly Drives Local Climate",
|
||||
"future.chartLegendEmpty":
|
||||
"No METAR bulletin or hourly observations available",
|
||||
"No hourly observations available",
|
||||
|
||||
"confidence.high": "High",
|
||||
"confidence.medium": "Medium",
|
||||
@@ -298,9 +298,9 @@ const MESSAGES: Record<Locale, Record<string, string>> = {
|
||||
"section.noProb": "No probability data available",
|
||||
"section.models": "Multi-model Forecast",
|
||||
"section.noModels": "No multi-model forecast available",
|
||||
"section.ai": "Airport METAR Narrative",
|
||||
"section.ai": "Structured Observations",
|
||||
"section.aiEmpty":
|
||||
"No airport bulletin narrative is available. Structured meteorological data are currently used.",
|
||||
"No structured observations are available. Model data is currently used.",
|
||||
"section.risk": "Data Deviation Risk",
|
||||
"section.noRiskProfile": "No risk profile available",
|
||||
"section.airport": "Airport",
|
||||
|
||||
Reference in New Issue
Block a user