diff --git a/desktop/src-tauri/src/classroom_commands/generate.rs b/desktop/src-tauri/src/classroom_commands/generate.rs index 3f38d0b..d77f9ca 100644 --- a/desktop/src-tauri/src/classroom_commands/generate.rs +++ b/desktop/src-tauri/src/classroom_commands/generate.rs @@ -129,12 +129,12 @@ pub async fn classroom_generate( } // Get LLM driver from kernel if available, otherwise use placeholder mode - let pipeline = { + let (pipeline, has_driver) = { let ks = kernel_state.lock().await; if let Some(kernel) = ks.as_ref() { - GenerationPipeline::with_driver(kernel.driver(), kernel.config().model().to_string()) + (GenerationPipeline::with_driver(kernel.driver(), kernel.config().model().to_string()), true) } else { - GenerationPipeline::new() + (GenerationPipeline::new(), false) } }; @@ -211,7 +211,7 @@ pub async fn classroom_generate( source_document: kernel_request.document.map(|_| "user_document".to_string()), model: None, version: "2.0.0".to_string(), - is_placeholder: false, // P2-10: Tauri layer always has a driver + is_placeholder: !has_driver, // P2-10: true when no LLM driver available custom: serde_json::Map::new(), }, }; diff --git a/desktop/src/types/classroom.ts b/desktop/src/types/classroom.ts index 850910d..99be858 100644 --- a/desktop/src/types/classroom.ts +++ b/desktop/src/types/classroom.ts @@ -109,6 +109,8 @@ export interface ClassroomMetadata { sourceDocument?: string; model?: string; version: string; + /** P2-10: marks content generated by placeholder fallback when LLM fails */ + is_placeholder?: boolean; custom: Record; }