diff --git a/crates/erp-ai/src/handler/suggestion_handler.rs b/crates/erp-ai/src/handler/suggestion_handler.rs index 6200eb8..69bc710 100644 --- a/crates/erp-ai/src/handler/suggestion_handler.rs +++ b/crates/erp-ai/src/handler/suggestion_handler.rs @@ -100,9 +100,9 @@ where { require_permission(&ctx, "ai.suggestion.list")?; - use crate::entity::ai_suggestion; - use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; + use sea_orm::EntityTrait; + use crate::entity::ai_suggestion; let suggestion = ai_suggestion::Entity::find_by_id(id) .one(&state.db) .await diff --git a/crates/erp-ai/src/provider/claude.rs b/crates/erp-ai/src/provider/claude.rs index 8b95707..0d46450 100644 --- a/crates/erp-ai/src/provider/claude.rs +++ b/crates/erp-ai/src/provider/claude.rs @@ -52,6 +52,7 @@ struct ClaudeStreamEvent { #[serde(rename = "type")] event_type: String, delta: Option, + #[allow(dead_code)] // serde 反序列化需要,但流式处理中不读取 message: Option, } @@ -62,12 +63,15 @@ struct ClaudeDelta { #[derive(Deserialize)] struct ClaudeMessageResp { + #[allow(dead_code)] // serde 反序列化需要,暂未使用 usage 信息 usage: Option, } #[derive(Deserialize)] struct ClaudeUsage { + #[allow(dead_code)] // serde 反序列化需要,暂未追踪 token 用量 input_tokens: u32, + #[allow(dead_code)] output_tokens: u32, } diff --git a/crates/erp-ai/src/service/auto_analysis.rs b/crates/erp-ai/src/service/auto_analysis.rs index aa2b37b..2b05009 100644 --- a/crates/erp-ai/src/service/auto_analysis.rs +++ b/crates/erp-ai/src/service/auto_analysis.rs @@ -5,8 +5,8 @@ use std::time::Duration; -use erp_core::health_provider::{HealthDataProvider, TimeRange}; -use sea_orm::{EntityTrait, FromQueryResult, Statement}; +use erp_core::health_provider::TimeRange; +use sea_orm::{FromQueryResult, Statement}; use uuid::Uuid; use crate::dto::AnalysisType; diff --git a/crates/erp-ai/src/service/reanalysis.rs b/crates/erp-ai/src/service/reanalysis.rs index e06e391..2cbac71 100644 --- a/crates/erp-ai/src/service/reanalysis.rs +++ b/crates/erp-ai/src/service/reanalysis.rs @@ -11,6 +11,7 @@ pub async fn handle_reanalysis_requested( #[derive(Debug, FromQueryResult)] struct OriginalSuggestion { baseline_snapshot: Option, + #[allow(dead_code)] // FromQueryResult 映射需要,当前未读取 params: Option, risk_level: Option, } diff --git a/crates/erp-health/src/event.rs b/crates/erp-health/src/event.rs index 89e1b44..6a865a6 100644 --- a/crates/erp-health/src/event.rs +++ b/crates/erp-health/src/event.rs @@ -325,15 +325,7 @@ pub fn register_handlers_with_state(state: crate::state::HealthState) { .and_then(|s| uuid::Uuid::parse_str(s).ok()); if let Some(patient_id) = patient_id { - // 通过 raw SQL 查找关联的 AI 建议(action_result 中包含 followup_task_id) - let sql = r#" - SELECT id FROM ai_suggestion - WHERE tenant_id = $1 - AND deleted_at IS NULL - AND status = 'executed' - AND action_result @> $2 - LIMIT 1 - "#; + // 通过 ai_suggestion_loader 查找关联的 AI 建议 if let Some(suggestion_id) = crate::service::ai_suggestion_loader::find_by_followup_task( &fu_db, event.tenant_id, task_id, ).await.unwrap_or(None) { diff --git a/crates/erp-health/src/service/action_inbox_service.rs b/crates/erp-health/src/service/action_inbox_service.rs index fb3c89f..f03e0a3 100644 --- a/crates/erp-health/src/service/action_inbox_service.rs +++ b/crates/erp-health/src/service/action_inbox_service.rs @@ -105,6 +105,7 @@ struct ActionItemRow { patient_id: Uuid, patient_name: String, result_content: Option, + #[allow(dead_code)] // FromQueryResult 映射需要,当前 DTO 转换中未读取 source_id: Option, } @@ -116,6 +117,7 @@ struct CountRow { #[derive(Debug, FromQueryResult)] struct ActionDetail { id: Uuid, + #[allow(dead_code)] // FromQueryResult 映射需要,当前 DTO 转换中未读取 action_type: String, priority_raw: String, status: String, @@ -124,6 +126,7 @@ struct ActionDetail { reanalysis_id: Option, created_at: DateTime, updated_at: DateTime, + #[allow(dead_code)] // FromQueryResult 映射需要,当前 DTO 转换中未读取 source_id: Option, patient_id: Uuid, patient_name: String, diff --git a/crates/erp-health/src/service/medication_reminder_service.rs b/crates/erp-health/src/service/medication_reminder_service.rs index 633e50a..8a0be2d 100644 --- a/crates/erp-health/src/service/medication_reminder_service.rs +++ b/crates/erp-health/src/service/medication_reminder_service.rs @@ -1,5 +1,4 @@ use chrono::Utc; -use sea_orm::entity::prelude::*; use sea_orm::{ActiveModelTrait, ActiveValue::Set, ColumnTrait, EntityTrait, PaginatorTrait, QueryFilter, QueryOrder, QuerySelect}; use uuid::Uuid; diff --git a/crates/erp-health/src/service/stats_service.rs b/crates/erp-health/src/service/stats_service.rs index 1193c6d..6cd630c 100644 --- a/crates/erp-health/src/service/stats_service.rs +++ b/crates/erp-health/src/service/stats_service.rs @@ -1,4 +1,4 @@ -use sea_orm::{ColumnTrait, ConnectionTrait, EntityTrait, PaginatorTrait, QueryFilter, sea_query::Expr, FromQueryResult, Statement}; +use sea_orm::{ColumnTrait, ConnectionTrait, EntityTrait, PaginatorTrait, QueryFilter, sea_query::Expr, FromQueryResult}; use erp_core::error::AppResult; @@ -7,7 +7,6 @@ use crate::entity::{ patient, consultation_session, follow_up_task, points_transaction, lab_report, appointment, vital_signs, patient_doctor_relation, doctor_profile, - article, }; use crate::state::HealthState; @@ -463,6 +462,7 @@ async fn compute_daily_report_rate( struct DailyRow { date: String, reported: i64, + #[allow(dead_code)] // FromQueryResult 映射需要 total 字段,当前未读取 total: i64, } @@ -902,7 +902,7 @@ pub async fn get_points_recent_activity( /// 模块状态 pub async fn get_module_status( - state: &HealthState, + _state: &HealthState, ) -> AppResult> { let modules = vec![ ModuleStatusResp { diff --git a/crates/erp-plugin/src/data_service.rs b/crates/erp-plugin/src/data_service.rs index adc59ec..7570db0 100644 --- a/crates/erp-plugin/src/data_service.rs +++ b/crates/erp-plugin/src/data_service.rs @@ -459,6 +459,7 @@ impl PluginDataService { rel_table, fk ); #[derive(FromQueryResult)] + #[allow(dead_code)] // FromQueryResult 映射需要 chk 字段,仅检查是否存在 struct RefCheck { chk: Option } let has_ref = RefCheck::find_by_statement(Statement::from_sql_and_values( sea_orm::DatabaseBackend::Postgres, @@ -771,6 +772,7 @@ impl PluginDataService { rel_table, fk ); #[derive(FromQueryResult)] + #[allow(dead_code)] // FromQueryResult 映射需要 chk 字段,仅检查是否存在 struct RefCheck { chk: Option } let has_ref = RefCheck::find_by_statement(Statement::from_sql_and_values( sea_orm::DatabaseBackend::Postgres, @@ -1168,6 +1170,7 @@ impl PluginDataService { let col = sanitize_identifier(&field.name); #[derive(FromQueryResult)] + #[allow(dead_code)] // FromQueryResult 映射需要 id 字段,通过 is_some 检查 struct RefRow { id: Uuid, // 动态列 — SeaORM 无法直接映射,用 JSON 构建 @@ -1530,6 +1533,7 @@ async fn validate_ref_entities( ref_table ); #[derive(FromQueryResult)] + #[allow(dead_code)] // FromQueryResult 映射需要 check_result 字段,仅检查是否存在 struct ExistsCheck { check_result: Option } let result = ExistsCheck::find_by_statement(Statement::from_sql_and_values( sea_orm::DatabaseBackend::Postgres, diff --git a/crates/erp-plugin/src/host.rs b/crates/erp-plugin/src/host.rs index 9e58761..fb07143 100644 --- a/crates/erp-plugin/src/host.rs +++ b/crates/erp-plugin/src/host.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use sea_orm::{ConnectionTrait, DatabaseConnection}; +use sea_orm::DatabaseConnection; use uuid::Uuid; use wasmtime::StoreLimits; diff --git a/crates/erp-server/src/handlers/analytics.rs b/crates/erp-server/src/handlers/analytics.rs index 3750b13..2f77ca7 100644 --- a/crates/erp-server/src/handlers/analytics.rs +++ b/crates/erp-server/src/handlers/analytics.rs @@ -8,6 +8,7 @@ use erp_core::types::ApiResponse; pub struct AnalyticsEvent { pub event: String, pub properties: Option, + #[allow(dead_code)] // 客户端上报字段,后续接入分析表时会使用 pub timestamp: Option, pub page: Option, }