Leadera

Leadera

SaaS-система управления IT-ландшафтом с диаграммами Ганта.

Leadera — Публичный доступ к диаграмме Ганта

Публичный доступ к диаграмме Ганта (Share)

Дата: 09.04.2026 Статус: Требования Проект: Leadera


Общее описание

Пользователь может создать публичную ссылку на фрагмент диаграммы Ганта, доступную для просмотра без авторизации. Открывший ссылку видит диаграмму в read-only режиме с возможностью масштабирования таймлайна, но без каких-либо элементов управления (создание, редактирование, удаление задач/секций/вех).


Пользовательский сценарий (создатель ссылки)

  1. Пользователь открывает диаграмму Ганта проекта
  2. Нажимает кнопку «Экспорт» / «Общий доступ»
  3. Указывает диапазон дат, который должен отображаться на диаграмме
  4. Система генерирует уникальную ссылку (UUID) и показывает её пользователю
  5. Пользователь копирует ссылку и передаёт заинтересованным лицам

Управление ссылками

  • Вызывается через меню экспорта → модальное окно «Общий доступ»
  • В модальном окне отображается список созданных ссылок с указанием диапазона дат
  • Каждую ссылку можно удалить (полное удаление из БД, не soft delete)
  • Ссылки нельзя редактировать — только создавать и удалять
  • Ограничений на количество активных ссылок нет
  • Статистика просмотров (сколько раз открывали) — не нужна

Пользовательский сценарий (зритель по ссылке)

  1. Зритель переходит по ссылке (без авторизации)
  2. Открывается отдельная страница с диаграммой Ганта
  3. Зритель видит:
    • Задачи и вехи, попадающие в заданный диапазон
    • Секции (заголовки группировок)
    • Таймлайн с цветовой раскраской задач
  4. Зритель может:
    • Масштабировать таймлайн
    • Переключать отображение «по ячейкам» / «по дням»
  5. Зритель не может:
    • Создавать, редактировать, удалять задачи / секции / вехи
    • Видеть любые контролы управления (кнопки создания, контекстные меню, drag-and-drop и т.д.)
    • Авторизоваться через эту страницу

Данные и фильтрация

Что попадает в представление

Задачи и вехи, у которых хотя бы одно из условий верно:

Leadera — Экспорт диаграммы Ганта в Excel

Экспорт диаграммы Ганта в Excel

Дата: 09.04.2026 Статус: Требования Проект: Leadera


Общее описание

Пользователь нажимает кнопку экспорта в интерфейсе диаграммы Ганта. Система запрашивает диапазон дат выгрузки (по умолчанию — текущий видимый диапазон из интерфейса). После указания диапазона скачивается Excel-файл с визуальным представлением диаграммы Ганта.


Вводные данные

  • Источник: текущая диаграмма Ганта проекта (один проект = одна диаграмма)
  • Диапазон дат: пользователь указывает начальную и конечную дату. По умолчанию подставляется видимый в момент запроса диапазон из интерфейса
  • Масштаб таймлайна: берётся тот, который выбран пользователем в интерфейсе в момент запроса (не сохранённый в системе, а текущий). Варианты: по ячейкам или по дням

Структура Excel-файла

Шапка (первые строки)

  • Название диаграммы (название проекта)
  • Диапазон дат, в рамках которого сделана выгрузка

Лист — один

Вся диаграмма размещается на одном листе.

Leadera: Вехи (Milestones) на диаграмме Ганта

Бизнес-требования

BR-1: Сущность «Веха» (Milestone)

Веха — это маркер на таймлайне диаграммы Ганта, обозначающий важную дату в проекте. В отличие от задач, веха не имеет длительности и привязана к конкретной дате.

Поля вехи:

Поле Тип Описание
id UUID Идентификатор
gantt_chart_id UUID Принадлежность к диаграмме (не к секции!)
title string Название вехи (обязательное, 1–255 символов)
date date Дата вехи (без времени, обязательная)
color string Цвет маркера (HEX, по умолчанию #dc3545 — красный)
created_by UUID Кто создал (не отображается в UI, хранится для аудита)
updated_by UUID Кто обновил (не отображается в UI)
created_at timestamp Дата создания
updated_at timestamp Дата обновления
deleted_at timestamp Soft delete

Права доступа: Создание, редактирование и удаление вех доступно участникам с правами выше «только чтение» (аналогично задачам).

Leadera — Фильтры и реорганизация списка диаграмм Ганта

Фильтры и реорганизация списка диаграмм Ганта

Дата: 07.04.2026 Статус: Требования Проект: Leadera (dev — sand.a2v.space)


1. Постановка задачи

Список диаграмм Ганта должен показывать все доступные пользователю диаграммы из всех пространств (spaces), с возможностью фильтрации и поиска. Сейчас список привязан к одному пространству — нужно убрать эту зависимость и добавить удобный toolbar.


2. Изменения API

2.1. Новый endpoint списка диаграмм

Было:

GET /api/v1/spaces/{spaceId}/gantt-charts?page=1&per_page=10

Стало:

GET /api/v1/gantt-charts?page=1&per_page=10

Пользователь видит все диаграммы из всех пространств, где он является подтверждённым участником (статус accepted).

Leadera — WebSocket для диаграмм Ганта

WebSocket для диаграмм Ганта — realtime-совместное редактирование

Дата: 07.04.2026 Статус: Планирование Проект: Leadera (dev — sand.a2v.space)


1. Постановка задачи

Диаграммы Ганта должны обновляться в реальном времени при совместной работе: если два или более пользователей редактируют один Гант, изменения каждого мгновенно отображаются у остальных — без перезагрузки страницы и ручного обновления.


2. Архитектура

Angular frontend ←── WebSocket ──→ Go backend (Hub) ──→ PostgreSQL
       │                                │
       │  HTTP (мутации)                │  Broadcast
       └──→ REST API ──→ Service ──→ DB ──→ Hub ──→ все клиенты комнаты

Ключевой принцип: мутации данных идут через HTTP (REST), WebSocket используется только для доставки уведомлений. Сервер — источник истины, клиент не может обойти проверки через WS.

Leadera: Ограничения секций в диаграмме Ганта

Бизнес-требования

BR-1: Лимит одновременных задач (Concurrency Limit)

У каждой секции появляется параметр max_concurrent_tasks (целое число ≥ 0, по умолчанию 0).

Поведение:

  • Если max_concurrent_tasks = 3 — в любой данный день в этой секции не может быть больше 3 активных задач одновременно
  • Если max_concurrent_tasks = 0 — ограничение отключено, лимита нет
  • Пересечение считается по дате: задача занимает дни с start_date по end_date включительно. Две задачи «пересекаются», если у них есть хотя бы один общий день
  • Ограничение работает только в рамках одной секции. Задачи из разных секций не влияют друг на друга

Срабатывание при:

Аудит Leadera — полный отчёт

Аудит проекта Leadera

Дата: 30.03.2026
Версия: pre-production, миграции 1–5


1. Обзор проекта

Leadera — SaaS-система управления IT-ландшафтом с диаграммами Ганта.

Стек

Компонент Технологии
Backend Go 1.21+, Gin, PostgreSQL 16, pgx/v5 + sqlx, JWT (HMAC-SHA256)
Frontend Angular 21.1, Bootstrap 5, NgBootstrap, RxJS, Signals
Инфраструктура Docker (Colima), pm2, nginx reverse proxy, VPS reg.ru

Доменная модель

User ──┬── Space (через space_members с role)
        │
        └── GanttChart (принадлежит Space)
              ├── GanttSection
              └── GanttTask

Роли: admin, editor, viewer — назначаются на уровне Space через таблицу space_members.