Leadera
Leadera
SaaS-система управления IT-ландшафтом с диаграммами Ганта.
- Прод: leadera.pro
- Дев: sand.a2v.space
Leadera — Публичный доступ к диаграмме Ганта
Публичный доступ к диаграмме Ганта (Share)
Дата: 09.04.2026 Статус: Требования Проект: Leadera
Общее описание
Пользователь может создать публичную ссылку на фрагмент диаграммы Ганта, доступную для просмотра без авторизации. Открывший ссылку видит диаграмму в read-only режиме с возможностью масштабирования таймлайна, но без каких-либо элементов управления (создание, редактирование, удаление задач/секций/вех).
Пользовательский сценарий (создатель ссылки)
- Пользователь открывает диаграмму Ганта проекта
- Нажимает кнопку «Экспорт» / «Общий доступ»
- Указывает диапазон дат, который должен отображаться на диаграмме
- Система генерирует уникальную ссылку (UUID) и показывает её пользователю
- Пользователь копирует ссылку и передаёт заинтересованным лицам
Управление ссылками
- Вызывается через меню экспорта → модальное окно «Общий доступ»
- В модальном окне отображается список созданных ссылок с указанием диапазона дат
- Каждую ссылку можно удалить (полное удаление из БД, не soft delete)
- Ссылки нельзя редактировать — только создавать и удалять
- Ограничений на количество активных ссылок нет
- Статистика просмотров (сколько раз открывали) — не нужна
Пользовательский сценарий (зритель по ссылке)
- Зритель переходит по ссылке (без авторизации)
- Открывается отдельная страница с диаграммой Ганта
- Зритель видит:
- Задачи и вехи, попадающие в заданный диапазон
- Секции (заголовки группировок)
- Таймлайн с цветовой раскраской задач
- Зритель может:
- Масштабировать таймлайн
- Переключать отображение «по ячейкам» / «по дням»
- Зритель не может:
- Создавать, редактировать, удалять задачи / секции / вехи
- Видеть любые контролы управления (кнопки создания, контекстные меню, 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.