/** * Example: общероссийский отчёт DT * * Запуск: node examples/russia.js * Результат: /tmp/DT_Russia_Example.docx */ const fs = require('fs') const path = require('path') const { generateReport } = require('../src') async function main () { console.log('Генерирую пример: Российская Федерация') const buf = await generateReport({ subject: { name: 'Российской Федерации', shortName: 'Россия', type: 'region', }, period: { historicalFrom: '2024-01-01', historicalTo: '2026-05-31', forecastTo: '2026-12-31', }, data: { // Цены (агрегаты по DT-индексу) prices: [ { date: '2024-01-15', price: 31.05 }, { date: '2024-04-15', price: 31.40 }, { date: '2024-07-15', price: 31.60 }, { date: '2024-10-15', price: 31.81 }, { date: '2025-01-15', price: 31.98 }, { date: '2025-02-26', price: 38.94 }, { date: '2025-04-15', price: 39.79 }, { date: '2025-07-15', price: 39.57 }, { date: '2025-10-15', price: 39.51 }, { date: '2025-12-15', price: 39.39 }, { date: '2026-01-15', price: 39.33 }, { date: '2026-02-15', price: 34.45 }, { date: '2026-04-01', price: 34.01 }, { date: '2026-05-15', price: 34.20 }, ], // Себестоимость (расчётная) costs: [ { date: '2024-01-15', cost: 28.5 }, { date: '2024-04-15', cost: 28.7 }, { date: '2024-07-15', cost: 28.9 }, { date: '2024-10-15', cost: 29.2 }, { date: '2025-01-15', cost: 29.4 }, { date: '2025-04-15', cost: 29.8 }, { date: '2025-07-15', cost: 30.1 }, { date: '2025-10-15', cost: 30.5 }, { date: '2026-01-15', cost: 30.8 }, { date: '2026-04-01', cost: 31.0 }, ], // Прогноз 3 сценария scenarios: { base: [ { date: '2026-04-01', price: 34.01 }, { date: '2026-06-30', price: 34.5 }, { date: '2026-09-30', price: 33.5 }, { date: '2026-12-31', price: 32.0 }, ], opt: [ { date: '2026-04-01', price: 34.01 }, { date: '2026-06-30', price: 36.5 }, { date: '2026-09-30', price: 35.5 }, { date: '2026-12-31', price: 34.5 }, ], pess: [ { date: '2026-04-01', price: 34.01 }, { date: '2026-06-30', price: 32.5 }, { date: '2026-09-30', price: 31.0 }, { date: '2026-12-31', price: 29.5 }, ], }, // Барчарт маржи внизу chart1 marginBars: [ { label: 'I 24', value: 8.5, isForecast: false }, { label: 'II 24', value: 9.6, isForecast: false }, { label: 'III 24', value: 9.5, isForecast: false }, { label: 'IV 24', value: 9.4, isForecast: false }, { label: 'I 25', value: 9.0, isForecast: false }, { label: 'II 25', value: 12.8, isForecast: false }, { label: 'III 25', value: 12.5, isForecast: false }, { label: 'IV 25', value: 12.4, isForecast: false }, { label: 'I 26', value: 11.9, isForecast: false }, { label: 'II 26*', value: 8.5, isForecast: true }, { label: 'III 26*', value: 5.0, isForecast: true }, { label: 'IV 26*', value: 1.5, isForecast: true }, ], // Сценарии маржи (chart5) scenarioMargins: [ { label: 'II кв. 2026', opt: 15.7, base: 10.0, pess: 1.5 }, { label: 'III кв. 2026', opt: 12.5, base: 6.5, pess: -4.8 }, { label: 'IV кв. 2026', opt: 7.8, base: 1.6, pess: -11.7 }, ], // KPI на обложке kpi: [ { value: '34,1 ₽/кг', label: 'DT Index (май 2026)' }, { value: '+24%', label: 'Рост цен 2025 vs 2024' }, { value: '23 региона', label: 'В базе DT' }, { value: '16%', label: 'Ключевая ставка ЦБ' }, ], // Допущения сценариев scenarioAssumptions: [ { name: 'Базовый', price: '33,5–34,5 руб./кг', costGrowth: '+5%', rationale: 'Продолжение текущих трендов' }, { name: 'Оптимистичный', price: '36,0–37,5 руб./кг', costGrowth: '+3%', rationale: 'Восстановление спроса, ослабление рубля' }, { name: 'Пессимистичный', price: '30,0–32,0 руб./кг', costGrowth: '+8%', rationale: 'Давление переработчиков, рост затрат' }, ], // Ретроспективная таблица retrospective: { columns: [ { label: 'Квартал', width: 2200 }, { label: '2024', width: 1700 }, { label: '2025', width: 1700 }, { label: 'I–II кв. 2026', width: 1800 }, { label: 'Изм. г/г', width: 2466 }, ], rows: [ ['I квартал', '31,14', '36,97', '36,04', { text: '↓ 2,5%', align: 1 }], ['II квартал', '31,47', '39,77', '34,11', { text: '↓ 14,2%', align: 1 }], ['III квартал','31,63', '39,57', 'прогноз', '—'], ['IV квартал', '31,86', '39,49', 'прогноз', '—'], [{ text: 'Среднегодовая', bold: true }, { text: '31,6', bold: true }, { text: '39,4', bold: true }, { text: '34,5 (оц.)', bold: true }, { text: '↓ 12,4%', bold: true }], ] }, // Прогнозная таблица forecastTable: { columns: [ { label: 'Квартал', width: 1700 }, { label: 'Цена руб./кг', width: 1700 }, { label: 'Себест. руб./кг', width: 1700 }, { label: 'Маржа %', width: 1700 }, { label: 'Пр-во тыс. т', width: 1500 }, { label: 'Сценарий', width: 1566 }, ], rows: [ ['II кв. 2026', '35,0', '31,5', '10,0', '175', 'Базовый'], ['III кв. 2026', '34,0', '31,8', '6,5', '168', 'Базовый'], ['IV кв. 2026', '32,5', '32,0', '1,6', '160', 'Базовый'], ['II кв. 2026', '37,0', '31,2', '15,7', '178', { text: 'Оптимистичный', color: '1D9E75' }], ['III кв. 2026', '36,0', '31,5', '12,5', '170', { text: 'Оптимистичный', color: '1D9E75' }], ['IV кв. 2026', '34,5', '31,8', '7,8', '163', { text: 'Оптимистичный', color: '1D9E75' }], ['II кв. 2026', '33,0', '32,5', '1,5', '172', { text: 'Пессимистичный', color: 'C0272D' }], ['III кв. 2026', '31,5', '33,0', '-4,8', '165', { text: 'Пессимистичный', color: 'C0272D' }], ['IV кв. 2026', '30,0', '33,5', '-11,7', '158', { text: 'Пессимистичный', color: 'C0272D' }], ] }, // chart2 — лидеры по цене (горизонтальные бары) leaders: { title: 'Лидеры по закупочной цене', unit: 'руб./кг', highlightName: 'РФ (среднее)', items: [ { name: 'Кабардино-Балкария', value: 49.0 }, { name: 'Брянская обл.', value: 46.5 }, { name: 'Псковская обл.', value: 44.0 }, { name: 'Ленинградская обл.', value: 42.5 }, { name: 'Краснодарский край', value: 40.0 }, { name: 'РФ (среднее)', value: 34.1 }, { name: 'Нижегородская обл.', value: 30.5 }, { name: 'Самарская обл.', value: 29.0 }, { name: 'Республика Татарстан', value: 28.5 }, { name: 'Чувашия', value: 22.0 }, ], }, // chart3 — EBITDA-маржа по группам эффективности ebitda: { groups: [ { group: 'A', value: 22.0, label: 'Эффективные', share: '25%' }, { group: 'B', value: 8.5, label: 'Средние', share: '45%' }, { group: 'C', value: -6.0, label: 'Отстающие', share: '30%' }, ], }, // chart4 — сравнение регионов (две панели) regionComparison: { unit: 'руб./кг', left: { title: 'Топ-5 по цене', bars: [ { label: 'Кабардино-Балкария', value: 49.0 }, { label: 'Брянская обл.', value: 46.5 }, { label: 'Псковская обл.', value: 44.0 }, { label: 'Ленинградская обл.', value: 42.5 }, { label: 'Краснодарский край', value: 40.0 }, ], }, right: { title: 'Антитоп-5 по цене', bars: [ { label: 'Нижегородская обл.', value: 30.5 }, { label: 'Ивановская обл.', value: 29.8 }, { label: 'Самарская обл.', value: 29.0 }, { label: 'Татарстан', value: 28.5 }, { label: 'Чувашия', value: 22.0 }, ], }, }, }, text: { mainConclusion: 'После резкого скачка в феврале–марте 2025 г. (с 32,2 до 39,8 руб./кг) национальный DT-индекс перешёл к плавному снижению. В 2026 г. коридор сузился до 33–35 руб./кг. Региональный разброс высок: от 22 руб./кг (Чувашия) до 49 руб./кг (Кабардино-Балкария). Базовый сценарий: среднегодовая цена 33,5–34,5 руб./кг, маржа 5–10%.', conclusions: [ 'Национальный DT-индекс в мае 2026 — 34,1 руб./кг: на 16% ниже пика 2025 г. (39,9 руб./кг), но на 10% выше средней 2024 г. (31,6 руб./кг).', 'Региональный спред 2026 рекордный: 27 руб./кг (Чувашия 22 руб./кг vs Кабардино-Балкария 49 руб./кг).', 'Лидеры по цене: СКФО и западное ЦФО/СЗФО (Брянская, Псковская, Ленинградская обл.) — 40–50 руб./кг.', 'Аутсайдеры: Республика Татарстан, Самарская, Нижегородская, Ивановская обл. — 28–31 руб./кг.', 'Ключевой риск — ставка ЦБ 16%: замораживает инвестиции в животноводческую инфраструктуру.', ], intro: [ 'Период анализа: 2024 г. — май 2026 г. Отчёт охватывает всю территорию Российской Федерации по данным 23 активных региональных панелей системы Dairy Trends (DT).', 'Основные источники: данные Dairy Trends (DT) — еженедельные цены на сырое молоко; статистика Росстата; макроэкономические индикаторы ЦБ РФ; данные GDT и МСХ Беларуси как ориентиры ЕАЭС.', 'Ключевая ставка ЦБ РФ — 16% (май 2026). Рост цен на электроэнергию: +17–24% в 2025 году, +3–20% в I кв. 2026. Комбикорма: +12% в 2025.', ], methodology: [ 'Экстраполяция трендов с учётом сезонности (квартальные коэффициенты за 2024–2025 гг.).', 'Корректировка на макроиндексы: электроэнергия +4–6% в квартал, комбикорма +5–8% за год.', 'Сценарный анализ: три сценария с разными допущениями по динамике цены и затрат.', ], retrospectiveSummary: 'В 2024 году национальный DT-индекс показал стабильный медленный рост: 30,97 → 31,93 руб./кг (+3% за год). В феврале–марте 2025 произошёл резкий скачок: за 10 дней индекс вырос с 32,2 до 38,9 руб./кг (+21%). К апрелю достиг плато 39,8 руб./кг, удерживалось до декабря 2025. В январе–мае 2026 — нисходящая коррекция до 34,1 руб./кг (–13,5% с начала года).', regionalSummary: 'Региональный разброс закупочных цен в 2026 г. — рекордный: от 22 руб./кг (Чувашия) до 49 руб./кг (Кабардино-Балкария), спред 27 руб./кг. Высокие цены концентрируются в СКФО и западном поясе ЦФО/СЗФО, где сильна конкуренция переработчиков за сырьё. Низкие — в Поволжье с профицитом сырого молока.', efficiencySummary: 'Группа A (эффективные, надой >9 000 кг/гол.) сохраняет двузначную EBITDA-маржу даже при текущих ценах. Группа C (отстающие, надой <6 000 кг/гол.) уже работает в убыток и наиболее уязвима к дальнейшему снижению цены и росту ставки ЦБ.', forecastSummary: 'В базовом сценарии большинство производителей сохранят маржу 5–10%. В оптимистичном (цена до 36–37 руб./кг) даже менее эффективные хозяйства выйдут в плюс. В пессимистичном убытки накопят 30–40% предприятий.', risks: [ 'Погодные условия — засуха поднимет цены на комбикорма на 15–20%.', 'Регуляторные риски — изменение импортных пошлин ЕАЭС, белорусские фиксированные цены.', 'Кредитное сжатие — ставка ЦБ 16% уже заморозила инвестиционные программы ряда хозяйств.', 'Валютный фактор — укрепление рубля снижает конкурентоспособность на экспортных рынках.', ], recommendations: { 'Для руководителей хозяйств': [ 'Снижайте себестоимость через повышение надоя (цель: >9 000 кг/год) и оптимизацию кормления.', 'Не наращивайте поголовье без долгосрочных контрактов. Инвестируйте в роботизацию доения.', 'Хеджируйте цену форвардными контрактами на 30–40% объёма (приоритет — осень).', ], 'Для менеджеров по продажам кормов и оборудования': [ 'Приоритет: клиенты с II >80, OH >70.', 'Прогноз спроса: +2–3% в тоннах. Логистические окна: май и сентябрь.', 'Ужесточайте контроль дебиторки с предприятиями группы В.', ], 'Для инвесторов': [ 'M&A: фермы группы В по цене 0,5–0,7 годовой выручки с последующей модернизацией.', 'IRR новой фермы 1 200 коров — 9–11% при цене 34–35 руб./кг, что ниже WACC 14–15%. Без господдержки нецелесообразно.', ], }, }, }) const outPath = path.join('/tmp', 'DT_Russia_Example.docx') fs.writeFileSync(outPath, buf) console.log(`✓ Готово: ${outPath} (${(buf.length/1024).toFixed(0)} KB)`) } main().catch(e => { console.error(e); process.exit(1) })