Übersicht Team-Verwaltung

Erfahren Sie, wie die Team-Verwaltung in CodeCourier funktioniert, einschließlich Projekthierarchie, Mitgliederrollen, Kollaborationsfunktionen und Zugriffskontrolle.

5 min Lesezeit
teammembersroles

CodeCourier ist für die Team-Kollaboration konzipiert. Jede Funktion der Plattform - Sandboxes, Workflows, Personas, Issue-Sessions und Learnings - ist einem Projekt zugeordnet, und Projekte unterstützen mehrere Mitglieder mit unterschiedlichen Rollen. Dieser Abschnitt erläutert, wie das Team-Verwaltungssystem funktioniert und wie Sie es effektiv einsetzen.

Projektzentrierte Architektur

Die grundlegende Organisationseinheit in CodeCourier ist das Projekt. Ein Projekt repräsentiert eine Codebasis, ein Produkt oder eine Initiative, an der Ihr Team arbeitet. Alle Ressourcen - Sandboxes, Runs, Workflows, Personas, Issue-Sessions, Learnings, Issues und API-Schlüssel - gehören zu einem Projekt.

Jedes Projekt verfügt über:

  • Name und Slug - Ein menschenlesbarer Name und ein URL-freundlicher Bezeichner
  • Eigentümer - Der Nutzer, der das Projekt erstellt hat (hat vollständige Kontrolle)
  • Mitglieder - Andere Nutzer mit Zugriff auf das Projekt
  • Einstellungen - Konfiguration für System-Prompts, API-Schlüssel, Umgebungsvariablen und mehr
  • Optionales GitHub-Repository - Ein verknüpftes Repository für Code-Deployment und PR-Verwaltung
  • Optionales Logo - Ein benutzerdefiniertes Projektlogo, das in den Speicher hochgeladen wird

Nutzer können gleichzeitig Mitglieder mehrerer Projekte sein. Die Plattform verfolgt das zuletzt aktive Projekt des Nutzers und wechselt den Kontext automatisch, wenn dieser zwischen Projekten navigiert.

Nutzer- und Organisationsmodell

CodeCourier verwendet Clerk für die Authentifizierung. Wenn sich ein Nutzer registriert oder anmeldet, wird ein entsprechender Nutzer-Datensatz in der Convex-Datenbank mit seiner Clerk-ID, E-Mail, Name und Profilbild angelegt. Der Nutzer-Datensatz ist der Identitätsanker für alle Projekt- Mitgliedschaften, API-Schlüssel und Aktivitätsverfolgungen.

Das Team-Modell ist bewusst flach gehalten - es gibt keine verschachtelten Organisationen oder Team-Hierarchien. Jedes Projekt hat eine direkte Liste von Mitgliedern, und jedes Mitglied hat eine Rolle, die seine Berechtigungen bestimmt. Diese Einfachheit hält die Zugriffskontrolle übersichtlich und vorhersehbar.

Nutzer in mehreren Projekten

Ein einzelnes Nutzerkonto kann an vielen Projekten mit unterschiedlichen Rollen teilnehmen. Sie können Eigentümer Ihres persönlichen Projekts und Mitglied im Produktionsprojekt Ihres Teams sein. Jedes Projekt verwaltet seinen eigenen unabhängigen Satz von Ressourcen.

Mitgliedslebenszyklus

Der Lebenszyklus eines Projektmitglieds folgt diesen Phasen:

  1. Einladung- Ein Eigentümer oder Admin lädt einen Nutzer per E-Mail-Adresse ein. Die Mitgliedschaft wird mit dem Status "ausstehend" erstellt.
  2. Annahme- Der eingeladene Nutzer sieht die ausstehende Einladung in seinem Dashboard und nimmt sie an. Der Status ändert sich auf "angenommen" und er erhält Zugriff auf das Projekt.
  3. Aktive Mitgliedschaft - Das Mitglied kann gemäß seiner Rolle (Eigentümer, Admin oder Mitglied) auf alle Projektressourcen zugreifen.
  4. Rollenänderungen - Eigentümer können Mitgliederrollen ändern. Admins können zu Eigentümern befördert oder zu Mitgliedern degradiert werden.
  5. Entfernung - Eigentümer und Admins können Mitglieder entfernen. Der Mitgliedschaftsdatensatz wird endgültig gelöscht.

Nutzer können auch eine ausstehende Einladung ablehnen, wodurch der Mitgliedschaftsdatensatz gelöscht wird, ohne dass der Nutzer jemals Zugriff auf das Projekt erhält.

Kollaborationsfunktionen

Wenn mehrere Teammitglieder am selben Projekt arbeiten, profitieren sie von verschiedenen Kollaborations- Funktionen:

Geteilte Ressourcen

Alle Projektressourcen werden zwischen den Mitgliedern geteilt. Sandboxes, Runs, Workflows, Personas und Issue-Sessions, die von einem beliebigen Mitglied erstellt wurden, sind für alle Mitglieder sichtbar. Diese Transparenz stellt sicher, dass jeder die Aktivität und den Status des Projekts einsehen kann.

Echtzeit-Updates

CodeCourier nutzt das reaktive Datenmodell von Convex, wodurch alle Projektdaten in Echtzeit über alle verbundenen Clients aktualisiert werden. Wenn ein Teammitglied einen Workflow-Run startet, sieht ein anderes Mitglied den Run sofort erscheinen, ohne die Seite zu aktualisieren. Dies gilt für alle Entitäten: Sandboxes, Runs, Issue-Sessions und Learnings.

Benachrichtigungssystem

Das Projekt-Benachrichtigungssystem informiert Teammitglieder über wichtige Ereignisse: Run-Abschlüsse, Run-Fehler, PR-Erstellung, PR-Merges, neue Mitglieder und Workflow-Abschlüsse. Benachrichtigungen erscheinen im Posteingang und verfolgen den Lese-/Ungelesen-Status pro Nutzer.

Aktivitätszähler

Das Projekt verwaltet denormalisierte Zähler, die einen schnellen Überblick über die Projekt- Aktivität bieten: Sandboxes gesamt, aktive Sandboxes, Runs gesamt, abgeschlossene Runs, fehlgeschlagene Runs, Workflows gesamt, Mitglieder gesamt und ausstehende Einladungen. Diese Zähler werden in Echtzeit aktualisiert, wenn sich der Zustand des Projekts ändert.

Zugriffskontrollmodell

CodeCourier verwendet ein rollenbasiertes Zugriffskontrollmodell (RBAC) mit drei Rollen: Eigentümer, Admin und Mitglied. Jeder API-Endpunkt, der auf Projekt- Daten zugreift, prüft zunächst, ob der anfragende Nutzer ein aktives Mitglied des Projekts ist. Einige Operationen erfordern zusätzlich Admin- oder Eigentümer-Privilegien.

Die Zugriffskontrolle wird auf Ebene der Convex-Funktionen mithilfe gemeinsamer Authentifizierungs- Helfer durchgesetzt (getProjectForMember, requireProjectAdmin, requireProjectOwner). Diese Funktionen prüfen die Mitgliedschaft und Rolle des Nutzers, bevor sie die Operation zulassen.

Ausstehende Mitglieder

Nutzer mit dem Einladungsstatus "ausstehend" sind NICHT berechtigt, auf Projekt- Ressourcen zuzugreifen. Die interne Abfrage isMemberOfProject weist ausstehende Mitgliedschaften ausdrücklich zurück. Ein Nutzer muss die Einladung annehmen, bevor er Projektdaten einsehen oder mit ihnen interagieren kann.

Nächste Schritte