| """
|
| 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:
|
|
|
| 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()
|
|
|