import React from 'react';
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, LineChart, Line } from 'recharts';
const AdjustedLinearPlan = () => {
// Вхідні дані
const data = {
Instagram: {
subscribers: {
fact2024: 801556,
fact2025: 811833,
plan2026_original: 850000
},
reach: {
fact2024: 8074669,
fact2025_9months: 12000000
},
targetGrowth: 0.11 // 11% - середнє між 10-12%
},
Facebook: {
subscribers: {
fact2024: 778000,
fact2025: 970671,
plan2026_original: 1200000
},
reach: {
fact2024: 14685371,
fact2025_9months: 33914401
},
targetGrowth: 0.15 // 15% - помірне зростання
},
TikTok: {
subscribers: {
fact2024: 194100,
fact2025: 261278,
plan2026_original: 400000
},
reach: {
fact2024: 28000000,
fact2025_9months: 47270338
},
targetGrowth: null // Залишаємо лінійний розрахунок
}
};
const extrapolateTo12Months = (reach9months) => {
return Math.round(reach9months * (12/9));
};
const calculatePlatform = (platform, platformData) => {
const subs = platformData.subscribers;
const reach = platformData.reach;
const targetGrowth = platformData.targetGrowth;
const reach2025full = extrapolateTo12Months(reach.fact2025_9months);
let reach2026, subs2026, reachGrowth, subsGrowth, approach;
if (targetGrowth !== null) {
// Цільове зростання задано - розраховуємо назад
reach2026 = Math.round(reach2025full * (1 + targetGrowth));
reachGrowth = targetGrowth * 100;
// Розраховуємо необхідну кількість підписників
const reachPerSubscriber2025 = reach2025full / subs.fact2025;
subs2026 = Math.round(reach2026 / reachPerSubscriber2025);
subsGrowth = ((subs2026 - subs.fact2025) / subs.fact2025 * 100);
approach = 'Цільове зростання';
} else {
// Лінійний розрахунок (як для TikTok)
subs2026 = subs.plan2026_original;
const subsGrowthCoef = subs2026 / subs.fact2025;
reach2026 = Math.round(reach2025full * subsGrowthCoef);
reachGrowth = ((reach2026 - reach2025full) / reach2025full * 100);
subsGrowth = ((subsGrowthCoef - 1) * 100);
approach = 'Лінійний (пропорційно підписникам)';
}
return {
platform,
subs2024: subs.fact2024,
subs2025: subs.fact2025,
subs2026,
subs2026_original: subs.plan2026_original,
reach2024: reach.fact2024,
reach2025_9m: reach.fact2025_9months,
reach2025full,
reach2026,
reachGrowth: reachGrowth.toFixed(1),
subsGrowth: subsGrowth.toFixed(1),
approach,
subsAdjustment: subs2026 - subs.plan2026_original
};
};
const results = [
calculatePlatform('Instagram', data.Instagram),
calculatePlatform('Facebook', data.Facebook),
calculatePlatform('TikTok', data.TikTok)
];
// Дані для графіків
const reachChartData = [
{
year: '2024 факт',
Instagram: results[0].reach2024,
Facebook: results[1].reach2024,
TikTok: results[2].reach2024
},
{
year: '2025 (9 міс факт)',
Instagram: results[0].reach2025_9m,
Facebook: results[1].reach2025_9m,
TikTok: results[2].reach2025_9m
},
{
year: '2025 (повний рік)',
Instagram: results[0].reach2025full,
Facebook: results[1].reach2025full,
TikTok: results[2].reach2025full
},
{
year: '2026 (скоригований план)',
Instagram: results[0].reach2026,
Facebook: results[1].reach2026,
TikTok: results[2].reach2026
}
];
const subsChartData = [
{
year: '2024',
Instagram: results[0].subs2024,
Facebook: results[1].subs2024,
TikTok: results[2].subs2024
},
{
year: '2025',
Instagram: results[0].subs2025,
Facebook: results[1].subs2025,
TikTok: results[2].subs2025
},
{
year: '2026 (оригінальний)',
Instagram: results[0].subs2026_original,
Facebook: results[1].subs2026_original,
TikTok: results[2].subs2026_original
},
{
year: '2026 (скоригований)',
Instagram: results[0].subs2026,
Facebook: results[1].subs2026,
TikTok: results[2].subs2026
}
];
const formatNumber = (num) => {
return new Intl.NumberFormat('uk-UA').format(num);
};
const totalReach2025 = results.reduce((sum, r) => sum + r.reach2025full, 0);
const totalReach2026 = results.reduce((sum, r) => sum + r.reach2026, 0);
const totalGrowth = ((totalReach2026 - totalReach2025) / totalReach2025 * 100).toFixed(1);
return (
Скоригований план охоплень 2026
Лінійний сценарій з урахуванням цільових показників
{/* Обґрунтування */}
📋 Логіка коригування
Instagram
Цільове зростання: 11% (середнє між 10-12%)
Лінійний сценарій давав лише +4.7%. Для досягнення 11% зростання охоплень потрібно збільшити план підписників.
Facebook
Зростання знижено до 15%
Оригінальний план (+23.6%) був занадто амбітним. 15% - більш реалістичне зростання при стабільній команді.
TikTok
Залишається +53.1%
Агресивний, але досяжний план. TikTok має найбільший потенціал зростання для вашого контенту.
{/* Основна таблиця */}
План на 2026
| Платформа |
Підписники 2025 |
Підписники 2026 |
Зміна |
Охоплення 2025 |
Охоплення 2026 |
Зростання |
{results.map((row, idx) => (
| {row.platform} |
{formatNumber(row.subs2025)} |
{formatNumber(row.subs2026)}
{row.subsAdjustment !== 0 && (
{row.subsAdjustment > 0 ? '+' : ''}{formatNumber(row.subsAdjustment)}
)}
|
0 ? 'text-green-600 font-semibold' : 'text-red-600'}>
{row.subsGrowth > 0 ? '+' : ''}{row.subsGrowth}%
|
{formatNumber(row.reach2025full)} |
{formatNumber(row.reach2026)}
|
+{row.reachGrowth}%
|
))}
| ЗАГАЛОМ |
{formatNumber(results.reduce((s,r) => s + r.subs2025, 0))} |
{formatNumber(results.reduce((s,r) => s + r.subs2026, 0))} |
|
{formatNumber(totalReach2025)} |
{formatNumber(totalReach2026)} |
+{totalGrowth}%
|
{/* Порівняння: було/стало */}
Порівняння: оригінал vs скоригований план
{results.map((row, idx) => (
{row.platform}
Підписники (оригінал)
{formatNumber(row.subs2026_original)}
Підписники (скоригований)
{formatNumber(row.subs2026)}
{row.subsAdjustment !== 0 && (
{row.subsAdjustment > 0 ? '↑' : '↓'} {formatNumber(Math.abs(row.subsAdjustment))}
)}
Охоплення 2026
{formatNumber(row.reach2026)}
+{row.reachGrowth}%
))}
{/* Графік охоплень */}
Динаміка охоплень
formatNumber(value)} />
{/* Графік підписників */}
Динаміка підписників
formatNumber(value)} />
{/* Підсумок */}
✅ Підсумок скоригованого плану
Загальні показники
Охоплення 2025:
{formatNumber(totalReach2025)}
Охоплення 2026:
{formatNumber(totalReach2026)}
Зростання:
+{totalGrowth}%
Абсолютний приріст:
+{formatNumber(totalReach2026 - totalReach2025)}
Ключові зміни
- ✅ Instagram: зростання збільшено з 4.7% до 11%
- ✅ Facebook: зростання знижено з 23.6% до 15%
- ✅ TikTok: залишається 53.1% (найбільший потенціал)
-
📊 Загальне зростання: {totalGrowth}%
💡 Чому саме така модель:
- • Реалістична для стабільної команди та меншої кількості продуктів
- • Враховує різний потенціал кожної платформи
- • Instagram отримує фокус на якість охоплень, а не лише на підписників
- • Facebook - помірне зростання без надмірного тиску
- • TikTok використовує вірусний потенціал на максимум
);
};
export default AdjustedLinearPlan;