Skip to content

Проекты

Проекты группируют задачи и управляют участниками с ролями уровня проекта.

Модель

Project
├── name, description, status
├── organizationId? (опционально)
├── teamId? (опционально)
├── members (с ролями)
└── tasks (полный жизненный цикл задач)

API Endpoints

МетодПутьОписание
GET/api/projectsСписок проектов пользователя
POST/api/projectsСоздать проект
GET/api/projects/:idДетали проекта
PATCH/api/projects/:idОбновить проект
DELETE/api/projects/:idУдалить проект
GET/api/projects/:id/membersСписок участников
POST/api/projects/:id/membersДобавить участника
DELETE/api/projects/:id/members/:userIdУдалить участника

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

МаршрутПредставлениеОписание
/projectsProjectsViewСписок всех проектов пользователя
/projects/:projectIdProjectDetailViewОбзор проекта
/projects/:projectId/tasksProjectTasksViewСписок задач проекта
/projects/:projectId/tasks/:taskIdProjectTaskDetailViewДетали задачи
/projects/:projectId/settingsProjectSettingsViewНастройки проекта

Store фронтенда

typescript
const store = useProjectsStore()
const { projects, currentProject } = storeToRefs(store)

await store.fetchProjects()
await store.fetchProject(projectId)

await store.createProject({ name, description, organizationId, teamId })
await store.updateProject(projectId, { name, description })

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

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

  • Разрешения проекта контролируют CRUD-операции с задачами
  • Роли участников на уровне проекта переопределяют роли организации/команды для действий в рамках проекта
  • Задачи всегда привязаны к проекту (обязательный projectId с каскадным удалением)