// ============================================================
// seed.jsx — loader bootstrap (FASE 2)
// ============================================================
// Il dataset sintetico è stato migrato nel DB Postgres (FASE 1 + 2a).
// Questo file ora fa fetch `/api/bootstrap` e popola i globali attesi.
//
// Mantiene placeholder vuoti per evitare crash se del codice accede ai
// globali prima che la promise risolva — la promise `window.__SEED_READY`
// viene awaitata in App.jsx prima del mount React.

window.__SEED = {
  PERSONAS: [],
  SITES: [],
  CATEGORIES: [],
  VENDORS: [],
  PROJECTS: [],
  ALERTS: [],
  COMMUNICATIONS: [],
  ARCHIVE_DOCS: [],
  RDA: [],
  BENCHMARKS: [],
  DOCUMENTS: [],
  REPORTS: [],
  AUDIT: [],
  KPI: { portfolio: {}, cashflow: [] },
  MILESTONES: {}, // map projectId → MilestoneDto[] (FASE 2b.4)
};

window.__SEED_CUSTOMIZING = {
  DOC_TYPES: [],
  CHECKLIST_RULES: [],
  APPROVAL_WORKFLOWS: [],
  APPROVAL_MATRIX: [],
  ROLES: [],
  CATEGORIES_EXT: [],
  CAPEX_CLASSES: [],
  SITES_EXT: [],
  LEGAL_ENTITIES: [],
  BUSINESS_UNITS: [],
  CALENDARS: [],
  DELEGATIONS: [],
  SLA_POLICIES: [],
  ESCALATION_RULES: [],
  NOTIFICATION_EVENTS: [],
  NOTIFICATION_RULES: [],
  AI_AGENTS: [],
  AI_POLICY: null,
  TEMPLATES: [],
  CLAUSES: [],
  BRANDING: null,
  CONFIG_VERSIONS: [],
};

window.__SEED_READY = fetch('/api/bootstrap', { cache: 'no-store' })
  .then((r) => {
    if (!r.ok) throw new Error('bootstrap HTTP ' + r.status);
    return r.json();
  })
  .then((data) => {
    window.__SEED = data.S;
    window.__SEED_CUSTOMIZING = data.C;
    console.log('[Veridanto] bootstrap caricato: %d personas, %d projects, %d rda, %d vendors',
      data.S.PERSONAS?.length || 0, data.S.PROJECTS?.length || 0,
      data.S.RDA?.length || 0, data.S.VENDORS?.length || 0);
    return data;
  })
  .catch((err) => {
    console.error('[Veridanto] bootstrap fallito', err);
    throw err;
  });
