import json
from pathlib import Path
from datetime import datetime, timedelta
# Yesterday's file name
yesterday = datetime.now() - timedelta(days=1)
file_name = f"data_{yesterday:%Y-%m-%d}.json"
INPUT_FILE = Path(f"/home/acein/public_html/railways.acetians.in/api/downloads/{file_name}")
OUTPUT_DIR = Path("/home/acein/public_html/railways.acetians.in/api/clustered-rmd-data")

OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

 

json_file = INPUT_FILE

print(f"Checking: {json_file}")

# Check if yesterday's file exists
if not json_file.exists():
    print(f"File not found: {file_name}")
    exit()

# Skip empty file
if json_file.stat().st_size == 0:
    print(f"SKIPPED - empty file: {file_name}")
    exit()

try:
    with open(json_file, "r", encoding="utf-8") as f:
        data = json.load(f)

except json.JSONDecodeError as e:
    print(f"SKIPPED - invalid JSON: {e}")
    exit()

complaints = data.get("result", [])

if not isinstance(complaints, list):
    print("SKIPPED - 'result' is not an array")
    exit()

grouped = {}

for complaint in complaints:

    if not isinstance(complaint, dict):
        continue

    div_code = complaint.get("divCode")

    if not div_code:
        continue

    grouped.setdefault(div_code, []).append(complaint)

for div_code, division_complaints in grouped.items():

    div_dir = OUTPUT_DIR / div_code
    div_dir.mkdir(parents=True, exist_ok=True)

    output_file = div_dir / json_file.name

    output_data = data.copy()
    output_data["result"] = division_complaints

    with open(output_file, "w", encoding="utf-8") as f:
        json.dump(
            output_data,
            f,
            indent=4,
            ensure_ascii=False
        )

    print(
        f"{div_code}: "
        f"{len(division_complaints)} complaints"
    )

print("Done.")
