This repository has been archived on 2026-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
client-advocate/dashboard/slides.html
2026-05-22 13:29:28 +05:00

271 lines
14 KiB
HTML
Raw 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">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/>
<title>Адвокат клиента — Презентация</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reset.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/theme/black.css" id="theme"/>
<style>
.reveal { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; }
.reveal h1, .reveal h2, .reveal h3 { color: #38bdf8; text-transform: none; letter-spacing: -0.5px; }
.reveal h1 { font-size: 2.0em; }
.reveal h2 { font-size: 1.5em; }
.reveal h3 { font-size: 1.15em; color: #f0abfc; }
.reveal table { font-size: 0.55em; border-collapse: collapse; width: 100%; }
.reveal table th, .reveal table td { border: 1px solid #334155; padding: 6px 10px; text-align: left; }
.reveal table th { background: #1e293b; }
.reveal small { opacity: 0.6; font-size: 0.55em; }
.reveal .quote { font-style: italic; color: #cbd5e1; border-left: 3px solid #38bdf8; padding-left: 12px; margin: 16px 0; font-size: 0.7em; }
.reveal .badge { padding: 3px 10px; border-radius: 12px; font-size: 0.55em; font-weight: 700; }
.reveal .BLACK { background: #0f172a; color: #f1f5f9; border: 1px solid #475569; }
.reveal .RED { background: #7f1d1d; color: #fecaca; }
.reveal .YELLOW { background: #713f12; color: #fde68a; }
.reveal .GREEN { background: #14532d; color: #bbf7d0; }
.reveal pre { font-size: 0.45em; }
.reveal code { color: #f0abfc; }
.reveal ul li { margin: 6px 0; font-size: 0.75em; }
.reveal .small-list li { font-size: 0.6em; }
.reveal .footnote { position: absolute; bottom: 12px; right: 24px; font-size: 0.4em; opacity: 0.5; }
.reveal .twocol { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }
.reveal .metric { font-size: 2.5em; font-weight: 700; color: #38bdf8; }
.reveal .metric-label { font-size: 0.55em; opacity: 0.7; }
.reveal section.title-slide { background: linear-gradient(135deg, #0c4a6e, #312e81); }
</style>
</head>
<body>
<div class="reveal"><div class="slides">
<!-- 1. Title -->
<section class="title-slide">
<h1>⚖️ AI-агент «Адвокат клиента»</h1>
<p>Проактивная защита клиентов Kazakhtelecom от повторных обращений</p>
<p><small>ДУКО · Hackathon 22.05.2026 · MVP Iteration 1</small></p>
<p><small>Камunda 7 · Spring Boot · Python · PostgreSQL</small></p>
</section>
<!-- 2. Problem -->
<section>
<h2>Проблема</h2>
<p class="quote">Клиенты обращаются повторно по одному вопросу. Система реактивна, не видит истории, переводит между службами без результата.</p>
<table>
<thead><tr><th>Кейс</th><th>Обращений</th><th>Период</th><th>Каналы</th></tr></thead>
<tbody>
<tr><td>№1</td><td><b>98</b></td><td>16.01–28.08.2025</td><td>4 канала</td></tr>
<tr><td>№6</td><td><b>59</b></td><td>09.07–02.10.2025</td><td>5 каналов</td></tr>
<tr><td>№3</td><td><b>46</b></td><td>21.01–18.12.2025</td><td>3 канала</td></tr>
<tr><td>№5</td><td>15</td><td>18.02–10.11.2025</td><td>3 канала</td></tr>
<tr><td>№2/4</td><td>22</td><td>2025 год</td><td>5 каналов</td></tr>
<tr><td>№7</td><td>21</td><td>27.01–10.09.2025</td><td>4 канала</td></tr>
</tbody>
</table>
<p><small>FCR ~45%, churn детракторов ~18%, NPS -35</small></p>
</section>
<!-- 3. Solution -->
<section>
<h2>Решение</h2>
<p class="quote">AI-агент видит историю клиента поперёк каналов, классифицирует боль, маршрутизирует в правильный департамент, контролирует до закрытия — <b>без повторного звонка клиента</b>.</p>
<ul>
<li>🎯 Детекция аномалий — количественные + качественные + канальные триггеры</li>
<li>🧠 AI-классификация: категория боли + приоритет (🟢🟡🔴⚫)</li>
<li>🚦 Маршрутизация → ASC / NetMon / Finance / СТПК / КЦ</li>
<li>📱 Проактивный контакт через WhatsApp/SMS</li>
<li>👤 Human-in-the-loop для ⚫ ЧЁРНЫХ кейсов</li>
</ul>
</section>
<!-- 4. Architecture -->
<section>
<h2>Архитектура</h2>
<pre><code>┌── ИСТОЧНИКИ ─────────────────────────────────────┐
│ CRM · КЦ-160 · Omilia · WhatsApp · eOtinish │
└────────────────────┬─────────────────────────────┘
│ Kafka (appeal.created, ticket.closed)
▼
┌────────────────────┐
│ CAMUNDA 7 ENGINE │ ← BPMN-оркестратор
│ client-advocate- │
│ main + route-to- │
│ department │
└─────────┬──────────┘
│ External Task polling
┌────────────┴────────────┐
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ Java Workers │←───────→│ AI Service │
│ (Spring Boot)│ REST │ (FastAPI) │
│ 18 handlers │ │ sentiment+class. │
└──────┬───────┘ └──────────────────┘
│
▼
┌──────────────┐ ┌────────────────────┐
│ PostgreSQL │ │ Mock Integrations │
│ 5 tables │ │ CRM·ASC·NetMon·WA │
└──────────────┘ └────────────────────┘</code></pre>
</section>
<!-- 5. BPMN -->
<section>
<h2>BPMN-процесс</h2>
<pre><code>[Старт] → EnrichProfile → ClassifyPain → ⟨Приоритет?⟩
├─ 🟢 GREEN → StandardHandling
├─ 🟡 YELLOW → NotifySupervisor → Queue → ⏱ SLA 4h
├─ 🔴 RED → RouteToDept → ProactiveContact → Control
└─ ⚫ BLACK → HumanTask(директор ДУКО) → PersonalEscal
↓
NotifyResolved → CSAT → ⟨Доволен?⟩
├─ Да → Close
└─ Нет → Reopen (priority+1)</code></pre>
<p><small>2 BPMN-процесса · 18 external task workers · 5 SLA-таймеров</small></p>
</section>
<!-- 6. Priority logic -->
<section>
<h2>Логика приоритезации</h2>
<table>
<thead><tr><th>Приоритет</th><th>Условия</th><th>Действие</th></tr></thead>
<tbody>
<tr><td><span class="badge GREEN">🟢 GREEN</span></td><td>1–2 обращения</td><td>Стандартная обработка</td></tr>
<tr><td><span class="badge YELLOW">🟡 YELLOW</span></td><td>3–4 обр. / SLA &gt;24ч / sentiment &lt;−0.5</td><td>Уведомить супервайзера, приоритет в очереди</td></tr>
<tr><td><span class="badge RED">🔴 RED</span></td><td>5+ обр. / открытая заявка + новая</td><td>Автоэскалация, проактивный контакт, компенсация</td></tr>
<tr><td><span class="badge BLACK">⚫ BLACK</span></td><td>10+ обр. / угроза суда / VIP</td><td>Эскалация директору ДУКО, персональный менеджер</td></tr>
</tbody>
</table>
<pre><code class="language-java">if (total >= 10 || churnSignal) return "BLACK";
if (total >= 5 || (openTicket && total >= 3)) return "RED";
if (total >= 3 || sentiment < -0.5) return "YELLOW";
return "GREEN";</code></pre>
</section>
<!-- 7. Demo -->
<section>
<h2>Демо</h2>
<div class="twocol">
<div>
<h3>Симуляция</h3>
<ul class="small-list">
<li>7 кейсов из PRD §1.2</li>
<li>Все → ⚫ BLACK (totalAppeals ≥ 10)</li>
<li>Маршрутизация по 4 системам:
<ul>
<li>2× NetMon (NETWORK)</li>
<li>2× ASC (EQUIPMENT)</li>
<li>1× Finance (BILLING)</li>
<li>1× СТПК (INSTALLATION)</li>
<li>1× CC (SERVICE)</li>
</ul>
</li>
</ul>
</div>
<div>
<h3>Ссылки</h3>
<ul class="small-list">
<li>📊 <a href="./index.html">Дашборд</a></li>
<li>📋 <a href="./cases.json">cases.json</a></li>
<li>📜 <a href="./simulation.log">simulation.log</a></li>
</ul>
<p><small>В дашборде каждый кейс имеет кнопку «Детали» — карточка оператора + полный лог BPMN-процесса.</small></p>
</div>
</div>
</section>
<!-- 8. OKRs -->
<section>
<h2>Метрики успеха (OKR)</h2>
<div class="twocol">
<div>
<p class="metric">≥70%</p>
<p class="metric-label">FCR (baseline ~45%)</p>
</div>
<div>
<p class="metric">≤1.5</p>
<p class="metric-label">обращений на кейс (было 3.2)</p>
</div>
<div>
<p class="metric">≤48ч</p>
<p class="metric-label">время закрытия (было &gt;10 дней)</p>
</div>
<div>
<p class="metric">≤10%</p>
<p class="metric-label">churn детракторов (было ~18%)</p>
</div>
</div>
<p><small>Горизонт — 6 месяцев. Подтверждение через A/B-тест в Итерации 4.</small></p>
</section>
<!-- 9. Stack -->
<section>
<h2>Технологический стек</h2>
<table>
<thead><tr><th>Слой</th><th>Технология</th></tr></thead>
<tbody>
<tr><td>Оркестратор</td><td>Camunda 7.21 (self-hosted)</td></tr>
<tr><td>Backend / Workers</td><td>Java 17 + Spring Boot 3</td></tr>
<tr><td>AI / ML</td><td>Python 3.11 + FastAPI · BERT · LightGBM</td></tr>
<tr><td>База данных</td><td>PostgreSQL 15</td></tr>
<tr><td>Очередь</td><td>Apache Kafka (Iter 2+)</td></tr>
<tr><td>Кэш</td><td>Redis 7 (Iter 4)</td></tr>
<tr><td>Контейнеризация</td><td>Docker + Kubernetes (Iter 4)</td></tr>
<tr><td>Дашборд</td><td>Static HTML (MVP) → Grafana (Iter 3)</td></tr>
<tr><td>Мониторинг</td><td>Prometheus + Grafana + ELK</td></tr>
</tbody>
</table>
</section>
<!-- 10. Roadmap -->
<section>
<h2>Roadmap</h2>
<table>
<thead><tr><th>Итер.</th><th>Срок</th><th>Содержание</th><th>Готово</th></tr></thead>
<tbody>
<tr><td>1 · MVP</td><td>Недели 1–4</td><td>Camunda + workers + моки + 7 кейсов</td><td>✅ Сейчас</td></tr>
<tr><td>2 · Интеграции</td><td>Недели 5–8</td><td>CRM read-only, ASC API, NetMon, WhatsApp, Kafka</td><td>—</td></tr>
<tr><td>3 · AI-слой</td><td>Недели 9–12</td><td>BERT sentiment, LLM-карточки, churn-модель, BI-дашборд</td><td>—</td></tr>
<tr><td>4 · Масштаб</td><td>Недели 13–16</td><td>K8s, нагрузочное, A/B-тест, security audit</td><td>—</td></tr>
</tbody>
</table>
</section>
<!-- 11. Risks -->
<section>
<h2>Риски</h2>
<table>
<thead><tr><th>Риск</th><th>Веро.</th><th>Митигация</th></tr></thead>
<tbody>
<tr><td>CRM-интеграция &gt; 2 мес.</td><td>Высокая</td><td>Начать с CSV/Excel выгрузки</td></tr>
<tr><td>Ложные срабатывания триггеров</td><td>Средняя</td><td>Ручная верификация первые 4 недели</td></tr>
<tr><td>Сопротивление операторов</td><td>Средняя</td><td>UX-исследование + обучение + геймификация</td></tr>
<tr><td>Утечка персданных</td><td>Низкая</td><td>Маскировка в логах, RBAC, AES-256 шифрование</td></tr>
</tbody>
</table>
</section>
<!-- 12. Close -->
<section class="title-slide">
<h1>Что дальше</h1>
<ul>
<li>✅ MVP готов · 7 кейсов проходят полный pipeline</li>
<li>▶ Согласовать доступ к CRM + ASC API (Итерация 2)</li>
<li>▶ Стартовать обучение sentiment-модели RU+KZ</li>
<li>▶ Подобрать пилот: 1 регион × 4 недели</li>
</ul>
<p><small>Связь: ДУКО, Kazakhtelecom · Демо: <a href="./index.html">этот дашборд</a></small></p>
</section>
</div></div>
<script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.js"></script>
<script>
Reveal.initialize({
hash: true,
slideNumber: 'c/t',
transition: 'fade',
controls: true,
progress: true,
});
</script>
</body>
</html>