Skip to content

Commit db9980d

Browse files
michael-borckclaude
andcommitted
Implement enhanced structure and content alignment validation (sub-tasks 6.2-6.4)
## Enhanced Structure Validator (6.3) - Comprehensive pedagogical pattern validation with educational flow analysis - Content-type specific structure requirements and section validation - Advanced section detection with quality scoring and pedagogical purpose identification - Configurable validation thresholds and auto-fix capabilities for missing sections - Learning objectives validation with Bloom's taxonomy alignment ## Content Alignment Validator (6.4) - Cross-content consistency validation between slides, worksheets, quizzes, and guides - Learning objective alignment analysis with coverage scoring - Topic extraction and consistency checking across related materials - Terminology standardization with variant detection (plurals, verb forms) - Difficulty progression validation and assessment alignment - Session-based content repository for multi-content validation ## Readability Validator Enhancements (6.2) - Configurable age-specific and complexity-level thresholds - Multiple readability metrics (Flesch Reading Ease, Flesch-Kincaid Grade Level) - Educational content optimization with content-type specific configurations - Enhanced syllable counting and sentence pattern analysis 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 7d90a31 commit db9980d

File tree

4 files changed

+2186
-72
lines changed

4 files changed

+2186
-72
lines changed

src-tauri/src/export/markdown.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,15 @@ impl MarkdownConverter {
6868

6969
// Split content into slides (assuming slides are separated by slide markers)
7070
let slides: Vec<&str> = content.split("---SLIDE---").collect();
71+
let mut slide_count = 0;
7172

72-
for (i, slide) in slides.iter().enumerate() {
73+
for slide in slides.iter() {
7374
if slide.trim().is_empty() {
7475
continue;
7576
}
7677

77-
formatted.push_str(&format!("### Slide {}\n\n", i + 1));
78+
slide_count += 1;
79+
formatted.push_str(&format!("### Slide {}\n\n", slide_count));
7880
formatted.push_str(&slide.trim());
7981
formatted.push_str("\n\n");
8082

@@ -334,8 +336,7 @@ impl FormatConverter for MarkdownConverter {
334336
#[cfg(test)]
335337
mod tests {
336338
use super::*;
337-
use crate::content::{ContentType, ContentMetadata};
338-
use std::path::PathBuf;
339+
use crate::content::{ContentType, generator::ContentMetadata};
339340

340341
fn create_test_content() -> GeneratedContent {
341342
GeneratedContent {

0 commit comments

Comments
 (0)