93 lines
1.6 KiB
TypeScript
93 lines
1.6 KiB
TypeScript
// Core weather data types matching backend models
|
|
|
|
export interface WeatherPoint {
|
|
timestamp: string
|
|
temperature: number
|
|
wind_speed: number
|
|
wind_gust: number
|
|
wind_direction: number
|
|
cloud_cover: number
|
|
precipitation: number
|
|
visibility: number
|
|
pressure: number
|
|
humidity: number
|
|
}
|
|
|
|
export interface Thresholds {
|
|
max_wind_speed: number
|
|
max_wind_gust: number
|
|
max_precipitation: number
|
|
min_visibility: number
|
|
max_cloud_cover: number
|
|
min_temperature?: number
|
|
max_temperature?: number
|
|
}
|
|
|
|
export interface Assessment {
|
|
is_flyable: boolean
|
|
reasons: string[]
|
|
score: number
|
|
}
|
|
|
|
export interface FlyableWindow {
|
|
start: string
|
|
end: string
|
|
duration_hours: number
|
|
avg_conditions: {
|
|
wind_speed: number
|
|
wind_gust: number
|
|
temperature: number
|
|
cloud_cover: number
|
|
}
|
|
}
|
|
|
|
// API Response types
|
|
|
|
export interface CurrentWeatherResponse {
|
|
location: {
|
|
lat: number
|
|
lon: number
|
|
name?: string
|
|
}
|
|
current: WeatherPoint
|
|
assessment: Assessment
|
|
last_updated: string
|
|
}
|
|
|
|
export interface ForecastResponse {
|
|
location: {
|
|
lat: number
|
|
lon: number
|
|
name?: string
|
|
}
|
|
forecast: WeatherPoint[]
|
|
flyable_windows: FlyableWindow[]
|
|
generated_at: string
|
|
}
|
|
|
|
export interface HistoricalResponse {
|
|
location: {
|
|
lat: number
|
|
lon: number
|
|
name?: string
|
|
}
|
|
date: string
|
|
data: WeatherPoint[]
|
|
}
|
|
|
|
export interface AssessmentRequest {
|
|
thresholds: Thresholds
|
|
}
|
|
|
|
export interface AssessmentResponse {
|
|
current: WeatherPoint
|
|
assessment: Assessment
|
|
thresholds_used: Thresholds
|
|
}
|
|
|
|
// Error response type
|
|
export interface APIError {
|
|
error: string
|
|
detail?: string
|
|
}
|