#!/usr/bin/env python3
"""Controle de forme d'un lot, INDEPENDANT de la file d'attente.

integrer.py exige que le lot figure dans file.json et s'arrete sinon. Les lots
crees a la volee, hors file, echappaient donc a tout controle : ce script les
verifie sur les memes criteres.
"""
import json, re, sys, pathlib, datetime

lot = sys.argv[1]
p = pathlib.Path(f'database/seeders/data/corpus-extension-livre6-lot-{lot}.json')
arts = json.loads(p.read_text())
today = datetime.date.today()
pbs, relire = [], []

for a in arts:
    n = a.get('number', '?')
    if not re.fullmatch(r'LEGIARTI\d{12}', a.get('official', '')):
        pbs.append(f"{n} : identifiant LEGIARTI invalide ({a.get('official')})")
    try:
        d = datetime.date.fromisoformat(a.get('from', ''))
        if d > today:
            pbs.append(f"{n} : date future ({d})")
    except ValueError:
        pbs.append(f"{n} : date mal formee ({a.get('from')})")
    c = (a.get('content') or '').strip()
    if len(c) < 30:
        pbs.append(f"{n} : contenu vide ou trop court")
    # Mot double : souvent une coquille officielle, a reproduire mais a signaler.
    for m in re.finditer(r'\b(\w{3,})\s+\1\b', c, re.IGNORECASE):
        relire.append(f"{n} : « {m.group(0)} »")

print(f"lot {lot} : {len(arts)} articles, {len(pbs)} anomalie(s)")
for x in pbs:
    print("  ✗", x)
for x in relire:
    print("  ⚠ a relire —", x)
sys.exit(1 if pbs else 0)
