"""사용법: py submit.py sample.csv"""
import argparse
import shutil
import sys
from pathlib import Path
from uuid import uuid4

from worker import JOBS, ensure_directories, utc_now, write_json


def submit(source):
    source = Path(source).expanduser().resolve(strict=True)
    if not source.is_file() or source.suffix.lower() != ".csv":
        raise ValueError("존재하는 .csv 파일을 지정하세요.")
    ensure_directories()
    job_id = uuid4().hex
    snapshot = JOBS / "inputs" / f"{job_id}.csv"
    pending = JOBS / "pending" / f"{job_id}.json"
    try:
        shutil.copyfile(source, snapshot)
        write_json(pending, {
            "job_id": job_id,
            "status": "pending",
            "source_file": source.name,
            "submitted_at": utc_now(),
        })
    except OSError:
        snapshot.unlink(missing_ok=True)
        pending.with_suffix(".tmp").unlink(missing_ok=True)
        raise
    return job_id


def main():
    parser = argparse.ArgumentParser(description="CSV 요약 작업을 접수합니다.")
    parser.add_argument("csv_path", help="현재 터미널 폴더 기준 CSV 경로")
    args = parser.parse_args()
    try:
        job_id = submit(args.csv_path)
    except (OSError, ValueError) as error:
        print(f"[접수 실패] {error}", file=sys.stderr)
        return 1
    print(f"[pending] 작업 ID: {job_id}")
    print(f"대기 기록: jobs/pending/{job_id}.json")
    print(f"완료 후 결과: jobs/results/{job_id}.json")
    return 0


if __name__ == "__main__":
    sys.exit(main())
