"""
SMART_JOURNAL
Generated by Eden via recursive self-improvement
2025-10-28 06:49:12.744781
"""

from vader_sentiment.vaderSentiment import SentimentIntensityAnalyzer

class SmartJournal:
    def __init__(self):
        self.entries = []
        self.sentiment_analyzer = SentimentIntensityAnalyzer()

    def add_entry(self, date, text):
        """Add a new journal entry with date and text."""
        self.entries.append({'date': date, 'text': text})

    def analyze_sentiment(self):
        """Calculate the average sentiment score of all entries."""
        total_score = 0.0
        count = len(self.entries)
        if count == 0:
            return 0.0
        for entry in self.entries:
            scores = self.sentiment_analyzer.polarity_scores(entry['text'])
            total_score += scores['compound']
        return total_score / count

    def categorize_sentiment(self):
        """Categorize entries as positive, neutral, or negative."""
        categories = {'positive': [], 'negative': [], 'neutral': []}
        for entry in self.entries:
            scores = self.sentiment_analyzer.polarity_scores(entry['text'])
            compound_score = scores['compound']
            if compound_score > 0.2:
                categories['positive'].append(entry)
            elif compound_score < -0.2:
                categories['negative'].append(entry)
            else:
                categories['neutral'].append(entry)
        return categories

    def get_entries_by_date(self, date):
        """Retrieve all entries from a specific date."""
        return [entry for entry in self.entries if entry['date'] == date]

# Example usage:
journal = SmartJournal()
journal.add_entry("2023-10-05", "Today was a great day! I achieved my goals.")
journal.add_entry("2023-10-06", "Feeling a bit stressed with work.")

print(journal.analyze_sentiment())  # Average sentiment score
print(journal.categorize_sentiment())  # Categorized entries
print(journal.get_entries_by_date("2023-10-05"))  # Retrieve by date