Darstellung
16 – Team & Team-Boards
Reifegrad: 🟢 produktiv · Schicht: memberships/users, @work7/domain (Team-Funktionen), src/app/team, src/app/team-boards, src/app/api/team/*, src/app/api/team-boards/*
Zweck
Verwaltung der Mitarbeiter eines Betriebs (Rollen, Einladungen, Status) und team-orientierte Sichten auf Auslastung/Termine (Team-Board).
Team-Verwaltung
- Mitarbeiter ↔ Firma über
memberships(role1/2/3,status,department_id,manager_id). - Domain-Funktionen (
@work7/domain):listTeamMembers(Suche/Pagination),listTeamAggregates(Kennzahlen),deleteTeamMember,createTeamInvite,cancelTeamInvite,resolveTeamInviteRole(Rolle eines Einladenden begrenzt die vergebbare Rolle – Manager darf nur Mitarbeiter einladen).
| Endpoint | Funktion |
|---|---|
GET /api/team/list | Mitarbeiterliste |
GET/PUT /api/team/member | Mitglied lesen/ändern |
GET /api/team/aggregates | Team-Kennzahlen |
POST /api/team/invite · /resend · /cancel | Einladungen (siehe 01-auth-onboarding-rbac) |
Team-Boards
/team-boards– Board-Ansicht für Disposition/Auslastung.GET /api/team-boards/calendar– aggregierte Kalender-/Belegungsdaten je Mitarbeiter (Provider-Events + interneappointmentsinkl.appointment_typefür Abwesenheit/Kommen/Gehen; siehe 06-termine-kalender-plantafel).- UI (
TeamCalendarTimeline): ganztägige Abwesenheiten und Kommen/Gehen als seitliche Marker (kein doppelter Chip aus internem Termin + Provider-Spiegel). - Berechtigung:
team_boards:read/team_boards:write(Default für Rolle 1/2 write, Rolle 3 read, siehe 01-auth-onboarding-rbac).
UI
/team (Mitarbeiterverwaltung), /team-boards (Board). Komponenten: src/components/team/*, src/components/calendar/TeamCalendarTimeline.tsx.
Abgrenzung
- Team eines Mandanten (dieses Feature) ≠ Projekt-Team (
project_team, an ein einzelnes Projekt gebunden, siehe 04-projekte). - Einladungs-/Rollenmechanik ist mit 01-auth-onboarding-rbac geteilt.
Bekannte Befunde / offene Punkte
membershipsundusers.company_idhalten die Zugehörigkeit teils redundant – bei Refactoring aufmembershipsals Single Source konsolidieren.