v-slayd-po-prikazam-dobavit/index.html

214 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ru" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Аналитический обзор деятельности ОЦО ЮС · 2025–2026</title>
<script src="https://cdn.jsdelivr.net/npm/pptxgenjs@3.12.0/dist/pptxgen.bundle.js"></script>
<link rel="stylesheet" href="design-system/kt-ai-fonts.css">
<link rel="stylesheet" href="design-system/kt-ai-tokens.css">
<link rel="stylesheet" href="design-system/kt-ai-components.css">
<link rel="stylesheet" href="design-system/kt-ai-page.css">
<style>
* { margin: 0; box-sizing: border-box; }
body { font-family: var(--kt-ai-font-sans); background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); color: #1e293b; }
.slide { display: none; min-height: 100vh; padding: 6vh 8vw; flex-direction: column; justify-content: center; position: relative; }
.slide.on { display: flex; }
.slide h1 { font-size: clamp(32px, 5vw, 56px); margin-bottom: 20px; color: #0f172a; }
.slide h2 { font-size: clamp(26px, 4vw, 42px); margin-bottom: 18px; color: #0f172a; }
.slide li { font-size: clamp(16px, 2.4vw, 24px); line-height: 1.7; margin-bottom: 12px; list-style: none; padding-left: 24px; position: relative; color: #334155; }
.slide li::before { content: ""; position: absolute; left: 0; top: .55em; width: 10px; height: 10px; border-radius: 2px; background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); }
.num { position: fixed; bottom: 18px; right: 22px; color: #64748b; font-size: 14px; }
.nav { position: fixed; bottom: 14px; left: 22px; display: flex; gap: 8px; }
.nav button { border: 1px solid #cbd5e1; background: #fff; color: #334155; border-radius: 8px; padding: 8px 14px; cursor: pointer; font-size: 14px; }
.nav .pptx { border-color: #0ea5e9; color: #0284c7; background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%); }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin: 30px 0; }
.stat-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 16px; padding: 24px; text-align: center; box-shadow: 0 4px 6px rgba(0,0,0,0.05); }
.stat-number { font-size: clamp(42px, 8vw, 72px); font-weight: bold; background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 8px; }
.stat-label { font-size: 16px; color: #64748b; line-height: 1.5; }
.chart-wrap { background: #fff; border: 1px solid #e2e8f0; border-radius: 20px; padding: 40px; margin: 30px auto; max-width: 800px; width: 100%; box-shadow: 0 8px 16px rgba(0,0,0,0.08); }
.chart { display: flex; align-items: flex-end; justify-content: center; gap: 50px; height: 300px; padding: 20px; }
.bar { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; width: 130px; }
.bar-fill { width: 100%; border-radius: 12px 12px 0 0; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 18px; color: #fff; transition: height 0.8s ease; position: relative; }
.bar-fill.year-2025 { background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); }
.bar-fill.year-2026 { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
.bar-value { position: absolute; top: -30px; font-size: 22px; font-weight: bold; color: #0f172a; }
.bar-label { margin-top: 14px; font-size: 16px; font-weight: 600; color: #334155; text-align: center; }
.bar-label span { display: block; font-size: 14px; color: #64748b; font-weight: normal; margin-top: 4px; }
.summary { text-align: center; margin-top: 24px; font-size: 18px; color: #475569; }
.summary strong { color: #0284c7; }
.highlight { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); padding: 16px 24px; border-radius: 12px; border-left: 4px solid #f59e0b; margin: 20px 0; }
.highlight strong { color: #92400e; }
@media print {
.nav, .num { display: none; }
.slide { display: flex; page-break-after: always; min-height: 100vh; }
}
</style>
</head>
<body>
<div id="deck"></div>
<div class="nav">
<button onclick="go(-1)">Назад</button>
<button onclick="go(1)">Вперёд</button>
<button class="pptx" onclick="downloadPptx()">Скачать .pptx</button>
</div>
<div class="num" id="num"></div>
<script>
var SLIDES = [
{
title: "Аналитический обзор деятельности",
subtitle: "ОЦО ЮС · 2025–2026",
type: "title"
},
{
title: "Статистика по приказам",
type: "stats",
stats: [
{ number: "4910", label: "приказов поступило на согласование за весь 2025 год" },
{ number: "409", label: "средняя нагрузка в месяц" },
{ number: "37", label: "документов на 1 работника в месяц" }
],
highlight: "Рост на 6 приказов (+0,2%) при сравнении сопоставимых периодов (8 месяцев)"
},
{
title: "Статистика по приказам за 8 месяцев",
type: "chart",
chart: {
data: [
{ year: "2025", value: 2895, label: "8 месяцев" },
{ year: "2026", value: 2901, label: "8 месяцев" }
]
},
summary: "Сопоставимые периоды: <strong>2895</strong> → <strong>2901</strong> приказ (+6, +0,2%)"
},
{
title: "Штатная численность и нагрузка",
stats: [
{ number: "50", label: "штатных работников (32 — фронт-офис)" },
{ number: ">5 000", label: "документов поступило на согласование за 2025 год" },
{ number: "409", label: "документов в среднем в месяц" },
{ number: "37", label: "документов в месяц на одного работника" }
]
},
{
title: "Проводимая работа по автоматизации",
bullets: [
"Распоряжение № 162 от 23.07.2025 — Внедрение ИИ-агентов в процессы ОЦО ЮС",
"Анализ юридических процессов для автоматизации с использованием ИИ",
"Автоматическое распределение заявок между юристами в KT Doc"
]
},
{
title: "Выводы и предложения",
bullets: [
"В расчёт не включены трудозатраты на совещания, срочные поручения, судебные споры",
"Работники фронт-офисов задействованы в согласовании распорядительных документов",
"Проводится работа по внедрению ИИ-инструментов для оптимизации процессов"
]
}
];
var cur = 0;
function render() {
var deck = document.getElementById("deck");
deck.innerHTML = SLIDES.map(function (s, i) {
if (s.type === "title") {
return '<section class="slide' + (i === cur ? " on" : "") + '" style="text-align:center;align-items:center;">' +
'<h1 style="margin-bottom:12px;">' + s.title + '</h1>' +
'<p style="font-size:22px;color:#64748b;margin-top:0;">' + (s.subtitle || '') + '</p>' +
'</section>';
} else if (s.type === "stats") {
var cards = s.stats.map(function(st) {
return '<div class="stat-card"><div class="stat-number">' + st.number + '</div><div class="stat-label">' + st.label + '</div></div>';
}).join("");
return '<section class="slide' + (i === cur ? " on" : "") + '">' +
'<h2>' + s.title + '</h2>' +
'<div class="stat-grid">' + cards + '</div>' +
(s.highlight ? '<div class="highlight"><strong>' + s.highlight + '</strong></div>' : '') +
'</section>';
} else if (s.type === "chart") {
var maxVal = Math.max.apply(null, s.chart.data.map(function(d) { return d.value; }));
var bars = s.chart.data.map(function(d) {
var height = (d.value / maxVal) * 200;
return '<div class="bar">' +
'<div class="bar-value">' + d.value + '</div>' +
'<div class="bar-fill year-' + d.year + '" style="height:' + height + 'px;"></div>' +
'<div class="bar-label">' + d.year + ' год<span>' + d.label + '</span></div>' +
'</div>';
}).join("");
return '<section class="slide' + (i === cur ? " on" : "") + '">' +
'<h2>' + s.title + '</h2>' +
'<div class="chart-wrap"><div class="chart">' + bars + '</div></div>' +
'<div class="summary">' + s.summary + '</div>' +
'</section>';
} else {
return '<section class="slide' + (i === cur ? " on" : "") + '">' +
'<h2>' + s.title + '</h2><ul>' +
s.bullets.map(function (b) { return "<li>" + b + "</li>"; }).join("") + "</ul></section>";
}
}).join("");
document.getElementById("num").textContent = (cur + 1) + " / " + SLIDES.length;
}
function go(d) { cur = Math.min(SLIDES.length - 1, Math.max(0, cur + d)); render(); }
document.addEventListener("keydown", function (e) {
if (e.key === "ArrowRight" || e.key === " ") go(1);
if (e.key === "ArrowLeft") go(-1);
});
function downloadPptx() {
var p = new PptxGenJS();
p.defineLayout({ name: "W", width: 13.33, height: 7.5 });
p.layout = "W";
SLIDES.forEach(function (s) {
var sl = p.addSlide();
sl.background = { color: "F8FAFC" };
if (s.type === "title") {
sl.addText(s.title, { x: 0.7, y: 2.5, w: 12, h: 1.5, fontSize: 44, bold: true, color: "0F172A", align: "center" });
sl.addText(s.subtitle || "", { x: 0.7, y: 4.2, w: 12, h: 0.8, fontSize: 24, color: "64748B", align: "center" });
} else if (s.type === "stats") {
sl.addText(s.title, { x: 0.7, y: 0.4, w: 12, h: 1, fontSize: 36, bold: true, color: "0F172A" });
s.stats.forEach(function(st, idx) {
var y = 1.6 + (idx * 1.4);
sl.addText(st.number, { x: 1.0, y: y, w: 3, h: 0.8, fontSize: 48, bold: true, color: "0EA5E9" });
sl.addText(st.label, { x: 4.2, y: y + 0.2, w: 8, h: 0.6, fontSize: 18, color: "475569" });
});
if (s.highlight) {
sl.addText(s.highlight, { x: 0.7, y: 6.2, w: 12, h: 0.6, fontSize: 16, italic: true, color: "92400E", fill: { color: "FEF3C7" } });
}
} else if (s.type === "chart") {
sl.addText(s.title, { x: 0.7, y: 0.4, w: 12, h: 1, fontSize: 36, bold: true, color: "0F172A" });
var chartData = s.chart.data.map(function(d) {
return { name: d.year + ' год', value: d.value, category: d.year };
});
sl.addChart(pptxgenjs.ChartType.COLUMN, chartData, {
x: 1.2, y: 1.8, w: 10.5, h: 4.5,
title: "Количество приказов",
showLegend: false,
colors: ["0EA5E9", "8B5CF6"],
barGap: 40,
labelColor: "475569",
axisLineColor: "CBD5E1",
showValue: true,
valueColor: "0F172A",
fontSize: 16
});
sl.addText(s.summary.replace(/<[^>]*>/g, ''), { x: 0.7, y: 6.5, w: 12, h: 0.5, fontSize: 14, color: "475569", align: "center" });
} else {
sl.addText(s.title, { x: 0.7, y: 0.4, w: 12, h: 1, fontSize: 36, bold: true, color: "0F172A" });
sl.addText(s.bullets.map(function (b) { return { text: b, options: { bullet: true, breakLine: true } }; }),
{ x: 0.9, y: 1.8, w: 11.5, h: 5, fontSize: 18, color: "334155", lineSpacingMultiple: 1.6 });
}
});
p.writeFile({ fileName: "Analiticheskiy_obzor_OCO_YuS_2025-2026.pptx" });
}
render();
</script>
</body>
</html>