dd67d2c2ec
Весь контент перенесён в content/yasha/ (7 подразделов). Создан content/semen/ с подразделами: changelog, kb, diary. Навигация — dropdown в навбаре, двухуровневое меню в hugo.toml. Шаблоны, сайдбар, поиск обновлены под вложенные секции.
6.8 KiB
6.8 KiB
title, date, lastmod, tags, weight
| title | date | lastmod | tags | weight | ||||
|---|---|---|---|---|---|---|---|---|
| Leadera — Публичный доступ к диаграмме Ганта | 2026-04-09 | 2026-04-09 |
|
130 |
Публичный доступ к диаграмме Ганта (Share)
Дата: 09.04.2026 Статус: Требования Проект: Leadera
Общее описание
Пользователь может создать публичную ссылку на фрагмент диаграммы Ганта, доступную для просмотра без авторизации. Открывший ссылку видит диаграмму в read-only режиме с возможностью масштабирования таймлайна, но без каких-либо элементов управления (создание, редактирование, удаление задач/секций/вех).
Пользовательский сценарий (создатель ссылки)
- Пользователь открывает диаграмму Ганта проекта
- Нажимает кнопку «Экспорт» / «Общий доступ»
- Указывает диапазон дат, который должен отображаться на диаграмме
- Система генерирует уникальную ссылку (UUID) и показывает её пользователю
- Пользователь копирует ссылку и передаёт заинтересованным лицам
Управление ссылками
- Вызывается через меню экспорта → модальное окно «Общий доступ»
- В модальном окне отображается список созданных ссылок с указанием диапазона дат
- Каждую ссылку можно удалить (полное удаление из БД, не soft delete)
- Ссылки нельзя редактировать — только создавать и удалять
- Ограничений на количество активных ссылок нет
- Статистика просмотров (сколько раз открывали) — не нужна
Пользовательский сценарий (зритель по ссылке)
- Зритель переходит по ссылке (без авторизации)
- Открывается отдельная страница с диаграммой Ганта
- Зритель видит:
- Задачи и вехи, попадающие в заданный диапазон
- Секции (заголовки группировок)
- Таймлайн с цветовой раскраской задач
- Зритель может:
- Масштабировать таймлайн
- Переключать отображение «по ячейкам» / «по дням»
- Зритель не может:
- Создавать, редактировать, удалять задачи / секции / вехи
- Видеть любые контролы управления (кнопки создания, контекстные меню, drag-and-drop и т.д.)
- Авторизоваться через эту страницу
Данные и фильтрация
Что попадает в представление
Задачи и вехи, у которых хотя бы одно из условий верно:
- Дата начала попадает в диапазон ссылки
- Дата конца попадает в диапазон ссылки
- Задача начинается до диапазона и заканчивается после (полностью перекрывает)
Секции включаются, если в них есть хотя бы одна попавшая задача.
API возвращает
- Только задачи и вехи, попадающие в диапазон (не всю диаграмму)
- Информацию о секциях, содержащих попавшие задачи
- Минимальный набор полей, необходимый для отрисовки (без внутренних ID пользователей и т.п.)
Технические требования
Ссылки
- Формат: UUID v4 (каждый раз новый)
- Срок действия: бессрочно (пока не удалена)
- Удаление: жёсткое (hard delete из БД)
Backend (Go API)
Таблица БД: gantt_public_links
id(UUID, PK)project_id(FK → projects)date_from(date)date_to(date)created_by(FK → users)created_at(timestamp)
Endpoints
POST /api/v1/gantt/:projectId/public-links— создать ссылку (авторизован, участник проекта)- Body:
{ dateFrom, dateTo } - Response:
{ url: "https://leadera.pro/share/<uuid>" }
- Body:
GET /api/v1/gantt/:projectId/public-links— список ссылок проекта (авторизован, участник)DELETE /api/v1/gantt/public-links/:uuid— удалить ссылку (авторизован, создатель)GET /api/v1/public/gantt/:uuid— получить данные диаграммы по ссылке (без авторизации)- Response: задачи, вехи, секции в рамках диапазона
Rate limiting
- На публичный endpoint
GET /api/v1/public/gantt/:uuid— rate limiting для защиты от перебора - Рекомендация: 60 запросов в минуту на IP
Frontend (Angular)
Модальное окно «Общий доступ»
- Вызывается из меню экспорта
- Содержит:
- Форму создания ссылки (диапазон дат + кнопка «Создать»)
- Список существующих ссылок (диапазон + URL + кнопка «Копировать» + кнопка «Удалить»)
Публичная страница /share/:uuid
- Отдельный route, не требует авторизации
- Отображает диаграмму Ганта в read-only режиме
- Доступны только: масштабирование таймлайна, переключение ячейки/дни
- Все контролы управления скрыты (удалены из шаблона, не просто disabled)
- Минимальный layout — без навигации проекта, без сайдбара
Открытые вопросы
(Нет)