00f80dc5cc
- chart1: линейный график цены + себестоимость + 3 сценария + маржа (bottom panel) - chart5: сгруппированные бары сценарий маржинальности - document.js: сборка DOCX (header/footer DT-style, KPI, callout, tables, images) - index.js: параметрический entry point generateReport(config) - examples/russia.js: полный пример для РФ - palette.js: DT-палитра синхронизирована с DESIGN_DAIRYTRENDS.md Tested: node examples/russia.js → 44KB DOCX, validation PASSED
104 lines
4.1 KiB
Markdown
104 lines
4.1 KiB
Markdown
# Dairy Report Generator
|
||
|
||
Универсальный генератор аналитических отчётов в формате **DairyTrends** (стиль DT-палитры) с графиками и таблицами.
|
||
|
||
## Возможности
|
||
|
||
- 📊 Многостраничные DOCX отчёты в едином дизайне
|
||
- 📈 Графики (линейные, столбчатые, сценарные) — SVG → PNG через sharp
|
||
- 🎨 Палитра DairyTrends: оранжевый/зелёный/красный/кремовый
|
||
- 📑 Структура: KPI-обложка → выводы → методика → ретроспектива → сравнения → прогноз → рекомендации
|
||
- 🔌 Полная параметризация — подавай данные, получай отчёт
|
||
|
||
## Применение
|
||
|
||
- **Регионы РФ** — отчёты по областям/краям из БД `region_index` (Bitrix dairy-news.ru)
|
||
- **МЗЫ** — отчёт по конкретному хозяйству на основе своих данных (надой, поголовье, закупочная цена)
|
||
- **Сравнения предприятий** — анализ группы хозяйств
|
||
- **Тематические выпуски** — экспорт, GDT, нетели и т.д.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
## Использование
|
||
|
||
```javascript
|
||
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`:
|
||
|
||
```bash
|
||
# В админке /admin/dairytrends/reports/
|
||
# страница даёт UI для выбора региона + кнопку "Сгенерировать"
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT © ООО «Умный Байт» / Zeroday
|