- มีนาคม 9, 2026 |
- Uncategorized
import { useState } from “react”;
import {
BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend,
PieChart, Pie, Cell, ResponsiveContainer, RadarChart, Radar,
PolarGrid, PolarAngleAxis, PolarRadiusAxis, Treemap
} from “recharts”;
const COLORS = [“#C0392B”,”#E74C3C”,”#E67E22″,”#F39C12″,”#27AE60″,”#1ABC9C”,”#2980B9″,”#3498DB”,”#8E44AD”,”#9B59B6″,”#2C3E50″,”#7F8C8D”];
const rawData = [
{ name: “ส่งเสริมนโยบายรัฐบาล”, short: “นโยบายรัฐ”, original: 527280400, extra: 1116405304.07, total: 1643685704.07 },
{ name: “เจ้าภาพจัดการแข่งขันนานาชาติ”, short: “เจ้าภาพ”, original: 314056160, extra: 2000000, total: 316056160 },
{ name: “จัดการแข่งขันกีฬาอาชีพ”, short: “กีฬาอาชีพ”, original: 200000000, extra: 23989196, total: 223989196 },
{ name: “กำกับดูแลกีฬามวยไทย”, short: “มวยไทย”, original: 130000000, extra: 54920600, total: 184920600 },
{ name: “สร้างกระแสการแข่งขันกีฬา”, short: “สร้างกระแส”, original: 40000000, extra: 210000000, total: 250000000 },
{ name: “พัฒนานักกีฬาสู่ความเป็นเลิศ”, short: “นักกีฬาเลิศ”, original: 1028606008, extra: 7623937.32, total: 1036229945.32 },
{ name: “นำวิทยาศาสตร์การกีฬา”, short: “วิทย์กีฬา”, original: 161914919.85, extra: 1880250, total: 163795169.85 },
{ name: “ทุนการศึกษา”, short: “ทุนศึกษา”, original: 80000000, extra: 25497913.25, total: 105497913.25 },
{ name: “ระบบจัดสวัสดิการ”, short: “สวัสดิการ”, original: 30000000, extra: 0, total: 30000000 },
{ name: “สนับสนุนเงินรางวัล”, short: “เงินรางวัล”, original: 612802500, extra: 0, total: 612802500 },
{ name: “พัฒนาบุคลากรกีฬา”, short: “บุคลากร”, original: 57000000, extra: 958918.91, total: 57958918.91 },
{ name: “การบริหาร”, short: “บริหาร”, original: 164500000, extra: 30427414.68, total: 194927414.68 },
];
const grandTotal = 4819863522.08;
const originalTotal = 3346159987.85;
const extraTotal = 1473703534.23;
const fmt = (v) => {
if (v >= 1e9) return `${(v / 1e9).toFixed(2)}B`;
if (v >= 1e6) return `${(v / 1e6).toFixed(1)}M`;
return `${(v / 1e3).toFixed(0)}K`;
};
const fmtFull = (v) =>
v.toLocaleString(“th-TH”, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
const overrunPct = (d) =>
d.original > 0 ? ((d.extra / d.original) * 100).toFixed(1) : “∞”;
const riskData = rawData.map((d) => ({
…d,
pct: ((d.total / grandTotal) * 100).toFixed(2),
overrun: parseFloat(overrunPct(d)),
riskLevel:
d.extra / d.original > 2 ? “สูงมาก” :
d.extra / d.original > 0.5 ? “สูง” :
d.extra / d.original > 0.1 ? “ปานกลาง” : “ต่ำ”,
riskColor:
d.extra / d.original > 2 ? “#C0392B” :
d.extra / d.original > 0.5 ? “#E67E22” :
d.extra / d.original > 0.1 ? “#F39C12” : “#27AE60”,
}));
const radarData = [
{ subject: “นโยบายรัฐ”, value: 34 },
{ subject: “นักกีฬาเลิศ”, value: 21 },
{ subject: “เงินรางวัล”, value: 13 },
{ subject: “เจ้าภาพ”, value: 7 },
{ subject: “สร้างกระแส”, value: 5 },
{ subject: “กีฬาอาชีพ”, value: 5 },
];
const CustomTooltip = ({ active, payload, label }) => {
if (!active || !payload?.length) return null;
return (
{label}
{payload.map((p, i) => (
{p.name}: ฿{fmt(p.value)}
))}
);
};
const PieTooltip = ({ active, payload }) => {
if (!active || !payload?.length) return null;
const d = payload[0];
return (
{d.name}
฿{fmt(d.value)}
{((d.value / grandTotal) * 100).toFixed(1)}%
);
};
const MetricCard = ({ label, value, sub, accent, icon }) => (
{label}
{sub &&
}
);
const RiskBadge = ({ level, color }) => (
{level}
);
const TABS = [“ภาพรวม”, “การกระจายงบ”, “ความเสี่ยง”, “บทวิเคราะห์”];
export default function App() {
const [tab, setTab] = useState(0);
const pieData = rawData.map((d, i) => ({ name: d.short, value: d.total, fill: COLORS[i] }));
return (
กองทุนพัฒนาการกีฬาแห่งชาติ
Dashboard งบประมาณประจำปี พ.ศ.2569
วิเคราะห์โดยทีม Financial & Policy Analytics · ข้อมูล ณ วันที่ 27 มกราคม 2569
{/* TABS */}
))}
{/* TAB 0 – OVERVIEW */}
{tab === 0 && (
📊 งบประมาณรายกิจกรรม (ตั้งต้น vs เพิ่มเติม)
} />
{/* Pie */}
🥧 สัดส่วนงบประมาณรวมแต่ละกิจกรรม
{pieData.map((entry, i) => (
))}
} />
{d.short}
))}
{/* Budget overrun highlight */}
⚠️ กิจกรรมที่มีการปรับงบสูงสุด (% ของงบตั้งต้น)
{riskData
.filter(d => d.extra > 0)
.sort((a, b) => b.overrun – a.overrun)
.slice(0, 5)
.map((d, i) => (
เพิ่ม: ฿{fmt(d.extra)}
))}
)}
{/* TAB 1 – DISTRIBUTION */}
{tab === 1 && (
🎯 การจัดสรรตามกลุ่มยุทธศาสตร์
📐 สัดส่วนงบตั้งต้น vs เพิ่มเติม
{ label: “งบตั้งต้น”, value: originalTotal, pct: 69.4, color: “#2980B9” },
{ label: “งบเพิ่มเติม”, value: extraTotal, pct: 30.6, color: “#E74C3C” }
].map((item, i) => (
{item.pct}%
))}
⚠️ งบเพิ่มเติมสูงถึง 44% ของงบตั้งต้น
สะท้อนการวางแผนที่อาจต้องปรับปรุง
{/* Table */}
📋 ตารางงบประมาณครบถ้วน
{riskData.map((d, i) => ())}
| {h} | |||||
|---|---|---|---|---|---|
| {d.name} | {fmtFull(d.original)} | 0 ? “#E67E22” : “#475569”, fontFamily: “monospace” }}> {d.extra > 0 ? fmtFull(d.extra) : “-“} |
{fmtFull(d.total)} | {d.pct}% | |
| Grand Total | {fmtFull(originalTotal)} | {fmtFull(extraTotal)} | {fmtFull(grandTotal)} | 100% |
)}
{/* TAB 2 – RISK */}
{tab === 2 && (
{ level: “สูงมาก”, color: “#C0392B”, icon: “🔴”, desc: “งบเพิ่มเติม > 200% ของงบตั้งต้น”, items: riskData.filter(d => d.overrun > 200) },
{ level: “สูง”, color: “#E67E22”, icon: “🟠”, desc: “งบเพิ่มเติม 50-200% ของงบตั้งต้น”, items: riskData.filter(d => d.overrun > 50 && d.overrun <= 200) }, { level: “ปานกลาง”, color: “#F39C12”, icon: “🟡”, desc: “งบเพิ่มเติม 10-50% ของงบตั้งต้น”, items: riskData.filter(d => d.overrun > 10 && d.overrun <= 50) }, { level: “ต่ำ”, color: “#27AE60”, icon: “🟢”, desc: “งบเพิ่มเติมน้อยกว่า 10%”, items: riskData.filter(d => d.overrun <= 10) }, ].map((r, i) => (
ความเสี่ยง{r.level}
{r.items.length} รายการ
{r.desc}
{r.items.map((item, j) => (
))}
))}
🚨 ประเด็นความเสี่ยงสำคัญ
{[
{
title: “การสร้างกระแสการแข่งขันกีฬา: งบเพิ่ม +525%”,
desc: “งบตั้งต้นเพียง 40M บาท แต่ได้รับงบเพิ่มเติมสูงถึง 210M บาท แสดงถึงการประเมินค่าใช้จ่ายต่ำเกินไปอย่างมีนัยสำคัญ หรืออาจมีการเปลี่ยนแปลงขอบเขตงานกลางปี”,
color: “#C0392B”
},
{
title: “ส่งเสริมนโยบายรัฐบาล: งบเพิ่ม +211.8% (1.1B บาท)”,
desc: “เป็นกิจกรรมที่มีงบเพิ่มเติมสูงที่สุดในเชิงมูลค่า การอนุมัติงบเพิ่มกว่า 1 พันล้านบาทโดยไม่มีรายละเอียดชัดเจน อาจส่งสัญญาณความเสี่ยงด้านความโปร่งใส”,
color: “#C0392B”
},
{
title: “กำกับดูแลมวยไทย: งบเพิ่ม +42.2%”,
desc: “อาจสะท้อนปัญหาการบังคับใช้กฎหมายที่ซับซ้อนกว่าที่วางแผนไว้ ต้องติดตามผลลัพธ์ในการกำกับดูแล”,
color: “#E67E22”
},
{
title: “สนับสนุนเงินรางวัล: 612M บาท ไม่มีงบเพิ่มเติม”,
desc: “แม้ไม่มีงบเพิ่มเติม แต่ขนาดงบสูงเป็นอันดับ 3 การจ่ายเงินรางวัลควรมีเกณฑ์และ KPI ชัดเจน เพื่อป้องกันการใช้งบประมาณโดยไม่สร้างผลลัพธ์ที่วัดได้”,
color: “#F39C12”
}
].map((item, i) => (
))}
)}
{/* TAB 3 – ANALYSIS */}
{tab === 3 && (
{
icon: “🔍”, title: “บทสรุปผู้บริหาร (Executive Summary)”, color: “#3498DB”,
content: `กองทุนพัฒนาการกีฬาแห่งชาติมีงบประมาณรวมทั้งสิ้น 4,819,863,522 บาท สำหรับปีงบประมาณ 2569 โดยมีการเบิกจ่ายใน 12 กิจกรรมหลัก น่าสังเกตว่างบเพิ่มเติมสูงถึง 1,473 ล้านบาท หรือ 44% ของงบตั้งต้น ซึ่งสูงมากเมื่อเทียบกับมาตรฐานการบริหารงบประมาณภาครัฐทั่วไปที่ควรอยู่ในระดับไม่เกิน 10-15%`
},
{
icon: “🎯”, title: “การจัดลำดับความสำคัญ”, color: “#27AE60”,
content: `งบประมาณกระจุกตัวใน 3 กิจกรรมหลักคิดเป็น 68.6% ของงบรวม ได้แก่ (1) ส่งเสริมนโยบายรัฐบาล 34.1%, (2) พัฒนานักกีฬาสู่ความเป็นเลิศ 21.5%, และ (3) สนับสนุนเงินรางวัล 12.7% สะท้อนแนวทางที่เน้นความเป็นเลิศและนโยบายระดับชาติ แต่อาจขาดสมดุลในด้านการพัฒนาฐานราก เนื่องจากงบทุนการศึกษาและสวัสดิการมีสัดส่วนต่ำเพียง 2.8%`
},
{
icon: “⚠️”, title: “ความเสี่ยงด้านการบริหารงบประมาณ”, color: “#E67E22”,
content: `มีความเสี่ยง 4 ประการหลัก: (1) ความเสี่ยงด้านการวางแผน – งบ 4 รายการมีงบเพิ่มเติมสูงกว่า 40% แสดงถึงการประมาณการที่ขาดความแม่นยำ (2) ความเสี่ยงด้านความโปร่งใส – งบ “ส่งเสริมนโยบายรัฐบาล” มีการปรับเพิ่มมากกว่า 1,116 ล้านบาทโดยไม่ระบุรายละเอียด (3) ความเสี่ยงด้านการกำกับดูแล – กิจกรรมมวยไทยที่ต้องการงบเพิ่ม 42% อาจสะท้อนความท้าทายเชิงโครงสร้าง (4) ความเสี่ยงด้านผลลัพธ์ – งบเงินรางวัล 612 ล้านควรเชื่อมโยงกับ KPI ที่วัดได้ชัดเจน`
},
{
icon: “💡”, title: “ข้อเสนอแนะเชิงนโยบาย”, color: “#9B59B6”,
content: `(1) นำระบบ Zero-Based Budgeting มาใช้ เพื่อตรวจสอบความจำเป็นของทุกรายการก่อนตั้งงบ (2) กำหนด KPI และตัวชี้วัดผลสำเร็จให้ชัดเจนในทุกกิจกรรม โดยเฉพาะกิจกรรมที่ใช้งบสูง (3) สร้างระบบ Early Warning ที่แจ้งเตือนเมื่องบเพิ่มเติมเกิน 20% เพื่อให้คณะกรรมการ review ก่อนอนุมัติ (4) ปรับสมดุลงบประมาณโดยเพิ่มสัดส่วนด้านการพัฒนาฐานราก เช่น ทุนการศึกษา บุคลากร และสวัสดิการ (5) เพิ่มความโปร่งใสในการรายงานผลการดำเนินงานรายไตรมาสต่อสาธารณะ`
},
{
icon: “📌”, title: “จุดแข็งของการบริหาร”, color: “#1ABC9C”,
content: `(1) การจัดสรรงบด้านพัฒนานักกีฬาสู่ความเป็นเลิศ (1,036M) สะท้อนความมุ่งมั่นสู่เวทีนานาชาติ (2) การลงทุนด้านวิทยาศาสตร์การกีฬา (163M) แสดงถึงการใช้นวัตกรรมในการพัฒนาประสิทธิภาพ (3) งบ 5 รายการไม่มีงบเพิ่มเติมหรือมีน้อยมาก แสดงว่าบางกิจกรรมมีการวางแผนที่ดี (4) การครอบคลุม 12 กิจกรรมใน 4 มิติหลัก ตั้งแต่ฐานรากถึงความเป็นเลิศ`
}
].map((section, i) => (
{section.title}
{section.content}
))}
⚡ สรุปคำแนะนำเร่งด่วน: งบเพิ่มเติม 44% ถือเป็นสัญญาณเตือนที่ไม่ควรมองข้าม
แนะนำให้คณะกรรมการทบทวนกระบวนการตั้งงบและระบบกำกับดูแลภายในโดยด่วน
)}
);
}