Skip to content

Команды

Команды объединяют участников внутри организаций или вне их. Команды могут быть самостоятельными или привязанными к организации.

Модель

Team
├── name, slug, description
├── organizationId? (опционально — null для самостоятельных команд)
├── members (с ролями: OWNER, ADMIN, MANAGER, MEMBER)
└── tasks (удобный эндпоинт в рамках команды)

API Endpoints

МетодПутьОписание
GET/api/teamsСписок команд пользователя
POST/api/teamsСоздать команду
GET/api/teams/by-org/:slugСписок команд организации
GET/api/teams/by-slug/:teamSlugДетали команды
PATCH/api/teams/by-slug/:teamSlugОбновить команду
DELETE/api/teams/by-slug/:teamSlugУдалить команду
GET/api/teams/by-slug/:teamSlug/membersСписок участников
POST/api/teams/by-slug/:teamSlug/membersДобавить участника
DELETE/api/teams/by-slug/:teamSlug/members/:userIdУдалить участника
GET/api/teams/by-slug/:teamSlug/tasksДоска задач команды

Маршруты фронтенда

МаршрутПредставлениеОписание
/teamsTeamListViewСписок всех команд пользователя
/organizations/:orgId/teamsOrgTeamListViewКоманды организации
/teams/:teamIdTeamDetailViewОбзор команды
/teams/:teamId/tasksTeamTasksViewДоска задач команды
/teams/:teamId/settingsTeamSettingsViewНастройки команды

Store фронтенда

typescript
const store = useTeamsStore()
const { teams, currentTeam } = storeToRefs(store)

await store.fetchTeams()
await store.fetchTeam(teamId)

await store.createTeam({ name, slug, description, organizationId })
await store.updateTeam(teamId, { name, description })

// Участники
await store.addMember(teamId, email, role)
await store.removeMember(teamId, userId)

Ключевые детали реализации

  • Команды, привязанные к организации, наследуют ограничения разрешений уровня организации
  • Самостоятельные команды работают независимо со своей областью разрешений
  • Эндпоинт /teams/by-slug/:teamSlug/tasks предоставляет удобное представление доски задач
  • Настройки команды управляют именем, описанием и участниками