--- title: "Leadera — Экспорт диаграммы Ганта в Excel" date: 2026-04-09 lastmod: 2026-04-09 tags: ["leadera", "gantt", "excel", "export"] weight: 120 --- # Экспорт диаграммы Ганта в Excel **Дата:** 09.04.2026 **Статус:** Требования **Проект:** Leadera --- ## Общее описание Пользователь нажимает кнопку экспорта в интерфейсе диаграммы Ганта. Система запрашивает диапазон дат выгрузки (по умолчанию — текущий видимый диапазон из интерфейса). После указания диапазона скачивается Excel-файл с визуальным представлением диаграммы Ганта. --- ## Вводные данные - **Источник:** текущая диаграмма Ганта проекта (один проект = одна диаграмма) - **Диапазон дат:** пользователь указывает начальную и конечную дату. По умолчанию подставляется видимый в момент запроса диапазон из интерфейса - **Масштаб таймлайна:** берётся тот, который выбран пользователем в интерфейсе в момент запроса (не сохранённый в системе, а текущий). Варианты: по ячейкам или по дням --- ## Структура Excel-файла ### Шапка (первые строки) - Название диаграммы (название проекта) - Диапазон дат, в рамках которого сделана выгрузка ### Лист — один Вся диаграмма размещается на одном листе. ### Секции - Секции отображаются как **визуальная группировка строк** (не отдельные листы) - Название секции — строка-заголовок над группой задач ### Задачи Каждая задача — отдельная строка. Данные задачи: - **Название** (текстовая колонка слева) - **Дата начала** (текстовая колонка слева) - **Дата конца** (текстовая колонка слева) - **Цвет** — ячейки таймлайна, соответствующие задаче, закрашены в цвет задачи ### Таймлайн - Таймлайн представлен колонками дат в верхней части (горизонтальная ось времени) - Масштаб колонок соответствует выбранному пользователем в момент экспорта (по ячейкам / по дням) - Задачи отображаются как **merged cells** по соответствующим колонкам дат — визуальная полоса диаграммы Ганта ### Вехи - Отображаются **отдельной строкой** (как задача, но с маркировкой вехи) - Позиционируются на соответствующей дате в таймлайне ### Зависимости - **Не отображаются** (стрелочки/связи между задачами не нужны) --- ## Пользовательский сценарий 1. Пользователь открывает диаграмму Ганта проекта 2. Настраивает масштаб таймлайна (по ячейкам / по дням) 3. Нажимает кнопку «Экспорт в Excel» 4. Система показывает диалог с выбором диапазона дат (предзаполнен текущим видимым диапазоном) 5. Пользователь подтверждает / корректирует диапазон 6. Система генерирует Excel-файл и инициирует скачивание --- ## Технические требования ### Backend (Go API) - Новый endpoint для генерации Excel (например, `GET /api/v1/gantt/:projectId/export`) - Query-параметры: `dateFrom`, `dateTo`, `scale` (cell|day) - Ответ: binary Excel-файл (`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`) - Авторизация: обязательна (только участники проекта) - Библиотека для генерации Excel: `excelize` (Go) ### Frontend (Angular) - Кнопка экспорта в тулбаре диаграммы Ганта - Модальное окно выбора диапазона дат с datepicker'ами - Предзаполнение диапазона из текущего видимого viewport'а - Скачивание файла через `Blob` / `saveAs` ### Фильтрация данных - Выгружаются все задачи и вехи, которые: - Начинаются в диапазоне, ИЛИ - Заканчиваются в диапазоне, ИЛИ - Начинаются до диапазона и заканчиваются после (перекрывают целиком) - Секции включаются, если в них есть хотя бы одна попавшая задача --- ## Открытые вопросы _(Нет)_