feat: init

This commit is contained in:
zhenyi
2026-06-07 11:30:56 +08:00
commit 563381c1ca
361 changed files with 41327 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
use crate::models::json_types::{AiModelCapabilityConfig, TypedJson};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)]
pub struct AiModelCapability {
pub id: Uuid,
pub ai_model_id: Uuid,
pub capability: String,
pub supported: bool,
pub config: Option<TypedJson<AiModelCapabilityConfig>>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
+16
View File
@@ -0,0 +1,16 @@
use crate::models::common::Status;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)]
pub struct AiModelHealth {
pub id: Uuid,
pub ai_model_id: Uuid,
pub status: Status,
pub latency_ms: Option<i32>,
pub error_rate: Option<String>,
pub last_error: Option<String>,
pub checked_at: DateTime<Utc>,
pub created_at: DateTime<Utc>,
}
+19
View File
@@ -0,0 +1,19 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)]
pub struct AiModelVersion {
pub id: Uuid,
pub ai_model_id: Uuid,
pub version: String,
pub provider_model_id: String,
pub context_window: Option<i32>,
pub max_output_tokens: Option<i32>,
pub changelog: Option<String>,
pub stable: bool,
pub deprecated: bool,
pub released_at: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
+30
View File
@@ -0,0 +1,30 @@
use crate::models::common::{AiFeature, AiModelType, Modality, PricingUnit, Provider};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)]
pub struct AiModel {
pub id: Uuid,
pub provider: Provider,
pub model_id: String,
pub name: String,
pub description: Option<String>,
pub model_type: AiModelType,
pub family: Option<String>,
pub version: Option<String>,
pub context_window: Option<i32>,
pub max_output_tokens: Option<i32>,
pub input_modalities: Vec<Modality>,
pub output_modalities: Vec<Modality>,
pub supported_features: Vec<AiFeature>,
pub pricing_unit: Option<PricingUnit>,
pub input_price_per_unit: Option<String>,
pub output_price_per_unit: Option<String>,
pub enabled: bool,
pub deprecated: bool,
pub released_at: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub deleted_at: Option<DateTime<Utc>>,
}
+9
View File
@@ -0,0 +1,9 @@
pub mod ai_model_capabilities;
pub mod ai_model_health;
pub mod ai_model_versions;
pub mod ai_models;
pub use ai_model_capabilities::AiModelCapability;
pub use ai_model_health::AiModelHealth;
pub use ai_model_versions::AiModelVersion;
pub use ai_models::AiModel;