# DairyTrends Report Generator — состояние на 09.06.2026 ## Два модуля в Gitea | Модуль | Gitea | Сервер | |--------|-------|--------| | **dairy-report-generator** | https://git.zeroday.su/admin/dairy-report-generator | `/var/www/dairy-report-generator/` | | **dairynews-nextjs** | https://git.zeroday.su/admin/dairynews-nextjs | `/var/www/dairynews/` | | **Сервер** | dev2 | `77.222.43.248` | Связь: `dairynews-nextjs` подключает `dairy-report-generator` как `file:../dairy-report-generator` (symlink в node_modules). --- ## Модуль 1: dairy-report-generator ### Что делает Генерирует DOCX отчёты в стиле DairyTrends. Принимает конфиг с данными, отдаёт Buffer. ### Структура ``` src/ data/palette.js ← DT-палитра (#CC3300, серые, зелёный) charts/ chart1.js ← Линейный: цена + себестоимость + 3 сценария + барчарт маржи chart2.js ← Две панели: горизонт. бары (красный=переработчик, серый=производитель) + верт. объём chart3.js ← Горизонт. EBITDA: цвет по группе А/Б/В + легенда chart4.js ← Две панели: серо-красный стиль; режим independentScales для регионов chart5.js ← Сценарии маржи: зелёный/красный/серый generators/ document.js ← Сборка DOCX: хедер (DT красный квадрат), таблицы с красным заголовком, разделы index.js ← Entry point: generateReport(config) → Buffer examples/ russia.js ← Полный пример для РФ ``` ### Дизайн (финальный) - DT-квадрат в хедере: **красный** (#CC3300) фон, белый текст - Заголовки таблиц: **красный** фон, белый текст - Основной красный цвет: `#CC3300` (ярче чем было #C0272D) - Chart4: серые бары для всех, красный для isHighlight --- ## Модуль 2: dairynews-nextjs (new.dairy-news.ru) ### Ключевые файлы ``` src/lib/dairytrends-report-config.ts ← buildReportConfig() — данные + тексты src/app/admin/dairytrends/reports/ ← Страница генерации отчётов src/app/admin/content/images/ ← AI-картинки (gpt-image-2) src/app/api/admin/dairytrends/reports/generate/route.ts src/app/api/admin/content/images/generate/route.ts scripts/sync-region-index.js ← Cron пн 06:00 — цены из dn scripts/sync-yield-stats.js ← Cron пн 06:30 — надой/производство/поголовье из dn ``` ### Данные в PostgreSQL (dev2) | Таблица | Источник | Записей | Период | |---------|----------|---------|--------| | DairyIndex (DAIRY_INDEX_RU) | region_index dn MySQL | 876 | 2023–2026 | | DairyIndex (MILK_YIELD) | refion_stat_msx dn MySQL | ~1330 | 2023–2026 | | DairyIndex (MILK_PRODUCTION) | refion_stat_msx | ~1330 | 2023–2026 | | DairyIndex (COW_COUNT) | refion_stat_msx | ~1330 | 2023–2026 | | Organization + OrganizationFinancial | СБИС вручную | 10 орг, год 2024 | | ### Автосинхронизация (cron на dev2) ``` 0 6 * * 1 node scripts/sync-region-index.js # цены по ФО + РФ 30 6 * * 1 node scripts/sync-yield-stats.js # надой, производство, поголовье ``` ### KPI блок обложки (динамический) | Карточка | Источник | |----------|----------| | Закуп. цена (базовый) | scenarios.base min–max из DairyIndex | | Рост производства I кв. | +2,1% (Росстат, статичный до добавления PRODUCTION_VOLUME) | | Надой / корову | DairyIndex MILK_YIELD × 365, по regionCode | | Ключевая ставка ЦБ | 14,5% (статичный, обновлять вручную при изменении) | ### Структура отчёта (7 разделов) 1. Обложка: KPI × 4 + Главный вывод 2. Ключевые выводы (5 пунктов) 3. Введение и источники 4. Методика + Таблица 1 (допущения) 5. Ретроспектива + **Таблица 2** (кварталы 2024/2025/2026) + Рисунок 1 6. Анализ предприятий (5.1 лидеры + Рис.2, 5.2 кластеры + Рис.3, callout, Рис.4) 7. Прогноз + Рис.5 + **Таблица 3** (3 сценария × 3 кв. + Пр-во тыс.т) 8. Рекомендации (3 аудитории) --- ## Smoke-тест ```bash cd /var/www/dairynews bash scripts/smoke-report.sh rf # РФ bash scripts/smoke-report.sh fo:СКФО # Северо-Кавказский bash scripts/smoke-report.sh fo:СЗФО # Северо-Западный bash scripts/smoke-report.sh fo:ПФО # Приволжский ``` ## Деплой после изменений ```bash # После правок в dairynews-nextjs или dairytrends-report-config.ts: screen -dmS build bash -c "cd /var/www/dairynews && NODE_ENV=production node_modules/.bin/next build > /tmp/build.log 2>&1; pm2 restart dairynews; echo DONE >> /tmp/build.log" # После правок только в dairy-report-generator (charts, document): pm2 restart dairynews # symlink — достаточно перезапуска ``` --- ## Backlog 1. **Организации за 2025** — данные в OrganizationFinancial только за 2024. Нужно добавить при появлении отчётности СБИС. 2. **Региональный отчёт по области** (Вологда и т.д.) — chart4 готов с independentScales=true, но нужно заполнять regionComparison с надоем vs ценой из DairyIndex. 3. **МЗЫ-отчёт** — хозяйство Агромилк, нужна отдельная схема данных. 4. **Ключевая ставка ЦБ** — сейчас статичная (14,5%), хорошо бы парсить с cbr.ru автоматически. 5. **Рост производства** — сейчас статичный +2,1%, нужна модель с объёмами производства по ФО. --- ## Инфраструктура - **BITRIX_MYSQL_URL**: `mysql://dt_reader:DT_reader_2026!@188.127.243.10:3306/dn_ru` - **DATABASE_URL**: `postgresql://dairynews_user:dn_secret_2026@localhost:5432/dairynews` - **AIGUOGUO_API_KEY**: в `.env` на dev2 - **Gitea token**: `8ad58dd00430d58eb9415b50a01c31b1405b5490`