import { Network } from "lucide-react"; import Link from "next/link"; import { Avatar } from "@/components/ui/Avatar"; import { LINK_BUTTON_CLASS } from "@/components/ui/Button"; import { fmtName } from "@/lib/format"; type MiniEmployee = { id: string; first_name: string; last_name: string; job_title: string; status?: string }; type OrganisationTabProps = { employeeId: string; manager: MiniEmployee | null; /** Nur gesetzt, wenn die zuständige Leitung abwesend ist und vertreten wird. */ formalManager: MiniEmployee | null; directReports: MiniEmployee[]; breadcrumb: string; /** * Die Kostenstelle der Planstelle, auf der die Person heute sitzt — nicht * ihre eigene: sie kontiert dorthin, wo ihr Sitz kontiert ist. Fehlt sie, * hat die Person keine laufende Besetzung (geplanter Eintritt, Austritt). */ kostenstelle: { code: string; name: string } | null; }; // Die Niederlassung stand hier kurzzeitig neben Einheit und Kostenstelle — // unsere Auslegung von „Niederlassungen auch in Zuordnung einfügen" // (Anforderung 8). Im Gespräch am 17.09.2026 hat der Kunde sie hier wieder // gestrichen: „nimm's mal hier raus, ich glaub, da brauchen wir's nicht // drin." Sie steht weiterhin im Vertragsblatt. // // Was mit der Anforderung gemeint war, ist damit weiterhin offen — siehe // docs/rueckfragen-workshop-2026-09.md. export function OrganisationTab({ employeeId, manager, formalManager, directReports, breadcrumb, kostenstelle, }: OrganisationTabProps) { return (
{breadcrumb}
{kostenstelle ? ( <> {kostenstelle.code} · {kostenstelle.name} > ) : ( Keine laufende Planstellenbesetzung )}
Zuständig ist {fmtName(formalManager.first_name, formalManager.last_name)}; während der Abwesenheit übernimmt die nächste besetzte Ebene.
)} {manager ? (Keine Führungskraft (Geschäftsführung)
)}Keine direkten Berichte.
)}