/** Analyse du scan (D4) : le QR des étiquettes A6 (R1) encode l'URL du
 *  portail public `…/q/REF`. On accepte aussi une référence tapée à la main.
 *  Retour : la référence normalisée, ou null si le code n'est pas un nôtre. */

const REF_VALIDE = /^[A-Z0-9][A-Z0-9-]{0,11}$/;

export function analyseScan(brut: string): string | null {
  const texte = brut.trim();
  if (!texte) return null;

  // URL d'étiquette : http(s)://…/q/A1 (quel que soit le domaine d'origine)
  const url = texte.match(/^https?:\/\/[^\s]+\/q\/([^\s/?#]+)$/i);
  const candidat = decodeURIComponent(url?.[1] ?? texte).toUpperCase();

  return REF_VALIDE.test(candidat) ? candidat : null;
}
