Skip to content

Этапы проекта, вехи и диаграмма Ганта ​

Этап — именованная фаза работ внутри проекта («Подготовка», «Монтаж», «Мероприятие»), веха — контрольная дата без длительности («Договор подписан»). Статус проекта говорит, где проект в воронке и производстве, этапы — как разбита работа (ТЗ «Шаблоны, этапы и Гант…», раздел 4).

Реализовано: этап 2 — миграция 0188 (project_stages, project_milestones, tasks.stage_id), код internal/modules/tasks/plan.go, repository_plan.go, transport_plan.go. План живёт в модуле задач: там права проекта и видимость задач.


Этапы ​

  • project_stages (project_id, name, position, color); у задачи stage_id (необязательный, этап того же проекта — иначе tasks_stage_not_in_project). Подзадача по умолчанию в этапе родителя.
  • Даты этапа не хранятся: от самого раннего начала (или срока, если начала нет) до самого позднего срока его задач и вех.
  • Прогресс — доля завершённых задач без отменённых. Текущий этап (is_current) — первый по порядку, где есть незавершённые задачи.
  • Удаление этапа оставляет задачи и вехи в проекте без этапа (ON DELETE SET NULL).
  • Не больше 50 этапов в проекте.

Вехи ​

  • project_milestones (project_id, stage_id, title, date, done_at, done_by). Отметка «достигнута» запоминает, кто и когда. is_overdue — дата прошла, а веха не отмечена.
  • Системные даты проекта показываются вехами только для чтения и правятся в карточке проекта: contract_deadline (дедлайн контрактации), mount (монтаж), event_start, event_end.

GET /projects/:id/stages — лёгкий список этапов (форма задачи, подпись этапа). Системные даты приходят днём в часовом поясе компании (ГГГГ-ММ-ДД). Правка срока задачи (в том числе на Ганте) может ставить срок в прошлом — запрет «не в прошлом» действует только при создании.

Один ответ для «Хода работ» и Ганта ​

GET /projects/:id/plan — этапы со сводкой, вехи, системные даты, задачи проекта и связи между ними. Видимость задач — как в списке задач проекта: кто видит только свои, получает tasks_partial=true, и связи только между видимыми задачами. can_edit — можно менять этапы, вехи и даты задач (тот, кто управляет задачами проекта).

Сдвиг задач на Ганте — POST /tasks/shift и обычная правка задачи (start_date, due_date, stage_id); связи — /tasks/:id/dependencies (см. Структура задачи).

Лента проектов ​

Вид «Лента» в списке проектов строится из обычного GET /projects (даты мероприятия, монтажа, статус) — отдельного маршрута нет.

Права ​

ДействиеКто
Смотреть планТот, кто видит задачи проекта
Этапы, вехиТот, кто управляет задачами проекта (canManage): менеджер проекта, ведущий карточку дивизиона, администратор; иначе tasks_no_rights_to_manage_plan

Синхронизация ​

Изменение этапов и вех рассылает entity_changed проекта с частью plan; удаление этапа — ещё и изменение задач проекта.

Загружаем документацию…