5b73983805ae31eb73ada8f5eec9b70695e5eab0
Расширил генератор чтобы он умел рендерить структуру эталонного отчёта:
- §5 'Сравнительный анализ предприятий' разбит на 5.1 (лидеры) и 5.2 (кластеры)
- 5.1: heading2 + text.leaders5_1 (массив или строка) + chart2
- 5.2: heading2 + text.cluster5_2 + text.clusterGroups (массив объектов
{title, text} рендерится как жирный bullet + текст) + chart3 +
text.gap (calloutBox с красной полосой)
- chart4 + text.regionComparisonSummary — после блока кластеризации
Раздел 5 теперь визуально соответствует эталону DT_Вологда_2026.docx.
Dairy Report Generator
Универсальный генератор аналитических отчётов в формате DairyTrends (стиль DT-палитры) с графиками и таблицами.
Возможности
- 📊 Многостраничные DOCX отчёты в едином дизайне
- 📈 Графики (линейные, столбчатые, сценарные) — SVG → PNG через sharp
- 🎨 Палитра DairyTrends: оранжевый/зелёный/красный/кремовый
- 📑 Структура: KPI-обложка → выводы → методика → ретроспектива → сравнения → прогноз → рекомендации
- 🔌 Полная параметризация — подавай данные, получай отчёт
Применение
- Регионы РФ — отчёты по областям/краям из БД
region_index(Bitrix dairy-news.ru) - МЗЫ — отчёт по конкретному хозяйству на основе своих данных (надой, поголовье, закупочная цена)
- Сравнения предприятий — анализ группы хозяйств
- Тематические выпуски — экспорт, GDT, нетели и т.д.
Установка
npm install
Использование
const { generateReport } = require('@dairynews/report-generator')
const fs = require('fs')
const buf = await generateReport({
subject: {
name: 'Вологодской области',
shortName: 'Вологда',
type: 'region', // 'region' | 'farm' | 'company' | 'custom'
},
period: {
historicalFrom: '2024-01-01',
historicalTo: '2026-05-31',
forecastTo: '2026-12-31',
},
data: {
prices: [{ date: '2024-01-15', price: 31.05 }, ...],
costs: [{ date: '2024-01-15', cost: 28.50 }, ...],
scenarios: { base: [...], opt: [...], pess: [...] },
kpi: [
{ value: '33–35 ₽/кг', label: 'Закуп. цена (базовый)' },
{ value: '+2.1%', label: 'Рост производства I кв.' },
...
],
leaders: [...], // опционально
ebitda: [...], // опционально
regionComparison: [...] // опционально
},
text: {
mainConclusion: '...',
risks: ['Погодные условия...', 'Регуляторные риски...'],
recommendations: { ... },
}
})
fs.writeFileSync('output.docx', buf)
Структура проекта
src/
├── index.js # Главный entry-point
├── generators/
│ ├── document.js # Сборка DOCX (header, footer, sections)
│ ├── kpi.js # KPI-блок
│ ├── tables.js # Таблицы (допущения, прогноз, ретроспектива)
│ └── callout.js # Callout-блоки с красной полосой
├── charts/
│ ├── render.js # SVG → PNG через sharp
│ ├── chart1.js # Линейный + маржа (главный)
│ ├── chart2.js # Лидеры (2 горизонтальных бара)
│ ├── chart3.js # EBITDA по группам
│ ├── chart4.js # Сравнение регионов
│ └── chart5.js # Сценарии маржи
├── templates/
│ └── default.js # Шаблон Вологда-style
├── data/
│ └── palette.js # DT-палитра
examples/
├── russia.js # Пример: общероссийский отчёт
└── vologda.js # Пример: Вологодская область
Деплой
Модуль интегрируется как зависимость в new.dairy-news.ru:
# В админке /admin/dairytrends/reports/
# страница даёт UI для выбора региона + кнопку "Сгенерировать"
Лицензия
MIT © ООО «Умный Байт» / Zeroday
Description
Languages
JavaScript
100%