use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnalysisRequest {
pub file_path: String,
pub analysis_type: AnalysisType,
pub options: Option<AnalysisOptions>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnalysisResult {
pub file_path: String,
pub summary: Option<String>,
pub tags: Vec<String>,
pub language: Option<String>,
pub confidence: f32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AnalysisType {
Summary,
TagExtraction,
LanguageDetection,
Complete,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnalysisOptions {
pub max_summary_length: Option<usize>,
pub max_tags: Option<usize>,
pub include_confidence: bool,
}
impl Default for AnalysisOptions {
fn default() -> Self {
Self {
max_summary_length: Some(200),
max_tags: Some(10),
include_confidence: true,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatRequest {
pub message: String,
pub context: Option<String>,
pub max_response_length: Option<usize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatResponse {
pub response: String,
pub confidence: f32,
pub tokens_used: Option<u32>,
}