72b6879f4b
- Refactored max_bot from nested packages to flat module structure - Q2: Extended BotUser model (patronymic, email, org, address, vcf_raw, contact_hash, phone_verified, email_verified, last_interaction, total_conversations, total_tickets) - Q2: VCF parser (FN, N, TEL, EMAIL, ORG, ADR), upsert on re-contact, NLP history context (_get_user_history_context -> YandexGPT) - Q1: Broadcast preview modal with 10s confirmation timer - Q3: CSS var(--white)->var(--bg-card), var(--text)->var(--text-primary) - Q4: bot_settings showNotification(), editable max_bot_id - Q5: Webhook secret passthrough via X-Max-Bot-Api-Secret - Masking sensitive keys, dialog_cleared handler, migrate via _add_column_if_not_exists() - Rate limit (asyncio.sleep 0.5 per 10), dead code removed, conv.intent context in contact.py - Portal pages: bot_consent, bot_kb (edit), bot_settings, bot_test, bot_tickets, portal_settings - Tests: 21/21 passing, added test_yandex_gpt.py, test_email_sender.py - Deploy: deploy_full.sh, schema.sql, seed_knowledge_base.sql
9.9 KiB
9.9 KiB
Ниже — полноценная модель “Дашборд инженера (тимлид / руководитель техников)” для AegisOne Engineering.
Это ключевой слой между:
- техник → (исполнение)
- директор → (управление системой)
Инженер тут не “старший техник”, а:
операционный контроллер SLA, качества и рисков на объектах
1. РОЛЬ ИНЖЕНЕРА В СИСТЕМЕ
1.1 Основная функция
Инженер = управление качеством исполнения SLA + распределение нагрузки + контроль рисков объектов
1.2 Он НЕ делает:
- не чинит оборудование (это техник)
- не продаёт SLA (это коммерция)
- не ведёт бухгалтерию
1.3 Он ДЕЛАЕТ:
- распределяет заявки
- контролирует SLA
- проверяет качество работ
- снижает инциденты
- управляет техниками
- влияет на SHS
2. АРХИТЕКТУРА DASHBOARD ИНЖЕНЕРА
CEO DASHBOARD
↓
ENGINEER DASHBOARD
↓
TECHNICIAN DASHBOARD
↓
OBJECT SYSTEMS
3. DASHBOARD ИНЖЕНЕРА (REAL-TIME)
3.1 Главные блоки интерфейса
Блок 1 — SLA контроль региона
- SLA compliance (%)
- просроченные заявки
- риск нарушения SLA
- критические объекты
Блок 2 — команда техников
- загрузка каждого техника
- эффективность
- ошибки / reopen rate
- скорость реакции
Блок 3 — инциденты
- P1 / P2 / P3
- открытые критические
- повторяющиеся аварии
Блок 4 — объекты
- риск-уровень (Risk Score)
- SHS влияние объекта
- проблемные системы
Блок 5 — KPI инженера
- качество управления SLA
- распределение нагрузки
- снижение инцидентов
- эффективность команды
4. PHP АРХИТЕКТУРА
4.1 API инженера
<?php
header('Content-Type: application/json');
$pdo = new PDO("mysql:host=localhost;dbname=aegisone","user","pass");
$data = $pdo->query("
SELECT
e.id,
e.name,
AVG(t.sla_compliance) as sla,
COUNT(i.id) as incidents,
AVG(t.response_time) as response_time
FROM engineers e
LEFT JOIN tasks t ON t.engineer_id = e.id
LEFT JOIN incidents i ON i.engineer_id = e.id
GROUP BY e.id
")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);
?>
4.2 SHS ENGINEER IMPACT API
<?php
header('Content-Type: application/json');
$pdo = new PDO("mysql:host=localhost;dbname=aegisone","user","pass");
$k = $pdo->query("
SELECT
AVG(sla_compliance) as sla,
AVG(response_time) as rt,
AVG(reopen_rate) as rr
FROM tasks
")->fetch(PDO::FETCH_ASSOC);
/* Engineer Impact on SHS */
$EIS =
(0.5 * $k['sla']) +
(0.3 * (1 - $k['rr'])) +
(0.2 * (1 - $k['rt']/10));
echo json_encode([
"ENGINEER_IMPACT_SCORE" => round($EIS * 100, 2)
]);
?>
5. ФОРМУЛЫ ИНЖЕНЕРА (КРИТИЧЕСКИЕ KPI)
5.1 ENGINEER CONTROL SCORE (ECS)
ECS =
(0.30 × SLA Compliance Control)
+ (0.25 × Task Distribution Efficiency)
+ (0.20 × Incident Reduction Rate)
+ (0.15 × Team Performance Score)
+ (0.10 × Response Coordination Speed)
5.2 SLA CONTROL INDEX
SCI = closed_tasks_in_SLA / total_tasks
5.3 TEAM LOAD BALANCE
TLB = std_dev(tasks_per_engineer)
👉 чем меньше → тем лучше распределение
5.4 INCIDENT REDUCTION RATE
IRR = (incidents_previous - incidents_current) / incidents_previous
5.5 ESCALATION RATE
ER = escalated_tasks / total_tasks
6. DASHBOARD (HTML + JS)
6.1 HTML
<!DOCTYPE html>
<html>
<head>
<title>Engineer Control Panel</title>
<style>
body { background:#0f172a; color:white; font-family:Arial; }
.grid {
display:grid;
grid-template-columns: repeat(3, 1fr);
gap:15px;
padding:20px;
}
.card {
background:#1e293b;
padding:15px;
border-radius:12px;
}
.big { font-size:28px; font-weight:bold; }
.green { color:#22c55e; }
.yellow { color:#facc15; }
.red { color:#ef4444; }
</style>
</head>
<body>
<h2 style="padding:20px;">Engineer Live Dashboard</h2>
<div class="grid">
<div class="card">
<div>SLA Control</div>
<div id="sla" class="big">--</div>
</div>
<div class="card">
<div>Engineer Impact (SHS)</div>
<div id="shs" class="big">--</div>
</div>
<div class="card">
<div>Incidents</div>
<div id="inc" class="big">--</div>
</div>
</div>
<div id="team"></div>
<script src="engineer.js"></script>
</body>
</html>
6.2 JS realtime
async function loadEngineer(){
const res = await fetch('/api/engineer.php');
const data = await res.json();
let sla = 0;
let inc = 0;
let html = "";
data.forEach(e => {
sla += parseFloat(e.sla);
inc += parseInt(e.incidents);
let color =
e.sla > 0.9 ? "green" :
e.sla > 0.75 ? "yellow" : "red";
html += `
<div class="card">
<h3>${e.name}</h3>
<p>SLA: <b class="${color}">
${(e.sla * 100).toFixed(1)}%
</b></p>
<p>Incidents: ${e.incidents}</p>
<p>Response: ${e.response_time}</p>
</div>
`;
});
document.getElementById("team").innerHTML = html;
document.getElementById("sla").innerText =
((sla / data.length) * 100).toFixed(1) + "%";
document.getElementById("inc").innerText = inc;
let shs = (sla / data.length) * 100 - inc * 0.5;
document.getElementById("shs").innerText =
shs.toFixed(1);
}
setInterval(loadEngineer, 15000);
loadEngineer();
7. ДОКУМЕНТЫ ИНЖЕНЕРА (ОБЯЗАТЕЛЬНЫЕ)
7.1 РЕГЛАМЕНТ ИНЖЕНЕРА
AegisOne Engineering
Engineer Operational Standard
1. Назначение
Инженер отвечает за выполнение SLA и контроль качества работ техников.
---
2. Обязанности
- распределение заявок
- контроль SLA выполнения
- контроль качества диагностики
- управление инцидентами
- предотвращение повторных аварий
---
3. Запрещено
- закрывать задачи без проверки
- игнорировать SLA нарушения
- делегировать без фиксации
7.2 ESCALATION MATRIX
P1 → инженер → директор (немедленно)
P2 → инженер → инженер контроль
P3 → техник
Если SLA риск > 80%:
→ обязательная эскалация
7.3 ЧЕК-ЛИСТ ИНЖЕНЕРА
AegisOne Engineering
Engineer Control Checklist
[ ] Все заявки распределены
[ ] SLA риск оценён
[ ] Техники назначены
[ ] P1 инциденты закрыты
[ ] Повторные аварии проанализированы
[ ] Отчёты проверены
7.4 ОТЧЁТ ИНЖЕНЕРА
Engineer Report
Период:
Инженер:
---
1. SLA состояние:
-
2. Проблемные объекты:
-
3. Инциденты:
-
4. Перегруз команды:
-
5. Принятые меры:
-
6. Риски:
-
8. ЧТО ИНЖЕНЕР ДОЛЖЕН ИМЕТЬ В СИСТЕМЕ
ОБЯЗАТЕЛЬНО:
- SLA статус всех объектов
- список техников
- инциденты P1–P3
- риск объектов
- SHS влияние
РЕКОМЕНДУЕМО:
- история объектов
- схемы систем
- фото оборудования
- прошлые ремонты
- нагрузка по часам
9. ЧТО ЕМУ НЕЛЬЗЯ ДАВАТЬ
КАТЕГОРИЧЕСКИ НЕ НУЖНО:
- прямые продажи
- финансовые данные прибыли
- доступ к CRM сделкам
- доступ к договорам без SLA слоя
- административные функции директора
10. РИСКИ СИСТЕМЫ
РИСК 1 — инженер превращается в диспетчера
👉 решение:
- оставить KPI, а не “ручное управление”
РИСК 2 — перегруз инженера
👉 решение:
- TLB (load balance)
РИСК 3 — потеря SLA контроля
👉 решение:
- SHS alert system
11. ГЛАВНАЯ ЛОГИКА
Техник → выполняет
Инженер → управляет качеством
Директор → управляет системой
12. ИТОГ
Ты получаешь:
управляемый слой контроля SLA между исполнением и бизнесом
13. ЕСЛИ РАЗВИВАТЬ ДАЛЬШЕ
Я могу собрать:
- автораспределение заявок (AI dispatch)
- прогноз поломок объектов
- система “умного SLA риска”
- мобильный кабинет инженера
- интеграция с Telegram уведомлениями
Если коротко:
👉 это уже не “дашборд”
👉 это уровень операционной системы инженерного бизнеса (mini-SAP под твою нишу)