use std::sync::Arc; use erp_core::events::EventBus; use erp_core::health_provider::HealthDataProvider; use sea_orm::DatabaseConnection; use crate::provider::registry::ProviderRegistry; use crate::service::analysis::AnalysisService; use crate::service::cache::CacheService; use crate::service::chat_message::ChatMessageService; use crate::service::chat_session::ChatSessionService; use crate::service::feature_flag_service::FeatureFlagService; use crate::service::insight_service::InsightService; use crate::service::knowledge::KnowledgeService; use crate::service::knowledge_v2::KnowledgeV2Service; use crate::service::prompt::PromptService; use crate::service::quota::QuotaService; use crate::service::risk_service::RiskService; use crate::service::suggestion::SuggestionService; use crate::service::usage::UsageService; #[derive(Clone)] pub struct AiState { pub db: DatabaseConnection, pub event_bus: EventBus, pub analysis: Arc, pub prompt: Arc, pub usage: Arc, pub suggestion: Arc, pub health_provider: Arc, pub provider_registry: Arc, pub quota: Arc, pub cache: Arc, pub risk_service: Arc, pub insight_service: Arc, pub feature_flags: Arc, pub knowledge: Arc, pub knowledge_v2: Arc, pub chat_session: Arc, pub chat_message: Arc, }