zan-buzushylyk/index.html

458 lines
66 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">
<title>Квалификация нарушений законодательства РК</title>
<style>
:root {
--ink: #0F1218;
--cyan: #00E5FF;
--cyan-50: #E8FCFF;
--white: #fff;
--gray-500: #5B6573;
--gray-100: #F2F4F7;
--red: #E53935;
--red-light: #FFEBEE;
--orange: #F57C00;
--orange-light: #FFF3E0;
--green: #2E7D32;
--green-light: #E8F5E9;
--purple: #7B1FA2;
--purple-light: #F3E5F5;
--teal: #00897B;
--teal-light: #E0F2F1;
--lime: #558B2F;
--lime-light: #F1F8E9;
--pink: #C2185B;
--pink-light: #FCE4EC;
--indigo: #283593;
--indigo-light: #E8EAF6;
--amber: #FF8F00;
--amber-light: #FFF8E1;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font: 17px/1.6 -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
color: var(--ink);
background: var(--white);
}
.container { max-width: 1140px; margin: 0 auto; padding: 0 24px; }
.hero {
background: var(--ink);
color: var(--white);
padding: 90px 0 72px;
}
.hero h1 {
font-size: 44px; font-weight: 800; line-height: 1.15;
margin-bottom: 14px;
}
.hero p {
font-size: 19px; color: #9aa3b2;
max-width: 680px; margin-bottom: 36px;
}
.search-layout { max-width: 720px; }
.search-box {
display: flex; gap: 12px;
background: rgba(255,255,255,0.08);
border: 2px solid rgba(255,255,255,0.15);
border-radius: 12px; padding: 8px;
}
.search-box input {
flex: 1; background: none; border: none;
color: var(--white); font-size: 17px; padding: 12px 16px;
outline: none;
}
.search-box input::placeholder { color: rgba(255,255,255,0.4); }
.search-box button {
background: var(--cyan); color: var(--ink);
border: none; padding: 12px 28px; border-radius: 8px;
font-size: 16px; font-weight: 700; cursor: pointer;
white-space: nowrap;
}
.search-box button:hover { background: #1be5ff; }
.results-section { padding: 48px 0 80px; }
.stats-bar {
display: flex; align-items: center; justify-content: space-between;
margin-bottom: 28px; flex-wrap: wrap; gap: 14px;
}
.stats-bar .count { font-size: 15px; color: var(--gray-500); }
.filters { display: flex; gap: 8px; flex-wrap: wrap; }
.filter-btn {
padding: 6px 16px; border-radius: 20px; border: 1.5px solid var(--gray-100);
background: var(--white); font-size: 14px; cursor: pointer;
transition: all 0.15s; color: var(--gray-500);
}
.filter-btn:hover { border-color: var(--cyan); color: var(--ink); }
.filter-btn.active {
background: var(--ink); color: var(--white); border-color: var(--ink);
}
.filter-btn.code-koap.active { background: #1565C0; border-color: #1565C0; }
.filter-btn.code-uk.active { background: var(--red); border-color: var(--red); }
.filter-btn.code-tk.active { background: var(--orange); border-color: var(--orange); }
.filter-btn.code-nk.active { background: var(--green); border-color: var(--green); }
.filter-btn.code-gk.active { background: var(--purple); border-color: var(--purple); }
.filter-btn.code-zk.active { background: var(--teal); border-color: var(--teal); }
.filter-btn.code-ek.active { background: var(--lime); border-color: var(--lime); }
.filter-btn.code-sk.active { background: var(--pink); border-color: var(--pink); }
.filter-btn.code-zakon.active { background: var(--indigo); border-color: var(--indigo); }
.filter-btn.code-pravila.active { background: var(--amber); border-color: var(--amber); }
.results-grid { display: grid; gap: 16px; }
.violation-card {
border: 1px solid var(--gray-100); border-radius: 14px;
padding: 28px 32px;
transition: box-shadow 0.15s, transform 0.15s;
}
.violation-card:hover {
box-shadow: 0 6px 28px rgba(0,0,0,0.07);
transform: translateY(-1px);
}
.violation-card .card-top {
display: flex; gap: 20px; align-items: flex-start;
margin-bottom: 16px;
}
.violation-card .article-badge {
display: flex; flex-direction: column; align-items: center;
padding: 12px 20px; border-radius: 10px;
font-weight: 800; font-size: 18px; text-align: center; flex-shrink: 0;
min-width: 130px; line-height: 1.3;
}
.article-badge.koap { background: #E3F2FD; color: #1565C0; }
.article-badge.uk { background: var(--red-light); color: var(--red); }
.article-badge.tk { background: var(--orange-light); color: var(--orange); }
.article-badge.nk { background: var(--green-light); color: var(--green); }
.article-badge.gk { background: var(--purple-light); color: var(--purple); }
.article-badge.zk { background: var(--teal-light); color: var(--teal); }
.article-badge.ek { background: var(--lime-light); color: var(--lime); }
.article-badge.sk { background: var(--pink-light); color: var(--pink); }
.article-badge.zakon { background: var(--indigo-light); color: var(--indigo); }
.article-badge.pravila { background: var(--amber-light); color: var(--amber); }
.article-badge .badge-label {
font-size: 11px; font-weight: 600; text-transform: uppercase;
}
.article-badge .badge-article { margin-top: 2px; }
.violation-card .card-info h3 {
font-size: 20px; font-weight: 700; margin-bottom: 6px;
}
.violation-card .card-info .verdict {
color: var(--red); font-size: 14px; font-weight: 700; text-transform: uppercase;
letter-spacing: 0.5px; margin-bottom: 6px;
}
.violation-card .card-info .desc {
font-size: 15px; color: var(--gray-500); line-height: 1.6;
}
.violation-card .card-footer {
display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
padding-top: 14px; border-top: 1px solid var(--gray-100);
font-size: 14px;
}
.violation-card .penalty {
flex: 1; min-width: 200px; color: var(--gray-500);
}
.penalty strong { color: var(--ink); }
.doc-link {
display: inline-flex; align-items: center; gap: 5px;
padding: 8px 16px; border-radius: 8px;
background: var(--cyan-50); color: #00838F;
font-weight: 700; font-size: 13px; text-decoration: none;
white-space: nowrap;
}
.doc-link:hover { background: #cdf5fa; }
.empty-state {
text-align: center; padding: 80px 20px; color: var(--gray-500);
}
.empty-state .emoji { font-size: 48px; margin-bottom: 16px; }
.empty-state h3 { font-size: 20px; color: var(--ink); margin-bottom: 8px; }
footer {
text-align: center; padding: 40px 24px;
color: var(--gray-500); font-size: 14px;
border-top: 1px solid var(--gray-100);
}
footer a { color: var(--cyan); text-decoration: none; }
@media (max-width: 640px) {
.hero { padding: 60px 0 40px; }
.hero h1 { font-size: 28px; }
.hero p { font-size: 16px; }
.search-box { flex-direction: column; gap: 8px; }
.search-box button { width: 100%; }
.violation-card { padding: 20px; }
.violation-card .card-top { flex-direction: column; gap: 12px; }
.violation-card .article-badge { flex-direction: row; gap: 8px; min-width: auto; padding: 10px 16px; font-size: 15px; }
.violation-card .article-badge .badge-label { font-size: 11px; }
.violation-card .card-footer { flex-direction: column; align-items: stretch; }
.doc-link { justify-content: center; }
}
</style>
</head>
<body>
<section class="hero">
<div class="container">
<h1>&#x2696;&#xFE0F; Квалификация нарушений по законодательству РК</h1>
<p>Введите фабулу нарушения — опишите ситуацию своими словами. Приложение определит, <strong>какой пункт какого НПА</strong> нарушен.</p>
<div class="search-layout">
<div class="search-box">
<input type="text" id="search" placeholder="Например: ночью соседи громко слушают музыку и мешают спать..." autofocus>
<button onclick="search()">Определить</button>
</div>
</div>
</div>
</section>
<section class="results-section">
<div class="container">
<div class="stats-bar">
<span class="count" id="stats">Всего: 80 составов нарушений</span>
<div class="filters" id="filters">
<button class="filter-btn active" data-code="all" onclick="setFilter('all',this)">Все</button>
<button class="filter-btn code-koap" data-code="koap" onclick="setFilter('koap',this)">КоАП</button>
<button class="filter-btn code-uk" data-code="uk" onclick="setFilter('uk',this)">УК</button>
<button class="filter-btn code-tk" data-code="tk" onclick="setFilter('tk',this)">ТК</button>
<button class="filter-btn code-nk" data-code="nk" onclick="setFilter('nk',this)">НК</button>
<button class="filter-btn code-gk" data-code="gk" onclick="setFilter('gk',this)">ГК</button>
<button class="filter-btn code-zk" data-code="zk" onclick="setFilter('zk',this)">ЗК</button>
<button class="filter-btn code-ek" data-code="ek" onclick="setFilter('ek',this)">ЭкоК</button>
<button class="filter-btn code-sk" data-code="sk" onclick="setFilter('sk',this)">СК</button>
<button class="filter-btn code-zakon" data-code="zakon" onclick="setFilter('zakon',this)">Законы</button>
<button class="filter-btn code-pravila" data-code="pravila" onclick="setFilter('pravila',this)">Правила</button>
</div>
</div>
<div class="results-grid" id="results"></div>
<div class="empty-state" id="empty" style="display:none">
<div class="emoji">&#x1F50D;</div>
<h3>Ничего не найдено</h3>
<p>Попробуйте описать ситуацию другими словами.</p>
</div>
</div>
</section>
<footer>
<div class="container">
Справочник носит ознакомительный характер. Полные тексты НПА — <a href="https://adilet.zan.kz" target="_blank">adilet.zan.kz</a>
</div>
</footer>
<script>
const CODE_DOC = {
koap: "https://adilet.zan.kz/rus/docs/K1400000235",
uk: "https://adilet.zan.kz/rus/docs/K1400000226",
tk: "https://adilet.zan.kz/rus/docs/K1500000414",
nk: "https://adilet.zan.kz/rus/docs/K1700000120",
gk: "https://adilet.zan.kz/rus/docs/K9400010002",
zk: "https://adilet.zan.kz/rus/docs/K0300000442",
ek: "https://adilet.zan.kz/rus/docs/K2100000400",
sk: "https://adilet.zan.kz/rus/docs/K1100000518",
zakon_potreb: "https://adilet.zan.kz/rus/docs/Z100000274_",
zakon_migr: "https://adilet.zan.kz/rus/docs/Z1100000477",
zakon_pd: "https://adilet.zan.kz/rus/docs/Z1300000094",
zakon_reklama: "https://adilet.zan.kz/rus/docs/Z0300000508",
zakon_goszakup: "https://adilet.zan.kz/rus/docs/Z1500000434",
zakon_antikorr: "https://adilet.zan.kz/rus/docs/Z1500000410",
zakon_info: "https://adilet.zan.kz/rus/docs/Z1500000418",
zakon_yazyk: "https://adilet.zan.kz/rus/docs/Z9700000151",
};
const VIOLATIONS = [
{ id:1, fabula:["человек громко ругается матом в автобусе","на улице мужчина пристаёт к прохожим и матерится","пьяная компания орёт матом на детской площадке"], desc:"Мелкое хулиганство — нецензурная брань в общественных местах, оскорбительное приставание к гражданам", code:"koap", article:"ст. 434", penalty:"Штраф 20 МРП, либо административный арест до 15 суток", docKey:"koap" },
{ id:2, fabula:["соседи делают ремонт в 2 часа ночи","в соседней квартире всю ночь орёт музыка","ночью во дворе громко кричат и не дают спать"], desc:"Нарушение тишины и покоя граждан в ночное время (с 23:00 до 06:00), в выходные и праздничные дни", code:"koap", article:"ст. 437", penalty:"Штраф 10 МРП, при повторном — 20 МРП", docKey:"koap" },
{ id:3, fabula:["компания сидит на лавочке во дворе и пьёт пиво","человек идёт по улице пьяный и шатается","на остановке люди распивают водку"], desc:"Распитие алкоголя в общественных местах, появление в пьяном виде, оскорбляющем достоинство", code:"koap", article:"ст. 440", penalty:"Штраф 5 МРП, при повторном — 10 МРП, либо административный арест до 5 суток", docKey:"koap" },
{ id:4, fabula:["человек курит в подъезде жилого дома","на остановке стоит и курит сигарету","в кафе кто-то начал курить кальян"], desc:"Курение табака, кальяна, вейпов в неположенных местах (подъезды, остановки, детские площадки, транспорт, учреждения)", code:"koap", article:"ст. 441", penalty:"Штраф 3 МРП", docKey:"koap" },
{ id:5, fabula:["водитель ехал по городу 120 км/ч вместо 60","на трассе машина пронеслась на огромной скорости","камера зафиксировала превышение скорости на 40 км/ч"], desc:"Превышение установленной скорости движения транспортного средства", code:"koap", article:"ст. 592", penalty:"Штраф от 10 до 40 МРП, в зависимости от величины превышения", docKey:"koap" },
{ id:6, fabula:["водитель не остановился на красный свет светофора","машина проехала перекрёсток на запрещающий сигнал","проигнорировал красный и поехал дальше"], desc:"Проезд на запрещающий сигнал светофора или жест регулировщика", code:"koap", article:"ст. 599", penalty:"Штраф 10 МРП", docKey:"koap" },
{ id:7, fabula:["человек сел за руль никогда не получав прав","водителя лишили прав а он продолжает ездить","подросток 16 лет управляет машиной без прав"], desc:"Управление ТС лицом, не имеющим права управления, или лишённым такого права", code:"koap", article:"ст. 612", penalty:"Штраф 30 МРП, при повторном — 70 МРП, либо административный арест до 15 суток", docKey:"koap" },
{ id:8, fabula:["человек выпил бутылку водки и сел за руль","остановили пьяного водителя он еле стоял на ногах","вечеринка закончилась человек сел пьяный в машину и поехал"], desc:"Управление ТС в состоянии алкогольного или наркотического опьянения", code:"koap", article:"ст. 608", penalty:"Лишение прав на 3 года, административный арест до 15 суток. При повторном — уголовная ответственность по ст. 346 УК", docKey:"koap" },
{ id:9, fabula:["полицейский попросил документы а человек отказался и начал спорить","остановили на дороге водитель не выполнил требование инспектора","человек отказался пройти в участок по требованию полиции"], desc:"Неповиновение законному требованию сотрудника правоохранительного органа", code:"koap", article:"ст. 667", penalty:"Штраф 10 МРП, либо административный арест до 10 суток", docKey:"koap" },
{ id:10, fabula:["в магазине человек положил товар в карман и вышел не заплатив","посетитель супермаркета украл продукты на небольшую сумму","на кассе самообслуживания не пробил часть товаров"], desc:"Мелкое хищение чужого имущества на сумму до 10 МРП", code:"koap", article:"ст. 187", penalty:"Штраф до 25 МРП, либо административный арест до 15 суток. Свыше 10 МРП — уголовная ответственность по ст. 188 УК", docKey:"koap" },
{ id:11, fabula:["человек едет в автобусе без билета","зашёл в транспорт и не оплатил проезд","контролёр обнаружил безбилетного пассажира"], desc:"Безбилетный проезд в общественном транспорте", code:"koap", article:"ст. 622", penalty:"Штраф 0,5 МРП", docKey:"koap" },
{ id:12, fabula:["на улице человек выбросил фантик мимо урны","во дворе сбросили строительный мусор на газон","из машины выкинули пакет с мусором на обочину"], desc:"Нарушение правил благоустройства, загрязнение общественных мест", code:"koap", article:"ст. 505", penalty:"Штраф 10 МРП", docKey:"koap" },
{ id:13, fabula:["на даче развели огромный костёр в сухую погоду","в парке люди устроили пикник с открытым огнём","сжигание сухой травы на поле без присмотра"], desc:"Нарушение правил пожарной безопасности, разведение костров в неположенных местах", code:"koap", article:"ст. 410", penalty:"Штраф 5-10 МРП", docKey:"koap" },
{ id:14, fabula:["в кафе на кухне грязно тараканы и плесень","посетители отравились едой в ресторане","в столовой просроченные продукты и антисанитария"], desc:"Нарушение санитарно-эпидемиологических норм и правил гигиены", code:"koap", article:"ст. 425", penalty:"Штраф до 200 МРП для юрлиц, до 30 МРП для физлиц", docKey:"koap" },
{ id:15, fabula:["на улице продают вещи без документов и чеков","бабушка торгует овощами на тротуаре без патента","в переходе сидит человек и продаёт товары без регистрации ИП"], desc:"Незаконная предпринимательская деятельность без регистрации и разрешений", code:"koap", article:"ст. 463", penalty:"Штраф 15-50 МРП", docKey:"koap" },
{ id:16, fabula:["на рынке продавец обвесил покупателя на 200 грамм","в магазине на ценнике одна цена а на кассе пробили больше",баре налили пива 0,4 вместо заказанных 0,5"], desc:"Обман потребителей — обвес, обсчёт, введение в заблуждение о потребительских свойствах товара", code:"koap", article:"ст. 190", penalty:"Штраф 10-50 МРП", docKey:"koap" },
{ id:17, fabula:["в общественном месте один человек нецензурно оскорбил другого","в соцсетях написали гадости унижающие достоинство человека","на работе начальник публично унизил подчинённого"], desc:"Оскорбление — унижение чести и достоинства другого лица в неприличной форме", code:"koap", article:"ст. 131", penalty:"Штраф 20 МРП", docKey:"koap" },
{ id:18, fabula:["коллега распустил ложные слухи что кто-то ворует деньги","человек в соцсетях написал неправду позорящую соседа","журналист опубликовал ложную статью порочащую репутацию бизнесмена"], desc:"Клевета — распространение заведомо ложных сведений, порочащих честь и достоинство", code:"uk", article:"ст. 130", penalty:"Штраф до 500 МРП, исправительные работы, либо ограничение свободы до 1 года", docKey:"uk" },
{ id:19, fabula:["два человека подрались на улице нанося друг другу удары","мужчина ударил соседа кулаком по лицу в ссоре",баре завязалась потасовка с рукоприкладством"], desc:"Побои — нанесение побоев, не повлёкших причинения лёгкого вреда здоровью", code:"koap", article:"ст. 73-1", penalty:"Штраф 10 МРП, либо административный арест до 10 суток", docKey:"koap" },
{ id:20, fabula:["сосед сверху залил квартиру и отказывается возмещать ущерб","жилец снёс несущую стену в квартире без разрешения","человек проживает в квартире без регистрации по месту жительства"], desc:"Нарушение правил пользования жилыми помещениями, самовольная перепланировка", code:"koap", article:"ст. 506", penalty:"Штраф 10-50 МРП", docKey:"koap" },
{ id:21, fabula:["из квартиры тайно вынесли ценные вещи пока хозяев не было","в магазине из сумки покупателя вытащили кошелёк","ночью со склада украли товар на крупную сумму"], desc:"Кража — тайное хищение чужого имущества", code:"uk", article:"ст. 188", penalty:"Штраф до 2000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 12 лет", docKey:"uk" },
{ id:22, fabula:["на улице вырвали сумку из рук и убежали","сорвали золотую цепочку с шеи прохожего среди бела дня","человек открыто отобрал телефон у другого на глазах у свидетелей"], desc:"Грабёж — открытое хищение чужого имущества", code:"uk", article:"ст. 191", penalty:"Штраф до 3000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 12 лет", docKey:"uk" },
{ id:23, fabula:["в тёмном переулке напали с ножом и потребовали деньги","преступник угрожая пистолетом потребовал отдать телефон и кошелёк","группа людей ворвалась в квартиру с битами и забрали ценности"], desc:"Разбой — нападение с целью хищения с насилием либо угрозой насилия", code:"uk", article:"ст. 192", penalty:"Лишение свободы от 3 до 15 лет с конфискацией имущества", docKey:"uk" },
{ id:24, fabula:["человек взял деньги в долг и скрылся не собираясь возвращать","продали несуществующий товар через интернет взяли предоплату и пропали","финансовая пирамида собрала деньги с людей и рухнула"], desc:"Мошенничество — хищение путём обмана или злоупотребления доверием", code:"uk", article:"ст. 190", penalty:"Штраф до 4000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 10 лет", docKey:"uk" },
{ id:25, fabula:["группа подростков избила прохожего и разбила витрину магазина","пьяный дебошир в кафе крушил мебель угрожал посетителям","на стадионе фанаты устроили массовую драку с битами"], desc:"Хулиганство — особо дерзкое нарушение общественного порядка с насилием, угрозой, уничтожением имущества", code:"uk", article:"ст. 293", penalty:"Штраф до 2000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 7 лет", docKey:"uk" },
{ id:26, fabula:["в ходе бытовой ссоры мужчина нанёс смертельный удар ножом","произошло умышленное убийство из ревности","убийство совершено из корыстных побуждений"], desc:"Убийство — противоправное умышленное причинение смерти другому человеку", code:"uk", article:"ст. 99", penalty:"Лишение свободы от 6 до 20 лет, либо пожизненное лишение свободы", docKey:"uk" },
{ id:27, fabula:["в драке человеку сломали руку в двух местах и он попал в больницу","после избиения пострадавший потерял зрение на один глаз","нанесли несколько ножевых ранений потерпевший в реанимации"], desc:"Умышленное причинение тяжкого вреда здоровью — опасного для жизни", code:"uk", article:"ст. 106", penalty:"Ограничение свободы, либо лишение свободы от 3 до 12 лет", docKey:"uk" },
{ id:28, fabula:["совершено изнасилование девушки в безлюдном месте","надругательство над беспомощным человеком","сексуальное насилие с угрозами"], desc:"Изнасилование — половое сношение с применением насилия, угрозы или беспомощного состояния", code:"uk", article:"ст. 120", penalty:"Лишение свободы от 5 до 20 лет, либо пожизненно", docKey:"uk" },
{ id:29, fabula:["бизнесмену угрожают расправой если он не заплатит крупную сумму","у человека требуют деньги угрожая сжечь его машину","группировка требует ежемесячную плату за крышу"], desc:"Вымогательство — требование передачи имущества под угрозой насилия или уничтожения имущества", code:"uk", article:"ст. 194", penalty:"Ограничение свободы, либо лишение свободы до 15 лет с конфискацией", docKey:"uk" },
{ id:30, fabula:["бухгалтер фирмы перевела деньги компании на свой счёт","менеджер присвоил себе деньги выданные на закупку оборудования","кассир брала деньги из кассы и тратила на свои нужды"], desc:"Присвоение или растрата — хищение чужого имущества, вверенного виновному", code:"uk", article:"ст. 189", penalty:"Штраф до 3000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 12 лет", docKey:"uk" },
{ id:31, fabula:["предприниматель передал конверт с деньгами чиновнику за ускорение выдачи разрешения","студент дал взятку преподавателю за зачёт","компания перечислила откат менеджеру за подписание контракта"], desc:"Дача взятки — незаконная передача денег или услуг должностному лицу", code:"uk", article:"ст. 367", penalty:"Штраф до 60-кратной суммы взятки, исправительные работы, либо лишение свободы до 15 лет с конфискацией", docKey:"uk" },
{ id:32, fabula:["аким получил деньги за выделение земельного участка","инспектор требовал деньги чтобы не составлять протокол","чиновник систематически получал вознаграждения за принятие решений"], desc:"Получение взятки — незаконное получение должностным лицом денег или услуг", code:"uk", article:"ст. 366", penalty:"Штраф до 80-кратной суммы взятки, либо лишение свободы до 15 лет с конфискацией и пожизненным лишением права занимать должности", docKey:"uk" },
{ id:33, fabula:["начальник районного отдела выдал разрешение на строительство с нарушениями ради выгоды","чиновник принял решение в пользу родственника в обход закона","должностное лицо подписало незаконный акт используя служебное положение"], desc:"Злоупотребление должностными полномочиями — использование положения вопреки интересам службы", code:"uk", article:"ст. 361", penalty:"Штраф до 5000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 8 лет", docKey:"uk" },
{ id:34, fabula:["угнали припаркованную во дворе машину чтобы покататься и бросить","подросток взял без спроса чужую машину ключи от которой нашёл","автомобиль угнали с парковки супермаркета"], desc:"Неправомерное завладение автомобилем без цели хищения (угон)", code:"uk", article:"ст. 200", penalty:"Штраф до 500 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 12 лет", docKey:"uk" },
{ id:35, fabula:["у человека нашли пакетик с марихуаной для личного употребления","в кармане обнаружили несколько грамм запрещённого вещества","дома хранились наркотики для собственного использования"], desc:"Незаконное хранение наркотиков без цели сбыта", code:"uk", article:"ст. 296", penalty:"Штраф до 5000 МРП, исправительные работы, ограничение свободы, либо лишение свободы до 15 лет", docKey:"uk" },
{ id:36, fabula:["человек продаёт наркотики через интернет и раскладывает закладки","задержали группу лиц занимающихся сбытом героина","организовали канал поставки синтетических наркотиков из-за границы"], desc:"Незаконный сбыт наркотических средств и психотропных веществ", code:"uk", article:"ст. 297", penalty:"Лишение свободы от 5 до 20 лет, либо пожизненно с конфискацией", docKey:"uk" },
{ id:37, fabula:["человек работает в кафе уже месяц а трудовой договор не оформили","работодатель не заключил договор с новым сотрудником","сотрудники работают без оформления и получают зарплату в конверте"], desc:"Допуск работника к работе без заключения трудового договора", code:"tk", article:"ст. 90 КоАП", penalty:"Штраф 30-100 МРП", docKey:"tk" },
{ id:38, fabula:["работодатель уже два месяца не выплачивает зарплату сотрудникам","задерживают заработную плату без объяснения причин","людям не платят зарплату ссылаясь на отсутствие денег"], desc:"Невыплата заработной платы в полном объёме и в установленные сроки", code:"tk", article:"ст. 113 ТК РК", penalty:"Штраф до 200 МРП для работодателя, пеня за каждый день просрочки", docKey:"tk" },
{ id:39, fabula:["сотрудника уволили без объяснения причин без приказа и уведомления","человека сократили без предупреждения за два месяца","беременную женщину уволили узнав о её положении"], desc:"Незаконное увольнение работника или нарушение процедуры расторжения трудового договора", code:"tk", article:"ст. 52, 56 ТК РК", penalty:"Восстановление на работе, компенсация за вынужденный прогул, возмещение морального вреда", docKey:"tk" },
{ id:40, fabula:["работник не был в отпуске уже два года подряд","начальник отказывается подписывать заявление на отпуск","компания не предоставляет ежегодный оплачиваемый отпуск"], desc:"Непредоставление ежегодного оплачиваемого трудового отпуска в течение двух лет подряд", code:"tk", article:"ст. 87, 92 ТК РК", penalty:"Штраф до 100 МРП для работодателя", docKey:"tk" },
{ id:41, fabula:["сотрудники работают по 12 часов каждый день без доплаты","начальник заставляет выходить в выходные без оплаты","люди перерабатывают по 3-4 часа ежедневно сверх нормы но не получают за это"], desc:"Привлечение к сверхурочной работе без согласия работника либо без соответствующей оплаты", code:"tk", article:"ст. 77, 78 ТК РК", penalty:"Штраф до 100 МРП, предписание устранить нарушение с доплатой", docKey:"tk" },
{ id:42, fabula:["компания скрывает реальные доходы и не платит налоги в полном объёме","предприниматель занижает обороты чтобы платить меньше налогов","организация уклоняется от уплаты налогов через фирмы-однодневки"], desc:"Уклонение от уплаты налогов и других обязательных платежей в бюджет", code:"nk", article:"ст. 275 КоАП", penalty:"Штраф от 20% до 50% от неуплаченной суммы налога", docKey:"nk" },
{ id:43, fabula:["человек не подал налоговую декларацию до установленного срока","предприниматель просрочил сдачу отчётности в налоговую","компания опоздала с подачей налоговой декларации на месяц"], desc:"Непредставление налоговой отчётности в установленный срок", code:"nk", article:"ст. 272 КоАП", penalty:"Штраф 30-70 МРП, при повторном — до 110 МРП", docKey:"nk" },
{ id:44, fabula:["в магазине покупателю не выдали кассовый чек","продавец на рынке принимает деньги без ККМ","таксист не применяет контрольно-кассовую машину"], desc:"Неприменение контрольно-кассовой машины (ККМ) при денежных расчётах", code:"nk", article:"ст. 284 КоАП", penalty:"Штраф 25-50 МРП, при повторном — до 100 МРП", docKey:"nk" },
{ id:45, fabula:["муж систематически избивает жену дома","в семье постоянно происходят скандалы с рукоприкладством","женщина страдает от домашнего насилия но боится заявить"], desc:"Противоправные действия в сфере семейно-бытовых отношений — насилие, жестокое обращение в семье", code:"koap", article:"ст. 73, 73-1, 73-2", penalty:"Штраф, административный арест до 30 суток, защитное предписание. При систематичности — уголовная ответственность", docKey:"koap" },
{ id:46, fabula:["родители не водят ребёнка в школу","ребёнок постоянно голодный и грязный","дети предоставлены сами себе родители не занимаются воспитанием"], desc:"Неисполнение родительских обязанностей по воспитанию и содержанию несовершеннолетних детей — наказуемо по КоАП", code:"koap", article:"ст. 127, 442", penalty:"Штраф до 200 МРП, лишение родительских прав", docKey:"koap" },
{ id:47, fabula:["остановили машину с наглухо затонированными стёклами","водитель закатал передние боковые стёкла тёмной плёнкой","автомобиль с тонировкой не соответствующей нормам"], desc:"Управление ТС со стёклами, не соответствующими нормам светопропускания (незаконная тонировка)", code:"koap", article:"ст. 590 ч.5", penalty:"Штраф 10 МРП, предписание устранить в течение суток", docKey:"koap" },
{ id:48, fabula:["водитель и пассажиры едут не пристёгнутыми","ребёнка перевозят без автокресла","пассажир на заднем сиденье не пристегнул ремень"], desc:"Управление ТС либо перевозка пассажиров без использования ремней безопасности", code:"koap", article:"ст. 593 ч.1", penalty:"Штраф 3 МРП", docKey:"koap" },
{ id:49, fabula:["водитель разговаривает по телефону держа его в руке во время движения","человек за рулём пишет смс не останавливая машину","водитель смотрит видео на телефоне во время езды"], desc:"Использование телефона во время управления ТС без устройства hands-free", code:"koap", article:"ст. 591", penalty:"Штраф 5 МРП", docKey:"koap" },
{ id:50, fabula:["браконьеры вырубили несколько сосен в заповеднике","охотник без лицензии застрелил сайгака","рыбаки ловят рыбу сетями в запрещённый период"], desc:"Незаконная порубка деревьев и кустарников, незаконная охота, рыболовство без разрешения", code:"koap", article:"ст. 381, 382, 383", penalty:"Штраф до 500 МРП с конфискацией орудий, возмещение ущерба", docKey:"koap" },
{ id:51, fabula:["подрядчик сорвал сроки строительства и не отвечает на претензии","компания подписала договор но не выполнила обязательства","заказчик заплатил а товар так и не привезли"], desc:"Неисполнение или ненадлежащее исполнение договорных обязательств", code:"gk", article:"ст. 293 ГК РК", penalty:"Возмещение убытков, уплата неустойки, расторжение договора в судебном порядке", docKey:"gk" },
{ id:52, fabula:["человек построил дом на участке не имея разрешительных документов","сосед пристроил второй этаж к дому без согласования","на даче возвели капитальный гараж без уведомления архитектуры"], desc:"Самовольная постройка — строительство без разрешительных документов", code:"gk", article:"ст. 244 ГК РК", penalty:"Снос за свой счёт, либо признание права собственности через суд", docKey:"gk" },
{ id:53, fabula:["компания скопировала дизайн сайта конкурента и использует без разрешения","опубликовали чужую книгу в интернете без согласия автора","используют музыку в рекламе не заплатив правообладателю"], desc:"Нарушение авторских и смежных прав — незаконное использование, копирование произведений", code:"gk", article:"ст. 964-970 ГК РК", penalty:"Возмещение убытков, выплата компенсации до 50 000 МРП, конфискация контрафакта", docKey:"gk" },
{ id:54, fabula:["подписали договор купли-продажи квартиры под угрозой","сделку признали фиктивной так как денег реально не передавали","человека обманом заставили подписать дарственную"], desc:"Признание сделки недействительной — мнимая, притворная, под влиянием обмана или угрозы", code:"gk", article:"ст. 157-160 ГК РК", penalty:"Двусторонняя реституция, возмещение убытков, взыскание полученного в доход государства", docKey:"gk" },
{ id:55, fabula:["родственники скрыли от одного из наследников факт смерти наследодателя","наследника не пускают в квартиру где остались вещи покойного","пропущен срок вступления в наследство по уважительной причине"], desc:"Нарушение наследственных прав — воспрепятствование вступлению в наследство", code:"gk", article:"ст. 1038-1083 ГК РК", penalty:"Восстановление срока для принятия наследства через суд, перераспределение долей", docKey:"gk" },
{ id:56, fabula:["сосед передвинул забор на метр захватив часть чужого участка","человек занял пустующий участок земли и начал там строиться","незаконно огородили кусок поля под парковку"], desc:"Самовольный захват земельного участка — занятие земли без правоустанавливающих документов", code:"zk", article:"ст. 43-1, 164 ЗК РК", penalty:"Возврат участка собственнику, снос построек за свой счёт, возмещение ущерба", docKey:"zk" },
{ id:57, fabula:["на участке под ИЖС открыли автомойку","землю выделенную под фермерство застроили коттеджами","на сельхозземле работает завод"], desc:"Нецелевое использование земельного участка — использование не по назначению", code:"zk", article:"ст. 65 ЗК РК", penalty:"Предупреждение, штраф, принудительное изъятие земельного участка", docKey:"zk" },
{ id:58, fabula:["участок купили 5 лет назад но ничего на нём не построили","земля простаивает несколько лет зарастает бурьяном","владелец забросил участок и не использует его по назначению"], desc:"Нарушение сроков освоения земельного участка — неиспользование участка по назначению", code:"zk", article:"ст. 68 ЗК РК", penalty:"Принудительное изъятие земельного участка в судебном порядке", docKey:"zk" },
{ id:59, fabula:["на поле разлили химикаты и уничтожили плодородный слой почвы","после аварии нефтепровода земля стала непригодной","строители сняли верхний слой чернозёма и продали"], desc:"Порча земель — уничтожение плодородного слоя почвы, загрязнение химическими веществами", code:"zk", article:"ст. 140 ЗК РК", penalty:"Возмещение ущерба, рекультивация за свой счёт, штраф до 500 МРП", docKey:"zk" },
{ id:60, fabula:["завод выбрасывает чёрный дым без очистки","превышены все допустимые нормы выбросов в атмосферу","предприятие работает без экологического разрешения и загрязняет воздух"], desc:"Загрязнение атмосферного воздуха — превышение нормативов выбросов загрязняющих веществ", code:"ek", article:"ст. 328 ЭкоК РК", penalty:"Штраф до 500 МРП, приостановление деятельности, возмещение экологического ущерба", docKey:"ek" },
{ id:61, fabula:["за городом организовали несанкционированную свалку","опасные отходы сливают в овраг рядом с посёлком","стройкомпания вывозит мусор в лесополосу"], desc:"Нарушение правил обращения с отходами — несанкционированное размещение, хранение, захоронение", code:"ek", article:"ст. 331 ЭкоК РК", penalty:"Штраф до 1000 МРП для юрлиц, ликвидация свалки за счёт нарушителя", docKey:"ek" },
{ id:62, fabula:["браконьеры убили снежного барса занесённого в Красную книгу","уничтожили популяцию редких тюльпанов в степи","незаконно добыли несколько особей сайгака"], desc:"Уничтожение редких видов растений и животных, занесённых в Красную книгу РК", code:"ek", article:"ст. 339 ЭкоК РК", penalty:"Штраф до 2500 МРП, возмещение ущерба", docKey:"ek" },
{ id:63, fabula:["фабрика сливает химические отходы в реку без очистки","предприятие превышает квоту на выбросы в разы","завод работает вообще без экологического разрешения на эмиссии"], desc:"Превышение нормативов эмиссий в окружающую среду без экологического разрешения", code:"ek", article:"ст. 327 ЭкоК РК", penalty:"Штраф до 200% от ставки платы за эмиссии, приостановление или запрет деятельности", docKey:"ek" },
{ id:64, fabula:["родители уехали на месяц оставив маленьких детей одних дома","мать постоянно пьёт и не заботится о ребёнке","родители не обеспечивают ребёнку питание одежду и образование"], desc:"Неисполнение родительских обязанностей — уклонение от воспитания и содержания детей — по Семейному кодексу", code:"sk", article:"ст. 67-70 СК РК", penalty:"Предупреждение, административный штраф, ограничение либо лишение родительских прав", docKey:"sk" },
{ id:65, fabula:["отец после развода перестал платить алименты на детей","должник по алиментам скрывает свои доходы и место работы","уже несколько лет не платит алименты и накопил большой долг"], desc:"Уклонение от уплаты алиментов на содержание несовершеннолетних детей", code:"sk", article:"ст. 139, 140 СК РК", penalty:"Административный арест до 10 суток, ограничение выезда за границу, лишение водительских прав, уголовная ответственность при злостном уклонении", docKey:"sk" },
{ id:66, fabula:["после развода бывшая жена не даёт отцу видеться с ребёнком","один из родителей скрывает местонахождение ребёнка от второго","бабушка препятствует общению отца с детьми после развода"], desc:"Нарушение права ребёнка на общение с отдельно проживающим родителем", code:"sk", article:"ст. 67 СК РК", penalty:"Определение порядка общения через суд, административная ответственность, передача ребёнка добросовестному родителю", docKey:"sk" },
{ id:67, fabula:["купили телефон а он сломался на третий день","в магазине отказываются принимать обратно бракованный товар","гарантийный ремонт длится уже четвёртый месяц"], desc:"Продажа некачественного товара, отказ в возврате или обмене, нарушение сроков гарантийного ремонта", code:"zakon", article:"Закон «О защите прав потребителей»", penalty:"Возврат денег, замена товара, неустойка 1% в день, возмещение морального вреда через суд", docKey:"zakon_potreb" },
{ id:68, fabula:["иностранец уже полгода живёт в Казахстане без регистрации","человек просрочил разрешение на проживание и не выехал","нелегально работают иностранцы без разрешения на трудовую деятельность"], desc:"Нарушение миграционного законодательства — проживание без регистрации, просрочка срока пребывания", code:"zakon", article:"Закон «О миграции населения»", penalty:"Штраф 25-50 МРП, выдворение за пределы РК, запрет на въезд до 5 лет", docKey:"zakon_migr" },
{ id:69, fabula:["компания продала базу данных клиентов третьим лицам без их согласия","произошла утечка персональных данных пользователей сайта","собирают и обрабатывают личные данные людей без разрешения"], desc:"Незаконный сбор, обработка, распространение персональных данных без согласия субъекта", code:"zakon", article:"Закон «О персональных данных и их защите»", penalty:"Штраф до 500 МРП, возмещение ущерба, уголовная ответственность при крупном ущербе", docKey:"zakon_pd" },
{ id:70, fabula:["в рекламе указали что средство лечит все болезни хотя это не так","баннер обещает золотые горы а на деле обман","по радио крутят скрытую рекламу без маркировки"], desc:"Ненадлежащая реклама — недостоверная, недобросовестная, скрытая реклама", code:"zakon", article:"Закон «О рекламе»", penalty:"Штраф до 300 МРП, приостановление рекламы, демонтаж рекламной конструкции, публичное опровержение", docKey:"zakon_reklama" },
{ id:71, fabula:["на тендере выбрали компанию аффилированную с чиновником","конкурсная комиссия незаконно отклонила всех кроме нужного участника","две фирмы сговорились о ценах на госзакупках"], desc:"Нарушение правил государственных закупок — аффилированность, сговор участников", code:"zakon", article:"Закон «О государственных закупках»", penalty:"Признание итогов закупок недействительными, штраф до 500 МРП, включение в реестр недобросовестных участников", docKey:"zakon_goszakup" },
{ id:72, fabula:["чиновник не уведомил о конфликте интересов при принятии решения","должностное лицо приняло подарок дороже разрешённого лимита","госслужащий совмещает должность с предпринимательской деятельностью"], desc:"Нарушение антикоррупционного законодательства — конфликт интересов, нарушение ограничений", code:"zakon", article:"Закон «О противодействии коррупции»", penalty:"Административное увольнение, штраф, уголовная ответственность при отягчающих обстоятельствах", docKey:"zakon_antikorr" },
{ id:73, fabula:["хакер взломал государственную базу данных","незаконно получили доступ к закрытой информации","кто-то проник в информационную систему без разрешения"], desc:"Неправомерный доступ к информации, охраняемой законом, в том числе к государственным информационным системам", code:"zakon", article:"Закон «Об информатизации»", penalty:"Штраф до 2000 МРП, лишение свободы до 5 лет (ст. 205 УК)", docKey:"zakon_info" },
{ id:74, fabula:["все вывески магазина только на русском языке без перевода","госорган не соблюдает требования по ведению делопроизводства на казахском","на сайте компании нет версии на государственном языке"], desc:"Нарушение языкового законодательства — несоблюдение требований о применении государственного языка", code:"zakon", article:"Закон «О языках в РК»", penalty:"Административный штраф до 50 МРП, предписание устранить нарушение", docKey:"zakon_yazyk" },
{ id:75, fabula:["пешеход перебежал дорогу в неположенном месте","человек перешёл перекрёсток на красный свет","ребёнок выбежал на проезжую часть вне перехода"], desc:"Нарушение ПДД пешеходом — переход дороги вне пешеходного перехода или на запрещающий сигнал", code:"pravila", article:"Правила ДД, п. 12-13", penalty:"Штраф 2 МРП", docKey:"pravila" },
{ id:76, fabula:["таксист работает без лицензии на перевозку пассажиров","в автобусе едет в два раза больше людей чем положено","маршрутка ездит по несогласованному маршруту"], desc:"Нарушение правил перевозки пассажиров и багажа — перевозка без лицензии, превышение количества пассажиров", code:"pravila", article:"Правила перевозок пассажиров", penalty:"Штраф до 100 МРП, изъятие транспортного средства", docKey:"pravila" },
{ id:77, fabula:["строительная компания грубо нарушила строительные нормы и дом дал трещину","в новостройке обрушилась стена из-за нарушений СНиП","подрядчик сэкономил на материалах что привело к аварийному состоянию здания"], desc:"Нарушение строительных норм и правил (СНиП) — отклонение от проектной документации", code:"pravila", article:"СНиП РК, Правила организации застройки", penalty:"Приостановление строительства, штраф, снос объекта, аннулирование лицензии подрядчика", docKey:"pravila" },
{ id:78, fabula:["туристы не потушили костёр в лесу и начался пожар","в пожароопасный сезон развели огонь в лесном массиве","бросили непотушенную сигарету в сухую траву у леса"], desc:"Нарушение правил пожарной безопасности в лесах — разведение костров в пожароопасный период", code:"pravila", article:"Правила пожарной безопасности в лесах РК", penalty:"Штраф до 500 МРП, возмещение ущерба лесному фонду, уголовная ответственность при крупном ущербе", docKey:"pravila" },
{ id:79, fabula:["сосед выгуливает бойцовскую собаку без поводка и намордника","собака укусила ребёнка во дворе","хозяин оставил агрессивного пса без присмотра на улице"], desc:"Нарушение правил содержания и выгула домашних животных — выгул без поводка и намордника", code:"pravila", article:"Правила содержания животных в РК", penalty:"Штраф 5-20 МРП, возмещение вреда пострадавшим, изъятие животного", docKey:"pravila" },
{ id:80, fabula:["в квартире снесли несущую стену без разрешения","сделали перепланировку офиса без согласования с архитектурой","объединили две квартиры самовольно без документов"], desc:"Незаконная перепланировка помещений без согласования с уполномоченными органами", code:"pravila", article:"Правила переустройства помещений", penalty:"Штраф до 100 МРП, предписание вернуть помещение в первоначальное состояние за свой счёт", docKey:"pravila" }
];
let currentQuery = "";
let currentCode = "all";
function codeLabel(c) {
const map = { koap:"КоАП", uk:"УК", tk:"ТК", nk:"НК", gk:"ГК", zk:"ЗК", ek:"ЭкоК", sk:"СК", zakon:"Закон", pravila:"Правила" };
return map[c] || c.toUpperCase();
}
function getDocLink(v) {
if (v.docKey && CODE_DOC[v.docKey]) return CODE_DOC[v.docKey];
return CODE_DOC[v.code] || "https://adilet.zan.kz";
}
function highlight(text, query) {
if (!query) return text;
const words = query.toLowerCase().split(/\s+/).filter(w => w.length > 1);
let result = text;
words.forEach(w => {
const re = new RegExp(`(${w.replace(/[.*+?^${}()|[\]\\]/g,'\\$&')})`, 'gi');
result = result.replace(re, '<mark>$1</mark>');
});
return result;
}
function matchScore(v, words) {
let score = 0;
for (const w of words) {
for (const f of (v.fabula || [])) {
if (f.toLowerCase().includes(w)) score += 3;
}
if (v.desc.toLowerCase().includes(w)) score += 2;
if (v.article.toLowerCase().includes(w)) score += 1;
if (v.penalty.toLowerCase().includes(w)) score += 1;
}
return score;
}
function filterAndSearch() {
let results = VIOLATIONS;
if (currentCode !== "all") {
results = results.filter(v => v.code === currentCode);
}
const q = currentQuery.trim().toLowerCase();
const words = q.split(/\s+/).filter(w => w.length > 0);
if (q) {
results = results
.filter(v => matchScore(v, words) > 0)
.sort((a, b) => matchScore(b, words) - matchScore(a, words));
}
render(results, currentQuery);
}
function render(results, query) {
const grid = document.getElementById("results");
const empty = document.getElementById("empty");
const stats = document.getElementById("stats");
stats.textContent = query.trim()
? `Найдено: ${results.length} из ${VIOLATIONS.length}`
: `Всего: ${VIOLATIONS.length} составов нарушений`;
if (results.length === 0) {
grid.innerHTML = "";
empty.style.display = "";
return;
}
empty.style.display = "none";
grid.innerHTML = results.map(v => `
<div class="violation-card">
<div class="card-top">
<div class="article-badge ${v.code}">
<span class="badge-label">${codeLabel(v.code)}</span>
<span class="badge-article">${v.article}</span>
</div>
<div class="card-info">
<div class="verdict">&#x26A0;&#xFE0F; Нарушен: ${codeLabel(v.code)} ${v.article}</div>
<h3>${highlight(v.desc.split(" —")[0], query)}</h3>
<div class="desc">${highlight(v.desc, query)}</div>
</div>
</div>
<div class="card-footer">
<div class="penalty"><strong>Наказание:</strong> ${v.penalty}</div>
<a class="doc-link" href="${getDocLink(v)}" target="_blank">&#x1F4C4; Текст НПА на adilet.zan.kz</a>
</div>
</div>
`).join("");
}
function search() {
currentQuery = document.getElementById("search").value;
filterAndSearch();
}
function setFilter(code, btn) {
currentCode = code;
document.querySelectorAll(".filter-btn").forEach(b => b.classList.remove("active"));
btn.classList.add("active");
filterAndSearch();
}
document.getElementById("search").addEventListener("input", search);
document.getElementById("search").addEventListener("keydown", function(e) {
if (e.key === "Enter") { currentQuery = this.value; filterAndSearch(); }
});
filterAndSearch();
</script>
</body>
</html>