import argparse
import json
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parents[1]))

import pandas as pd


def evaluate_crop_quality(crop_result: str | Path) -> dict:
    df = pd.read_csv(crop_result)
    total = len(df)
    success = int((df["crop_status"] > 0).sum())
    failure = int((df["crop_status"] == 0).sum())
    return {
        "total": total,
        "crop_success_rate": success / total if total else 0.0,
        "crop_failure_rate": failure / total if total else 0.0,
        "confidence_summary": df["crop_confidence"].describe().to_dict() if total else {},
    }


def main() -> int:
    parser = argparse.ArgumentParser(description="Evaluate pot crop quality.")
    parser.add_argument("--crop-result", required=True)
    parser.add_argument("--output", default="reports/crop/crop_quality_report.json")
    parser.add_argument("--review-csv", default="reports/crop/crop_visual_review.csv")
    args = parser.parse_args()
    report = evaluate_crop_quality(args.crop_result)
    Path(args.output).parent.mkdir(parents=True, exist_ok=True)
    Path(args.output).write_text(json.dumps(report, ensure_ascii=False, indent=2), encoding="utf-8")
    df = pd.read_csv(args.crop_result)
    df.assign(review_status="", review_memo="").to_csv(args.review_csv, index=False)
    print(json.dumps(report, ensure_ascii=False, indent=2))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
