import { useState } from 'react';
// ===== OPENING SCRIPT (60 sec pitch for mayor) =====
// RU:
// "Мы не предлагаем новую систему и не меняем процессы.
// Мы даём вам простой инструмент, который показывает результат, который уже есть.
// Сегодня у жителей ощущение, что ничего не работает — даже когда работа ведётся.
// Проблема не в действиях, а в видимости.
// Эта панель соединяет: обязательство → выполнение → подтверждение жителем.
// Вы сами выбираете район, показатели и уровень прозрачности.
// Через 14 дней у вас появляются реальные данные, которые можно показать.
// Это не контроль — это инструмент, который усиливает вас как управленца."
// HE:
// "אנחנו לא מציעים מערכת חדשה ולא משנים תהליכים.
// אנחנו נותנים כלי פשוט שמראה את התוצאה שכבר קיימת.
// היום לתושבים יש תחושה ששום דבר לא עובד — גם כשכן עובדים.
// הבעיה היא לא בעשייה, אלא בנראות.
// הלוח מחבר בין התחייבות → ביצוע → אישור תושב.
// אתה בוחר את האזור, המדדים ורמת השקיפות.
// תוך 14 יום יש לך נתונים אמיתיים להציג.
// זה לא פיקוח — זה כלי שמחזק אותך כמנהל."
export default function UnifiedDashboard() {
const [role, setRole] = useState<'resident' | 'mayor'>('resident');
const [lang, setLang] = useState<'ru' | 'he'>('ru');
const [realCase, setRealCase] = useState(false);
const t = {
ru: {
title: 'Панель выполнения обещаний',
resident: 'Для жителей',
mayor: 'Для мэра',
lastUpdate: 'Последнее обновление',
updates: 'Последние обновления',
internalTitle: 'Внутренняя панель управления',
realCaseOn: 'Реальный кейс',
realCaseOff: 'Идеальный кейс',
target: 'Цель',
},
he: {
title: 'לוח מעקב התחייבויות',
resident: 'לתושבים',
mayor: 'לראש העיר',
lastUpdate: 'עדכון אחרון',
updates: 'עדכונים אחרונים',
internalTitle: 'לוח ניהול פנימי',
realCaseOn: 'מצב אמיתי',
realCaseOff: 'מצב אידיאלי',
target: 'יעד',
},
};
const isHebrew = lang === 'he';
const kpisDemo = [
{
title: isHebrew ? 'מענה ≤ 48ש׳' : 'Ответ ≤ 48ч',
value: '82%',
target: '90%',
status: 'risk',
},
{
title: isHebrew ? 'נפתר ≤ 7 ימים' : 'Решено ≤ 7 дней',
value: '68%',
target: '70%',
status: 'warn',
},
{
title: isHebrew ? 'תקלות ≤ 72ש׳' : 'Поломки ≤ 72ч',
value: '91%',
target: '95%',
status: 'ok',
},
];
const kpisReal = [
{
title: isHebrew ? 'מענה ≤ 48ש׳' : 'Ответ ≤ 48ч',
value: '76%',
target: '90%',
status: 'risk',
},
{
title: isHebrew ? 'נפתר ≤ 7 ימים' : 'Решено ≤ 7 дней',
value: '61%',
target: '70%',
status: 'warn',
},
{
title: isHebrew ? 'תקלות ≤ 72ש׳' : 'Поломки ≤ 72ч',
value: '88%',
target: '95%',
status: 'warn',
},
];
const kpis = realCase ? kpisReal : kpisDemo;
const updates = realCase
? [
{
item: isHebrew
? 'מרכז העיר — עיכובים בטיפול בפניות'
: 'Центр — задержки по обращениям',
status: 'risk',
},
{
item: isHebrew
? 'עיר ימים — תאורה תוקנה'
: 'Ир Ямим — освещение улучшено',
status: 'ok',
},
{
item: isHebrew
? 'קריית השרון — מחסור במשאבים'
: 'Кирьят а-Шарон — нехватка ресурсов',
status: 'warn',
},
]
: [
{
item: isHebrew
? 'תאורה — תוקן'
: 'Освещение — исправлено',
status: 'ok',
},
{
item: isHebrew
? 'פניות — בטיפול'
: 'Обращения — в процессе',
status: 'warn',
},
{
item: isHebrew
? 'מענה — פיגור'
: 'Ответы — отставание',
status: 'risk',
},
];
const tasks = [
{
title: isHebrew ? 'חיזוק צוות' : 'Усилить команду',
status: isHebrew ? 'בתהליך' : 'В работе',
},
{
title: isHebrew ? 'בדיקת איכות' : 'Проверка качества',
status: isHebrew ? 'חשוב' : 'Важно',
},
];
const color = (s: string) => {
if (s === 'ok') return 'bg-emerald-100 text-emerald-800';
if (s === 'warn') return 'bg-amber-100 text-amber-800';
return 'bg-rose-100 text-rose-800';
};
const label = (s: string) => {
if (lang === 'ru') {
if (s === 'ok') return 'норма';
if (s === 'warn') return 'риск';
return 'критично';
}
if (lang === 'he') {
if (s === 'ok') return 'תקין';
if (s === 'warn') return 'סיכון';
return 'קריטי';
}
return s;
};
return (
{/* Switches */}
setRole('resident')}
className={`px-3 py-1 rounded ${
role === 'resident' ? 'bg-black text-white' : 'bg-white'
}`}
>
{t[lang].resident}
setRole('mayor')}
className={`px-3 py-1 rounded ${
role === 'mayor' ? 'bg-black text-white' : 'bg-white'
}`}
>
{t[lang].mayor}
setLang('ru')}
className={`px-3 py-1 rounded ${
lang === 'ru' ? 'bg-black text-white' : 'bg-white'
}`}
>
RU
setLang('he')}
className={`px-3 py-1 rounded ${
lang === 'he' ? 'bg-black text-white' : 'bg-white'
}`}
>
HE
setRealCase(!realCase)}
className={`px-4 py-1 rounded font-medium text-white ${
realCase ? 'bg-slate-500' : 'bg-emerald-600'
}`}
>
{realCase ? t[lang].realCaseOff : t[lang].realCaseOn}
{/* Header */}
{t[lang].title}
{t[lang].lastUpdate}: 17.03.2026
{isHebrew ? 'עודכן מ‑CRM: לפני 2 דקות' : 'Обновлено из CRM: 2 минуты назад'}
{isHebrew ? 'אושר ע״י תושבים: 124' : 'Подтверждено жителями: 124'}
{/* KPI */}
{kpis.map((k) => (
{k.title}
{label(k.status)}
{k.value}
{t[lang].target}: {k.target}
))}
{/* Resident view */}
{role === 'resident' && (
{t[lang].updates}
{updates.map((u) => (
{u.item}
{label(u.status)}
))}
)}
{/* Mayor view */}
{role === 'mayor' && (
)}
{/* FAQ / Objections (for demo & answers) */}
{isHebrew ? 'שאלות ותשובות נפוצות' : 'Частые вопросы'}
{isHebrew ? 'האם הנתונים אמיתיים?' : 'Данные реальные?'}
{isHebrew
? 'בפיילוט — נתונים מדגמיים. בשלב הבא חיבור למערכות העירוניות.'
: 'В пилоте — демонстрационные. Далее — интеграция с городскими системами.'}
{isHebrew ? 'מה אם המדדים נמוכים?' : 'А если показатели плохие?'}
{isHebrew
? 'זה מאפשר לזהות מהר נקודות חלשות ולהראות שיפור בדינמיקה.'
: 'Это позволяет быстро выявить слабые места и показать динамику улучшений.'}
{isHebrew ? 'האם זה מוסיף עומס?' : 'Это увеличит нагрузку?'}
{isHebrew
? 'לא. משתמשים בנתונים קיימים ומצמצמים עבודת דו"חות ידנית.'
: 'Нет. Используются существующие данные и сокращается ручная отчётность.'}
{isHebrew ? 'מי שולט במה שמוצג?' : 'Кто контролирует, что показывается?'}
{isHebrew
? 'העירייה בוחרת אזור, מדדים ורמת שקיפות בתחילת הפיילוט.'
: 'Муниципалитет выбирает район, KPI и уровень прозрачности на старте.'}
{/* Data Source Panel */}
{isHebrew ? 'מקורות הנתונים' : 'Источники данных'}
• {isHebrew
? 'פניות תושבים דרך אפליקציה עירונית'
: 'Обращения жителей через городское приложение'}
• {isHebrew
? 'מערכת CRM עירונית (סטטוס טיפול)'
: 'Городская CRM (статусы обработки)'}
• {isHebrew
? 'אישור תושב על פתרון הבעיה'
: 'Подтверждение жителя о решении'}
• {isHebrew
? 'מדידת זמני תגובה אוטומטית'
: 'Автоматическое измерение времени ответа'}
• {isHebrew
? 'אימות נתונים דרך דגימות ובקרה'
: 'Проверка данных через выборочный аудит'}
{isHebrew
? 'הנתונים נאספים ממספר מקורות ואינם תלויים בדיווח ידני בלבד'
: 'Данные собираются из нескольких источников и не зависят только от ручной отчетности'}
);
}