# ui/format.py from string import Template class ResultFormatter: @staticmethod def format_entity_list(entities, entity_type): items = entities.get(entity_type, []) if not items: return '
  • None detected
  • ' return ''.join(f'
  • {item}
  • ' for item in items) @staticmethod def format_entity_relationships(relationships): if not relationships: return '' items = [] for rel in relationships: # Use correct SQL column names item = f"""
  • {rel['source_text']}{rel['relationship_type'].replace('_to_', ' to ')}{rel['target_text']}
    Confidence: {int(rel['confidence'] * 100)}%
  • """ items.append(item) return ''.join(items) @staticmethod def format_related_events(events): if not events: return '' items = [] for event in events: shared = f" | Shared Entities: {event['shared_entities']}" if event.get('shared_entities') else '' item = f"""
  • {event['text']}
    {event['timestamp']} | Confidence: {int(event['confidence'] * 100)}%{shared}
  • """ items.append(item) return ''.join(items) @staticmethod def format_results(analysis_result): if "error" in analysis_result: return f"
    Error: {analysis_result['error']}
    " # Load template with open('templates/results.html', 'r') as f: template = Template(f.read()) # Prepare template variables confidence = analysis_result['confidence'] confidence_class = "confidence-high" if confidence >= 0.6 else "confidence-low" return template.substitute( confidence_class=confidence_class, confidence_score=int(confidence * 100), verification_warning=ResultFormatter._verification_warning(analysis_result), people_list=ResultFormatter.format_entity_list(analysis_result['entities'], 'people'), org_list=ResultFormatter.format_entity_list(analysis_result['entities'], 'organizations'), location_list=ResultFormatter.format_entity_list(analysis_result['entities'], 'locations'), temporal_list=ResultFormatter.format_entity_list(analysis_result['entities'], 'temporal'), hashtag_list=ResultFormatter.format_entity_list(analysis_result['entities'], 'hashtags'), entity_relationships=ResultFormatter.format_entity_relationships(analysis_result.get('entity_relationships')), validation_success=ResultFormatter._validation_success(analysis_result), related_events=ResultFormatter.format_related_events(analysis_result.get('related_events')), base_confidence=int(confidence * 70), entity_boost=int((confidence - 0.7 if confidence > 0.7 else 0) * 100), types_detected=len([t for t in ['people', 'organizations', 'locations', 'temporal', 'hashtags'] if analysis_result['entities'].get(t)]), total_entities=sum(len(e) for e in analysis_result['entities'].values() if isinstance(e, list)), direct_relationships=len(analysis_result.get('entity_relationships', [])), related_event_count=len(analysis_result.get('related_events', [])) ) @staticmethod def _verification_warning(result): if not result["verification_needed"]: return '' return '''
    Verification Required: Low confidence score detected. Please verify the extracted information.
    ''' @staticmethod def _validation_success(result): if result["verification_needed"]: return '' return '''
    Event Validated: The extracted information meets confidence thresholds.
    '''