import os
import pandas as pd
from openai import OpenAI

import sys

# Initialize client
client = OpenAI()

# Input / Output paths
INPUT_CSV = "input.csv"
OUTPUT_CSV = "output_with_reasons.csv"

# Load input data
df = pd.read_csv(sys.argv[1])

# Check if output already exists (resume mode)
if os.path.exists(OUTPUT_CSV):
    out_df = pd.read_csv(OUTPUT_CSV)
    # Copy existing 'reason' column if present, else create empty
    if "reason" not in out_df.columns:
        out_df["reason"] = None
else:
    out_df = df.copy()
    out_df["reason"] = None

# Get comments that still need processing
remaining_comments = out_df[out_df["reason"].isna()]["comment"].dropna().unique()

print(f"Total unique comments to process: {len(remaining_comments)}")

for comment in remaining_comments:
    prompt = f"""Analyze the following user comment:

{comment}

Why is the user doing manual data entry?

Return the answer as a short descriptive phrase (not a full sentence)."""

    try:
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": "You are a precise data annotator."},
                {"role": "user", "content": prompt}
            ]
        )

        answer = response.choices[0].message.content.strip()

        print(answer)

    except Exception as e:
        print(f"Error processing comment: {e}")
        answer = None

    # Update dataframe
    out_df.loc[out_df["comment"] == comment, "reason"] = answer

    # Save progress after each comment (resume-safe)
    out_df.to_csv(OUTPUT_CSV, index=False)

print(f"✅ Done! Results saved to {OUTPUT_CSV}")
