Aus_F / main.py
minhvtt's picture
Upload 7 files
d97be90 verified
Raw
History Blame Contribute Delete
2.55 kB
"""
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()