#!/usr/bin/env python3 """ Validation script for the enhanced topic feature implementation. Checks that all files and components are properly implemented. """ import os import sys import json def check_file_exists(filepath, description): """Check if a file exists.""" if os.path.exists(filepath): print(f"✅ {description}: {filepath}") return True else: print(f"❌ {description}: {filepath} (NOT FOUND)") return False def check_file_content(filepath, search_strings, description): """Check if file contains required content.""" if not os.path.exists(filepath): print(f"❌ {description}: File not found") return False try: with open(filepath, 'r', encoding='utf-8') as f: content = f.read() missing = [] for search in search_strings: if search not in content: missing.append(search) if missing: print(f"❌ {description}: Missing content: {missing}") return False else: print(f"✅ {description}: All required content found") return True except Exception as e: print(f"❌ {description}: Error reading file: {e}") return False def main(): """Validate the complete implementation.""" print("🔍 Validating Enhanced Topic Feature Implementation") print("=" * 60) backend_root = "c:\\Users\\diksha rawat\\Desktop\\ALwrity_github\\windsurf\\ALwrity\\backend" frontend_root = "c:\\Users\\diksha rawat\\Desktop\\ALwrity_github\\windsurf\\ALwrity\\frontend\\src\\components\\PodcastMaker" checks_passed = 0 total_checks = 0 # Backend Checks print("\n📋 BACKEND VALIDATION") print("-" * 30) # Check models.py total_checks += 1 if check_file_content( f"{backend_root}\\api\\podcast\\models.py", ["enhanced_ideas: List[str]", "rationales: List[str]"], "Backend Response Model" ): checks_passed += 1 # Check analysis.py handler total_checks += 1 if check_file_content( f"{backend_root}\\api\\podcast\\handlers\\analysis.py", ["Professional & Expert-led angle", "Storytelling & Human interest angle", "Trendy & Contemporary angle"], "Backend Enhancement Prompt" ): checks_passed += 1 # Check response handling total_checks += 1 if check_file_content( f"{backend_root}\\api\\podcast\\handlers\\analysis.py", ["enhanced_ideas[:3]", "rationales[:3]"], "Backend Response Handling" ): checks_passed += 1 # Frontend Checks print("\n📋 FRONTEND VALIDATION") print("-" * 30) # Check modal component total_checks += 1 if check_file_exists( f"{frontend_root}\\EnhancedTopicChoicesModal.tsx", "Enhanced Topic Choices Modal Component" ): checks_passed += 1 # Check modal content total_checks += 1 if check_file_content( f"{frontend_root}\\EnhancedTopicChoicesModal.tsx", ["CHOICE_LABELS", "handleChoiceEdit", "handleSelectChoice"], "Modal Component Logic" ): checks_passed += 1 # Check CreateModal state total_checks += 1 if check_file_content( f"{frontend_root}\\CreateModal.tsx", ["enhancedChoices", "enhancedRationales", "choicesModalOpen", "editedChoices"], "CreateModal State Management" ): checks_passed += 1 # Check CreateModal handlers total_checks += 1 if check_file_content( f"{frontend_root}\\CreateModal.tsx", ["handleChoiceSelection", "result.enhanced_ideas", "setChoicesModalOpen(true)"], "CreateModal Event Handlers" ): checks_passed += 1 # Check API service update total_checks += 1 if check_file_content( f"{frontend_root}\\..\\..\\services\\podcastApi.ts", ["enhanced_ideas: string[]", "rationales: string[]"], "Frontend API Service Update" ): checks_passed += 1 # Check modal import and usage total_checks += 1 if check_file_content( f"{frontend_root}\\CreateModal.tsx", ["import { EnhancedTopicChoicesModal }", "