""" Main Orchestration Script Author: AI Generated Created: 2025-11-24 Purpose: Run the complete AI pipeline for Audience Segmentation """ import argparse from services.segmentation_service import SegmentationService from services.sentiment_service import SentimentAnalysisService from services.genai_service import GenerativeAIService from database import db def run_segmentation(): """Run audience segmentation pipeline""" service = SegmentationService() segment_ids = service.run_segmentation() return segment_ids def run_sentiment_analysis(): """Run sentiment analysis pipeline""" service = SentimentAnalysisService() service.analyze_unprocessed_comments() def run_email_generation(): """Run email content generation for segments""" service = GenerativeAIService() service.generate_emails_for_all_segments() def run_insight_generation(event_code: str = None): """Run insight generation for events""" service = GenerativeAIService() if event_code: service.generate_insights_for_event(event_code) else: # Get all unique event codes from comments event_codes = db.user_comment_post.distinct("EventCode") for code in event_codes: if code: service.generate_insights_for_event(code) def main(): parser = argparse.ArgumentParser(description='Audience Segmentation AI Pipeline') parser.add_argument( '--task', choices=['segmentation', 'sentiment', 'email', 'insights', 'all'], default='all', help='Which task to run' ) parser.add_argument( '--event-code', type=str, help='Specific event code for insight generation' ) args = parser.parse_args() try: if args.task in ['segmentation', 'all']: run_segmentation() if args.task in ['sentiment', 'all']: run_sentiment_analysis() if args.task in ['email', 'all']: run_email_generation() if args.task in ['insights', 'all']: run_insight_generation(args.event_code) print("\n" + "=" * 60) print("šŸŽ‰ ALL TASKS COMPLETED SUCCESSFULLY!") print("=" * 60) except Exception as e: print(f"\nāŒ Error: {e}") import traceback traceback.print_exc() finally: db.close() if __name__ == "__main__": main()