Compare commits

...

106 Commits
main ... pages

Author SHA1 Message Date
aeb614e854 v96.2: fix orphaned saveUsers, balanced braces 2026-06-10 09:05:19 +00:00
452f1a3752 v96.1: fix orphaned code, restore saveUsers 2026-06-10 09:04:25 +00:00
9dbd1ece8c v96: LTIF, dashboards export, rename to QAZAQtelecom HSE 2026-06-10 09:02:48 +00:00
d3ffd7ea38 v95.1: fix orphaned braces 2026-06-10 08:43:16 +00:00
b4232a6c69 v95: Jarvis AI, registration modal, KazakhTelecom design 2026-06-10 08:42:11 +00:00
48d04ee53e v94.1: fix orphaned code from old dlHTML 2026-06-10 08:39:44 +00:00
c132f20bdd v94: Jarvis AI, per-sub-item notes, HTML export files per event 2026-06-10 08:38:22 +00:00
5bfab18e7e v93: multi-branch files + user management panel 2026-06-10 06:51:52 +00:00
d807e15dc1 v92: reports cleanup, no ranking, HTML export with files 2026-06-10 06:48:10 +00:00
d15064d624 v91.1: fix reports - default year period 2026-06-10 06:30:53 +00:00
e9be55bac9 v91: 3 statuses, sub-item owners, new branches, no progress field 2026-06-10 06:29:52 +00:00
c508f9fd29 v90: sub-item isolation - own files, own Open button, no checkboxes 2026-06-10 06:19:41 +00:00
b798cc90a7 v89: expand sub-items as separate rows with own Open button 2026-06-10 06:08:32 +00:00
a951bb74d8 v88: separate Open button + replace Branch with Responsible column 2026-06-10 06:05:28 +00:00
71734eddac v87: Word/PDF exports + hse.sk.kz integration (fixed) 2026-06-10 05:17:34 +00:00
507281dfee v87: +Word/PDF export, +hse.sk.kz integration (server.py) 2026-06-10 05:12:25 +00:00
8584419acc v86: fix span closing tag, add period Q1-Q4/half/year 2026-06-10 04:35:16 +00:00
690b90708b v85: fix spans for modal, add period ranges to reports 2026-06-10 04:33:09 +00:00
c43e733419 v84: add period selector to reports, quantity+notes to events modal 2026-06-10 04:15:46 +00:00
24fd146b10 v83: full app - sidebar, analytics, reports, AI, file upload, backup 2026-06-10 03:47:19 +00:00
3dadd31a6e v82: fix regex newline bug, embed all 35 events 2026-06-09 16:12:05 +00:00
011fb0bbf3 v81: 35 мероприятий встроены напрямую, без XHR 2026-06-09 16:08:54 +00:00
fc7aaa82f5 v80: стили + таблица — шаг 1 2026-06-09 16:04:03 +00:00
943ce1e12c v79: супер-простой тест 2026-06-09 16:02:42 +00:00
c719e83774 v78: ультра-минимал — без XHR, без data.json 2026-06-09 16:00:41 +00:00
b9f8a2c0f9 v77: точный v60 — проверено работает 2026-06-09 15:59:11 +00:00
466d74a3ce v76: try-catch на все вкладки + правки 2026-06-09 15:49:43 +00:00
c9d74a2a02 v74: полная версия — всё на месте, переписано чисто 2026-06-09 15:44:41 +00:00
56c325739d v73: возврат к v60 — строим заново аккуратно 2026-06-09 15:41:43 +00:00
c679f798df v72: полная версия v66 — все функции до Word/PDF 2026-06-09 15:40:59 +00:00
9947611dc4 v71: полная v62 — сайдбар, аналитика, AI 2026-06-09 15:38:18 +00:00
c39a9d3903 v70: откат к v60 — минимальный рабочий код 2026-06-09 15:21:41 +00:00
e5388e99ca v69: откат к v62 (рабочая версия) 2026-06-09 15:19:50 +00:00
200b92bf56 v68: откат проблемных функций, чистый JS 2026-06-09 15:18:26 +00:00
c3d3813ce2 v67: Word, PDF, подписание по месяцам, интеграция HSE 2026-06-09 14:38:39 +00:00
78d122136c v66: фикс ИИ — компактнее, без ошибок 2026-06-09 14:28:58 +00:00
e7199ca29f v65: ИИ-помощник — 17 модулей, расчёт рисков, советник директора 2026-06-09 12:42:34 +00:00
f755ed6f9f v64: скачивание аналитики CSV/HTML 2026-06-09 12:35:27 +00:00
2c27241021 v63: форматы файлов и лимит 3 МБ в форме загрузки 2026-06-09 12:32:42 +00:00
185e21933e v62: дизайн Казахтелеком, сайдбар, AI расширен, регионы убраны 2026-06-09 12:31:55 +00:00
09d3fcecd8 v61: полное восстановление с рабочим JS — без шаблонных литералов 2026-06-09 12:21:19 +00:00
9bfc5c2054 v60: чистый перезапуск — минимум кода, проверенный JS 2026-06-09 12:11:44 +00:00
a8c443a5c9 test4 2026-06-09 12:10:04 +00:00
4c928a42ca test3 2026-06-09 12:06:32 +00:00
e5bdb47505 v59: асинхронная загрузка data.json, убран sync XHR 2026-06-09 12:06:03 +00:00
7a78473977 v58: фикс init — проверка cu перед show() 2026-06-09 12:04:31 +00:00
6de0432dcc v57: аналитика, ТОПы, AI-чат, уведомления 30/14/7/1, остаток дней, метаданные 2026-06-09 12:00:55 +00:00
7ba30210e8 v56: AI-ассистент + файлы в HTML-отчёте кликабельны 2026-06-09 11:51:02 +00:00
bf140a793d v55: убраны дублирующие поля для пунктов с подпунктами 2026-06-09 11:42:24 +00:00
4b02731ef7 v54: убраны галочки и лишнее из подпунктов в форме 2026-06-09 11:18:28 +00:00
a0c3829520 v53: фикс двойной ; и shadowing переменной в подпунктах 2026-06-09 10:42:41 +00:00
1fb14c1b92 v52: разделы полные, фильтр по филиалам, фикс подпунктов 2026-06-09 10:10:06 +00:00
bd43fb99b5 v51: точные названия и ответственные из плана, переносы строк 2026-06-09 09:44:42 +00:00
1488314cc4 v50: таблица: №, Мероприятие, Ответственные, Раздел, Срок, Статус 2026-06-09 09:38:49 +00:00
de3c0a95e5 v49: точные названия из плана, разделы, data.json 2026-06-09 09:34:06 +00:00
74e4ba272a v48: фильтр по месяцам на вкладке Мероприятия 2026-06-09 09:16:57 +00:00
4067e3dfcc v47: фильтр по месяцам на вкладке Отчёты 2026-06-09 08:46:02 +00:00
1bda422d7b v46: полные названия мероприятий и ответственные из плана 2026-06-09 08:45:18 +00:00
8ab1880e08 v45: убрано поле описания файла 2026-06-09 08:13:52 +00:00
7a5415d506 v44: новый ключ localStorage — 35 мероприятий 2026-06-09 03:42:08 +00:00
26c9ca1813 v43: форма по ТЗ, 35 мероприятий, статусы, убран прогресс, иконки файлов 2026-06-09 03:37:02 +00:00
de294ed219 v42: упрощённая версия — чище, меньше кода 2026-06-05 13:06:56 +00:00
7ebb2950d0 v41: количественные показатели — поле «Количество» в отчётах и аналитике 2026-06-05 09:38:00 +00:00
26e483874d v40: все оптимизации — поиск, фильтр, сортировка, цвета, кеш, убран «процесс» 2026-06-05 09:36:28 +00:00
3e88dd6280 v39: все работники видят все мероприятия 2026-06-05 09:24:24 +00:00
0f570cf188 v38: фикс загрузки файлов для подпунктов — ID кнопки 2026-06-05 09:23:32 +00:00
02c58b76fc v37: полная пересборка — логин через onclick, без strict 2026-06-05 09:13:25 +00:00
f5c1fda9cb js-test 2026-06-05 08:54:12 +00:00
5b09c43f16 test2 2026-06-05 08:54:00 +00:00
d5d4935265 test page 2026-06-05 08:51:56 +00:00
2b369bbd59 v36: восстановлена функция renderAll 2026-06-05 08:50:43 +00:00
4548cace68 v35: удалён дубликат кода, фикс синтаксиса 2026-06-05 08:47:26 +00:00
e63dab3c7e v34: регионы везде — таблица, дашборд, CSV, HTML, без жёсткой привязки 2026-06-05 08:40:50 +00:00
53513321ba v33: регионы как измерение отчётности — выбор региона в модалке 2026-06-05 08:38:20 +00:00
c7a3911abc v32: сводка по филиалам для куратора — что загружено 2026-06-05 08:33:06 +00:00
758f4eb72b v31: регионы в таблице/модалке/отчётах + доступ dpp@telecom.kz 2026-06-05 08:30:02 +00:00
ef39f491d6 v30: куратор может выбрать филиал и работать как ответственный 2026-06-05 07:30:20 +00:00
73b66a2f37 v29: регионы, роли, журнал действий, уведомления по срокам 2026-06-05 07:26:36 +00:00
28a4aa326c v28: переписан viewer.html — addEventListener, обработка ошибок, сортировка 2026-06-05 07:09:53 +00:00
e43471efcc v27: просмотрщик бекапов — открывает JSON и даёт скачать файлы 2026-06-05 07:00:28 +00:00
9e900d1c3d v26: убраны base64 из отчёта, добавлена подсказка про бекап 2026-06-05 06:57:17 +00:00
1d729b6c49 v25: файлы встроены в HTML-отчёт + обработка ошибок размера 2026-06-05 06:49:38 +00:00
b63c0906d4 v24: фикс скачивания отчёта — убраны тяжёлые data URL 2026-06-05 06:16:47 +00:00
05f39bea25 v23: лимит файла увеличен до 3 МБ 2026-06-05 06:04:18 +00:00
df44758cdb v22: экспорт/импорт всех данных — сохранение и восстановление 2026-06-05 06:02:49 +00:00
15180b11b9 v21: индикатор хранилища, кнопка очистки, лимит 1.5 МБ 2026-06-05 05:44:39 +00:00
4cc95a366f v20: файлы в HTML-отчёте — кликабельны, открываются при нажатии 2026-06-05 05:39:26 +00:00
812ad693c3 v19: чёткое разделение файлов подпунктов и общих, кнопка 📂/📎 2026-06-05 04:53:48 +00:00
15fdf39f18 v18: фикс ключей месяцев в upload/save/dl/rm 2026-06-05 04:15:51 +00:00
b41bc1d768 v17: файлы для каждого подпункта отдельно по месяцам 2026-06-05 04:02:31 +00:00
26ee5d4356 v16: подпункты с чекбоксами прямо в таблице, раскрытие по ▶ 2026-06-04 12:37:43 +00:00
14ca3d5c60 v15: CSV+HTML отчёты с текстами и списками файлов 2026-06-04 12:33:41 +00:00
007676595c v14: дашборд, аналитика, фикс загрузки, скачивание CSV-отчёта 2026-06-04 12:27:54 +00:00
871282be97 v13: полная пересборка JS без ошибок, data.json 2026-06-04 12:20:57 +00:00
0116112a3e v12: удалён дубликат openEdit, фикс входа 2026-06-04 12:10:27 +00:00
b9bdf6aef3 v11: фикс загрузки, текст отчёта без файлов, статус «В процессе» 2026-06-04 12:04:57 +00:00
02f4e4a472 v10: подпункты, отчёты по месяцам, описание файлов 2026-06-04 11:34:31 +00:00
239c51a0a3 v9: скачивание загруженных файлов 2026-06-04 11:27:26 +00:00
8ca93f6275 v8: вход по почте, личный кабинет, загрузка файлов, уведомления 2026-06-04 11:06:30 +00:00
a14559d08f v7: точные названия мероприятий из утверждённого плана 2026-06-04 10:34:32 +00:00
55144597e6 v6: исполнители из утверждённого плана 2026-06-04 10:27:47 +00:00
691fd4af5f v5: реальные дивизионы Казахтелеком 2026-06-04 10:12:23 +00:00
fe8388f47c v4: 35 мероприятий из реального плана Казахтелеком ПБ-2026 2026-06-04 10:04:21 +00:00
ad4c3efc89 v3: интерактивный прототип платформы 2026-06-04 09:42:30 +00:00
5ad8ce91a4 v2: полный лендинг по ТЗ 2026-06-04 04:37:50 +00:00
63d464d05b v1 2026-06-04 04:30:55 +00:00
12 changed files with 2516 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
__pycache__/

173
AGENTS.md Normal file
View File

@ -0,0 +1,173 @@
<!-- vibe42-agents-version: v3-guided-2026-06-01 -->
# Vibe42 — учебная песочница для лендингов
Workspace юзера `askar_gazizov`. Это **учебная среда**, где обычные люди (не разработчики) пробуют сделать свой первый сайт.
---
## 🎯 ТВОЯ РОЛЬ
Ты — **гид и помощник**, а не слепой исполнитель. Цель сессии — чтобы юзер вышел с:
1. **рабочим лендингом**, опубликованным по адресу `https://pages.git.vibe42.kz/askar_gazizov/<repo>/`,
2. ощущением «это было легко» — без серверов, БД, токенов, конфигов.
Юзер не разработчик. Ему важен **результат, который видно в браузере**, а не код.
---
## 🗺 СЦЕНАРИЙ ПЕРВОГО ЗАХОДА (юзер только зашёл, ещё ничего нет)
1. Поздоровайся коротко: «Привет! Тут за 10 минут собираем лендинг и публикуем его в интернете. О чём хочешь сделать?»
2. Если он не знает — предложи **4 конкретных идеи** (выбирай близкие к нему, не абстрактные):
- Промо хобби (фотография / музыка / спорт)
- Резюме / personal page с контактами
- Афиша мероприятия (концерт, день рождения, мастер-класс)
- Меню заведения / прайс услуг
- Лендинг продукта или будущего проекта (waitlist)
3. Уточни **2 короткие детали**: стиль (тёмный/светлый/яркий) и главную цель (рассказать / собрать заявку / показать работы).
4. Сразу делай `./new-project <name>` и собирай страницу. Не спрашивай разрешения на каждый шаг.
---
## 💬 ЕСЛИ ЮЗЕР ОТВЕЧАЕТ РАСПЛЫВЧАТО
Юзер говорит «сделай что-нибудь» / «ну хз» / «сюрприз» → **не делай ничего абстрактного**.
Скажи: «Давай определимся, я задам 3 коротких вопроса:
1. Это для тебя лично, для проекта/бизнеса, или для события?
2. Главная цель — рассказать о чём-то / собрать заявку / показать портфолио?
3. Любимое настроение — строгое тёмное, лёгкое светлое, яркое цветное?»
После ответов **сразу** предложи 2 конкретных варианта названия+структуры. Дай выбрать и иди делать.
---
## 🚫 ЕСЛИ ЮЗЕР ХОЧЕТ СЛОЖНОЕ — ПЕРЕФОРМУЛИРУЙ В ЛЕНДИНГ
| Запрос | Что делаем вместо |
|--------|-------------------|
| «магазин с корзиной» | лендинг с товарами + кнопка «купить» = ссылка на WhatsApp / Telegram |
| «соцсеть» | лендинг будущего проекта + waitlist-форма (Formspree / Getform) |
| «блог с админкой» | personal-page + ссылки на статьи в Telegram/Medium |
| «приложение для записи» | лендинг услуги + ссылка на Calendly / WhatsApp |
| «сайт с входом юзеров» | публичный лендинг без логина (нам логин не нужен) |
| «бот в Telegram» | лендинг с описанием бота + кнопка `t.me/...` |
**Не говори «это невозможно».** Скажи: «У нас песочница только для статических сайтов. Давай сделаем лендинг, который покажет твою идею — а кнопки/формы свяжем с готовыми сервисами (WhatsApp, Telegram, Formspree)». Юзер счастлив, результат за 15 минут.
---
## 📐 ШАБЛОНЫ СТРАНИЦ (выбирай под идею юзера)
### A — Промо продукта/услуги
**Секции:** Hero (заголовок + подзаголовок + CTA-кнопка) → 3-4 преимущества (иконка emoji + текст) → социальное доказательство (отзыв или цифра) → CTA (кнопка/телефон/мессенджер).
### B — Personal / резюме
**Секции:** Hero (фото-аватарка + имя + одна фраза «кто я») → О себе (1-2 абзаца) → 3-5 карточек проектов/опыта → Контакты (email, telegram, github как ссылки-кнопки).
### C — Афиша мероприятия
**Секции:** Hero (название + дата + место крупно) → Программа (список с временем) → Локация (картинка-placeholder + адрес) → Регистрация (форма Formspree или контакт).
### D — Меню / прайс
**Секции:** Hero (название + слоган) → Меню/прайс (категории с ценами) → Контакты (телефон, адрес, часы работы, карта-картинка).
### E — Waitlist для будущего проекта
**Секции:** Hero (название проекта + одна фраза + email-форма) → 3 фичи «что будет» → FAQ (3 пункта) → CTA (та же email-форма).
Все шаблоны — **одна страница, прокрутка вниз**. Никаких роутов, ничего динамического.
---
## ⚡ РИТУАЛ ПОСЛЕ ПЕРВОГО ЗАПУСКА
Как только готов первый рабочий вариант (даже грубый):
1. **Сразу запушь:**
```bash
git add -A
git commit -m "v1"
git push origin HEAD:pages
```
2. **ОБЯЗАТЕЛЬНО** дай юзеру ссылку **жирно**:
> 🎉 Готово! Твой лендинг здесь: **https://pages.git.vibe42.kz/askar_gazizov/<repo>/**
3. Скажи: «Открой в новой вкладке, посмотри. Что хочешь поменять?»
4. Дальше короткие итерации: правка → push → новый URL-показ. Каждые 2-3 правки — push.
---
## ⚠️ ЖЕЛЕЗНЫЕ ПРАВИЛА (НЕ нарушать никогда)
1. **Только статика — HTML + CSS + JS в браузере.**
2. **Никакого бэкенда.** Никаких Node/Express/FastAPI/Django/PHP/Go-серверов. Никаких БД. Никакого Redis.
3. **Никакой аутентификации / OAuth / JWT.**
4. **Никакого Docker, nginx, sudo, системных настроек.**
5. **Никаких тяжёлых сборщиков** (`npm install` дерево на 500МБ). Tailwind — только через CDN.
6. **НИКОГДА `git init` в workspace root (`/workspaces/askar_gazizov`)** — это папка-контейнер юзера, не репозиторий.
---
## ✅ ВСЕГДА работай через `./new-project`
Если юзер сказал «сделай сайт NAME» / «создай проект NAME»:
```bash
cd /workspaces/askar_gazizov
./new-project NAME # создаёт repo в Gitea + клонит локально в ./NAME/
cd NAME
# теперь создавай index.html / style.css / script.js внутри ./NAME
```
`./new-project` сам создаёт repo, клонит, и копирует туда `AGENTS.md` + `design.md`.
---
## 🌐 Git и публикация
**НЕТ GitHub.** Self-hosted git: **https://git.vibe42.kz**
- Профиль юзера: https://git.vibe42.kz/askar_gazizov
- Pages (живые лендинги): https://pages.git.vibe42.kz/askar_gazizov/<repo>/
- Креды уже в `/workspaces/askar_gazizov/.git-credentials` — git push/clone работают без пароля
- **НЕ спрашивай юзера про GitHub URL / токен** — их не нужно
### Опубликовать лендинг
```bash
git add -A
git commit -m "site"
git push origin HEAD:pages
```
Ветка **`pages`** (Caddy её обслуживает; `gh-pages` тоже работает как fallback). Push → лендинг доступен мгновенно.
---
## 🔧 Когда что-то идёт не так
- **Pages 404** → запушь ветку `pages` снова: `git push origin HEAD:pages -f`
- **Не дёргай Gitea API типа `/repos/.../pages`, `/settings/pages`, `/deploy_keys`** — их нет
- **Не пытайся «настроить Pages через UI Gitea»** — Pages у нас работают только через push в ветку `pages`
- Запуталось — сделай новый чистый проект через `./new-project NAME-v2`, перенеси туда работающий index.html
---
## ❌ Чего НЕ делать НИКОГДА
- ❌ `git init` в workspace root
- ❌ `npm install` с прод-зависимостями (express/mongoose/pg/prisma/next/nuxt)
- ❌ Создавать `server.js` / `app.py` / `main.go` как backend
- ❌ Использовать `gh` CLI или GitHub API
- ❌ Вызывать Gitea Pages-API (его нет)
- ❌ Долгое отлаживание Pages — почти всегда решение «push HEAD:pages»
- ❌ Просить юзера ввести токен/URL/пароль — всё уже настроено
- ❌ Задавать юзеру 10 вопросов подряд (максимум 2-3 за раз)
- ❌ Показывать юзеру голый код больше 1 раза — ему важен результат, а не как написано
- ❌ Предлагать «давай сначала дизайн в Figma» — мы делаем сразу в HTML
- ❌ Говорить «это сложно» — переформулируй в простое
- ❌ Зависать в обсуждениях — сделай первый вариант грубо, потом итерируй
---
## 🎨 design.md
Рядом лежит `design.md` с готовой палитрой, типографикой и стартер-шаблоном `index.html`. **Начинай с него.** Не выдумывай новые цвета — модифицируй существующие.

718
data.json Normal file
View File

@ -0,0 +1,718 @@
[
{
"id": 1,
"sec": 0,
"b": 6,
"s": "warn",
"p": 45,
"due": "31.12.2026",
"done": "—",
"dname": "Сертификаты, протоколы, электронная ведомость обучения",
"r": "Генеральный директор КУ\nГенеральные директора филиалов и ДАО",
"t": "Продолжить проведение обучения и повышения квалификации руководителей и работников компании в соответствии с лучшими международными практиками, ориентированными на специфику условий труда, работы повышенной опасности и требований промышленной безопасности, а также развитие культуры безопасности, включая обучение производственного персонала по курсу «Культура безопасного труда», в том числе с применением VR, AR технологий и цифровых симуляторов аварийных ситуаций по различным направлениям производственной безопасности (с правом выдачи сертификатов).",
"ai": "Обучение ведётся по графику. Охвачено 45% персонала.",
"h": [
"15.01 — Создано",
"01.03 — Запущено"
]
},
{
"id": 2,
"sec": 0,
"b": 0,
"s": "done",
"p": 100,
"due": "31.03.2026",
"done": "28.03.2026",
"dname": "Отчёт о проведённом анализе, утверждённый ВНД",
"r": "Директор ДПБ\nГенеральный директор ДИТ\nГенеральные директора филиалов и ДАО",
"t": "Провести анализ, в том числе с использованием аналитических платформ (Microsoft Teams, Power BI, Tableau, Qlik и др.), и в случае необходимости, осуществить пересмотр внутренних нормативных документов филиалов/ДАО Общества в соответствии со «Стратегией развития производственной безопасности АО «Самрук-Қазына» на 2024-2028 гг.», включая установку значений ключевых показателей производственной безопасности.",
"ai": "Анализ завершён в срок.",
"h": [
"10.01 — Создано",
"28.03 — Утверждён"
]
},
{
"id": 3,
"sec": 0,
"b": 0,
"s": "warn",
"p": 50,
"due": "31.12.2026",
"done": "—",
"dname": "Протоколы совещаний (a, b, c)",
"r": "а) Главный административный директор, Директор ДПБ\nГенеральные директора филиалов и ДАО\nb, c) Генеральные директора филиалов и ДАО",
"t": "Организовывать тематические совещания по вопросам производственной безопасности, в том числе с целью разъяснения внедряемых программ и инициатив:\na) руководство Общества с филиалами/ДАО Общества, не менее одного раза в квартал, в том числе с целью личного мониторинга показателей эффективности по производственной безопасности в рамках «Стратегии развития производственной безопасности АО «Самрук-Қазына» на 2024-2028 гг.» и статуса исполнения «Плана мероприятий по производственной безопасности АО «Самрук-Қазына» на 2026 год»;\nb) руководство филиалов/ДАО Общества со структурными подразделениями, не менее 1 раза в месяц;\nc) руководство региональных подразделений/филиалов/ДАО Общества с подрядными организациями, осуществляющими работы/предоставляющими услуги на объектах, не менее 1 раза в квартал.",
"ai": "Проведено 2 квартальных совещания.",
"h": [
"10.01 — Создано",
"15.02 — Q1",
"15.05 — Q2"
],
"sub": [
{
"l": "a",
"t": "Руководство Общества с филиалами/ДАО Общества, не менее одного раза в квартал, с личным мониторингом показателей эффективности"
},
{
"l": "b",
"t": "Руководство филиалов/ДАО Общества со структурными подразделениями, не менее 1 раза в месяц"
},
{
"l": "c",
"t": "Руководство региональных подразделений/филиалов/ДАО с подрядными организациями, не менее 1 раза в квартал"
}
]
},
{
"id": 4,
"sec": 0,
"b": 6,
"s": "warn",
"p": 55,
"due": "31.12.2026",
"done": "—",
"dname": "Отчёт о проделанной работе, тесты",
"r": "Генеральные директора филиалов и ДАО",
"t": "Продолжить практику проверки знаний в формате тестирования после проведения инструктажей по охране труда в филиалах/ДАО Общества.",
"ai": "Тестирование внедрено в 6 филиалах. Средний результат — 82%.",
"h": [
"01.02 — Создано"
]
},
{
"id": 5,
"sec": 0,
"b": 0,
"s": "done",
"p": 100,
"due": "31.03.2026",
"done": "25.03.2026",
"dname": "Информация о нематериальном поощрении",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Рассмотреть возможность нематериального поощрения филиалов и ДАО Общества, демонстрирующих устойчивое снижение количества несчастных случаев, пожаров и аварий по итогам нескольких и более лет.",
"ai": "Положение утверждено.",
"h": [
"15.01 — Проект",
"25.03 — Утверждено"
]
},
{
"id": 6,
"sec": 0,
"b": 6,
"s": "warn",
"p": 60,
"due": "30.06.2026",
"done": "—",
"dname": "Утверждённый ВНД, перечень внутренних тренеров",
"r": "Генеральный директор КУ\nУправляющий директор по персоналу\nГенеральные директора филиалов и ДАО",
"t": "Разработать/внести изменения в случае необходимости и утвердить внутренний нормативный документ, регламентирующий процедуру работы внутренних тренеров, в том числе по производственной безопасности, включая порядок их отбора, подготовки и привлечения, а также установление условий доплаты к основной заработной плате за выполнение тренерских функций.",
"ai": "Проект ВНД на финальном согласовании.",
"h": [
"01.03 — Создано"
]
},
{
"id": 7,
"sec": 0,
"b": 1,
"s": "warn",
"p": 40,
"due": "31.12.2026",
"done": "—",
"dname": "Материалы, рассмотренные в рамках обмена опытом",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Проводить мероприятия по обмену опытом в области производственной безопасности:\na) Продолжить практику обмена передовым опытом на площадке Комитета HSE, в том числе путем выездов на производственные объекты ПК, с целью последующего тиражирования успешных практик в ПК.\nb) Рассмотреть возможность организации обмена опытом в области производственной безопасности для работников ПК с иностранными и казахстанскими компаниями, соответствующих деятельности ПК, в том числе путем проведения онлайн-семинаров.",
"ai": "Проведён 1 выезд на KEGOC.",
"h": [
"15.02 — Создано",
"01.04 — Выезд"
],
"sub": [
{
"l": "a",
"t": "Продолжить практику обмена передовым опытом на площадке Комитета HSE, в том числе путем выездов на производственные объекты ПК"
},
{
"l": "b",
"t": "Рассмотреть возможность организации обмена опытом с иностранными и казахстанскими компаниями, в том числе путем проведения онлайн-семинаров"
}
]
},
{
"id": 8,
"sec": 0,
"b": 4,
"s": "wait",
"p": 15,
"due": "30.09.2026",
"done": "—",
"dname": "Заключительный Акт, программа Well-being, отчёт о скрининге, отчёт о микротравмах",
"r": "а) Директор ДПБ\nb) Генеральный директор КУ\nУправляющий директор по персоналу\nc) Управляющий директор по персоналу\nГенеральные директора филиалов и ДАО\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Провести анализ эффективности реализуемых мероприятий по охране здоровья:\na) организовать и обеспечить 100% прохождение обязательных периодических медицинских осмотров работниками, включая офисных работников;\nb) организовать ежегодную «Неделю благополучия» (Well-being Week) для работников всех уровней, предусматривая практические мероприятия по стресс-менеджменту, ментальному здоровью и физической активности;\nc) создать условия и обеспечить контроль за прохождением медицинского скрининга работников в соответствии с Приказом и.о. Министра Здравоохранения РК от 30 октября 2020 года №КР ДСМ-174/2020, в том числе в целях раннего диагностирования факторов риска сердечно-сосудистых заболеваний;\nd) внедрить алгоритм учета и расследования микротравм, а также фиксировать использование содержимого медицинских аптечек путем регистрации и расследования данных случаев.",
"ai": "Медосмотры — Q3. Well-being — сентябрь.",
"h": [
"01.04 — Создано"
],
"sub": [
{
"l": "a",
"t": "Организовать и обеспечить 100% прохождение обязательных периодических медицинских осмотров работниками, включая офисных работников"
},
{
"l": "b",
"t": "Организовать ежегодную «Неделю благополучия» (Well-being Week) для работников всех уровней"
},
{
"l": "c",
"t": "Создать условия и обеспечить контроль за прохождением медицинского скрининга работников"
},
{
"l": "d",
"t": "Внедрить алгоритм учета и расследования микротравм, фиксировать использование содержимого медицинских аптечек"
}
]
},
{
"id": 9,
"sec": 0,
"b": 6,
"s": "wait",
"p": 20,
"due": "31.12.2026",
"done": "—",
"dname": "Результаты конкурсов, пакет материалов",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Рассмотреть возможность участия ДПБ/филиалов/ДАО Общества в международных/национальных конкурсах и отраслевых соревнованиях профессионального мастерства в области производственной безопасности.",
"ai": "Определены 2 конкурса.",
"h": [
"01.05 — Создано"
]
},
{
"id": 10,
"sec": 1,
"b": 1,
"s": "warn",
"p": 55,
"due": "31.12.2026",
"done": "—",
"dname": "Аналитическая справка в разбивке по филиалам/ДАО",
"r": "Генеральный директор ОДС\nГенеральный директор СФ\nГенеральный директор ДУП\nГенеральный директор ДИТ",
"t": "Проводить работы по техническому перевооружению морально и физически изношенного оборудования, зданий и сооружений, эксплуатация которых из-за их технического состояния сопровождается повышенными рисками возникновения аварий и несчастных случаев с тяжёлыми и летальными исходами, в соответствии с ранее утвержденными Планами на 2024-2027 годы.",
"ai": "По плану 2024-2027. Заменено 55%.",
"h": [
"01.01 — Переходящее"
]
},
{
"id": 11,
"sec": 1,
"b": 1,
"s": "warn",
"p": 70,
"due": "30.06.2026",
"done": "—",
"dname": "Переутверждённая процедура, фотоотчёт, протоколы обучения",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Пересмотреть и актуализировать внутренний порядок выдачи нарядно-допускной системы, усилив законодательные требования Республики Казахстан путем внедрения в пилотном режиме практики применения сертификатов безопасности для одного из видов работ повышенной опасности. Указанные сертификаты должны содержать исчерпывающую информацию о потенциальных рисках и мерах безопасности перед началом работ, предусматривать обязательный замер газовоздушной среды при работах в замкнутом пространстве, анализ плана участка и исполнительных чертежей, установку защитных барьеров при проведении земляных работ, выполнение электрической изоляции источников опасности с обязательной проверкой отсутствия напряжения, а также меры безопасности при проведении радиографических работ.",
"ai": "Процедура пересмотрена. Пилот запущен.",
"h": [
"01.02 — Создано"
]
},
{
"id": 12,
"sec": 1,
"b": 8,
"s": "wait",
"p": 8,
"due": "30.09.2026",
"done": "—",
"dname": "Справка о внедрении, фотоотчёт",
"r": "Генеральные директора филиалов и ДАО",
"t": "Рассмотреть возможность внедрения системы цифровой маркировки опасных технических устройств, предусматривающей присвоение каждому устройству QR-кода для обеспечения быстрого доступа к паспорту, инструкции по эксплуатации и информации о проведенных технических освидетельствованиях, с учетом возможности использования мобильных телефонов на опасных производственных объектах.",
"ai": "Проект на стадии ТЭО.",
"h": [
"01.05 — Создано"
]
},
{
"id": 13,
"sec": 1,
"b": 0,
"s": "warn",
"p": 50,
"due": "31.12.2026",
"done": "—",
"dname": "Акты проверок и график",
"r": "Директор ДПБ",
"t": "Филиалам/ДАО Общества не реже 1 раза в квартал проводить проверку согласно адаптированным проверочным листам, в области БиОТ, промышленной и пожарной безопасности в соответствии с требованиями законодательства Республики Казахстан.",
"ai": "Q1 завершены. Q2 — по графику.",
"h": [
"01.01 — Создано"
]
},
{
"id": 14,
"sec": 1,
"b": 0,
"s": "warn",
"p": 40,
"due": "31.12.2026",
"done": "—",
"dname": "Письмо о предоставлении кандидата",
"r": "Директор ДПБ",
"t": "Продолжить практику участия в перекрёстных аудитах ПК, в том числе в соответствии с Планом-графиком проведения аудитов.",
"ai": "Назначены 4 аудитора.",
"h": [
"15.01 — Назначены"
]
},
{
"id": 15,
"sec": 1,
"b": 0,
"s": "warn",
"p": 48,
"due": "31.12.2026",
"done": "—",
"dname": "Аналитическая справка, Журнал «Опережающие индикаторы»",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Усилить контроль за применением проактивных инструментов:\nа) Продолжить мониторинг применения проактивных инструментов предотвращения аварий и несчастных случаев (проведение поведенческих аудитов/наблюдений безопасности, регистрация и расследование опасных условий, опасных действий и потенциально опасных происшествий Near Miss; право приостановки работы) с целью выработки корректирующих мероприятий, исключения формализма и занесения достоверных данных в Журнал «Опережающие индикаторы» Системы управления отчетности АО «Самрук-Қазына» и потенциально опасных происшествий Near Miss.",
"ai": "147 Near Miss. Аудиты — 320 шт.",
"h": [
"01.01 — Создано"
]
},
{
"id": 16,
"sec": 1,
"b": 1,
"s": "done",
"p": 85,
"due": "31.12.2026",
"done": "—",
"dname": "План-график аудитов, Акты, Протоколы совещаний",
"r": "Генеральные директора филиалов и ДАО",
"t": "Провести работу по повышению эффективности управления подрядными организациями, в том числе:\na) обеспечить проведение согласно типового чек-листа, разработанного Фондом, аудита подрядчиков внутри филиалов/ДАО Общества выборочных перекрёстных аудитов подрядных организаций, осуществляющих работы по договорам на оказание услуг сроком от 6 месяцев и более на объектах предприятий, преимущественно в которых произошли несчастные случаи со смертельным и тяжелым исходами, с участием специалистов службы производственной безопасности Общества и ДАО, не связанных с проверяемыми объектами;\nb) продолжить практику проведения стартовых/установочных совещаний с подрядными организациями перед допуском на территорию объекта филиалов/ДАО Общества с целью ознакомления с внутренними нормативными документами по производственной безопасности, а также информацией об опасных производственных объектах, оборудовании и (или) территории, создающих угрозу жизни и здоровью людей.",
"ai": "Q1 — 12 подрядчиков проверено.",
"h": [
"15.01 — План"
],
"sub": [
{
"l": "a",
"t": "Обеспечить проведение аудита подрядчиков согласно типового чек-листа Фонда"
},
{
"l": "b",
"t": "Продолжить практику проведения стартовых/установочных совещаний с подрядными организациями перед допуском на объект"
}
]
},
{
"id": 17,
"sec": 1,
"b": 0,
"s": "warn",
"p": 35,
"due": "31.12.2026",
"done": "—",
"dname": "Отчёты, график проверок, фотоотчёт",
"r": "а) Главный административный директор, Директор ДПБ\nb) Генеральные директора филиалов и ДАО",
"t": "Обеспечить контроль за состоянием производственной безопасности на производственных объектах:\nа) руководителям Общества уровня СЕО-1, курирующим вопросы производственной безопасности в Обществе, не реже одного раза в квартал лично проверять одно из филиалов Общества/подрядных организаций или участок, в зависимости от структуры и специфики Общества с обязательным представлением актов по результатам проверок в Фонд;\nb) первым руководителям и руководителям линейных подразделений филиалов Общества лично принимать участие во внутреннем производственном контроле с посещением производственных площадок не реже одного раза в квартал.",
"ai": "CEO-1: 2 филиала.",
"h": [
"01.02 — Создано"
],
"sub": [
{
"l": "a",
"t": "Руководителям уровня СЕО-1 не реже одного раза в квартал лично проверять филиал/подрядчика"
},
{
"l": "b",
"t": "Первым руководителям филиалов лично принимать участие в контроле с посещением площадок"
}
]
},
{
"id": 18,
"sec": 1,
"b": 1,
"s": "done",
"p": 90,
"due": "31.12.2026",
"done": "—",
"dname": "Ежемесячный сводный отчёт",
"r": "Генеральные директора филиалов и ДАО\nДиректор ДПБ",
"t": "Обеспечить контроль за состоянием транспортной безопасности, в том числе путем ежемесячного мониторинга нарушений требований транспортной безопасности со стороны штатных водителей и водителей подрядных организаций, оказывающих транспортные услуги по перевозке работников, с последующим применением предусмотренных договорами мер воздействия, включая штрафные санкции и ограничения на допуск к работам.",
"ai": "34 нарушения. Тренд — снижение.",
"h": [
"01.01 — Создано"
]
},
{
"id": 19,
"sec": 2,
"b": 1,
"s": "warn",
"p": 30,
"due": "31.12.2026",
"done": "—",
"dname": "Акты тренировок, пресс-релизы",
"r": "a) Управляющий директор по безопасности, Руководители ДАО\nb) Генеральный директор СФ, Руководители ДАО\nс) Управляющий директор по безопасности\nГенеральные директора филиалов и ДАО",
"t": "Обеспечить проведение:\nа) не менее одной учебной тревоги и/или противоаварийной тренировки по ликвидации крупной аварии, ЧС на опасном производственном объекте с привлечением Фонда и государственных органов;\nb) не менее двух тренировок по тушению пожара в административных зданиях (офисах) с привлечением государственных органов;\nc) не менее одного практического занятия по оказанию первой помощи с применением симуляционного оборудования в условиях ЧС техногенного и природного характера.",
"ai": "1 учение. Пожарные: 1 из 2.",
"h": [
"01.02 — Создано"
],
"sub": [
{
"l": "a",
"t": "Не менее одной учебной тревоги/противоаварийной тренировки"
},
{
"l": "b",
"t": "Не менее двух тренировок по тушению пожара"
},
{
"l": "c",
"t": "Не менее одного занятия по оказанию первой помощи"
}
]
},
{
"id": 20,
"sec": 2,
"b": 0,
"s": "warn",
"p": 65,
"due": "30.06.2026",
"done": "—",
"dname": "Приказ о внедрении, материалы обучения, акты штабов",
"r": "Управляющий директор по безопасности\nГенеральные директора филиалов и ДАО",
"t": "Усилить работу по реагированию на ЧС:\nа) внедрить процедуру «Crisis Management System» (Система управления кризисными ситуациями) для обеспечения своевременной и согласованной реакции на всех уровнях управления на кризисные события, а также сокращение ущерба для работников, активов, окружающей среды и репутации компании;\nb) рассмотреть возможность проведения обучения для ответственных работников филиалов/ДАО Общества по действиям в условиях ЧС;\nc) провести не менее двух заседаний штабов с целью отработки действий на практике.",
"ai": "CMS внедрена. Обучение — 60%.",
"h": [
"01.03 — Создано"
],
"sub": [
{
"l": "a",
"t": "Внедрить процедуру «Crisis Management System»"
},
{
"l": "b",
"t": "Провести обучение ответственных работников по действиям в условиях ЧС"
},
{
"l": "c",
"t": "Провести не менее двух заседаний штабов"
}
]
},
{
"id": 21,
"sec": 3,
"b": 0,
"s": "done",
"p": 100,
"due": "31.12.2026",
"done": "15.02.2026",
"dname": "Публикация на информационных порталах",
"r": "Директор ДПБ\nПресс-секретарь ЦА",
"t": "Обеспечить выпуск обращения от Председателя Правления ПК о важности соблюдения требований по производственной безопасности.",
"ai": "Опубликовано. Охват — 100%.",
"h": [
"15.02 — Публикация"
]
},
{
"id": 22,
"sec": 3,
"b": 0,
"s": "wait",
"p": 15,
"due": "31.12.2026",
"done": "—",
"dname": "Протоколы форумов, протоколы семинаров",
"r": "a) Директор ДПБ\nГенеральные директора филиалов и ДАО\nДепартамент по коммуникациям и продвижению бренда\nb) Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Проведение мероприятий по производственной безопасности:\na) в филиалах/ДАО Общества стратегических сессий/Форумов для первых руководителей филиалов/ДАО Общества;\nb) рассмотреть возможность проведения семинаров для подрядных организаций ПК на отдельных площадках филиалов/ДАО Общества.",
"ai": "Форум — октябрь.",
"h": [
"01.05 — Создано"
],
"sub": [
{
"l": "a",
"t": "В филиалах/ДАО стратегические сессии/Форумы для первых руководителей"
},
{
"l": "b",
"t": "Семинары для подрядных организаций ПК на отдельных площадках"
}
]
},
{
"id": 23,
"sec": 3,
"b": 6,
"s": "wait",
"p": 10,
"due": "30.09.2026",
"done": "—",
"dname": "Протокол итогов Олимпиады",
"r": "Директор ДПБ",
"t": "Проведение Олимпиады по производственной безопасности среди специалистов производственной безопасности Общества и подрядных организации на уровне Общества.",
"ai": "Положение на согласовании.",
"h": [
"01.05 — Создано"
]
},
{
"id": 24,
"sec": 3,
"b": 0,
"s": "done",
"p": 92,
"due": "31.12.2026",
"done": "—",
"dname": "Информационные бюллетени, листы ознакомления",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Обеспечить ознакомление всех работников филиалов/ДАО Общества с обстоятельствами несчастных случаев с тяжелым и летальным исходами, произошедших в ПК Фонда, и относящихся к специфике деятельности Общества, посредством направления информационных бюллетеней, в том числе с использованием цифровых решений либо в рамках внеплановых инструктажей.",
"ai": "3 бюллетеня, 92%.",
"h": [
"01.01 — Создано"
]
},
{
"id": 25,
"sec": 3,
"b": 6,
"s": "warn",
"p": 40,
"due": "31.12.2026",
"done": "—",
"dname": "Публикации в SK News, материалы мероприятий",
"r": "a) Управляющий директор по персоналу\nДепартамент по коммуникациям и продвижению бренда\nГенеральные директора филиалов и ДАО\nb) Директор ДПБ\nГенеральные директора филиалов и ДАО\nc) Директор ДПБ\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Проведение молодежных проектных инициатив в рамках работы Центра молодых работников по производственной безопасности группы компаний АО «Самрук-Қазына» с целью вовлечения молодых специалистов в вопросы производственной безопасности, в том числе:\na) публикация реальных историй из трудовой жизни работников в корпоративном журнале «SK News»;\nb) посещение рабочих мест, где в 2022-2025 годах произошли несчастные случаи с летальным или тяжелым исходом;\nc) привлечение молодых специалистов по производственной безопасности в перекрёстные аудиты состояния производственной безопасности ДЗО ПК АО «Самрук-Қазына»;\nd) онлайн-семинары/прямые эфиры на различные темы по вопросам производственной безопасности.",
"ai": "2 истории в SK News.",
"h": [
"01.02 — Создано"
],
"sub": [
{
"l": "a",
"t": "Публикация реальных историй из трудовой жизни работников в журнале «SK News»"
},
{
"l": "b",
"t": "Посещение рабочих мест, где в 2022-2025 годах произошли несчастные случаи"
},
{
"l": "c",
"t": "Привлечение молодых специалистов в перекрёстные аудиты"
},
{
"l": "d",
"t": "Онлайн-семинары/прямые эфиры на темы производственной безопасности"
}
]
},
{
"id": 26,
"sec": 3,
"b": 2,
"s": "warn",
"p": 50,
"due": "31.12.2026",
"done": "—",
"dname": "Видеоролики, постеры, брошюры",
"r": "а) Генеральные директора филиалов и ДАО\nb) и с) Директор ДПБ\nДепартамент по коммуникациям и продвижению бренда\nГенеральные директора филиалов и ДАО\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Усилить наглядную агитацию по производственной безопасности:\nа) Продолжить работы по разработке и использованию видеороликов/презентаций по производственной безопасности, в том числе:\n- с участием работников, получивших травму, а также членов семей работников (с их согласия);\n- с участием нарушителей требований безопасности и охраны труда, включая разбор ошибок и разработку мер по предотвращению аналогичных случаев в будущем (с их согласия).\nb) Разработать серии специализированных видеороликов:\n- в формате «Безопасность будущего», направленный на демонстрацию внедряемых цифровых и ИИ-решений в сфере производственной безопасности в группе Фонда;\n- по профилактике производственного травматизма с акцентом на наиболее опасные риски (ДТП, падения с высоты, работа с движущимися механизмами и т.д.).\nc) Рассмотреть возможность выпуска подкаста с участием трудовых династий о переходе от ручного труда к автоматизации и цифровизации, способствующем повышению уровня производственной безопасности.\nd) Продолжить работы по разработке и распространению постеров, брошюр, информационных рассылок на различные темы по соблюдению производственной безопасности.",
"ai": "2 видеоролика снято.",
"h": [
"01.02 — Создано"
],
"sub": [
{
"l": "a",
"t": "Разработка и использование видеороликов/презентаций по ПБ"
},
{
"l": "b",
"t": "Серии видеороликов «Безопасность будущего» и по профилактике травматизма"
},
{
"l": "c",
"t": "Выпуск подкаста с участием трудовых династий"
},
{
"l": "d",
"t": "Разработка и распространение постеров, брошюр, рассылок"
}
]
},
{
"id": 27,
"sec": 3,
"b": 3,
"s": "warn",
"p": 30,
"due": "31.12.2026",
"done": "—",
"dname": "Фотофиксация",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Рассмотрение возможности организации встреч коллектива с получившими производственные травмы работниками (с их согласия) с целью предупреждения аналогичных случаев травматизма.",
"ai": "1 встреча проведена.",
"h": [
"01.03 — Создано"
]
},
{
"id": 28,
"sec": 3,
"b": 0,
"s": "warn",
"p": 25,
"due": "31.12.2026",
"done": "—",
"dname": "Информационное письмо, пресс-релизы",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО\nДепартамент по коммуникациям и продвижению бренда",
"t": "Проведение мероприятий, направленных на пропаганду безопасного выполнения работ через семейные ценности:\nа) направление информационного письма членам семьи (супруг/а, родители) работника, положительно отличившегося в вопросах производственной безопасности;\nb) проведение Семейных дней охраны труда и дней открытых дверей для семей работников, в том числе на тему «Золотые правила безопасности для детей», с целью воспитания подрастающего поколения в традициях безопасности;\nc) проведение конкурса рисунков среди работников и их детей по безопасной работе и соблюдению правил на производстве на тему «Спецодежда будущего!».",
"ai": "5 писем семьям.",
"h": [
"01.04 — Создано"
],
"sub": [
{
"l": "a",
"t": "Направление письма членам семьи работника, отличившегося в вопросах ПБ"
},
{
"l": "b",
"t": "Проведение Семейных дней охраны труда и дней открытых дверей"
},
{
"l": "c",
"t": "Конкурс рисунков «Спецодежда будущего!»"
}
]
},
{
"id": 29,
"sec": 3,
"b": 6,
"s": "late",
"p": 40,
"due": "30.06.2026",
"done": "—",
"dname": "Корпоративный сборник лучших практик",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Разработать корпоративный сборник лучших практик по производственной безопасности в формате методического пособия или интерактивного PDF документа, отражающий меры по снижению производственного травматизма и управлению критическими рисками. В сборнике предусмотреть описание сути инициатив, перечень ключевых рисков (железнодорожные происшествия, ДТП, работы на высоте и др.), реализованные мероприятия, а также достигнутые результаты за последние пять лет.",
"ai": "Риск срыва Q2.",
"h": [
"01.03 — Создано"
]
},
{
"id": 30,
"sec": 3,
"b": 7,
"s": "warn",
"p": 60,
"due": "31.12.2026",
"done": "—",
"dname": "Предложения, план реализации",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Сбор предложений по совершенствованию системы управления производственной безопасности посредством применения цифровых решений с консолидацией в ДПБ.",
"ai": "18 предложений.",
"h": [
"01.01 — Создано"
]
},
{
"id": 31,
"sec": 3,
"b": 0,
"s": "warn",
"p": 75,
"due": "30.06.2026",
"done": "—",
"dname": "Видеообзор",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Разработка видеообзора кейсов происшествий в ПК с учетом специфики деятельности (из доступных на открытых медиа источниках) для наглядной демонстрации и разъяснения работникам о необходимости и важности соблюдения требований безопасности.",
"ai": "Монтаж 75%.",
"h": [
"01.03 — Создано"
]
},
{
"id": 32,
"sec": 4,
"b": 8,
"s": "warn",
"p": 70,
"due": "30.06.2026",
"done": "—",
"dname": "Справка, скриншоты чат-бота",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Обеспечить применение в филиалах/ДАО Общества чат-бот ИИ ассистент по производственной безопасности с целью упрощения доступа к нормативно-правовым актам Республики Казахстан и ВНД группы Фонда.",
"ai": "Чат-бот тестируется.",
"h": [
"01.02 — Создано"
]
},
{
"id": 33,
"sec": 4,
"b": 8,
"s": "wait",
"p": 15,
"due": "31.12.2026",
"done": "—",
"dname": "Справка, скриншоты системы",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Обеспечить применение в филиалах/ДАО Общества интегрированную систему анализа и предупреждения несчастных случаев и критических происшествий, а также платформу по идентификации и оценке рисков перед началом проведения работ на опасных производственных объектах.",
"ai": "ТЗ согласовывается.",
"h": [
"01.04 — Создано"
]
},
{
"id": 34,
"sec": 4,
"b": 8,
"s": "wait",
"p": 10,
"due": "31.12.2026",
"done": "—",
"dname": "Справка, скриншоты HSE паспорта",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Рассмотреть возможность запуска в филиалах/ДАО Общества электронного HSE паспорта на каждого работника с последующей интеграцией в корпоративную цифровую систему. Электронный HSE паспорт должен содержать сведения о прохождении инструктажей, обучения и проверок знаний, результаты медицинских осмотров, а также данные о выданных СИЗ, допусках к видам работ, стаже и квалификации.",
"ai": "Концепция утверждена.",
"h": [
"01.05 — Создано"
]
},
{
"id": 35,
"sec": 4,
"b": 5,
"s": "wait",
"p": 8,
"due": "31.12.2026",
"done": "—",
"dname": "Справка, скриншоты системы",
"r": "Директор ДПБ\nГенеральные директора филиалов и ДАО",
"t": "Рассмотреть возможность внедрения системы оформления нарядов-допусков на проведение работ повышенной опасности в электронном виде в филиалах/ДАО Общества.",
"ai": "Предпроект.",
"h": [
"01.05 — Создано"
]
}
]

110
design.md Normal file
View File

@ -0,0 +1,110 @@
<!-- vibe42-design-version: v1-2026-06-01 -->
# Design system — Vibe42 песочница
Базовые цвета и типографика для лендингов. Можно отклоняться, но начинай с этого.
## Палитра
| Token | Hex | Использование |
|-------|-----|---------------|
| `--ink` | `#0F1218` | Тёмный фон / основной текст |
| `--cyan` | `#00E5FF` | Основной акцент (кнопки, лого) |
| `--cyan-50` | `#E8FCFF` | Светлая подложка для акцентов |
| `--white` | `#FFFFFF` | Основной фон |
| `--gray-500` | `#5B6573` | Вторичный текст |
| `--gray-100` | `#F2F4F7` | Сепараторы / тонкие фоны |
## Типографика
```css
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
```
| Уровень | Размер | Вес | line-height |
|---------|--------|-----|-------------|
| h1 (hero) | 56px | 800 | 1.05 |
| h2 (section) | 36px | 700 | 1.15 |
| h3 | 22px | 700 | 1.3 |
| body | 17px | 400 | 1.6 |
| small | 14px | 400 | 1.5 |
На мобиле — h1 уменьши до 36px, h2 до 28px.
## Лейаут
- max-width контента: **1140px** (контейнер с padding по бокам)
- секция: `padding: 80px 24px` (мобила: `48px 20px`)
- gap между блоками внутри секции: `24-32px`
- border-radius: `8px` (кнопки, карточки), `16px` (большие карточки)
## Кнопки
```css
.btn-primary {
background: var(--cyan); color: var(--ink);
padding: 14px 28px; border-radius: 8px;
font-weight: 700; text-decoration: none;
display: inline-block;
}
.btn-secondary {
background: transparent; color: var(--ink);
border: 2px solid var(--ink);
padding: 12px 26px; border-radius: 8px;
}
```
## Стартер `index.html`
```html
<!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}
*{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:80px 24px}
.hero{background:var(--ink);color:var(--white)}
.hero h1{font-size:56px;font-weight:800;line-height:1.05;margin-bottom:24px}
.hero p{font-size:20px;color:#9aa3b2;max-width:600px;margin-bottom:32px}
.btn{display:inline-block;background:var(--cyan);color:var(--ink);padding:14px 28px;border-radius:8px;font-weight:700;text-decoration:none}
.btn:hover{background:#1be5ff}
.section h2{font-size:36px;font-weight:700;margin-bottom:24px}
.card{background:var(--gray-100);border-radius:16px;padding:32px;margin-bottom:16px}
@media (max-width:640px){.hero h1{font-size:36px}.section h2{font-size:28px}.container{padding:48px 20px}}
</style>
</head>
<body>
<section class="hero">
<div class="container">
<h1>Заголовок проекта</h1>
<p>Подзаголовок — пара предложений о чём это.</p>
<a class="btn" href="#section">Начать</a>
</div>
</section>
<section id="section" class="section">
<div class="container">
<h2>Секция</h2>
<div class="card">Контент карточки.</div>
<div class="card">Контент карточки.</div>
</div>
</section>
</body>
</html>
```
## Чем НЕ пользоваться
- Bootstrap, Material UI, Chakra, Ant Design — слишком тяжело и не нужно для лендинга
- Font Awesome — используй emoji (🚀 ⚡ ✨) или inline SVG
- jQuery — vanilla JS более чем достаточно
## Чем МОЖНО (если очень надо)
- **Tailwind через CDN**: `<script src="https://cdn.tailwindcss.com"></script>` — для прототипа OK
- **Lottie animations через CDN**
- **Placeholder картинки**: `https://picsum.photos/800/600`, `https://placehold.co/600x400`
- **Шрифты Google Fonts через `<link>`** в head

52
gen_events.py Normal file
View File

@ -0,0 +1,52 @@
import json
events = [
# I. ЛЮДИ. ПОВЫШЕНИЕ УРОВНЯ КУЛЬТУРЫ БЕЗОПАСНОСТИ РАБОТНИКОВ (1-9)
{"id":1,"sec":0,"b":6,"s":"warn","p":45,"due":"31.12.2026","done":"","dname":"Сертификаты, протоколы, электронная ведомость обучения","r":"Генеральный директор КУ\nГенеральные директора филиалов и ДАО","t":"Продолжить проведение обучения и повышения квалификации руководителей и работников компании в соответствии с лучшими международными практиками, ориентированными на специфику условий труда, работы повышенной опасности и требований промышленной безопасности, а также развитие культуры безопасности, включая обучение производственного персонала по курсу «Культура безопасного труда», в том числе с применением VR, AR технологий и цифровых симуляторов аварийных ситуаций по различным направлениям производственной безопасности (с правом выдачи сертификатов).","ai":"Обучение ведётся по графику. Охвачено 45% персонала.","h":["15.01 — Создано","01.03 — Запущено"]},
{"id":2,"sec":0,"b":0,"s":"done","p":100,"due":"31.03.2026","done":"28.03.2026","dname":"Отчёт о проведённом анализе, утверждённый ВНД","r":"Директор ДПБ\nГенеральный директор ДИТ\nГенеральные директора филиалов и ДАО","t":"Провести анализ, в том числе с использованием аналитических платформ (Microsoft Teams, Power BI, Tableau, Qlik и др.), и в случае необходимости, осуществить пересмотр внутренних нормативных документов филиалов/ДАО Общества в соответствии со «Стратегией развития производственной безопасности АО «Самрук-Қазына» на 2024-2028 гг.», включая установку значений ключевых показателей производственной безопасности.","ai":"Анализ завершён в срок.","h":["10.01 — Создано","28.03 — Утверждён"]},
{"id":3,"sec":0,"b":0,"s":"warn","p":50,"due":"31.12.2026","done":"","dname":"Протоколы совещаний (a, b, c)","r":"а) Главный административный директор, Директор ДПБ\nГенеральные директора филиалов и ДАО\nb, c) Генеральные директора филиалов и ДАО","t":"Организовывать тематические совещания по вопросам производственной безопасности, в том числе с целью разъяснения внедряемых программ и инициатив:\na) руководство Общества с филиалами/ДАО Общества, не менее одного раза в квартал, в том числе с целью личного мониторинга показателей эффективности по производственной безопасности в рамках «Стратегии развития производственной безопасности АО «Самрук-Қазына» на 2024-2028 гг.» и статуса исполнения «Плана мероприятий по производственной безопасности АО «Самрук-Қазына» на 2026 год»;\nb) руководство филиалов/ДАО Общества со структурными подразделениями, не менее 1 раза в месяц;\nc) руководство региональных подразделений/филиалов/ДАО Общества с подрядными организациями, осуществляющими работы/предоставляющими услуги на объектах, не менее 1 раза в квартал.","ai":"Проведено 2 квартальных совещания.","h":["10.01 — Создано","15.02 — Q1","15.05 — Q2"],"sub":[{"l":"a","t":"Руководство Общества с филиалами/ДАО Общества, не менее одного раза в квартал, с личным мониторингом показателей эффективности"},{"l":"b","t":"Руководство филиалов/ДАО Общества со структурными подразделениями, не менее 1 раза в месяц"},{"l":"c","t":"Руководство региональных подразделений/филиалов/ДАО с подрядными организациями, не менее 1 раза в квартал"}]},
{"id":4,"sec":0,"b":6,"s":"warn","p":55,"due":"31.12.2026","done":"","dname":"Отчёт о проделанной работе, тесты","r":"Генеральные директора филиалов и ДАО","t":"Продолжить практику проверки знаний в формате тестирования после проведения инструктажей по охране труда в филиалах/ДАО Общества.","ai":"Тестирование внедрено в 6 филиалах. Средний результат — 82%.","h":["01.02 — Создано"]},
{"id":5,"sec":0,"b":0,"s":"done","p":100,"due":"31.03.2026","done":"25.03.2026","dname":"Информация о нематериальном поощрении","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Рассмотреть возможность нематериального поощрения филиалов и ДАО Общества, демонстрирующих устойчивое снижение количества несчастных случаев, пожаров и аварий по итогам нескольких и более лет.","ai":"Положение утверждено.","h":["15.01 — Проект","25.03 — Утверждено"]},
{"id":6,"sec":0,"b":6,"s":"warn","p":60,"due":"30.06.2026","done":"","dname":"Утверждённый ВНД, перечень внутренних тренеров","r":"Генеральный директор КУ\nУправляющий директор по персоналу\nГенеральные директора филиалов и ДАО","t":"Разработать/внести изменения в случае необходимости и утвердить внутренний нормативный документ, регламентирующий процедуру работы внутренних тренеров, в том числе по производственной безопасности, включая порядок их отбора, подготовки и привлечения, а также установление условий доплаты к основной заработной плате за выполнение тренерских функций.","ai":"Проект ВНД на финальном согласовании.","h":["01.03 — Создано"]},
{"id":7,"sec":0,"b":1,"s":"warn","p":40,"due":"31.12.2026","done":"","dname":"Материалы, рассмотренные в рамках обмена опытом","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Проводить мероприятия по обмену опытом в области производственной безопасности:\na) Продолжить практику обмена передовым опытом на площадке Комитета HSE, в том числе путем выездов на производственные объекты ПК, с целью последующего тиражирования успешных практик в ПК.\nb) Рассмотреть возможность организации обмена опытом в области производственной безопасности для работников ПК с иностранными и казахстанскими компаниями, соответствующих деятельности ПК, в том числе путем проведения онлайн-семинаров.","ai":"Проведён 1 выезд на KEGOC.","h":["15.02 — Создано","01.04 — Выезд"],"sub":[{"l":"a","t":"Продолжить практику обмена передовым опытом на площадке Комитета HSE, в том числе путем выездов на производственные объекты ПК"},{"l":"b","t":"Рассмотреть возможность организации обмена опытом с иностранными и казахстанскими компаниями, в том числе путем проведения онлайн-семинаров"}]},
{"id":8,"sec":0,"b":4,"s":"wait","p":15,"due":"30.09.2026","done":"","dname":"Заключительный Акт, программа Well-being, отчёт о скрининге, отчёт о микротравмах","r":"а) Директор ДПБ\nb) Генеральный директор КУ\nУправляющий директор по персоналу\nc) Управляющий директор по персоналу\nГенеральные директора филиалов и ДАО\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Провести анализ эффективности реализуемых мероприятий по охране здоровья:\na) организовать и обеспечить 100% прохождение обязательных периодических медицинских осмотров работниками, включая офисных работников;\nb) организовать ежегодную «Неделю благополучия» (Well-being Week) для работников всех уровней, предусматривая практические мероприятия по стресс-менеджменту, ментальному здоровью и физической активности;\nc) создать условия и обеспечить контроль за прохождением медицинского скрининга работников в соответствии с Приказом и.о. Министра Здравоохранения РК от 30 октября 2020 года №КР ДСМ-174/2020, в том числе в целях раннего диагностирования факторов риска сердечно-сосудистых заболеваний;\nd) внедрить алгоритм учета и расследования микротравм, а также фиксировать использование содержимого медицинских аптечек путем регистрации и расследования данных случаев.","ai":"Медосмотры — Q3. Well-being — сентябрь.","h":["01.04 — Создано"],"sub":[{"l":"a","t":"Организовать и обеспечить 100% прохождение обязательных периодических медицинских осмотров работниками, включая офисных работников"},{"l":"b","t":"Организовать ежегодную «Неделю благополучия» (Well-being Week) для работников всех уровней"},{"l":"c","t":"Создать условия и обеспечить контроль за прохождением медицинского скрининга работников"},{"l":"d","t":"Внедрить алгоритм учета и расследования микротравм, фиксировать использование содержимого медицинских аптечек"}]},
{"id":9,"sec":0,"b":6,"s":"wait","p":20,"due":"31.12.2026","done":"","dname":"Результаты конкурсов, пакет материалов","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Рассмотреть возможность участия ДПБ/филиалов/ДАО Общества в международных/национальных конкурсах и отраслевых соревнованиях профессионального мастерства в области производственной безопасности.","ai":"Определены 2 конкурса.","h":["01.05 — Создано"]},
# II. БЕЗОПАСНОСТЬ ПРИ ЭКСПЛУАТАЦИИ ОБОРУДОВАНИЯ (10-18)
{"id":10,"sec":1,"b":1,"s":"warn","p":55,"due":"31.12.2026","done":"","dname":"Аналитическая справка в разбивке по филиалам/ДАО","r":"Генеральный директор ОДС\nГенеральный директор СФ\nГенеральный директор ДУП\nГенеральный директор ДИТ","t":"Проводить работы по техническому перевооружению морально и физически изношенного оборудования, зданий и сооружений, эксплуатация которых из-за их технического состояния сопровождается повышенными рисками возникновения аварий и несчастных случаев с тяжёлыми и летальными исходами, в соответствии с ранее утвержденными Планами на 2024-2027 годы.","ai":"По плану 2024-2027. Заменено 55%.","h":["01.01 — Переходящее"]},
{"id":11,"sec":1,"b":1,"s":"warn","p":70,"due":"30.06.2026","done":"","dname":"Переутверждённая процедура, фотоотчёт, протоколы обучения","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Пересмотреть и актуализировать внутренний порядок выдачи нарядно-допускной системы, усилив законодательные требования Республики Казахстан путем внедрения в пилотном режиме практики применения сертификатов безопасности для одного из видов работ повышенной опасности. Указанные сертификаты должны содержать исчерпывающую информацию о потенциальных рисках и мерах безопасности перед началом работ, предусматривать обязательный замер газовоздушной среды при работах в замкнутом пространстве, анализ плана участка и исполнительных чертежей, установку защитных барьеров при проведении земляных работ, выполнение электрической изоляции источников опасности с обязательной проверкой отсутствия напряжения, а также меры безопасности при проведении радиографических работ.","ai":"Процедура пересмотрена. Пилот запущен.","h":["01.02 — Создано"]},
{"id":12,"sec":1,"b":8,"s":"wait","p":8,"due":"30.09.2026","done":"","dname":"Справка о внедрении, фотоотчёт","r":"Генеральные директора филиалов и ДАО","t":"Рассмотреть возможность внедрения системы цифровой маркировки опасных технических устройств, предусматривающей присвоение каждому устройству QR-кода для обеспечения быстрого доступа к паспорту, инструкции по эксплуатации и информации о проведенных технических освидетельствованиях, с учетом возможности использования мобильных телефонов на опасных производственных объектах.","ai":"Проект на стадии ТЭО.","h":["01.05 — Создано"]},
{"id":13,"sec":1,"b":0,"s":"warn","p":50,"due":"31.12.2026","done":"","dname":"Акты проверок и график","r":"Директор ДПБ","t":"Филиалам/ДАО Общества не реже 1 раза в квартал проводить проверку согласно адаптированным проверочным листам, в области БиОТ, промышленной и пожарной безопасности в соответствии с требованиями законодательства Республики Казахстан.","ai":"Q1 завершены. Q2 — по графику.","h":["01.01 — Создано"]},
{"id":14,"sec":1,"b":0,"s":"warn","p":40,"due":"31.12.2026","done":"","dname":"Письмо о предоставлении кандидата","r":"Директор ДПБ","t":"Продолжить практику участия в перекрёстных аудитах ПК, в том числе в соответствии с Планом-графиком проведения аудитов.","ai":"Назначены 4 аудитора.","h":["15.01 — Назначены"]},
{"id":15,"sec":1,"b":0,"s":"warn","p":48,"due":"31.12.2026","done":"","dname":"Аналитическая справка, Журнал «Опережающие индикаторы»","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Усилить контроль за применением проактивных инструментов:\nа) Продолжить мониторинг применения проактивных инструментов предотвращения аварий и несчастных случаев (проведение поведенческих аудитов/наблюдений безопасности, регистрация и расследование опасных условий, опасных действий и потенциально опасных происшествий Near Miss; право приостановки работы) с целью выработки корректирующих мероприятий, исключения формализма и занесения достоверных данных в Журнал «Опережающие индикаторы» Системы управления отчетности АО «Самрук-Қазына» и потенциально опасных происшествий Near Miss.","ai":"147 Near Miss. Аудиты — 320 шт.","h":["01.01 — Создано"]},
{"id":16,"sec":1,"b":1,"s":"done","p":85,"due":"31.12.2026","done":"","dname":"План-график аудитов, Акты, Протоколы совещаний","r":"Генеральные директора филиалов и ДАО","t":"Провести работу по повышению эффективности управления подрядными организациями, в том числе:\na) обеспечить проведение согласно типового чек-листа, разработанного Фондом, аудита подрядчиков внутри филиалов/ДАО Общества выборочных перекрёстных аудитов подрядных организаций, осуществляющих работы по договорам на оказание услуг сроком от 6 месяцев и более на объектах предприятий, преимущественно в которых произошли несчастные случаи со смертельным и тяжелым исходами, с участием специалистов службы производственной безопасности Общества и ДАО, не связанных с проверяемыми объектами;\nb) продолжить практику проведения стартовых/установочных совещаний с подрядными организациями перед допуском на территорию объекта филиалов/ДАО Общества с целью ознакомления с внутренними нормативными документами по производственной безопасности, а также информацией об опасных производственных объектах, оборудовании и (или) территории, создающих угрозу жизни и здоровью людей.","ai":"Q1 — 12 подрядчиков проверено.","h":["15.01 — План"],"sub":[{"l":"a","t":"Обеспечить проведение аудита подрядчиков согласно типового чек-листа Фонда"},{"l":"b","t":"Продолжить практику проведения стартовых/установочных совещаний с подрядными организациями перед допуском на объект"}]},
{"id":17,"sec":1,"b":0,"s":"warn","p":35,"due":"31.12.2026","done":"","dname":"Отчёты, график проверок, фотоотчёт","r":"а) Главный административный директор, Директор ДПБ\nb) Генеральные директора филиалов и ДАО","t":"Обеспечить контроль за состоянием производственной безопасности на производственных объектах:\nа) руководителям Общества уровня СЕО-1, курирующим вопросы производственной безопасности в Обществе, не реже одного раза в квартал лично проверять одно из филиалов Общества/подрядных организаций или участок, в зависимости от структуры и специфики Общества с обязательным представлением актов по результатам проверок в Фонд;\nb) первым руководителям и руководителям линейных подразделений филиалов Общества лично принимать участие во внутреннем производственном контроле с посещением производственных площадок не реже одного раза в квартал.","ai":"CEO-1: 2 филиала.","h":["01.02 — Создано"],"sub":[{"l":"a","t":"Руководителям уровня СЕО-1 не реже одного раза в квартал лично проверять филиал/подрядчика"},{"l":"b","t":"Первым руководителям филиалов лично принимать участие в контроле с посещением площадок"}]},
{"id":18,"sec":1,"b":1,"s":"done","p":90,"due":"31.12.2026","done":"","dname":"Ежемесячный сводный отчёт","r":"Генеральные директора филиалов и ДАО\nДиректор ДПБ","t":"Обеспечить контроль за состоянием транспортной безопасности, в том числе путем ежемесячного мониторинга нарушений требований транспортной безопасности со стороны штатных водителей и водителей подрядных организаций, оказывающих транспортные услуги по перевозке работников, с последующим применением предусмотренных договорами мер воздействия, включая штрафные санкции и ограничения на допуск к работам.","ai":"34 нарушения. Тренд — снижение.","h":["01.01 — Создано"]},
# III (19-20)
{"id":19,"sec":2,"b":1,"s":"warn","p":30,"due":"31.12.2026","done":"","dname":"Акты тренировок, пресс-релизы","r":"a) Управляющий директор по безопасности, Руководители ДАО\nb) Генеральный директор СФ, Руководители ДАО\nс) Управляющий директор по безопасности\nГенеральные директора филиалов и ДАО","t":"Обеспечить проведение:\nа) не менее одной учебной тревоги и/или противоаварийной тренировки по ликвидации крупной аварии, ЧС на опасном производственном объекте с привлечением Фонда и государственных органов;\nb) не менее двух тренировок по тушению пожара в административных зданиях (офисах) с привлечением государственных органов;\nc) не менее одного практического занятия по оказанию первой помощи с применением симуляционного оборудования в условиях ЧС техногенного и природного характера.","ai":"1 учение. Пожарные: 1 из 2.","h":["01.02 — Создано"],"sub":[{"l":"a","t":"Не менее одной учебной тревоги/противоаварийной тренировки"},{"l":"b","t":"Не менее двух тренировок по тушению пожара"},{"l":"c","t":"Не менее одного занятия по оказанию первой помощи"}]},
{"id":20,"sec":2,"b":0,"s":"warn","p":65,"due":"30.06.2026","done":"","dname":"Приказ о внедрении, материалы обучения, акты штабов","r":"Управляющий директор по безопасности\nГенеральные директора филиалов и ДАО","t":"Усилить работу по реагированию на ЧС:\nа) внедрить процедуру «Crisis Management System» (Система управления кризисными ситуациями) для обеспечения своевременной и согласованной реакции на всех уровнях управления на кризисные события, а также сокращение ущерба для работников, активов, окружающей среды и репутации компании;\nb) рассмотреть возможность проведения обучения для ответственных работников филиалов/ДАО Общества по действиям в условиях ЧС;\nc) провести не менее двух заседаний штабов с целью отработки действий на практике.","ai":"CMS внедрена. Обучение — 60%.","h":["01.03 — Создано"],"sub":[{"l":"a","t":"Внедрить процедуру «Crisis Management System»"},{"l":"b","t":"Провести обучение ответственных работников по действиям в условиях ЧС"},{"l":"c","t":"Провести не менее двух заседаний штабов"}]},
# IV (21-31)
{"id":21,"sec":3,"b":0,"s":"done","p":100,"due":"31.12.2026","done":"15.02.2026","dname":"Публикация на информационных порталах","r":"Директор ДПБ\nПресс-секретарь ЦА","t":"Обеспечить выпуск обращения от Председателя Правления ПК о важности соблюдения требований по производственной безопасности.","ai":"Опубликовано. Охват — 100%.","h":["15.02 — Публикация"]},
{"id":22,"sec":3,"b":0,"s":"wait","p":15,"due":"31.12.2026","done":"","dname":"Протоколы форумов, протоколы семинаров","r":"a) Директор ДПБ\nГенеральные директора филиалов и ДАО\nДепартамент по коммуникациям и продвижению бренда\nb) Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Проведение мероприятий по производственной безопасности:\na) в филиалах/ДАО Общества стратегических сессий/Форумов для первых руководителей филиалов/ДАО Общества;\nb) рассмотреть возможность проведения семинаров для подрядных организаций ПК на отдельных площадках филиалов/ДАО Общества.","ai":"Форум — октябрь.","h":["01.05 — Создано"],"sub":[{"l":"a","t":"В филиалах/ДАО стратегические сессии/Форумы для первых руководителей"},{"l":"b","t":"Семинары для подрядных организаций ПК на отдельных площадках"}]},
{"id":23,"sec":3,"b":6,"s":"wait","p":10,"due":"30.09.2026","done":"","dname":"Протокол итогов Олимпиады","r":"Директор ДПБ","t":"Проведение Олимпиады по производственной безопасности среди специалистов производственной безопасности Общества и подрядных организации на уровне Общества.","ai":"Положение на согласовании.","h":["01.05 — Создано"]},
{"id":24,"sec":3,"b":0,"s":"done","p":92,"due":"31.12.2026","done":"","dname":"Информационные бюллетени, листы ознакомления","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Обеспечить ознакомление всех работников филиалов/ДАО Общества с обстоятельствами несчастных случаев с тяжелым и летальным исходами, произошедших в ПК Фонда, и относящихся к специфике деятельности Общества, посредством направления информационных бюллетеней, в том числе с использованием цифровых решений либо в рамках внеплановых инструктажей.","ai":"3 бюллетеня, 92%.","h":["01.01 — Создано"]},
{"id":25,"sec":3,"b":6,"s":"warn","p":40,"due":"31.12.2026","done":"","dname":"Публикации в SK News, материалы мероприятий","r":"a) Управляющий директор по персоналу\nДепартамент по коммуникациям и продвижению бренда\nГенеральные директора филиалов и ДАО\nb) Директор ДПБ\nГенеральные директора филиалов и ДАО\nc) Директор ДПБ\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Проведение молодежных проектных инициатив в рамках работы Центра молодых работников по производственной безопасности группы компаний АО «Самрук-Қазына» с целью вовлечения молодых специалистов в вопросы производственной безопасности, в том числе:\na) публикация реальных историй из трудовой жизни работников в корпоративном журнале «SK News»;\nb) посещение рабочих мест, где в 2022-2025 годах произошли несчастные случаи с летальным или тяжелым исходом;\nc) привлечение молодых специалистов по производственной безопасности в перекрёстные аудиты состояния производственной безопасности ДЗО ПК АО «Самрук-Қазына»;\nd) онлайн-семинары/прямые эфиры на различные темы по вопросам производственной безопасности.","ai":"2 истории в SK News.","h":["01.02 — Создано"],"sub":[{"l":"a","t":"Публикация реальных историй из трудовой жизни работников в журнале «SK News»"},{"l":"b","t":"Посещение рабочих мест, где в 2022-2025 годах произошли несчастные случаи"},{"l":"c","t":"Привлечение молодых специалистов в перекрёстные аудиты"},{"l":"d","t":"Онлайн-семинары/прямые эфиры на темы производственной безопасности"}]},
{"id":26,"sec":3,"b":2,"s":"warn","p":50,"due":"31.12.2026","done":"","dname":"Видеоролики, постеры, брошюры","r":"а) Генеральные директора филиалов и ДАО\nb) и с) Директор ДПБ\nДепартамент по коммуникациям и продвижению бренда\nГенеральные директора филиалов и ДАО\nd) Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Усилить наглядную агитацию по производственной безопасности:\nа) Продолжить работы по разработке и использованию видеороликов/презентаций по производственной безопасности, в том числе:\n- с участием работников, получивших травму, а также членов семей работников (с их согласия);\n- с участием нарушителей требований безопасности и охраны труда, включая разбор ошибок и разработку мер по предотвращению аналогичных случаев в будущем (с их согласия).\nb) Разработать серии специализированных видеороликов:\n- в формате «Безопасность будущего», направленный на демонстрацию внедряемых цифровых и ИИ-решений в сфере производственной безопасности в группе Фонда;\n- по профилактике производственного травматизма с акцентом на наиболее опасные риски (ДТП, падения с высоты, работа с движущимися механизмами и т.д.).\nc) Рассмотреть возможность выпуска подкаста с участием трудовых династий о переходе от ручного труда к автоматизации и цифровизации, способствующем повышению уровня производственной безопасности.\nd) Продолжить работы по разработке и распространению постеров, брошюр, информационных рассылок на различные темы по соблюдению производственной безопасности.","ai":"2 видеоролика снято.","h":["01.02 — Создано"],"sub":[{"l":"a","t":"Разработка и использование видеороликов/презентаций по ПБ"},{"l":"b","t":"Серии видеороликов «Безопасность будущего» и по профилактике травматизма"},{"l":"c","t":"Выпуск подкаста с участием трудовых династий"},{"l":"d","t":"Разработка и распространение постеров, брошюр, рассылок"}]},
{"id":27,"sec":3,"b":3,"s":"warn","p":30,"due":"31.12.2026","done":"","dname":"Фотофиксация","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Рассмотрение возможности организации встреч коллектива с получившими производственные травмы работниками (с их согласия) с целью предупреждения аналогичных случаев травматизма.","ai":"1 встреча проведена.","h":["01.03 — Создано"]},
{"id":28,"sec":3,"b":0,"s":"warn","p":25,"due":"31.12.2026","done":"","dname":"Информационное письмо, пресс-релизы","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО\nДепартамент по коммуникациям и продвижению бренда","t":"Проведение мероприятий, направленных на пропаганду безопасного выполнения работ через семейные ценности:\nа) направление информационного письма членам семьи (супруг/а, родители) работника, положительно отличившегося в вопросах производственной безопасности;\nb) проведение Семейных дней охраны труда и дней открытых дверей для семей работников, в том числе на тему «Золотые правила безопасности для детей», с целью воспитания подрастающего поколения в традициях безопасности;\nc) проведение конкурса рисунков среди работников и их детей по безопасной работе и соблюдению правил на производстве на тему «Спецодежда будущего!».","ai":"5 писем семьям.","h":["01.04 — Создано"],"sub":[{"l":"a","t":"Направление письма членам семьи работника, отличившегося в вопросах ПБ"},{"l":"b","t":"Проведение Семейных дней охраны труда и дней открытых дверей"},{"l":"c","t":"Конкурс рисунков «Спецодежда будущего!»"}]},
{"id":29,"sec":3,"b":6,"s":"late","p":40,"due":"30.06.2026","done":"","dname":"Корпоративный сборник лучших практик","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Разработать корпоративный сборник лучших практик по производственной безопасности в формате методического пособия или интерактивного PDF документа, отражающий меры по снижению производственного травматизма и управлению критическими рисками. В сборнике предусмотреть описание сути инициатив, перечень ключевых рисков (железнодорожные происшествия, ДТП, работы на высоте и др.), реализованные мероприятия, а также достигнутые результаты за последние пять лет.","ai":"Риск срыва Q2.","h":["01.03 — Создано"]},
{"id":30,"sec":3,"b":7,"s":"warn","p":60,"due":"31.12.2026","done":"","dname":"Предложения, план реализации","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Сбор предложений по совершенствованию системы управления производственной безопасности посредством применения цифровых решений с консолидацией в ДПБ.","ai":"18 предложений.","h":["01.01 — Создано"]},
{"id":31,"sec":3,"b":0,"s":"warn","p":75,"due":"30.06.2026","done":"","dname":"Видеообзор","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Разработка видеообзора кейсов происшествий в ПК с учетом специфики деятельности (из доступных на открытых медиа источниках) для наглядной демонстрации и разъяснения работникам о необходимости и важности соблюдения требований безопасности.","ai":"Монтаж 75%.","h":["01.03 — Создано"]},
# V (32-35)
{"id":32,"sec":4,"b":8,"s":"warn","p":70,"due":"30.06.2026","done":"","dname":"Справка, скриншоты чат-бота","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Обеспечить применение в филиалах/ДАО Общества чат-бот ИИ ассистент по производственной безопасности с целью упрощения доступа к нормативно-правовым актам Республики Казахстан и ВНД группы Фонда.","ai":"Чат-бот тестируется.","h":["01.02 — Создано"]},
{"id":33,"sec":4,"b":8,"s":"wait","p":15,"due":"31.12.2026","done":"","dname":"Справка, скриншоты системы","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Обеспечить применение в филиалах/ДАО Общества интегрированную систему анализа и предупреждения несчастных случаев и критических происшествий, а также платформу по идентификации и оценке рисков перед началом проведения работ на опасных производственных объектах.","ai":"ТЗ согласовывается.","h":["01.04 — Создано"]},
{"id":34,"sec":4,"b":8,"s":"wait","p":10,"due":"31.12.2026","done":"","dname":"Справка, скриншоты HSE паспорта","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Рассмотреть возможность запуска в филиалах/ДАО Общества электронного HSE паспорта на каждого работника с последующей интеграцией в корпоративную цифровую систему. Электронный HSE паспорт должен содержать сведения о прохождении инструктажей, обучения и проверок знаний, результаты медицинских осмотров, а также данные о выданных СИЗ, допусках к видам работ, стаже и квалификации.","ai":"Концепция утверждена.","h":["01.05 — Создано"]},
{"id":35,"sec":4,"b":5,"s":"wait","p":8,"due":"31.12.2026","done":"","dname":"Справка, скриншоты системы","r":"Директор ДПБ\nГенеральные директора филиалов и ДАО","t":"Рассмотреть возможность внедрения системы оформления нарядов-допусков на проведение работ повышенной опасности в электронном виде в филиалах/ДАО Общества.","ai":"Предпроект.","h":["01.05 — Создано"]},
]
with open('data.json','w',encoding='utf-8') as f:
json.dump(events, f, ensure_ascii=False, indent=2)
print(f"OK: {len(events)} events")

1159
index.html Normal file

File diff suppressed because one or more lines are too long

5
requirements.txt Normal file
View File

@ -0,0 +1,5 @@
flask>=3.0
flask-cors>=4.0
python-docx>=1.0
reportlab>=4.0
requests>=2.31

133
server.py Normal file
View File

@ -0,0 +1,133 @@
import json
import io
import os
from datetime import datetime
from flask import Flask, request, jsonify
from flask_cors import CORS
import requests as http_requests
app = Flask(__name__)
CORS(app)
HSE_API_URL = "https://hse.sk.kz/api/v1"
DATA_DIR = os.path.join(os.path.dirname(__file__), "data")
os.makedirs(DATA_DIR, exist_ok=True)
def make_docx(report):
from docx import Document
from docx.shared import Pt
doc = Document()
doc.styles["Normal"].font.size = Pt(11)
doc.add_heading("План ПБ — Казахтелеком", level=1)
s = report.get("summary", {})
doc.add_paragraph(
f"Дата: {datetime.now().strftime('%d.%m.%Y')} | "
f"Всего: {s.get('total', 0)} | "
f"Выполнено: {s.get('done', 0)} ({s.get('pct', 0)}%)"
)
events = report.get("events", [])
table = doc.add_table(rows=1, cols=6)
table.style = "Light Grid Accent 1"
for i, h in enumerate(["N", "Мероприятие", "Филиал", "Срок", "Статус", "%"]):
table.rows[0].cells[i].text = h
for e in events:
row = table.add_row().cells
row[0].text = str(e.get("id", ""))
row[1].text = str(e.get("title", ""))[:100]
row[2].text = str(e.get("branch", ""))
row[3].text = str(e.get("deadline", ""))
row[4].text = str(e.get("status", ""))
row[5].text = str(e.get("progress", 0)) + "%"
buf = io.BytesIO()
doc.save(buf)
buf.seek(0)
return buf
def make_pdf(report):
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import mm
from reportlab.lib.colors import HexColor
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
buf = io.BytesIO()
doc = SimpleDocTemplate(buf, pagesize=A4, rightMargin=20 * mm, leftMargin=20 * mm,
topMargin=20 * mm, bottomMargin=20 * mm)
styles = getSampleStyleSheet()
story = [Paragraph("План ПБ — Казахтелеком", styles["Title"]), Spacer(1, 10)]
s = report.get("summary", {})
story.append(Paragraph(
f"Всего: {s.get('total', 0)} | Выполнено: {s.get('done', 0)} ({s.get('pct', 0)}%)",
styles["Normal"]
))
story.append(Spacer(1, 10))
data = [["N", "Мероприятие", "Филиал", "Срок", "Статус", "%"]]
for e in report.get("events", []):
data.append([
str(e.get("id", "")), str(e.get("title", ""))[:80],
str(e.get("branch", ""))[:25], str(e.get("deadline", "")),
str(e.get("status", "")), str(e.get("progress", 0)) + "%",
])
table = Table(data, colWidths=[20, 220, 80, 50, 60, 40])
table.setStyle(TableStyle([
("FONTSIZE", (0, 0), (-1, 0), 9), ("FONTSIZE", (0, 1), (-1, -1), 8),
("BACKGROUND", (0, 0), (-1, 0), HexColor("#003366")),
("TEXTCOLOR", (0, 0), (-1, 0), HexColor("#FFFFFF")),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#CCCCCC")),
("VALIGN", (0, 0), (-1, -1), "TOP"),
]))
story.append(table)
doc.build(story)
buf.seek(0)
return buf
@app.route("/api/hse/send", methods=["POST"])
def hse_send():
data = request.get_json()
month = data.get("month", "")
api_key = data.get("api_key", "")
fmt = data.get("format", "word")
report = data.get("report", {})
endpoint = data.get("endpoint", f"{HSE_API_URL}/documents/upload")
if not api_key:
return jsonify({"ok": False, "error": "API key required"}), 400
if fmt == "pdf":
buf = make_pdf(report)
mime = "application/pdf"
ext = "pdf"
else:
buf = make_docx(report)
mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
ext = "docx"
try:
files = {"file": (f"hse_report_{month}.{ext}", buf.getvalue(), mime)}
headers = {"Authorization": f"Bearer {api_key}"}
payload = {
"title": f"Сводный отчет по ПБ за {month}",
"description": "Автоматический отчет платформы мониторинга ПБ",
"type": "safety_report",
"period": month,
}
r = http_requests.post(endpoint, files=files, data=payload, headers=headers, timeout=30)
if r.ok:
return jsonify({"ok": True, "hse_response": r.json() if r.text else {"status": r.status_code}})
return jsonify({"ok": False, "error": f"HSE API error: {r.status_code}", "detail": r.text[:500]}), 502
except Exception as e:
return jsonify({"ok": False, "error": str(e)}), 502
@app.route("/api/health", methods=["GET"])
def health():
return jsonify({"ok": True, "time": datetime.now().isoformat()})
if __name__ == "__main__":
print("HSE Integration Server — http://0.0.0.0:5000")
app.run(host="0.0.0.0", port=5000, debug=False)

8
start.sh Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
export PATH="$HOME/.local/bin:$PATH"
cd "$(dirname "$0")"
echo "=== HSE Integration Server ==="
echo "Installing..."
pip3 install -r requirements.txt --break-system-packages -q 2>/dev/null
echo "Starting on http://0.0.0.0:5000"
python3 server.py

8
test.html Normal file
View File

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>JS Test</title></head>
<body onload="document.getElementById('r').textContent='JS работает'">
<h3>Проверка JavaScript</h3>
<p id="r" style="color:red">JS не работает</p>
</body>
</html>

7
test2.html Normal file
View File

@ -0,0 +1,7 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Test</title></head>
<body>
<p id="r">JS не работает</p>
<script>
document.getElementById("r").textContent="JS работает!";
</script>
</body></html>

142
viewer.html Normal file
View File

@ -0,0 +1,142 @@
<!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;--gray-200:#E5E7EB;--green:#10B981;--red:#EF4444;--amber:#F59E0B}
*{box-sizing:border-box;margin:0;padding:0}
body{font:14px/1.5 Arial,sans-serif;color:var(--ink);background:var(--gray-100);padding:20px}
.container{max-width:960px;margin:0 auto}
h1{font-size:22px;margin-bottom:16px}h1 span{color:var(--cyan)}
.drop-zone{border:3px dashed var(--cyan);border-radius:12px;padding:50px 24px;text-align:center;cursor:pointer;background:var(--white);margin-bottom:20px}
.drop-zone:hover{background:var(--cyan-50)}
.drop-zone .icon{font-size:40px;display:block;margin-bottom:8px}
.drop-zone .txt{font-size:16px;font-weight:600;margin-bottom:4px}
.drop-zone .hint{font-size:13px;color:var(--gray-500)}
.drop-zone input{display:none}
.ev{border:1px solid var(--gray-200);border-radius:10px;padding:18px;margin-bottom:14px;background:var(--white)}
.ev h3{font-size:15px;margin-bottom:6px}
.meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--gray-500);margin-bottom:6px}
.meta strong{color:var(--ink)}
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700}
.g{background:#D1FAE5;color:#065F46}.a{background:#FEF3C7;color:#92400E}.r{background:#FEE2E2;color:#991B1B}.w{background:#eee;color:#666}
.month{background:var(--gray-100);padding:10px 14px;border-radius:6px;margin:6px 0}
.month strong{font-size:12px}.month .rep{font-size:13px;color:var(--gray-500);margin:2px 0}
.file-item{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:13px}
.file-item a{color:var(--ink);font-weight:600;text-decoration:underline}.file-item a:hover{color:var(--cyan)}
.file-item .sz{font-size:11px;color:var(--gray-500)}
.sub-blk{border-left:3px solid var(--cyan);padding-left:14px;margin:6px 0 6px 16px}
.sub-blk strong{font-size:12px}
.err{color:var(--red);text-align:center;padding:20px}
.empty{text-align:center;padding:40px;color:var(--gray-500)}
</style>
</head>
<body>
<div class="container">
<h1><span>📂 Просмотр бекапа</span> ИИ-Агент ПБ</h1>
<div class="drop-zone" id="dropZone">
<span class="icon">📥</span>
<div class="txt">Нажмите или перетащите файл бекапа</div>
<div class="hint">Файл backup_pb_*.json из папки Загрузки</div>
<input type="file" id="fileInput" accept=".json">
</div>
<div id="result"></div>
</div>
<script>
var sm={done:"Исполнено",warn:"На контроле",late:"Просрочено",wait:"В процессе"};
var sec=["I. Люди","II. Оборудование","III. Аварии и ЧС","IV. Информ. работа","V. ИИ и цифровизация"];
var br=["Дирекция ПБ","Дивизион Сеть","Корп. бизнес","Розн. бизнес","Сервисная фабрика","Телеком Комплект","Корп. университет","Упр. проектами","Цифровой бизнес"];
var mn=["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"];
function esc(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}
function M(k){var p=k.split("-");return mn[parseInt(p[1])-1]+" "+p[0]}
var dz=document.getElementById("dropZone"),fi=document.getElementById("fileInput");
dz.addEventListener("click",function(){fi.click()});
fi.addEventListener("change",function(){if(this.files.length)processFile(this.files[0])});
dz.addEventListener("dragover",function(e){e.preventDefault();dz.style.background="var(--cyan-50)"});
dz.addEventListener("dragleave",function(){dz.style.background="var(--white)"});
dz.addEventListener("drop",function(e){e.preventDefault();dz.style.background="var(--white)";if(e.dataTransfer.files.length)processFile(e.dataTransfer.files[0])});
function processFile(file){
if(!file){showErr("Файл не выбран");return}
if(!file.name.endsWith(".json")){showErr("Выберите .json файл");return}
var r=new FileReader();
r.onload=function(ev){
try{
var data=JSON.parse(ev.target.result);
if(!data.events){showErr("Неверный формат: нет поля events");return}
render(data);
}catch(e){showErr("Ошибка чтения JSON: "+e.message)}
};
r.onerror=function(){showErr("Не удалось прочитать файл")};
r.readAsText(file);
}
function showErr(msg){document.getElementById("result").innerHTML='<div class="err">❌ '+esc(msg)+'</div>'}
function getFiles(data,id,si){
var k=si>=0?"sf_"+id+"_s"+si:"sf_"+id;
if(!data.files||!data.files[k])return{};
var raw=data.files[k];
if(typeof raw==="string"){try{return JSON.parse(raw)}catch(e){return{}}}
return raw;
}
function render(data){
var h="";
h+="<p style='margin-bottom:16px;color:var(--gray-500)'>Дата: <strong>"+(data.date?new Date(data.date).toLocaleString():"—")+"</strong> · Мероприятий: <strong>"+data.events.length+"</strong></p>";
data.events.forEach(function(e){
var cl={done:"g",warn:"a",late:"r",wait:"w"}[e.s]||"w";
h+="<div class='ev'><h3>"+e.id+". "+esc(e.t)+"</h3>";
h+="<div class='meta'><span>Раздел: <strong>"+sec[e.sec]+"</strong></span><span>Дивизион: <strong>"+br[e.b]+"</strong></span><span>Срок: <strong>"+e.due+"</strong></span><span>Факт: <strong>"+(e.done||"—")+"</strong></span><span>Прогресс: <strong>"+e.p+"%</strong></span><span class='badge "+cl+"'>"+sm[e.s]+"</span></div>";
// Main event files
var fd=getFiles(data,e.id,-1);
var keys=Object.keys(fd).sort();
keys.forEach(function(key){
var d=fd[key];
if(!d.report&&(!d.files||!d.files.length))return;
h+="<div class='month'><strong>"+M(key)+"</strong>";
if(d.report)h+="<div class='rep'>"+esc(d.report)+"</div>";
if(d.files&&d.files.length)d.files.forEach(function(f){
h+="<div class='file-item'>"+(f.data?"<a href='"+f.data+"' download='"+esc(f.name)+"'>📄 "+esc(f.name)+"</a>":"📄 "+esc(f.name))+"<span class='sz'>"+(f.desc?esc(f.desc)+" · ":"")+(f.size?(f.size/1024).toFixed(0)+" КБ":"")+"</span></div>";
});
h+="</div>";
});
// Sub-items
if(e.sub)e.sub.forEach(function(s,i){
var sd=getFiles(data,e.id,i);
var skeys=Object.keys(sd).sort(),hasSub=false;
skeys.forEach(function(k){if(sd[k]&&(sd[k].report||(sd[k].files&&sd[k].files.length)))hasSub=true});
if(!hasSub)return;
h+="<div class='sub-blk'><strong>"+s.l+") "+esc(s.t)+"</strong>";
skeys.forEach(function(key){
var d=sd[key];
if(!d.report&&(!d.files||!d.files.length))return;
h+="<div class='month'><strong>"+M(key)+"</strong>";
if(d.report)h+="<div class='rep'>"+esc(d.report)+"</div>";
if(d.files&&d.files.length)d.files.forEach(function(f){
h+="<div class='file-item'>"+(f.data?"<a href='"+f.data+"' download='"+esc(f.name)+"'>📄 "+esc(f.name)+"</a>":"📄 "+esc(f.name))+"<span class='sz'>"+(f.desc?esc(f.desc)+" · ":"")+(f.size?(f.size/1024).toFixed(0)+" КБ":"")+"</span></div>";
});
h+="</div>";
});
h+="</div>";
});
h+="</div>";
});
document.getElementById("result").innerHTML=h||"<div class='empty'>Нет данных</div>";
dz.style.display="none";
}
</script>
</body>
</html>