#!/bin/bash

# Jira Classification Test Script
# Fetch recent tickets and classify the first one

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

# Default values
PROJECT="TCOC"
OUTPUT_DIR="temp/"
ISSUE_INDEX=0  # Default to first issue (0-indexed)

# Parse arguments
while [[ $# -gt 0 ]]; do
    case $1 in
        -p|--project)
            PROJECT="$2"
            shift 2
            ;;
        -h|--help)
            echo "Usage: $0 [-p project] [-i index]"
            echo "  -p project  Project key (default: TCOC)"
            echo "  -i index    Issue index (0-based, default: 0)"
            exit 0
            ;;
        -i|--index)
            ISSUE_INDEX="$2"
            shift 2
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

cd "$PROJECT_ROOT"

# Fetch tickets from the day before yesterday to yesterday
# This ensures we get a complete 24-hour period (00:00:00 to 00:00:00)
DAY_BEFORE_YESTERDAY=$(date -v-2d '+%Y-%m-%d')
YESTERDAY=$(date -v-1d '+%Y-%m-%d')

echo "Fetching tickets from $DAY_BEFORE_YESTERDAY to $YESTERDAY..."
pnpm exec tsx ./lib/cli.ts fetch -p "$PROJECT" -o "$OUTPUT_DIR/tickets.json" --from "$DAY_BEFORE_YESTERDAY" --to "$YESTERDAY"

# Count tickets and validate index
TICKET_COUNT=$(jq '.issues | length' "$OUTPUT_DIR/tickets.json" 2>/dev/null || echo "0")
if [ "$TICKET_COUNT" -eq "0" ]; then
    echo "No tickets found"
    exit 1
fi

if [ "$ISSUE_INDEX" -ge "$TICKET_COUNT" ]; then
    echo "Error: Issue index $ISSUE_INDEX is out of range (0-$((TICKET_COUNT-1)))"
    exit 1
fi

echo "Found $TICKET_COUNT ticket(s), processing issue at index $ISSUE_INDEX"

# Get specified ticket
TICKET=$(jq -r --argjson index "$ISSUE_INDEX" '.issues[$index]' "$OUTPUT_DIR/tickets.json")
[ "$TICKET" = "null" ] && { echo "No ticket found at index $ISSUE_INDEX"; exit 1; }

# Create single ticket file - must be array format
jq -n --argjson ticket "$TICKET" '{issues: [$ticket]}' > "$OUTPUT_DIR/single-ticket.json"

# Classify - let it write to file asynchronously
echo "Classifying $(echo "$TICKET" | jq -r '.key')..."

pnpm exec tsx ./lib/cli.ts classify direct \
    -i "$OUTPUT_DIR/single-ticket.json:issues" \
    -p prompt/system_prompt_batch.md \
    -o "$OUTPUT_DIR/result.json" \
    --model-id "gemini-3.7-flash" \
    --concurrency 1

if [ ! -f "$OUTPUT_DIR/result.json" ]; then
    echo "Result not found"
    exit 1
fi

# Verify the result file is valid and has data
if ! jq empty "$OUTPUT_DIR/result.json" 2>/dev/null; then
    echo "❌ Result file is not valid JSON"
    exit 1
fi

# Display result
echo ""
echo "Ticket: $(jq -r '.issues[0].key' "$OUTPUT_DIR/result.json")"
echo "Summary: $(jq -r '.issues[0].fields.summary' "$OUTPUT_DIR/result.json")"
echo ""

jq -r '.issues[0] |
    if .ai_predicted_issue_type then "Issue Type: \(.ai_predicted_issue_type)" else empty end,
    if .ai_predicted_service_type then "Service Type: \(.ai_predicted_service_type)" else empty end,
    if .ai_predicted_problem_l1 then "Problem: \(.ai_predicted_problem_l1)/\(.ai_predicted_problem_l2)" else empty end,
    if .ai_predicted_problem_domains then "Problem Domains: \(.ai_predicted_problem_domains | join(", "))" else empty end,
    if .ai_generated_summary then "Summary: \(.ai_generated_summary)" else empty end
' "$OUTPUT_DIR/result.json" 2>/dev/null | grep -v '^$'

echo ""
echo "Done!"
