fix(desktop): DeerFlow UI — ChatArea refactor + ai-elements + dead CSS cleanup
ChatArea retry button uses setInput instead of direct sendToGateway, fix bootstrap spinner stuck for non-logged-in users, remove dead CSS (aurora-title/sidebar-open/quick-action-chips), add ai components (ReasoningBlock/StreamingText/ChatMode/ModelSelector/TaskProgress), add ClassroomPlayer + ResizableChatLayout + artifact panel Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
use sqlx::PgPool;
|
||||
use crate::error::SaasResult;
|
||||
use crate::models::{TelemetryModelStatsRow, TelemetryDailyStatsRow};
|
||||
use crate::models::{TelemetryModelStatsRow, TelemetryDailyStatsRow, TelemetryReportRow};
|
||||
use super::types::*;
|
||||
|
||||
const CHUNK_SIZE: usize = 100;
|
||||
@@ -270,3 +270,27 @@ pub async fn get_daily_stats(
|
||||
|
||||
Ok(stats)
|
||||
}
|
||||
|
||||
/// 查询账号最近的遥测报告
|
||||
pub async fn get_recent_reports(
|
||||
db: &PgPool,
|
||||
account_id: &str,
|
||||
limit: i64,
|
||||
) -> SaasResult<Vec<TelemetryReportRow>> {
|
||||
let limit = limit.min(100).max(1);
|
||||
let rows = sqlx::query_as::<_, TelemetryReportRow>(
|
||||
"SELECT id, account_id, device_id, app_version, model_id, \
|
||||
input_tokens, output_tokens, latency_ms, success, \
|
||||
error_type, connection_mode, \
|
||||
reported_at::text, created_at::text \
|
||||
FROM telemetry_reports \
|
||||
WHERE account_id = $1 \
|
||||
ORDER BY reported_at DESC \
|
||||
LIMIT $2"
|
||||
)
|
||||
.bind(account_id)
|
||||
.bind(limit)
|
||||
.fetch_all(db)
|
||||
.await?;
|
||||
Ok(rows)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user