#!/bin/bash
# cc-learn-stage.sh - LEARN stage of Self-Separating Pipeline
# Auto-analyzes what worked/failed and creates Lessons Learned entry
#
# Usage: ./cc-learn-stage.sh "Task Name" "What Worked" "What Failed" "What Took Too Long"

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/config.env"

LESSONS_LEARNED_DB="01d0b783-d5bf-426a-9c3f-09612708a3bc"
PATTERN_FILE="$SCRIPT_DIR/.pattern_counts"

TASK_NAME="${1:-Unknown Task}"
WHAT_WORKED="${2:-}"
WHAT_FAILED="${3:-}"
WHAT_SLOW="${4:-}"

TODAY=$(date +"%Y-%m-%d")

echo "======================================"
echo "  LEARN STAGE - Auto Analysis"
echo "======================================"
echo ""
echo "Task: $TASK_NAME"
echo ""

# Initialize pattern file if not exists
touch "$PATTERN_FILE"

# Function to increment pattern count
increment_pattern() {
    local pattern="$1"
    local category="$2"
    local count=$(grep "^$category:$pattern:" "$PATTERN_FILE" 2>/dev/null | cut -d: -f3 || echo "0")
    count=$((count + 1))
    grep -v "^$category:$pattern:" "$PATTERN_FILE" > "$PATTERN_FILE.tmp" 2>/dev/null || true
    echo "$category:$pattern:$count" >> "$PATTERN_FILE.tmp"
    mv "$PATTERN_FILE.tmp" "$PATTERN_FILE"
    echo "$count"
}

# Function to check if pattern repeated 3+ times
check_threshold() {
    local pattern="$1"
    local category="$2"
    local count=$(grep "^$category:$pattern:" "$PATTERN_FILE" 2>/dev/null | cut -d: -f3 || echo "0")
    if [ "$count" -ge 3 ]; then
        echo "true"
    else
        echo "false"
    fi
}

# Build lesson content
LESSON_CONTENT="=== TASK: $TASK_NAME ===
Date: $TODAY

"

# Process What Worked
if [ -n "$WHAT_WORKED" ]; then
    LESSON_CONTENT+="✅ WHAT WORKED (Do More):
$WHAT_WORKED

"
    # Extract keywords and track patterns
    echo "Tracking 'Do More' patterns..."
    # Simple keyword extraction
    for word in $(echo "$WHAT_WORKED" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alpha:]' '\n' | sort -u | head -5); do
        if [ ${#word} -gt 4 ]; then
            count=$(increment_pattern "$word" "DO_MORE")
            threshold=$(check_threshold "$word" "DO_MORE")
            if [ "$threshold" = "true" ]; then
                echo "  ⚡ Pattern '$word' repeated 3+ times - consider adding to LESSONS.md"
            fi
        fi
    done
fi

# Process What Failed
if [ -n "$WHAT_FAILED" ]; then
    LESSON_CONTENT+="❌ WHAT FAILED (Avoid):
$WHAT_FAILED

"
    echo "Tracking 'Avoid' patterns..."
    for word in $(echo "$WHAT_FAILED" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alpha:]' '\n' | sort -u | head -5); do
        if [ ${#word} -gt 4 ]; then
            count=$(increment_pattern "$word" "AVOID")
            threshold=$(check_threshold "$word" "AVOID")
            if [ "$threshold" = "true" ]; then
                echo "  ⚠️  Pattern '$word' repeated 3+ times - add to LESSONS.md as gotcha!"
            fi
        fi
    done
fi

# Process What Took Too Long
if [ -n "$WHAT_SLOW" ]; then
    LESSON_CONTENT+="🔄 WHAT TOOK TOO LONG (Improve):
$WHAT_SLOW

"
    echo "Tracking 'Improve' patterns..."
    for word in $(echo "$WHAT_SLOW" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alpha:]' '\n' | sort -u | head -5); do
        if [ ${#word} -gt 4 ]; then
            count=$(increment_pattern "$word" "IMPROVE")
            threshold=$(check_threshold "$word" "IMPROVE")
            if [ "$threshold" = "true" ]; then
                echo "  🔧 Pattern '$word' repeated 3+ times - needs process improvement"
            fi
        fi
    done
fi

# Determine category based on content
CATEGORY="Process"
if echo "$TASK_NAME $WHAT_FAILED" | grep -qi "bug\|error\|fix"; then
    CATEGORY="Bug Pattern"
elif echo "$TASK_NAME" | grep -qi "code\|script\|api"; then
    CATEGORY="Code"
elif echo "$TASK_NAME" | grep -qi "sales\|lead\|call"; then
    CATEGORY="Sales"
elif echo "$TASK_NAME" | grep -qi "integrat\|sync\|connect"; then
    CATEGORY="Integration"
fi

# Determine source
SOURCE="Manual Discovery"
if echo "$TASK_NAME" | grep -qi "bug\|fix"; then
    SOURCE="Bug Fix"
fi

echo ""
echo "Creating Lessons Learned entry..."

# Create Lessons Learned entry in Notion
RESPONSE=$(curl -s -X POST "https://api.notion.com/v1/pages" \
    -H "Authorization: Bearer $NOTION_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Notion-Version: 2022-06-28" \
    -d "{
        \"parent\": { \"database_id\": \"$LESSONS_LEARNED_DB\" },
        \"properties\": {
            \"Lesson\": { \"title\": [{ \"text\": { \"content\": \"$TASK_NAME - $(date +%b\ %d)\" } }] },
            \"Category\": { \"select\": { \"name\": \"$CATEGORY\" } },
            \"Source\": { \"select\": { \"name\": \"$SOURCE\" } },
            \"Date Learned\": { \"date\": { \"start\": \"$TODAY\" } },
            \"Details\": { \"rich_text\": [{ \"text\": { \"content\": $(echo "$LESSON_CONTENT" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))') } }] }
        }
    }")

# Check if successful
PAGE_ID=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || echo "")

if [ -n "$PAGE_ID" ]; then
    echo "✅ Lesson created: $TASK_NAME"
    echo "   Category: $CATEGORY"
    echo "   Source: $SOURCE"
else
    echo "❌ Failed to create lesson entry"
    echo "$RESPONSE"
fi

echo ""
echo "======================================"
echo "  LEARN STAGE COMPLETE"
echo "======================================"

# Show current pattern counts
echo ""
echo "📊 Pattern Counts (threshold: 3)"
echo "--------------------------------"
if [ -f "$PATTERN_FILE" ]; then
    echo "DO MORE patterns:"
    grep "^DO_MORE:" "$PATTERN_FILE" | sort -t: -k3 -rn | head -5 | while read line; do
        pattern=$(echo "$line" | cut -d: -f2)
        count=$(echo "$line" | cut -d: -f3)
        echo "  $pattern: $count"
    done
    echo ""
    echo "AVOID patterns:"
    grep "^AVOID:" "$PATTERN_FILE" | sort -t: -k3 -rn | head -5 | while read line; do
        pattern=$(echo "$line" | cut -d: -f2)
        count=$(echo "$line" | cut -d: -f3)
        echo "  $pattern: $count"
    done
fi
