Spiritual_Health_Project / examples /enhanced_config_demo.py
DocUA's picture
feat: Fix classification logic and remove redundant spiritual care message functionality
be1b5d2
#!/usr/bin/env python3
"""
Enhanced Configuration System Demo.
Demonstrates the configuration system for UI classification improvements
including feature toggles, styling options, and configuration management.
Requirements: 7.1, 7.2, 7.3
"""
import sys
import os
# Add src to path for imports
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
src_dir = os.path.join(parent_dir, 'src')
if src_dir not in sys.path:
sys.path.insert(0, src_dir)
from config.enhanced_display_config import (
EnhancedDisplayConfig,
EnhancedDisplayConfigManager,
get_enhanced_display_config,
create_high_contrast_config,
create_minimal_config,
create_mobile_optimized_config
)
from interface.enhanced_results_display_manager import EnhancedResultsDisplayManager
from core.provider_summary_generator import ProviderSummary
def demo_basic_configuration():
"""Demonstrate basic configuration usage."""
print("πŸ”§ Enhanced Display Configuration Demo")
print("=" * 50)
# Create default configuration
config = EnhancedDisplayConfig()
print(f"βœ… Default configuration created")
print(f" - Enhanced mode enabled: {config.enabled}")
print(f" - Color coding enabled: {config.use_color_coding}")
print(f" - Icons enabled: {config.use_icons}")
print(f" - Visual separators enabled: {config.use_visual_separators}")
print()
# Show classification colors
print("🎨 Classification Colors:")
print(f" - Red: {config.classification_colors.red}")
print(f" - Yellow: {config.classification_colors.yellow}")
print(f" - Green: {config.classification_colors.green}")
print()
# Show section icons
print("🎭 Section Icons:")
print(f" - AI Analysis: {config.ai_analysis.icon}")
print(f" - Patient Message: {config.patient_message.icon}")
print(f" - Provider Summary: {config.provider_summary.icon}")
print()
def demo_configuration_manager():
"""Demonstrate configuration manager functionality."""
print("πŸ“ Configuration Manager Demo")
print("=" * 50)
# Create configuration manager
config_manager = EnhancedDisplayConfigManager()
print(f"βœ… Configuration manager created")
# Load configuration
config = config_manager.load_config()
print(f"βœ… Configuration loaded")
print(f" - Config file: {config_manager.config_file}")
print()
# Update configuration
print("πŸ”„ Updating configuration...")
success = config_manager.update_config(
use_icons=False,
use_color_coding=True
)
print(f" - Update successful: {success}")
# Reload and verify
updated_config = config_manager.load_config()
print(f" - Icons enabled: {updated_config.use_icons}")
print(f" - Color coding enabled: {updated_config.use_color_coding}")
print()
# Enable/disable features
print("πŸŽ›οΈ Feature toggles...")
config_manager.enable_feature('icons')
config_manager.disable_feature('animations')
final_config = config_manager.load_config()
print(f" - Icons enabled: {final_config.use_icons}")
print(f" - Animations enabled: {final_config.enable_animations}")
print()
def demo_preset_configurations():
"""Demonstrate preset configuration options."""
print("🎨 Preset Configurations Demo")
print("=" * 50)
# High contrast configuration
high_contrast = create_high_contrast_config()
print("β™Ώ High Contrast Configuration:")
print(f" - High contrast mode: {high_contrast.high_contrast_mode}")
print(f" - Red color: {high_contrast.classification_colors.red}")
print(f" - AI border color: {high_contrast.ai_analysis.border_color}")
print()
# Minimal configuration
minimal = create_minimal_config()
print("πŸ”² Minimal Configuration:")
print(f" - Icons enabled: {minimal.use_icons}")
print(f" - Visual separators: {minimal.use_visual_separators}")
print(f" - Animations enabled: {minimal.enable_animations}")
print()
# Mobile optimized configuration
mobile = create_mobile_optimized_config()
print("πŸ“± Mobile Optimized Configuration:")
print(f" - Responsive breakpoint: {mobile.responsive_breakpoint}")
print(f" - AI padding: {mobile.ai_analysis.padding}")
print(f" - Animations enabled: {mobile.enable_animations}")
print()
def demo_css_generation():
"""Demonstrate CSS generation capabilities."""
print("🎨 CSS Generation Demo")
print("=" * 50)
config = EnhancedDisplayConfig()
# Generate CSS variables
css_vars = config.generate_css_variables()
print("πŸ“ CSS Variables (first 10 lines):")
lines = css_vars.split('\n')[:10]
for line in lines:
print(f" {line}")
print(" ...")
print()
# Generate base CSS
base_css = config.generate_base_css()
print(f"πŸ“ Base CSS generated: {len(base_css)} characters")
print()
def demo_display_manager_integration():
"""Demonstrate integration with display manager."""
print("πŸ”— Display Manager Integration Demo")
print("=" * 50)
# Create configuration manager
config_manager = EnhancedDisplayConfigManager()
# Create display manager with configuration
display_manager = EnhancedResultsDisplayManager(config_manager=config_manager)
print(f"βœ… Display manager created with config manager")
print(f" - Enhanced mode enabled: {display_manager.is_enhanced_mode_enabled()}")
print()
# Test with different configurations
print("πŸŽ›οΈ Testing with different configurations...")
# Test with enhanced mode disabled
config_manager.update_config(enabled=False)
display_manager.reload_config()
print(f" - Enhanced mode after disable: {display_manager.is_enhanced_mode_enabled()}")
# Test with enhanced mode re-enabled
config_manager.update_config(enabled=True)
display_manager.reload_config()
print(f" - Enhanced mode after enable: {display_manager.is_enhanced_mode_enabled()}")
print()
# Test formatting with different configurations
print("🎨 Testing formatting with different styles...")
# Format AI analysis with default config
ai_html = display_manager.format_ai_analysis_section(
classification="RED",
indicators=["Loss of meaning", "Spiritual distress"],
reasoning="Patient expressing existential concerns and loss of purpose."
)
print(f" - AI analysis HTML length: {len(ai_html)} characters")
# Disable icons and test again
config_manager.update_config(use_icons=False)
display_manager.reload_config()
ai_html_no_icons = display_manager.format_ai_analysis_section(
classification="RED",
indicators=["Loss of meaning", "Spiritual distress"],
reasoning="Patient expressing existential concerns and loss of purpose."
)
print(f" - AI analysis HTML (no icons): {len(ai_html_no_icons)} characters")
print()
def demo_configuration_validation():
"""Demonstrate configuration validation."""
print("βœ… Configuration Validation Demo")
print("=" * 50)
config_manager = EnhancedDisplayConfigManager()
# Validate current configuration
issues = config_manager.validate_config()
print(f"πŸ“‹ Validation results: {len(issues)} issues found")
if issues:
for issue in issues:
print(f" ⚠️ {issue}")
else:
print(" βœ… Configuration is valid")
print()
# Test with invalid configuration
print("πŸ”§ Testing with invalid color...")
# Create a new config manager for this test to avoid corrupting the main one
test_config_manager = EnhancedDisplayConfigManager()
# Manually create invalid config for testing
test_config = test_config_manager.load_config()
# Directly modify the color to an invalid format
test_config.classification_colors.red = 'invalid-color'
test_config_manager._config = test_config
issues = test_config_manager.validate_config()
print(f"πŸ“‹ Validation after invalid color: {len(issues)} issues found")
for issue in issues:
print(f" ⚠️ {issue}")
print()
# Reset to defaults
config_manager.reset_to_defaults()
print("πŸ”„ Configuration reset to defaults")
def main():
"""Run all configuration demos."""
print("πŸš€ Enhanced Display Configuration System Demo")
print("=" * 60)
print()
try:
demo_basic_configuration()
demo_configuration_manager()
demo_preset_configurations()
demo_css_generation()
demo_display_manager_integration()
demo_configuration_validation()
print("βœ… All configuration demos completed successfully!")
except Exception as e:
print(f"❌ Demo failed with error: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()