// personal-data.jsx — Personaldata + personalendringer på tvers av avdelinger
// og selskaper. Bygger videre på TEAM, OK_SELSKAPER og OK_AVDELINGER.

// Ansattegenskaper utover TEAM. Initialene må matche TEAM-nøklene.
// Selskap = juridisk arbeidsgiver. Enhet = organisatorisk avdeling/stab.
const EMP_DETAILS = {
  KS: { selskap: 'okm', enhet: 'dgl',          startet: '2018-04-01', kontrakt: 'fast',     stilling: 100, manedslonn: 95_000, leder: null, fagforening: 'Lederne' },
  MR: { selskap: 'okm', enhet: 'avd-lamb',     startet: '2020-08-17', kontrakt: 'fast',     stilling: 100, manedslonn: 72_500, leder: 'KS' },
  HM: { selskap: 'okm', enhet: 'stab-hr',      startet: '2019-01-07', kontrakt: 'fast',     stilling: 100, manedslonn: 78_000, leder: 'KS', fagforening: 'NITO' },
  ØS: { selskap: 'okm', enhet: 'stab-okonomi', startet: '2017-09-01', kontrakt: 'fast',     stilling: 100, manedslonn: 82_500, leder: 'KS' },
  KK: { selskap: 'okm', enhet: 'stab-kval',    startet: '2021-02-15', kontrakt: 'fast',     stilling: 80,  manedslonn: 58_400, leder: 'KS' },
  TM: { selskap: 'okm', enhet: 'avd-holm',     startet: '2019-11-04', kontrakt: 'fast',     stilling: 100, manedslonn: 70_000, leder: 'KS' },
  HE: { selskap: 'okm', enhet: 'avd-vulk',     startet: '2020-03-02', kontrakt: 'fast',     stilling: 100, manedslonn: 70_000, leder: 'KS' },
  JN: { selskap: 'okm', enhet: 'avd-lamb',     startet: '2024-09-02', kontrakt: 'vikariat', stilling: 100, manedslonn: 54_000, leder: 'MR', sluttDato: '2026-08-31', vikarFor: 'Hege Aas (foreldreperm)' },
  AN: { selskap: 'okm', enhet: 'avd-skul',     startet: '2022-06-20', kontrakt: 'fast',     stilling: 100, manedslonn: 56_500, leder: 'KS' },
  RB: { selskap: 'oks', enhet: 'ent-sykkel',   startet: '2021-05-03', kontrakt: 'fast',     stilling: 100, manedslonn: 64_000, leder: 'HE' },
  IH: { selskap: 'okb', enhet: 'ent-bistro',   startet: '2020-10-12', kontrakt: 'fast',     stilling: 100, manedslonn: 64_000, leder: 'MR' },
};

// "Ekstra" ansatte vi trenger for kontrakt-oversikten (ikke i TEAM siden de
// ikke er sentrale roller — men de finnes i HR-systemet og Finago).
const EMP_EXTRA = [
  { i: 'OB', n: 'Ola Bratlien',     r: 'Veileder · AFT',           c: '#586ba4', selskap: 'okm', enhet: 'avd-lamb',   startet: '2024-08-19', kontrakt: 'midlertidig', stilling: 100, manedslonn: 49_500, leder: 'MR', sluttDato: '2026-06-15', begrunn: 'Prosjektmidler AFT 2026 — vårkohort' },
  { i: 'SK', n: 'Siri Kvam',        r: 'Jobbspesialist · IPS',     c: '#bbe8ff', selskap: 'okm', enhet: 'avd-holm',   startet: '2025-08-25', kontrakt: 'vikariat',    stilling: 80,  manedslonn: 45_200, leder: 'TM', sluttDato: '2026-08-24', vikarFor: 'Eirik Berge (studiepermisjon)' },
  { i: 'PL', n: 'Petter Lothe',     r: 'Kantineansvarlig',         c: '#f2cc8f', selskap: 'okb', enhet: 'ent-bistro', startet: '2023-04-11', kontrakt: 'fast',        stilling: 100, manedslonn: 52_000, leder: 'IH' },
  { i: 'NV', n: 'Nora Vatne',       r: 'Sykkelmekaniker',          c: '#fcddde', selskap: 'oks', enhet: 'ent-sykkel', startet: '2025-04-01', kontrakt: 'lærling',     stilling: 100, manedslonn: 28_200, leder: 'RB', sluttDato: '2027-04-01', begrunn: 'Lærlingkontrakt 2 år, Vg3' },
  { i: 'EH', n: 'Eivind Halse',     r: 'IT-konsulent',             c: '#cedfdf', selskap: 'okd', enhet: 'ent-data',   startet: '2024-11-04', kontrakt: 'midlertidig', stilling: 100, manedslonn: 58_000, leder: 'HE', sluttDato: '2026-11-03', begrunn: 'Prosjekt: digitaliseringsstøtte bydeler' },
  { i: 'LB', n: 'Linnea Brekke',    r: 'HR-konsulent',             c: '#08605f', selskap: 'okm', enhet: 'stab-hr',    startet: '2024-01-08', kontrakt: 'midlertidig', stilling: 100, manedslonn: 56_500, leder: 'HM', sluttDato: '2026-06-30', begrunn: 'Prosjekt: ny lønnsmodell — innspurt' },
  { i: 'TÅ', n: 'Trond Åsen',       r: 'Veileder · karriere',      c: '#dee1ed', selskap: 'okm', enhet: 'avd-holm',   startet: '2023-08-01', kontrakt: 'fast',        stilling: 100, manedslonn: 55_800, leder: 'TM' },
  { i: 'MS', n: 'Maja Strand',      r: 'Servitør · OK:bistro',     c: '#f2cc8f', selskap: 'okb', enhet: 'ent-bistro', startet: '2025-09-15', kontrakt: 'vikariat',    stilling: 60,  manedslonn: 28_800, leder: 'IH', sluttDato: '2026-06-14', vikarFor: 'Ingrid Furu (sykmeldt)' },
  { i: 'AB', n: 'Adam Bjørklund',   r: 'Veileder · AFT',           c: '#586ba4', selskap: 'okm', enhet: 'avd-lamb',   startet: '2024-04-15', kontrakt: 'midlertidig', stilling: 100, manedslonn: 51_000, leder: 'MR', sluttDato: '2026-07-31', begrunn: 'Tilleggsmidler NAV, 12-mnd forlengelse vurderes' },
];

// Slå sammen TEAM + EMP_EXTRA til én komplett ansatte-tabell
const ALL_EMPLOYEES = (() => {
  const list = Object.entries(TEAM).map(([k, p]) => ({ ...p, ...EMP_DETAILS[k] }));
  EMP_EXTRA.forEach(p => list.push(p));
  return list;
})();

// Slå opp en ansatt på initialer (TEAM eller EMP_EXTRA)
const findEmp = (i) => ALL_EMPLOYEES.find(e => e.i === i);

// ────────────────────────────────────────────────────────────────────────
// KONTRAKT-TYPER
// ────────────────────────────────────────────────────────────────────────
const KONTRAKT_TYPER = {
  fast:        { label: 'Fast',         farge: '#08605f', kortLabel: 'Fast' },
  vikariat:    { label: 'Vikariat',     farge: '#8e5a05', kortLabel: 'Vikar' },
  midlertidig: { label: 'Midlertidig',  farge: '#a01a25', kortLabel: 'Midl.' },
  lærling:     { label: 'Lærling',      farge: '#586ba4', kortLabel: 'Lærl.' },
  prosjekt:    { label: 'Prosjekt',     farge: '#11183d', kortLabel: 'Prosj.' },
};

// ────────────────────────────────────────────────────────────────────────
// PERSONALENDRINGER
// Endring kan være:
//   overflytting      → bytte enhet (samme selskap)
//   selskapsbytte     → bytte selskap (alltid også bytte enhet)
//   stillingsendring  → endre stillings-%
//   forlengelse       → forlenge midlertidig/vikariat-kontrakt
//   fast-tilsetting   → midlertidig → fast
//   opphor            → kontrakten avsluttes (kan være planlagt utløp eller oppsigelse)
//   omdisponering     → delt allokering mellom to enheter
// ────────────────────────────────────────────────────────────────────────
const ENDRING_TYPER = {
  overflytting:     { label: 'Overflytting',       farge: '#586ba4', ikon: '→' },
  selskapsbytte:    { label: 'Selskapsbytte',      farge: '#a01a25', ikon: '⇄' },
  stillingsendring: { label: 'Stillingsendring',   farge: '#8e5a05', ikon: '%' },
  forlengelse:      { label: 'Forlenge kontrakt',  farge: '#08605f', ikon: '+' },
  'fast-tilsetting':{ label: 'Fast tilsetting',    farge: '#08605f', ikon: '★' },
  omdisponering:    { label: 'Delt allokering',    farge: '#11183d', ikon: '◑' },
  opphor:           { label: 'Avslutning',         farge: '#a01a25', ikon: '×' },
};

const ENDRING_STATUS = {
  utkast:               { label: 'Utkast',                       pill: 'draft' },
  'venter-fra-leder':   { label: 'Venter — nærmeste leder (fra)', pill: 'risk' },
  'venter-til-leder':   { label: 'Venter — nærmeste leder (til)', pill: 'risk' },
  'venter-dl-fra':      { label: 'Venter — daglig leder (fra)',   pill: 'risk' },
  'venter-dl-til':      { label: 'Venter — daglig leder (til)',   pill: 'risk' },
  'venter-hr':          { label: 'Venter — HR',                  pill: 'risk' },
  godkjent:             { label: 'Godkjent',                     pill: 'track' },
  effektuert:           { label: 'Effektuert',                   pill: 'track' },
  avvist:               { label: 'Avvist',                       pill: 'delay' },
};

// Bygg en saksliste. Statuser, godkjenningsstier og felter er konsekvente
// med kostnadsflyttings-modulen.
const PERSONAL_ENDRINGER = [
  {
    id: 'pe-101', nr: 'PE-2026-0101', type: 'selskapsbytte',
    person: 'NV', personNavn: 'Nora Vatne',
    fraSelskap: 'oks', fraEnhet: 'ent-sykkel',
    tilSelskap: 'okd', tilEnhet: 'ent-data',
    nyTittel: 'IT-lærling',
    nyStilling: 100, gammelStilling: 100,
    nyLonn: 30_500, gammelLonn: 28_200,
    gjelderFra: '2026-08-01',
    opprettet: '21. mai', opprettetAv: 'RB',
    status: 'venter-dl-til',
    begrunnelse: 'Nora har gjennomført Vg3 sykkelmekaniker og ønsker å fortsette mot fagbrev IT. OK:data kan tilby lærlingplass fra august. RB støtter overgangen.',
    konsekvenser: [
      'Stillingen i OK:sykkel utlyses internt før ekstern utlysning',
      'Lønnsendring postes mot OK:data fra 1.8.2026',
      'Lærlingkontrakt opphører og ny opprettes — varsel til OK Yrkesopplæring',
    ],
    godkjenningssti: [
      { rolle: 'Avd.leder · OK:sykkel (fra)',  state: 'godkjent', av: 'RB', tid: '21. mai · 14:10' },
      { rolle: 'Avd.leder · OK:data (til)',    state: 'godkjent', av: 'HE', tid: '22. mai · 09:30' },
      { rolle: 'Daglig leder · OsloKollega',   state: 'godkjent', av: 'KS', tid: '23. mai · 11:05' },
      { rolle: 'Daglig leder · OK:data AS',    state: 'venter',   grunn: 'Krever signatur på ny lærlingkontrakt' },
      { rolle: 'HR · Hanne Myhre',             state: 'kø' },
    ],
  },
  {
    id: 'pe-102', nr: 'PE-2026-0102', type: 'overflytting',
    person: 'AB', personNavn: 'Adam Bjørklund',
    fraSelskap: 'okm', fraEnhet: 'avd-lamb',
    tilSelskap: 'okm', tilEnhet: 'avd-holm',
    nyTittel: 'Veileder · IPS Holmlia',
    nyStilling: 100, gammelStilling: 100,
    nyLonn: 51_000, gammelLonn: 51_000,
    gjelderFra: '2026-06-01',
    opprettet: '19. mai', opprettetAv: 'MR',
    status: 'venter-til-leder',
    begrunnelse: 'AFT-kohorten på Lambertseter avsluttes 30. mai. Adam har erfaring fra IPS-metodikk og ønsker å fortsette på Holmlia hvor vi mangler kapasitet. Forlenger samtidig kontrakten til 31.12.2026.',
    konsekvenser: [
      'Adam ble inntil videre stående midlertidig til 31.7.2026 — forlenges til 31.12.2026',
      'Lønnskostnad flyttes fra avd-lamb til avd-holm fra 1.6',
      'Adam blir formelt knyttet til IPS Holmlia-prosjektet i Finago',
    ],
    godkjenningssti: [
      { rolle: 'Avd.leder · Lambertseter (fra)', state: 'godkjent', av: 'MR', tid: '19. mai · 16:45' },
      { rolle: 'Avd.leder · Holmlia (til)',      state: 'venter',   grunn: 'TM på reise, varslet via SMS' },
      { rolle: 'HR · Hanne Myhre',               state: 'kø' },
    ],
  },
  {
    id: 'pe-103', nr: 'PE-2026-0103', type: 'forlengelse',
    person: 'JN', personNavn: 'Jonas Nilsen',
    fraSelskap: 'okm', fraEnhet: 'avd-lamb',
    tilSelskap: 'okm', tilEnhet: 'avd-lamb',
    nyStilling: 100, gammelStilling: 100,
    nyLonn: 54_000, gammelLonn: 54_000,
    nyKontrakt: 'vikariat',
    forlengeTil: '2027-02-28',
    gammelSlutt: '2026-08-31',
    gjelderFra: '2026-09-01',
    opprettet: '18. mai', opprettetAv: 'MR',
    status: 'godkjent',
    begrunnelse: 'Hege Aas forlenger foreldrepermisjon med 6 mnd. Jonas viderefører vikariatet, leverer godt og vil gjerne fortsette. Innspill fra fagforeningsrepresentant er innhentet.',
    konsekvenser: [
      'Vikariat forlenges 6 mnd — ingen lønnsendring',
      'HR varsler Finago om endret sluttdato i lønnssystemet',
    ],
    godkjenningssti: [
      { rolle: 'Avd.leder · Lambertseter (fra)', state: 'godkjent', av: 'MR', tid: '18. mai · 09:20' },
      { rolle: 'Daglig leder · OsloKollega',     state: 'godkjent', av: 'KS', tid: '20. mai · 13:00' },
      { rolle: 'HR · Hanne Myhre',               state: 'godkjent', av: 'HM', tid: '20. mai · 15:30' },
    ],
    hrKvittering: 'Lagt inn i Finago lønnssystem — bilag F-26-1840',
  },
  {
    id: 'pe-104', nr: 'PE-2026-0104', type: 'omdisponering',
    person: 'KK', personNavn: 'Kristin Krogh',
    fraSelskap: 'okm', fraEnhet: 'stab-kval',
    tilSelskap: 'okb', tilEnhet: 'ent-bistro',
    nyStilling: 80, gammelStilling: 80,
    splittAllok: { 'stab-kval': 60, 'ent-bistro': 40 },
    gjelderFra: '2026-07-01',
    opprettet: '17. mai', opprettetAv: 'IH',
    status: 'venter-dl-fra',
    begrunnelse: 'OK:bistro har behov for kvalitetsstøtte for ISO 9001-resertifisering i 2026/27. 40 % av Kristins stilling allokeres til OK:bistro fra 1.7. Tilbakeføres ved resertifisering.',
    konsekvenser: [
      'Lønnskostnad splittes 60/40 mellom OsloKollega og OK:bistro',
      'Konsernintern fakturering mellom OK og OK:bistro genereres i Finago',
      'Tilbakeføring planlagt: 31.5.2027',
    ],
    godkjenningssti: [
      { rolle: 'Leder · OK:bistro (til)',    state: 'godkjent', av: 'IH', tid: '17. mai · 11:20' },
      { rolle: 'Kvalitetssjef (fra)',        state: 'godkjent', av: 'KK', tid: '17. mai · 14:00' },
      { rolle: 'Daglig leder · OK',          state: 'venter',   grunn: 'Til behandling — ledermøte 26. mai' },
      { rolle: 'Daglig leder · OK:bistro',   state: 'kø' },
      { rolle: 'HR · Hanne Myhre',           state: 'kø' },
    ],
  },
  {
    id: 'pe-105', nr: 'PE-2026-0105', type: 'fast-tilsetting',
    person: 'LB', personNavn: 'Linnea Brekke',
    fraSelskap: 'okm', fraEnhet: 'stab-hr',
    tilSelskap: 'okm', tilEnhet: 'stab-hr',
    nyStilling: 100, gammelStilling: 100,
    nyLonn: 60_000, gammelLonn: 56_500,
    nyKontrakt: 'fast',
    gjelderFra: '2026-07-01',
    opprettet: '14. mai', opprettetAv: 'HM',
    status: 'effektuert',
    begrunnelse: 'Linnea har drevet ny lønnsmodell-prosjektet til mål. HR har vedvarende behov for kapasitet. Stillingen utlyses ikke eksternt da Linnea oppfyller kvalifikasjonskrav og har 30 mnd erfaring i rollen.',
    konsekvenser: [
      'Midlertidig kontrakt avsluttes 30.6.2026',
      'Fast kontrakt fra 1.7.2026',
      'Lønnsjustering +3 500 kr/mnd',
    ],
    godkjenningssti: [
      { rolle: 'HR-leder (fra)',             state: 'godkjent', av: 'HM', tid: '14. mai · 10:15' },
      { rolle: 'Daglig leder · OsloKollega', state: 'godkjent', av: 'KS', tid: '15. mai · 09:00' },
      { rolle: 'HR · postering',             state: 'godkjent', av: 'sys', tid: '15. mai · 09:01' },
    ],
    hrKvittering: 'Effektuert — Finago bilag F-26-1812',
  },
  {
    id: 'pe-106', nr: 'PE-2026-0106', type: 'stillingsendring',
    person: 'KK', personNavn: 'Kristin Krogh',
    fraSelskap: 'okm', fraEnhet: 'stab-kval',
    tilSelskap: 'okm', tilEnhet: 'stab-kval',
    nyStilling: 100, gammelStilling: 80,
    nyLonn: 73_000, gammelLonn: 58_400,
    gjelderFra: '2026-09-01',
    opprettet: '12. mai', opprettetAv: 'KS',
    status: 'avvist',
    begrunnelse: 'Foreslått oppjustering til 100 % stilling i forbindelse med økt ISO-arbeid. KK ønsker selv å beholde 80 %.',
    konsekvenser: [
      'Saken trekkes — ingen endring i kontrakt',
      'Ny vurdering ved budsjettarbeid 2027',
    ],
    avvisGrunn: 'Den ansatte ønsker å beholde 80 % stilling av hensyn til familiesituasjon — sak trekkes.',
    godkjenningssti: [
      { rolle: 'Daglig leder · OsloKollega', state: 'godkjent', av: 'KS', tid: '12. mai · 16:00' },
      { rolle: 'Den ansatte (samtykke)',     state: 'avvist',   av: 'KK', tid: '14. mai · 08:45' },
    ],
  },
  {
    id: 'pe-107', nr: 'PE-2026-0107', type: 'overflytting',
    person: 'JN', personNavn: 'Jonas Nilsen',
    fraSelskap: 'okm', fraEnhet: 'avd-lamb',
    tilSelskap: 'okm', tilEnhet: 'avd-vulk',
    nyTittel: 'Jobbspesialist · OK:sykkel',
    nyStilling: 100, gammelStilling: 100,
    gjelderFra: '2026-10-01',
    opprettet: '23. mai', opprettetAv: 'HE',
    status: 'utkast',
    begrunnelse: 'Diskutert i ledermøte 22. mai — Jonas vurderer overgang til Vulkan etter vikariatets neste forlengelse. Utkast for å sikre kontinuitet.',
    konsekvenser: [],
    godkjenningssti: [
      { rolle: 'Avd.leder · Vulkan (forslagsstiller)', state: 'godkjent', av: 'HE', tid: '23. mai · 10:00' },
      { rolle: 'Avd.leder · Lambertseter (fra)',       state: 'kø' },
      { rolle: 'Daglig leder · OsloKollega',           state: 'kø' },
      { rolle: 'HR · Hanne Myhre',                     state: 'kø' },
    ],
  },
];

// ────────────────────────────────────────────────────────────────────────
// REGLER for godkjenningssti
// ────────────────────────────────────────────────────────────────────────
const PERSONAL_REGLER = [
  { id: 'r1', regel: 'Overflytting internt i samme avdeling',     krav: 'Nærmeste leder + HR' },
  { id: 'r2', regel: 'Overflytting mellom avdelinger',            krav: 'Begge avd.ledere + daglig leder + HR' },
  { id: 'r3', regel: 'Selskapsbytte (konsern)',                   krav: 'Begge avd.ledere + daglig leder i begge selskaper + HR' },
  { id: 'r4', regel: 'Stillingsendring eller lønnsjustering > 5 %', krav: 'Nærmeste leder + daglig leder + den ansatte (samtykke) + HR' },
  { id: 'r5', regel: 'Midlertidig → fast tilsetting',             krav: 'Nærmeste leder + daglig leder + HR' },
  { id: 'r6', regel: 'Delt allokering > 20 % til annen enhet',    krav: 'Begge enhetsledere + daglig leder + HR' },
  { id: 'r7', regel: 'Forlengelse vikariat/midlertidig',          krav: 'Nærmeste leder + daglig leder + HR · varsel til fagforening hvis > 12 mnd' },
];

Object.assign(window, {
  EMP_DETAILS, EMP_EXTRA, ALL_EMPLOYEES, findEmp,
  KONTRAKT_TYPER, ENDRING_TYPER, ENDRING_STATUS,
  PERSONAL_ENDRINGER, PERSONAL_REGLER,
});
