#!/usr/bin/env python3
"""
Seed carento's per-locale page-contents JSON files from auxero's existing
translations. For each extracted skeleton, look up every English key in any
auxero translations/{locale}/page-contents/*.json file and copy the first
match. Unmatched strings stay as English (needs human follow-up).

Emits translations/{locale}/page-contents/{slug}.json for ar, vi, fr.
"""

import json
from pathlib import Path

LOCALES = ["ar", "vi", "fr"]

CARENTO_BASE = Path("/Users/sangnguyen/workspace/carento/database/seeders/translations")
AUXERO_BASE = Path("/Users/sangnguyen/workspace/auxero/database/seeders/translations")


def load_auxero_dict(locale: str) -> dict:
    """Flatten every auxero page-contents JSON for a locale into one dict."""
    merged = {}
    pc_dir = AUXERO_BASE / locale / "page-contents"
    if not pc_dir.is_dir():
        return merged
    for p in sorted(pc_dir.glob("*.json")):
        data = json.loads(p.read_text(encoding="utf-8"))
        for en, tr in data.items():
            if en not in merged and tr and tr != en:
                merged[en] = tr
    return merged


def main():
    extract_dir = CARENTO_BASE / "_extract" / "page-contents"
    if not extract_dir.is_dir():
        raise SystemExit(f"Missing extract dir: {extract_dir}")

    for locale in LOCALES:
        aux = load_auxero_dict(locale)
        out_dir = CARENTO_BASE / locale / "page-contents"
        out_dir.mkdir(parents=True, exist_ok=True)

        print(f"\n== {locale} (auxero pool: {len(aux)} entries) ==")
        for skeleton in sorted(extract_dir.glob("*.json")):
            data = json.loads(skeleton.read_text(encoding="utf-8"))
            merged = {}
            hits = 0
            for en in data:
                if en in aux:
                    merged[en] = aux[en]
                    hits += 1
                else:
                    merged[en] = en  # English fallback
            out = out_dir / skeleton.name
            out.write_text(
                json.dumps(merged, ensure_ascii=False, indent=2) + "\n",
                encoding="utf-8",
            )
            print(f"  {skeleton.name}: {hits}/{len(data)} from auxero")


if __name__ == "__main__":
    main()
