#!/usr/bin/env python3
"""
Sélectionne les N prochains profils éligibles d'une base CSV de prospection Fidulia.

Usage:
    python3 select_prospection_batch.py --csv PATH [--limit 10]

Remplace les heredocs "python3 << 'EOF' ... EOF" ad hoc utilisés précédemment
pour cette tâche, afin que la permission Bash puisse être scopée à ce script
exact plutôt qu'à l'interpréteur python3 dans son ensemble (un heredoc ne
matche pas les patterns d'autorisation Bash("python3 ...") et bloque la
routine planifiée en attente d'une validation manuelle).

Un profil est éligible si _batch_date est vide ET profileStatus n'est ni
"connected" ni "pending". Affiche les `limit` premiers en JSON sur stdout.
"""
import argparse
import csv
import json
import sys

FIELDS = [
    "firstName", "lastName", "job_title", "company_name", "location",
    "linkedinUrl", "_score", "linkedinEmail", "proEmail",
]


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--csv", required=True, help="Chemin vers la base CSV active")
    parser.add_argument("--limit", type=int, default=10, help="Nombre de profils à sélectionner (défaut 10)")
    args = parser.parse_args()

    with open(args.csv, newline="", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        rows = list(reader)

    eligible = [
        r for r in rows
        if not (r.get("_batch_date") or "").strip()
        and (r.get("profileStatus") or "").strip() not in ("connected", "pending")
    ]

    batch = eligible[: args.limit]
    out = [{field: r.get(field, "") for field in FIELDS} for r in batch]

    print(json.dumps(out, ensure_ascii=False, indent=2))
    print(f"eligible total: {len(eligible)} | selected: {len(batch)}", file=sys.stderr)


if __name__ == "__main__":
    main()
