271 lines
14 KiB
HTML
271 lines
14 KiB
HTML
<!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 >24ч / sentiment <−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">время закрытия (было >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-интеграция > 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>
|