Панель управления v0.20.2

Admin Platform Heart

Единая панель управления проектами, сайтами и серверами

Платформа мониторинга и администрирования цифровой инфраструктуры: сайты, VDS-серверы, проекты и интеграции под контролем в одном окне

Что это за платформа

Admin Platform Heart — собственная система мониторинга и администрирования, под которой работает цифровая инфраструктура ООО «Студия ИПД».

Мониторинг сайтов
Живой контроль доступности всех сайтов и сервисов, мгновенные алерты при падениях.
VDS и серверы
Управление виртуальными серверами: ресурсы, метрики, доступ и резервные копии в одном окне.
Управление проектами
Клиенты, проекты и задачи: полный цикл работы от постановки до сдачи.
Сканирование и защита
Проверка сайтов и серверов на уязвимости, журнал инцидентов и их устранение.
API-ключи и интеграции
Безопасный обмен данными с ИИ-агентами и внешними платформами через именованные API-ключи.
Журналы и версии
Прозрачность: каждый шаг зафиксирован, каждая версия платформы описана с ценностью.

Информация о системе

Технологическая база, на которой работает платформа.

ПлатформаAdmin Platform Heart · v0.20.2
Версия PHP8.4.23
СтекPHP 8.4.23 + Laravel + собственное ядро MVC
База данныхMySQL (admin_platform_heart_dev)
АвторизацияBcrypt + Remember Me (3 года)
СерверHerd · admin-platform-heart.ipd.test
Средаstaging

Платформу развивает ООО «Студия ИПД»

Это не «самоделка на коленке», а официально работающая система под управлением юридического лица. Рядом с администрированием — подтверждённая экспертиза в партнёрских программах.

Официальное юридическое лицо
Платформа развивается в рамках ООО «Студия ИПД». Направление — разработка, администрирование и автоматизация цифровых сервисов.
Алексей Гапеев — сертифицированный партнёр amoCRM
Алексей Гапеев — сертифицированный партнёр amoCRM
Открыть ↗
ООО «Студия ИПД» — сертифицированный партнёр amoCRM
ООО «Студия ИПД» — сертифицированный партнёр amoCRM
Открыть ↗
Свежий сертификат партнёра amoCRM: Алексей Гапеев и ООО «Студия ИПД» подтвердили официальную экспертизу в программе amoSTART — сертификат получен 31 июля 2026. Управление платформой и администрирование amoCRM — соседние направления одной команды: можно заказать и то, и другое.

Связаться с нами

Пишите в Telegram, звоните или отправляйте email — отвечаем быстро.

АГ
Алексей Гапеев
Руководитель и ведущий разработчик платформы

История версий

Как развивается платформа: что сделано, для чего и какую ценность это даёт.

v0.20.2 2026-08-07 PATCH Текущая
Скорость и стабильность: страница «Диск» больше не выбивает 504, бэкапы — один архив в день
Страница `/admin/vds/detail/disk/` на VDS выбивала HTTP 504 (nginx timeout 60с): несколько тяжёлых `du` по `/var` и `/var/www` выполнялись последовательно и суммарно занимали ~125 секунд. Теперь все `du` запускаются параллельно в одном проходе, а результат кешируется на 5 минут — страница отвечает за секунды, повторные открытия мгновенные. Резервное копирование переработано по схеме «1 день = 1 архив»: каждый день системный скрипт кладёт в `/var/backups/ipd/` один архив `backup_ГГГГ-ММ-ДД_ЧЧММСС.tar.gz` с БД, сайтами, конфигами и описанием внутри. Раздел «Резервные копии» теперь управляет именно этим каталогом, кнопка «Очистить старые» работает по retention, а освобождено ~2.5 ГБ мусора на диске (83% → 75%).
Исправление HTTP 504 на странице «Диск»
  • Параллельные `du` все замеры `/var/www`, `/var/backups`, `/var/log`, `/var`, `/usr`, `/root`, `/tmp` запускаются одним bash-проходом параллельно (время ≈ максимум одного замера, а не сумма)
  • Кеш на 5 минут результат `getDiskUsageDetail()` сохраняется в `/tmp/aph_vds_cache/` и отдаётся повторным запросам мгновенно
  • Кеш метрик на 60 секунд `collectMetrics()` перестал пересчитывать системные метрики при каждом открытии
  • Таймаут-страховка каждый `du` ограничен по времени (не зависает навсегда)
Резервное копирование «1 день = 1 архив»
  • `ipd-backup-v2.sh` новый системный скрипт: один архив `backup_ГГГГ-ММ-ДД_ЧЧММСС.tar.gz` в `/var/backups/ipd/`, внутри `databases/` (все БД), `www/` (сайты), `configs/` (nginx, php, mysql, letsencrypt, cron), `info.txt` (описание)
  • Исправлен пустой дамп БД mysqldump без `-p` (системный root через unix-socket), реальный дамп всех баз; раньше файл `databases_*.sql.gz` был 20 байт
  • Рядом с архивом `*.meta.txt` метаданные для быстрого чтения платформой без распаковки (список БД, сайтов, конфигов)
  • Retention работает старые `backup_*.tar.gz` старше 7 дней автоматически удаляются
  • Права доступа `www-data` добавлен в группу `backup-ipd`, каталог group-writable (setgid), sudo NOPASSWD для скрипта — платформа может запускать и удалять бэкапы
Раздел «Резервные копии»
  • Управление `/var/backups/ipd` платформа сканирует архивы `backup_*.tar.gz`, кнопка «Очистить старые» удаляет по retention
  • Состав архива в таблице для каждого бэкапа показывается число БД и сайтов (из `.meta.txt`)
  • «Создать бэкап» в фоне запускает системный скрипт через sudo в фоне, страница не зависает
Очистка диска
  • Удалены пре-деплойные копии в `/var/www` (~2.5 ГБ) `_backups_*`, `*predeploy*`, `*prod-old*`, `*.bak.*` и старые SQL-дампы; диск: 83% → 75%, свободно 9.5 ГБ
  • Версия платформа обновлена до **0.20.2** (PATCH)
v0.20.1 2026-08-07 PATCH
Индикатор среды выполнения: локальный хостинг или VDS
Раздел «Почта» → «Настройки» теперь показывает, откуда работает платформа: прямо на VDS (определяется по файлу /etc/dovecot/users) или на локальном хостинге (доступ к VDS только через SSH-ключ). Это снимает неоднозначность при управлении почтой: на VDS список ящиков читается напрямую, на локальном хостинге - через SSH-мост. Добавлена карточка-индикатор с пояснением способа доступа.
Индикатор среды
  • Карточка-индикатор на вкладке «Настройки» зелёный бейдж «VDS» (прямой доступ) или красный «Локальный хостинг» (SSH-ключ), с пояснением способа работы и подсказкой
  • Определение среды `MailVdsService::environment()`: `is_vds = file_exists('/etc/dovecot/users')` на VDS, `is_local` на локальном хостинге
  • Сохранена обратная совместимость на локальном хостинге весь функционал (список ящиков, папки, письма) работает через SSH-мост как раньше
  • Версия платформа обновлена до **0.20.1** (PATCH)
v0.20.0 2026-08-07 MINOR
Добавлен раздел «Почта» - мониторинг и управление почтовыми ящиками VDS
В левое меню добавлен раздел «Почта»: список зарегистрированных на VDS ящиков (из /etc/dovecot/users), их объём и количество писем, папки и чтение писем через SSH-мост (Maildir напрямую, без php-imap), папка «Спам» (.Junk), проверка качества доставки (SPF/MX/DKIM/TLS), статус почтовых сервисов, тест отправки через существующий SMTP-профиль, заявки на создание новых ящиков (admin@, support@ и др.) с генерацией команд для VDS (выполнение только по приказу) и рекомендации.
Раздел «Почта»
  • Пункт меню «Почта» в левом меню (только для администратора), раздел /admin/mail/
  • Вкладка «Обзор» сводные карточки (ящиков, писем, объёма, спама), качество доставки (SPF, MX, DKIM, TLS), таблица ящиков с объёмом/новыми/спамом, статус почтовых сервисов, рекомендации
  • Вкладка «Ящики» список всех ящиков из /etc/dovecot/users (без хэшей паролей), переход к папкам ящика
  • Папки и письма папки Maildir (INBOX, .Junk/Спам и др.), список писем (новые первыми), просмотр письма: тема, от/кому, дата, тело (text/plain), заголовки и исходный RFC822
  • SSH-мост MailVdsService: чтение почты напрямую через ssh.exe с ключом (root@VDS:52222), параметры из .env (MAIL_SSH_*) или настроек (вкладка «Настройки»); хэши и пароли не выводятся
  • Спам-фильтр папка «Спам» (.Junk) отображается отдельно, письма не теряются; на VDS спам-фильтр не установлен - в .Junk писем нет, спам приходит в ящик (рекомендация)
  • Качество доставки проверка SPF/MX/DKIM/TLS для ipd.by через dig/opendkim-testkey/openssl на VDS
  • Тест отправки на вкладке «Создание ящика»: отправка через активный SMTP-профиль (EmailService), результат AJAX
  • Создание ящика форма (e-mail + назначение), заявка сохраняется в p2026_mailboxes, команды для VDS (useradd, Maildir, dovecot users) генерируются и показываются, выполнение - только по явному приказу
  • Настройки SSH вкладка «Настройки»: хост, порт, пользователь, ключ, таймаут (из .env или настроек)
  • Миграция V106 таблица p2026_mailboxes (заявки на создание ящиков)
  • Версия платформа обновлена до **0.20.0** (MINOR)
v0.19.2 2026-08-07 PATCH
Единый стиль интерфейса: эмодзи заменены на монохромные SVG-иконки
Все эмодзи в веб-интерфейсе заменены на векторные иконки в стиле сайдбара (Feather, stroke, currentColor): заголовки разделов (Резервные копии, VDS, Ресурсы), карточки бэкапов, блоки анализа на страницах VDS (цветовые статусы-точки вместо кружков), переключатель темы на странице «О платформе», статусы папок проектов, стрелки сортировки и раскрытия. Иконки адаптивны к теме и размеру текста, не зависят от наличия эмодзи-шрифтов на устройстве.
Интерфейс — SVG-иконки вместо эмодзи
  • Помощник `icon()` единая функция рендера SVG-иконок (box, clock, hourglass, zap, monitor, bulb, check, alert, sun, moon, chevrons) в `config/legacy.php`; стиль повторяет иконки сайдбара: viewBox 24, stroke=currentColor, ширина обводки 2
  • Помощник `statusDot()` цветная точка-статус (зелёная/жёлтая/красная) как SVG-круг для инсайтов VDS
  • Заголовки разделов «Резервные копии» (box), «VDS — Показатели сервера» (monitor), «Ресурсы — Управление сервером» (zap) с иконкой слева от заголовка
  • Карточки бэкапов «Бэкапы» (box), «Retention» (hourglass), «Последний бэкап» (clock)
  • Блоки анализа VDS лампочка «Анализ» (bulb), цветовые статусы загрузки CPU/памяти/диска/нагрузки/сети (SVG-точки #ef4444/#f59e0b/#16a34a вместо кружков)
  • Переключатель темы на странице «О платформе» sun/moon вместо эмодзи (обновляются при переключении через innerHTML)
  • Статусы папок проектов check-circle/alert в форме проекта с цветом по состоянию вместо галочки и восклицания
  • Сортировка и раскрытие стрелки таблицы пользователей и «Подробнее/Свернуть» в журнале — SVG-шевроны
  • Changelog убраны эмодзи из исторических записей, чтобы страница «О платформе» отображалась единообразно
  • Версия обновлена до **0.19.2** (PATCH)
  • Оставлены эмодзи вне браузера в Telegram-уведомлениях (вход в систему, ошибки) и в Markdown-отчёте Health: там SVG не применим, эмодзи уместны в текстовых каналах
v0.19.1 2026-08-06 PATCH
Мониторинг теперь отвечает на вопрос «когда» — у каждого сайта видно время последней проверки, и его можно проверить одной кнопкой прямо сейчас
Алексей видит «сайт недоступен» — но с какого времени? Теперь в списке сканирования у каждого сайта показывается дата и время последней проверки («сегодня в 14:32», «5 дней назад»), добавлена кнопка «Проверить сейчас» — мгновенная HTTP-проверка конкретного сайта с записью в историю. Рабочий стол стал настоящим центром мониторинга: светофоры (зелёный/жёлтый/красный/серый), проактивный список «Требуют внимания» (недоступные и давно непроверенные сайты, SSL на исходе) и блок «Платформа и сканирования». Проблемы замечаются раньше, чем о них сообщат клиенты.
Сканирование — время и ручная проверка
  • Колонка «Проверен (когда)» списке проверки сайтов — у каждого сайта дата и время последнего HTTP-сканирования + относительная пометка («сегодня», «вчера в 21:40», «5 дней назад»); проверка старше недели подсвечивается жёлтым — сразу видно, что сайт мог упасть давно
  • Кнопка «Проверить сейчас» мгновенная HTTP-проверка одного сайта (https+http, код ответа, редирект, SSL) с обновлением статуса и времени проверки; результат записывается в историю сканирований (источник «Ручной») и в журнал действий
  • Кнопка на странице сайта «Проверить сейчас через HTTP» в карточке «Сканирование и проверка» (в том числе для map.kamenec.ipd.by, site 437)
Рабочий стол — центр мониторинга
  • Светофоры сайтов 4 группы: зелёные (работают), жёлтые (внимание), красные (недоступны), серые (не проверялись или давно); у каждой — число и список доменов со временем проверки, клик ведёт на сайт
  • «Требуют внимания» проактивный список: недоступные сайты с примечанием, давно непроверенные (серые) и SSL-сертификаты, истекающие в ближайшие 30 дней
  • «Платформа и сканирования» версия платформы, время последнего запуска и последнего HTTP-сканирования
  • Версия обновлена до **0.19.1** (PATCH)
v0.19.0 2026-08-04 MINOR
Kebab-меню на всех карточках VDS — быстрый путь к деталям и действиям
Теперь на каждой из 6 карточек мониторинга VDS (Система, Процессор, Память, Диск, Нагрузка, Сеть) — меню «⋯» в правом верхнем углу. Клик по карточке открывает детальную страницу показателя с визуальным анализом (кольцевые диаграммы, цветовые статусы, «что это значит»), а kebab-меню даёт дополнительные действия: на Диске — «Резервная копия», на Памяти — «Очистить кэш», на Процессоре — «Топ процессов». Разные пути к одной цели: мониторинг, детали, действие — всё в одном взгляде.
Kebab-меню на карточках VDS
  • Меню «⋯» на всех 6 карточках Система, CPU, Память, Диск, Нагрузка, Сеть: появляется при наведении, открывается по клику, закрывается по клику вне меню
  • Пункт «Подробнее» у каждой карточки ведёт на детальную страницу показателя
  • Контекстные действия у Диска «Резервная копия» и «Очистка» (ресурсы), у Памяти «Очистить кэш» и «Swap», у CPU и Нагрузки «Топ процессов», у Сети «Порты» и «Соединения», у Системы «Топ процессов» и «Управление»
Клик по карточке — переход в детали
  • Вся карточка кликабельна клик по любой карточке открывает детальную страницу (`/admin/vds/detail/{metric}/`), kebab-меню при этом не конфликтует (stopPropagation)
Детальные страницы показателей
  • 6 страниц `/admin/vds/detail/{metric}/` System, CPU, Memory, Disk, Load, Network с кнопкой «Назад к обзору»
  • Кольцевые диаграммы наглядная загрузка CPU/RAM/диска/нагрузки с цветом по состоянию
  • Анализ-блок «Анализ» система сама подсказывает: нормально или критично, что проверить, куда перейти
  • Быстрые ссылки на Диске «Резервные копии» и «Очистка диска», на Памяти «Очистить кэш», у CPU «Топ процессов»
  • Интерпретация нагрузки три уровня (≤70% ядер — норма, 70–100% — внимание, >100% — перегрузка)
  • Версия обновлена до **0.19.0** (MINOR)
v0.18.0 2026-08-04 MINOR
Система резервного копирования — место под контролем, бэкапы в веб-интерфейсе
Резервные копии VDS переехали из «корневой свалки файлов» в управляемую систему: структура по датам, мониторинг места на диске с прогресс-баром, создание/просмотр/скачивание/удаление бэкапов через веб-интерфейс, настраиваемый срок хранения (retention 1–90 дней). Исправлен критический баг: БД-бэкапы создавались пустыми (20 байт) — теперь `mysqldump --single-transaction` реально выгружает базы. Диск перестаёт забиваться, а Алексей в любой момент видит, что хранится и сколько места осталось.
Веб-интерфейс «Резервные копии» (`/admin/backups/`)
  • Карточки состояния занятость диска с прогресс-баром, размер бэкапов, retention, последний запуск, прогноз «запас дней»
  • Список файлов таблица с фильтрами по типу (БД / WWW / Конфиги), скачиванием и удалением каждого файла
  • Действия «Создать бэкап» (вручную), «Очистить старые» (по retention), настройка срока хранения
Cron-скрипт `vds-backup-new.sh`
  • Реальный дамп БД `mysqldump --single-transaction --routines --triggers | gzip`, проверка размера (>100 байт), пустые дампы удаляются и логируются
  • Структура по датам `/var/backups/{databases,www,configs}/YYYY-MM-DD/` — папка на каждый день
  • Retention cleanup автоматическое удаление бэкапов старше срока, чтение настроек из `settings.json`
  • Конфиги nginx, PHP и SSH в отдельных архивах
Контроллер и маршруты
  • BackupsController 408 строк) — 8 методов: index, diskInfo, scan, create, cleanup, delete, download, saveSettings
  • 8 маршрутов `/admin/backups/` и `/admin/backups/api/*`
  • Пункт меню «Резервные копии» в навигации админки
  • Версия обновлена до **0.18.0** (MINOR)
v0.17.4 2026-08-03 PATCH
Локальный сайт переведён на HTTPS — вся экосистема работает через защищённое соединение
Prod, staging и тестовый сайт всегда открывались по HTTPS, а локальный — только по HTTP. Теперь локальный сайт `admin-platform-heart.ipd.test` тоже работает через HTTPS: выпущен собственный TLS-сертификат от локального CA Laravel Herd, HTTP-запросы автоматически перенаправляются на HTTPS (301), а адрес приложения в конфигурации обновлён на `https://`. Разработка полностью повторяет поведение боевой среды.
HTTPS
  • Собственный TLS-сертификат сайт `admin-platform-heart.ipd.test` добавлен в число secure-сайтов Herd (`herd secure`): выпущен сертификат от локального CA `Laravel Valet CA Self Signed` с SAN `admin-platform-heart.ipd.test` и `*.admin-platform-heart.ipd.test`
  • HTTP → HTTPS все HTTP-запросы к сайту автоматически перенаправляются на HTTPS (301)
  • APP_URL обновлён адрес приложения в `.env` изменён с `http://` на `https://admin-platform-heart.ipd.test`
  • Проверено страницы входа, рабочего стола, настроек, версий, сайтов и `/health/` отдаются по HTTPS, сессионные куки помечаются флагом `Secure`
  • Версия обновлена до **0.17.4** (PATCH)
v0.17.3 2026-08-02 PATCH
Исправление истории версий: старт платформы описан верно
Первая версия платформы v0.0.1 была описана ошибочно как «Перечень 2026» — сбор перечня медицинских изделий. На самом деле платформа началась с переноса уже готовой платформы bober-bob.ipd.by: её архитектура была взята за образец, а задача первого задания — создание окружения и мониторинг сайтов *.ipd.by. Исправлено описание v0.0.1 в истории версий и на странице входа — теперь вся экосистема рассказывает реальную историю платформы.
История версий
  • v0.0.1 переписана старт описан верно: перенос готовой платформы bober-bob.ipd.by, окружение на VDS, дашборд мониторинга сайтов
  • Дата старта исправлена на 2026-07-19 (фактическая дата первого задания)
Страница входа
  • Описание платформы убрано ошибочное «перечень медицинских изделий», добавлено описание мониторинга сайтов *.ipd.by
  • Версия обновлена до **0.17.3** (PATCH)
v0.17.2 2026-08-02 PATCH
Системное исправление тёмной темы — читаемость всех административных страниц в тёмном режиме
Тёмная тема покрывала не всё: часть текстов, бейджей, карточек и полей форм на административных страницах оставались с захардкоженными светлыми цветами — тёмный текст на тёмном фоне был почти нечитаем. Причина была системной: вёрстка (inline-стили и локальные `<style>`-блоки) жёстко зашивала светлые hex-цвета (`#111827`, `#374151`, `#f8fafc` и т.п.) вместо CSS-переменных темы. Добавлен универсальный слой переопределений для тёмной темы, который накрывает любой элемент с инлайн-цветом на любой странице, а страничные стили переведены на переменные темы. Теперь все административные страницы в тёмной теме выглядят целостно: текст, бейджи, карточки, поля ввода и статусы читаются одинаково хорошо.
Тёмная тема
  • Универсальный слой тёмной темы в админ-CSS добавлен блок переопределений `[data-theme="dark"] [style*=...]`, который ловит захардкоженные инлайн-цвета на любом элементе (не только на `div`): тёмные тексты (`#111827`, `#374151`, `#1f2937`, `#42547a` и др.) становятся светлыми переменными темы, светлые фоны бейджей и карточек — тёмными, семантические цвета (зелёный, красный, оранжевый, синий, фиолетовый) сохраняют свой смысл в тёмной палитре
  • Тёмные значения soft-переменных в переменные тёмной темы добавлены недостающие `--green-light`, `--green-soft`, `--accent-light`, `--accent-soft`, `--blue-soft`, `--purple-soft`, `--orange-soft`, `--red-soft`, а также базовые семантические цвета, которые ранее наследовались из светлой темы
  • Переведены на переменные темы траничные стили: карточка версии и бейджи на странице «Версии» (`/admin/settings/versions/`), блок версий в настройках, страница ресурсов (карточки действий, бейджи, тосты, прогресс-бары), чипы на странице сайтов, бейджи на страницах сканирования, статусные бейджи в журнале (`.status-success/.status-pending/.status-error`)
  • Тёмные карточки и плитки вместо белых классы `.site-card`, `.scan-card`, `.kebab-menu`, `.stat-tile`, `.stat-neutral`, `.res-tile` использовали несуществующую переменную `var(--card)` (светлый fallback) или жёсткий `#f8fafc`; переведены на `var(--card-bg)` / `var(--hover-bg)`, чтобы карточки и плитки сайтов, сканирования и статистики не «выпадали» белыми в тёмной теме
  • Кнопки с корректной тёмной заливкой добавлены переменные `--btn-bg`/`--btn-fg` (тёмная серая заливка, белый текст) вместо неверного использования текстовой переменной `--text` как фона кнопок «Найти»/«Подробнее»/`.scan-btn.secondary`: в тёмной теме кнопки больше не становятся светло-серыми с белым текстом
  • Семантические бейджи читаются в обеих темах классовые бейджи `.chip-ok/.chip-warn/.chip-danger` (сайты), `.badge-ok/.badge-warn/.badge-error/.badge-blue` (сканирование), `.role-badge/.status-badge/.test-badge` (пользователи) переведены с тёмных hex на переменные темы `var(--green)/var(--orange)/var(--red)/var(--blue)` и soft-переменные фона
  • Переключатели в тёмной теме ползунки `.toggle .slider`/`.toggle-switch .slider2` в настройках («Внешний вид», «Безопасность») получили тёмные офф-состояние и ручку: выключенный переключатель больше не светится светло-серым на тёмном фоне
  • Поля ввода с белым фоном инлайн `background:#fff` на полях фильтров и форм заменён на переменную `var(--card-bg)`, чтобы поля не «выпадали» белыми в тёмной теме
  • Проверено на всех страницах страницы административной панели проверены в браузере в тёмной теме: не осталось ни одного нечитаемого тёмного текста и ни одного «выпадающего» светлого фона
  • Версия обновлена до **0.17.2** (PATCH)
v0.17.1 2026-08-02 PATCH
Монохромный логотип в единой экосистеме темы — вместо фиолетового градиента, и восстановленные даты версий
Логотип переведён с фиолетового градиента на чистую одноцветную SVG-графику: фирменный знак «сердце с пульсом» теперь отрисовывается одним цветом и автоматически подстраивается под тему — белый на тёмной, чёрный на светлой. Логотип встроен в ту же экосистему, что и переключатель темы: переключение мгновенно меняет цвет знака без перезагрузки страницы. Заодно пересоздан весь набор favicon-иконок и восстановлены даты версий, потерянные из-за ошибки парсинга changelog.
Логотип и фирменный стиль
  • Монохромный SVG-логотип фиолетовый градиент, белая обводка и фоновая подложка заменены на одноцветный знак «сердце с пульсом» (один цвет, прозрачный фон)
  • Автоадаптация под тему знак отрисовывается через `currentColor` и CSS-переменную `--logo-color`: белый (`#f8fafc`) на тёмной теме, чёрный (`#0f172a`) на светлой, в единой экосистеме с переключателем темы
  • Единый знак во всех точках показа сайдбар, страница входа и «О платформе» (hero-блок) используют один и тот же SVG-знак, управляемый темой
  • Обновлён набор favicon все PNG-иконки, ICO и новый SVG-favicon пересозданы из монохромного знака; SVG-favicon сам адаптируется под тему системы
Даты версий
  • Восстановлены даты версий потерянные даты снова отображаются на странице «О платформе» (/about/), в разделе «Версии» (/admin/settings/versions/) и в настройках; причина потери — парсинг changelog не учитывал тире «—» в заголовках версий, регэкспы исправлены (модификатор `u`)
  • Версия обновлена до **0.17.1** (PATCH)
v0.17.0 2026-08-02 MINOR
Витрина платформы — страница «О платформе» с тёмной темой, логотипом и историей версий
Теперь человек, не входя в систему, может открыть страницу «О платформе» и сразу понять, что это за продукт: новый SVG-логотип, профессиональное описание платформы и её возможностей, техническая информация о системе, блок доверия с сертификатами партнёра amoCRM (получены 31.07.2026) и реквизитами ООО «Студия ИПД», полная история версий и контакты — Telegram (бот и личный), телефоны и email. Страница работает и в тёмной, и в светлой теме с переключателем. «Витрина» превращает платформу из рабочего инструмента в презентабельный продукт: любой читатель за минуту понимает её возможности и глубину.
Описание платформы
  • Страница «О платформе» полностью переработана вместо скопированного описания медицинской платформы — собственный текст: мониторинг сайтов, VDS и серверы, управление проектами, сканирование и защита, API-ключи и интеграции, журналы и версии
  • Новый SVG-логотип фирменный знак платформы (сердце с пульсом на градиенте) в формате SVG, заменяет растровый `logo.png`
  • Тёмная и светлая тема переключатель в правом верхнем углу, тема сохраняется в localStorage; для администрирования по умолчанию включена тёмная
  • Техническая информация о системе версия платформы, PHP, стек, база данных, авторизация, сервер, среда
Доверие и официальность
  • Блок доверия показано, что платформа развивается в рамках официального юридического лица ООО «Студия ИПД»
  • Сертификаты партнёра amoCRM свежие сертификаты (получены 31.07.2026) на Алексея Гапеева и на компанию, открываются в лайтбоксе без входа в систему
История версий и контакты
  • История версий продублирована полная история с заголовками, описаниями, типами и разделами доступна публично, без авторизации
  • Контакты Telegram-бот проекта, личный Telegram, два телефона и email с активными ссылками
  • Полезные ссылки вход в систему, инструкция, поддержка
  • Версия обновлена до **0.17.0** (MINOR)
v0.16.1 2026-08-02 PATCH
Профессиональное версионирование — история платформы с заголовками и ценностью каждой версии
Теперь история платформы читается как карта развития продукта: под каждой версией — ясный заголовок, объясняющий суть изменения, и описание, **зачем это сделано и какую ценность даёт**. Алексей видит эволюцию платформы в один взгляд, а не сухой список изменений. Это превращает технический журнал в инструмент продаж и презентации: любой читатель за 30 секунд понимает, что платформа растёт и становится мощнее с каждой версией.
Формат истории версий
  • Заголовок каждой версии каждая версия теперь открывается ёмким заголовком, который формулирует суть проделанной работы («Фокус на главном», «Живое сканирование сайтов», «API-ключи» и т.д.)
  • Описание «зачем и что даёт» под заголовком — абзац, объясняющий причину изменений и пользу для пользователя: какую задачу решает, какой результат даёт, в чём ценность
  • Тип версии у каждой версии указан тип по SemVer (MINOR — новый функционал, PATCH — исправления), чтобы было видно характер релиза
  • Восстановлены пропущенные версии добавлены отсутствовавшие релизы **v0.5.0** (VDS-мониторинг) и **v0.11.0–v0.16.0** (Laravel, домены со старого хостинга, ресурсы, сканирование, Total Commander, API-ключи) — история теперь полная, без пробелов
  • Версия обновлена до **0.16.1** (PATCH)
v0.16.0 2026-08-01 MINOR
API-ключи — безопасный доступ к данным для ИИ-агентов и внешних платформ
Платформа стала центром обмена данными между сервисами: теперь Алексей может выдавать **именованные API-ключи** (например, для n8n, ИИ-агентов или калькулятора), видеть историю их использования и мгновенно отзывать при необходимости. Токен показывается один раз и хранится только в виде хеша — это защита данных на уровне современных банковских стандартов. Интеграция перестаёт требовать логина в админке: внешний сервис получает данные напрямую, а владелец — полный контроль.
Вкладка «Интеграция → API key»
  • Именованные ключи пользователь задаёт название (проект, платформа, сервис), система генерирует криптостойкий токен `aph_…`; для админа доступен выбор владельца ключа
  • Одноразовый показ токена ключ демонстрируется один раз в блоке «Ваш новый API-ключ» с кнопкой «Копировать»; восстановить его невозможно по замыслу
  • Проверка ключа встроенный инструмент «Проверить ключ» подтверждает работоспособность токена и логируется в историю
Безопасность
  • Хранение хеша в базе данных хранится только SHA-256 хеш токена и префикс для отображения; даже утечка базы не раскрывает действующие ключи
  • Журнал без секретов полный токен никогда не записывается в логи и журнал действий
  • Мгновенный отзыв «Отозвать» делает ключ нерабочим сразу (запросы с ним отклоняются), «Активировать» возвращает его, «Удалить» — полностью очищает с историей
История и владелец
  • Полная картина по каждому ключу владелец, статус (Активен/Отозван), дата создания, последнее использование (время + действие), счётчик запросов
  • Страница «История» у каждого ключа — журнал запросов: действие, метод, endpoint, статус, IP-адрес и время (до 100 последних записей)
Интеграция с API платформы
  • Три способа передачи ключа `Authorization: Bearer`, заголовок `X-Api-Key` или параметр `?api_key=` — внешний сервис выбирает удобный
  • Работа на `/admin/projects/api/` и экспорте JSON ключ даёт доступ к актуальным данным проектов, клиентов и сайтов без сессии; без ключа и без сессии API отвечает 401
v0.15.0 2026-08-01 MINOR
Проекты привязаны к Total Commander + экспорт/импорт всех данных и API для ИИ-агентов
Total Commander — источник правды Алексея, где живут папки всех проектов. Теперь каждый проект в платформе хранит ссылку на свою папку TC, и система визуально показывает: у кого путь есть, у кого папка не найдена, у кого привязки нет. А вкладка «Экспорт/Импорт» позволяет выгрузить всю базу (проекты, клиенты, сайты) в JSON, перенести между окружениями и подключить ИИ-агентов через API — платформа становится единым живым источником данных для всей экосистемы.
Привязка к Total Commander — источник правды
  • Поле-путь в карточке проекта указывается папка в TC (например, `L:\Система\02 Клиенты\03 Активная работа\Mysteria\`), проверка существования идёт по обоим вариантам буквы диска (`D:\` ↔ `L:\`)
  • Визуальные индикаторы в списке проектов у каждой карточки цветная плашка: зелёная «папка есть», жёлтая «путь указан, но не найден», серая «не привязан» + фильтр «Все / Привязаны / Без привязки»
  • Блок «Total Commander — источник правды» в карточке проекта — статус привязки и кнопка «Изменить путь»
Экспорт и импорт данных
  • Экспорт всей базы выгрузка проектов, клиентов и сайтов в JSON одним файлом (39 проектов / 3 клиента / 186 сайтов)
  • Умный импорт (upsert) загрузка файла обновляет существующие записи и добавляет новые по ключам (клиент — по названию, проект — по slug, сайт — по проекту и домену), в транзакции, со счётчиками «+новых / обновлено / ошибок»
  • Round-trip проверен экспорт → правка → импорт проходит без потери данных и связей
API для ИИ-агентов
  • `GET /admin/projects/api/` актуальные данные проектов с проверкой TC-путей, клиентов и сайтов в JSON, доступен авторизованному админу
  • Формат задокументирован ответ содержит версию, схему и описание — ИИ-агенту достаточно открыть URL и прочитать данные
v0.14.1 2026-07-31 MINOR
Сканирование с прогрессом и подробными отчётами
Процесс сканирования стал прозрачным и контролируемым: Алексей видит **живой прогресс** (проценты, счётчик сайтов, название текущего), а после завершения каждый запуск открывается в виде подробного отчёта по каждому сайту. Даты во всей истории теперь с годом — никакой путаницы. Сканирование перестало быть «чёрным ящиком» и превратилось в понятный инструмент оперативного контроля.
Видимый прогресс сканирования
  • Модальное окно прогресса процент, счётчик «i / N», текущий сайт, сообщения и мини-лог; скан работает в фоне, прогресс читается polling'ом
  • Прогресс в сервисе локальный скан пишет прогресс по каждой папке (6%→100%), HTTP-скан переведён на батчи по 30 сайтов
  • Сессия разблокирована во время скана PHP-сессия не блокируется, интерфейс остаётся отзывчивым
Отчёты и история
  • Подробный отчёт по скану страница `/admin/scan/log/{id}/`: обзор запуска (источник, статус, время, длительность, счётчики) + таблица по каждому сайту с результатом и ссылкой «Открыть»
  • Даты с годом все даты истории и сканирований в формате `d.m.Y H:i` (страница скана, список сайтов, карточка сайта, дашборд)
  • Понятная история легенда цветов статусов, пояснение колонок, кнопка «Отчёт» у каждого запуска
v0.14.1 2026-07-31 PATCH
Исправлен «код» в углу страницы сканирования
Загадочный квадрат в правом верхнем углу страницы `/admin/scan/` и горизонтальная прокрутка оказались не «сломанными стилями», а конфликтом CSS-класса `.badge`: глобальное правило «кружка-счётчика» наслаивало все статусные бейджи друг на друга. Причина найдена и устранена — страница снова чистая, бейджи стоят на своих местах.
Диагностика и исправление
  • Корень найден глобальный `.badge{position:absolute;…}` перебивал «пилюльную» версию бейджей, наслаивая их в правый верхний угол
  • Исправление на страницах скана правило `.badge` дополнено сбросом позиционирования и размеров
  • Проверено в headless Chrome до правки `scrollWidth=1371` при `clientWidth=1351` (лишние 20 px), после — прокрутки нет, ни одного absolute/fixed элемента в углу
v0.14.0 2026-07-31 MINOR
Живое сканирование сайтов: Herd + интернет в одной точке
Платформа перестала быть «мёртвой базой данных» и научилась **сама видеть, что происходит**. Кнопка «Сканировать сайты» за ~25 секунд инспектирует 18 локальных проектов Herd (PHP, фреймворк, версия, размер, git-история) и за ~6 секунд проверяет доступность 167 сайтов в интернете (HTTP, SSL, редиректы). Локальная разработка и прод видны из одной точки — это панель оперативного контроля всей экосистемы.
Страница «Сканирование» (`/admin/scan/`)
  • Сервис `ScannerService` `scanLocalHerd()` инспектирует папки `C:\Herd\` (composer.json → PHP/фреймворк/версия, APP_URL из .env, размер, git, тип Laravel/WordPress/PHP), `scanHttpSites()` — curl_multi по не-локальным сайтам с классификацией ok/warn/error
  • Стат-плитки и таблицы локальные папки, локальные сайты, интернет-сайты, история сканирований
  • Логи каждого запуска таблица `p2026_scan_logs` фиксирует каждое сканирование
  • Ручная проверка флаг «проверен вручную» на карточке и детальной странице сайта, бейдж-чип, переключение в один клик
  • Кнопка сверху страницы сайтов «Сканировать сайты» доступна прямо из `/admin/sites/`
  • Только SVG-иконки полная замена эмодзи на векторные иконки по всем 11 вьюхам платформы (21 место): чистый профессиональный интерфейс
v0.13.0 2026-07-31 MINOR
Ресурсы проектов: светофор здоровья, кебаб-меню и карточки мониторинга
Страница сайтов превратилась из «всё зелёного» списка в **пульс-панель ресурсов**: светофорная индикация на реальных данных показывает, что требует внимания (красное — проблемы, жёлтое — внимание, зелёное — ок), а на карточке сразу видны размер в МБ, база данных, PHP-версия, доступность роботам и интернету. За 30 секунд Алексей видит состояние всех 168 сайтов и понимает, где нужна работа.
Карточки сайтов
  • По 2 в ряд было 4) с цветной полосой-светофором слева
  • Кебаб-меню (⋯) перейти на сайт, редактировать, карточка проекта, клиент, копировать домен, подробнее
  • Ресурсы на карточке размер в МБ, БД (имя + размер), PHP-версия, технология/фреймворк, чипы «доступен роботам» и «в интернете»
Светофор здоровья
  • Расчёт на реальных данных зелёный (HTTP 2xx, SSL ок, в интернете), жёлтый (maintenance, SSL < 60 дней, закрыт от индексации), красный (down, HTTP ≥ 400, проблемы, SSL < 14 дней), серый (архив/нейтрально)
  • Логика в контроллере `computeHealth()` в `SitesController`, вьюха только рендерит результат
Сортировка и фильтры
  • Важность проекта critical / important / regular / personal / archive
  • **Фильтр по категории важности**, сортировка по размеру МБ, дате создания, SSL-истечению, статусу в интернете
  • Новые поля БД `database_size_mb`, `robots`, `importance` + обновлены форма и детальная страница
v0.12.0 2026-07-31 MINOR
Вся web-экосистема в одной базе: 160 сайтов и раздел «Клиенты»
Перенесена вся экосистема со старого виртуального хостинга: **160 сайтов** с платформами, фреймворками, размерами, датами и привязкой к проектам и клиентам, **38 проектов** и новый раздел **«Клиенты»** с полным CRUD. Впервые у Алексея появилась единая карта того, что есть в его экосистеме — без этой карты нельзя планировать миграцию на VDS, выставлять счета и решать, что поддерживать. Платформа стала полноценной базой данных бизнеса, а не учёткой для одного модуля.
Перенос сайтов со старого хостинга
  • Импортировано 160 сайтов реестр `p2026_project_sites` вырос до 168 сайтов (160 новых + 8 существовавших), **38 проектов** (31 новый + 7 существовавших), дублей доменов — 0
  • Полная аналитика платформа у 160 сайтов, фреймворк у 168, размер в МБ у 160, даты создания/редактирования у 159
  • Источники данных каталог `L:\2026-07-31\1\` и полная резервная копия хостинга ipd.by
Раздел «Клиенты»
  • Таблицы `p2026_clients` и `p2026_contacts` полный CRUD клиентов с сохранением контактов
  • Привязка проектов и сайтов к клиентам `client_id`, у проектов добавлен тип `project_type` (commercial / non_commercial / personal)
Исправления
  • Системная ошибка маршрутизации POST исправлена в `routes/web.php`, плюс 4 бага контроллеров и вьюх
v0.11.0 2026-07-30 MINOR
Переезд на Laravel 13 — современная основа для всей экосистемы
Платформа полностью переписана с самописного PHP-фреймворка на **Laravel 13** — это стратегический фундамент для будущего развития: автозагрузка PSR-4, ORM, Blade, миграции, Artisan CLI, middleware. Все 76 маршрутов работают, старые вьюхи продолжают работать через слой совместимости `\App\renderView()`, ничего не сломалось. Вместо «велосипедов» — готовые решения экосистемы Laravel, что кратно ускоряет каждую следующую фичу.
Переезд на Laravel 13
  • Laravel 13.23.0 (PHP 8.4) проект пересоздан свежим `composer create-project laravel/laravel`, работает на Laravel Herd
  • Слой совместимости все старые `.php`-вьюхи работают через `\App\renderView()` без переписывания каждого файла
  • Все 76 маршрутов работают проверены страницы about/, login/, health/, /
  • Зависимости laravel/framework ^13.8, phpoffice/phpspreadsheet, phpmailer, ckeditor
  • Старый код сохранён бекап в `C:\Herd\admin-platform-heart.ipd.old\`
v0.10.5 2026-07-30 MINOR
Фокус на главном: VDS-мониторинг, проекты и сайты
Платформа избавилась от лишних модулей, унаследованных от базовой платформы bober-bob («Перечень 2026»), и сфокусировалась на том, что реально нужно: мониторинг VDS, проекты и сайты. Меньше кода — быстрее работа, проще навигация, чище архитектура. Это осознанное упрощение: вместо «платформы обо всём» — мощный инструмент для конкретной задачи.
Удалённые разделы
  • Перечень 2026 удалён из меню, маршрутов и кода
  • Полученные файлы удалён раздел
  • Организации удалён раздел, убран LEFT JOIN с `p2026_organizations` из AdminUsersController
  • Сводные отчёты и «Мой перечень» (client) удалены
  • Инструкция (docs) удалена
Удалённые файлы
  • Контроллеры `AdminPerechenController`, `AdminReportsController`, `PerechenController`, `AdminOrgController`
  • Вьюхи `views/pages/perechen/`, `views/pages/reports/`, `views/pages/organizations/`, `views/pages/docs.php`
Обновление дашборда и очистка
  • `DashboardController` переписан статистика по проектам, сайтам и последним событиям
  • Новый VDS-ориентированный дашборд вместо дашборда кампании перечня
  • Начальная страница входа «Панель управления проектами и сайтами VDS»
  • Очищены маршруты и меню удалены все ссылки на `/admin/perechen/`, `/perechen/`, `/admin/reports/`, `/docs/`
v0.10.4 2026-07-30 PATCH
Реальные данные на тестовой площадке
На тестовую среду перенесены настоящие данные проектов и сайтов из продакшена — тестовая площадка перестала быть «пустышкой» и теперь показывает реальную картину. Заодно исправлена ошибка FK constraint при неудачном входе, из-за которой вход с неверным паролем ронял запись в журнал авторизаций.
Данные проектов и сайтов из prod → test
  • Экспорт из prod таблицы `p2026_organizations` (5 организаций), `p2026_projects` (7 проектов), `p2026_project_sites` (14 сайтов) выгружены с `admin-platform-heart.ipd.by`
  • Импорт в test данные полностью замещены в `admin_platform_heart_test` (MariaDB 10.11), тест показывает реальные проекты и сайты
  • Задание 45 восстановление данных после потери при деплое test→stage
Исправление ошибки
  • FK constraint violation `AuthController::login()` передавал `0` в `logAuth()` при отсутствии пользователя, что вызывало `SQLSTATE[23000]`. Исправлено: передаётся `null` (колонка допускает NULL)
v0.10.3 2026-07-29 MINOR
Страница версий — полная история в одной экосистеме
История разработки собрана в единую экосистему: добавлены пропущенные версии v0.9.0–v0.10.2, каждая с заголовками, подзаголовками и техническими деталями, увеличена читаемость. Теперь страница версий — это полная летопись проекта от первой миграции на Laravel до Google-like входа на обеих платформах, с привязкой каждой версии к номеру задания DOS.
Ревизия версионирования
  • Пропущенные версии добавлены v0.9.0 (Laravel-платформа), v0.10.0 (Google-like auth для Laravel), v0.10.1 (единый email-логин), v0.10.2 (Google-like auth для старой платформы)
  • Структура каждой версии заголовок с целью, разделы с техническими деталями, описания «почему» и «как», номер задания
  • Шрифт 14px улучшенная типографика: заголовки версий 20px, базовый текст 14px
  • Привязка к заданиям полная прослеживаемость через номера заданий DOS
v0.10.2 2026-07-29 MINOR
Google-like вход на старой платформе
Удобная авторизация «как у Google» (известные аккаунты, переключение, forget account, logout all, настройки безопасности) портирована с референсной платформы на старую Router/MVC-версию. После v0.10.0 стало ясно: **единый опыт входа на всех платформах DOS** — это требование, а не опция. Обе версии теперь выглядят и работают одинаково.
Google-like auth для старой платформы
  • База данных колонка `auto_login` в `p2026_users` и таблица `p2026_auth_known_accounts` (user_id, device_id, email, name, avatar, last_login_at)
  • Device ID криптостойкий 64-символьный hex (SHA-256 от user-agent + timestamp), кука на 5 лет — устройство узнаётся без пароля
  • Login page (3 состояния) «залогинен» / «известные аккаунты» / «чистая форма»
  • Switch / Forget / Logout-All переключение, забывание и выход со всех аккаунтов на устройстве
  • Настройки безопасности авто-вход управляется и клиентом, и администратором (завершение всех сеансов)
  • Уведомления Telegram вход, переключение и «забыть аккаунт» логируются в Telegram
v0.10.1 2026-07-29 PATCH
Один логин для всех платформ DOS
Покончено с путаницей учётных данных: на всех платформах экосистемы (test, dev, prod) теперь работает **единый email и единый пароль**. Один вход — доступ ко всей экосистеме, никаких «а какой у меня тут пароль?». Стандарт закреплён в документации доступов и проверен на всех трёх окружениях.
Единый доступ
  • Стандартизация логина на всех платформах единый email `admin@admin-platform-heart.test` и единый пароль
  • Документация доступов обновлены файлы доступов в `L:\Система\02 Клиенты\03 Активная работа\Алексей Гапеев\05 Развитие и сопровождение\01 Безопасность\01 Пароли\`
  • Проверка на всех окружениях вход работает на local, dev, prod после миграции v0.7.2
v0.10.0 2026-07-29 MINOR
Google-like вход для Laravel-платформы
Первая из платформ DOS получила современную авторизацию «как у Google»: известные аккаунты на устройстве, переключение в один клик, forget account и безопасный авто-вход. Именно такой UX уже был у Алексея на my2.medtech.ipd — теперь он и в Laravel-версии платформы, задавая стандарт для всех будущих миграций экосистемы.
Google-like auth для Laravel-платформы
  • Миграции БД колонка `auto_login` в `users`, таблица `auth_known_accounts`
  • AuthService сервисный слой: device_id (64 hex, SHA-256), известные аккаунты, remember_token с учётом auto_login
  • Middleware `CheckKnownDevice` автоматическая аутентификация устройства при авто-входе
  • Blade-шаблоны login (3 состояния), main (аккаунты в дропдауне), security (настройки входа)
  • 53 маршрута полный набор auth/settings/admin-маршрутов
v0.9.0 2026-07-29 MINOR
Laravel — фундамент будущего экосистемы
Установлена параллельная Laravel-версия платформы: современный стек (ORM, Blade, middleware, artisan, миграции) рядом со старой Router/MVC-версией. Это стратегическая инвестиция: без современных инструментов развитие платформы замедлялось бы с каждым новым модулем. Теперь обе версии развиваются параллельно, а функционал постепенно переносится на Laravel.
Установка Laravel 11
  • Laravel через Composer в `C:\Herd\admin-platform-heart-laravel`, использует ту же MariaDB 10.11 через DBngin
  • Laravel Herd PHP 8.4, Nginx, доступ по `admin-platform-heart-laravel.test`
  • Одна база таблицы `p2026_*`, Laravel использует миграции вместо прямых SQL-скриптов
  • Стандартная структура `app/Models`, `app/Http/Controllers`, `app/Services`, `resources/views`, `database/migrations`
  • Перенос модулей в первую очередь authentication, users management, dashboard
  • Сохранение старой платформы `admin-platform-heart.ipd.test` продолжает работать, обе версии развиваются параллельно
v0.8.0 2026-07-29 MINOR
Красивые страницы ошибок: Whoops
При любой ошибке — понятная интерактивная страница с точным местом, stack trace и контекстом вместо «белого экрана». Whoops работает как Ignition для Laravel, но в нашем MVC: отладка ускоряется в разы, а в проде ошибки так же логируются и уходят в Telegram.
Whoops — красивые страницы ошибок
  • filp/whoops 2.18.4 точное место ошибки, stack trace, HTTP-заголовки, запросы, сессия
  • Интеграция с ErrorHandler при APP_DEBUG=true красивая страница + параллельный лог в Monolog и Telegram-уведомление
  • Управление через .env APP_DEBUG=true/false переключает режимы показа ошибок
v0.7.2 2026-07-25 PATCH
Кнопки «Ресурсы» — читаемые и красивые
Исправлены кнопки на странице «Ресурсы»: текст больше не обрезается по высоте, заголовки и описания контрастны и читаемы, сетка перестроена на 3 колонки. Интерфейс стал аккуратным и профессиональным.
Дизайн кнопок «Ресурсы»
  • Высота кнопок `height: auto`, кнопки растут по вертикали под содержимое (было обрезание текста при фиксированной 34px)
  • Читаемость заголовки тёмные (#111827), описания контрастные (#4b5563) — раньше текст был светлым на светлом
  • Насыщенность фонов иконок зелёные #bbf7d0 и жёлтые #fde68a для чёткой видимости
  • Сетка 3 колонки minmax 260px вместо 5 узких колонок
v0.7.1 2026-07-25 PATCH
Выравнивание кнопок «Ресурсы»
Первичное исправление: иконки выровнены по верху, кнопки растут вниз при длинном тексте, убран фиксированный минимум высоты. Вёрстка больше не ломается при переносе слов.
Кнопки «Ресурсы»: выравнивание
  • `align-items: flex-start` иконки прижаты к верху, кнопки растут вниз
  • Убран фиксированный min-height длинный текст не обрезается
  • Контраст иконок более насыщенные фоны для видимости
v0.7.0 2026-07-25 MINOR
Страница «Ресурсы» — управление сервером в один клик
Аналог Android-«чистильщиков», но для сервера: без SSH и команд Алексей одним кликом освобождает память, чистит логи, перезапускает службы. Зелёные кнопки — безопасно, жёлтые — осторожно, серые — делать нечего. Платформа из наблюдателя превращается в инструмент действий.
Страница «Ресурсы»
  • ResourcesController health-метрики (память, диск, CPU, логи, zombie-процессы, SSH, службы, кэш) и 12 action-эндпоинтов для очистки и перезапуска
  • Дашборд метрик 6 карточек: Память, Диск, Нагрузка CPU, Процессы, Логи, Кэш с процентами использования
  • 12 кнопок действий перезапуск PHP-FPM, очистка OPcache/сессий/логов/APT-кэша//tmp/journal, убийство zombie-процессов, перезапуск Nginx/MariaDB, очистка Docker, освобождение page cache
  • Цветовая логика зелёные безопасны (показывают сколько МБ освободится), жёлтые требуют осторожности, серые — ресурса достаточно
  • AJAX без перезагрузки toast-уведомления, метрики обновляются через 1.5 секунды
  • Sidebar ссылка «Ресурсы» в разделе «Система»
v0.6.1 2026-07-24 PATCH
Стабильность и безопасность: исправление критических ошибок + инфраструктура деплоя
Исправлены критические ошибки маршрутизации (все 14 сайтов теперь открываются по своим ID), TypeError при отображении стека и крах ErrorHandler при пустом Telegram. Параллельно создана полная инфраструктура деплоя: бэкап, PowerShell-скрипт, инструкции и SSH-документация для всех агентов — процесс обновления платформы стал воспроизводимым и безопасным.
Исправление критических ошибок
  • Slug → ID маршрутизация все 14 маршрутов сайтов переведены с неуникальных slug на числовые ID
  • TypeError в SitesController колонка `stack` хранит строку, а не JSON — исправлена обработка
  • count() на null колонка `issues` с fallback на пустой массив
  • ErrorHandler crash при пустом `TG_BOT_TOKEN` добавлена проверка и try/catch
  • Missing `$totalProjects` переменная добавлялась в SitesController::index()
Инфраструктура деплоя
  • Бэкап v0.6.1 ZIP (1.66 МБ, 192 файла) + SQL-дамп (43 КБ) в `C:\1\Проект-5-VDS\Backup\v0.6.1\`
  • PowerShell-скрипт деплоя автоматический деплой на staging через scp + rsync
  • SSH-документация v3.0.0 все 4 ключа VDS, ConnectTimeout=15, инструкция восстановления
v0.6.0 2026-07-23 MINOR
Раздельное управление проектами и сайтами
Проекты и сайты разъехались из одного «монолитного» контроллера в два модуля со своими CRUD, маршрутами и навигацией. Код стал управляемым, каждый модуль — с понятными страницами и фильтрами. Это основа для дальнейшего роста реестра.
Раздельное управление
  • Проекты (ProjectsController) полный CRUD, карточки с прогрессом, статусом и количеством сайтов
  • Сайты (SitesController) новый контроллер, выделенный из ProjectsController, CRUD с фильтрами (статус, проект, сервер, поиск) и сортировкой
  • Раздельная навигация два отдельных пункта в sidebar
  • Маршруты `/admin/projects/create/`, `/admin/projects/edit/{id}/`, `/admin/projects/delete/{id}/` и аналогично для сайтов
v0.5.1 2026-07-23 PATCH
VDS-мониторинг теперь и локально
VDS-мониторинг работал только на dev/prod — теперь вкладка «VDS» есть и на локальном сайте Herd. Все метрики сервера (CPU, RAM, диск, Docker, SSL, безопасность, процессы, сервисы) доступны без захода на staging.
VDS Dashboard на локальном Herd-сайте
  • Вкладка «VDS» в sidebar добавлена на `admin-platform-heart.ipd.test`
  • VdsController и вьюхи скопированы на локальный сайт
  • Все метрики работают CPU, RAM, Disk, Docker, SSL, Безопасность, Процессы, Сервисы, Nginx, System
v0.5.0 2026-07-22 MINOR
VDS-мониторинг — здоровье сервера в одном месте
Проблема VDS — непредсказуемая загрузка CPU: Postfix, Dovecot, Docker то и дело загружали сервер на 100%. Теперь есть единая вкладка «VDS», где Алексей видит полную картину: загрузку CPU, RAM, диск, контейнеры Docker, безопасность (SSH-атаки, fail2ban, UFW, порты), SSL-сертификаты и топ процессов. Сервер перестал быть «чёрным ящиком».
Вкладка VDS
  • VdsController (279 строк) сбор всех метрик VDS через прямой shell_exec()
  • Dashboard со SVG-кольцами загрузка CPU, RAM, диск, таблицы Docker, процессов, SSL, безопасность
  • Tabs partial вкладки «Обзор» / «API»
  • 3 маршрута `/admin/vds/`, `/admin/vds/api/`, `/admin/vds/api/{metric}/`
  • Вкладка в sidebar раздел «Система»
  • Доступ к Docker пользователь www-data добавлен в группу docker
v0.4.2 2026-07-21 PATCH
Исправлены ссылки сайтов и кодировка данных
Два бага: ссылки «Подробнее» вели на несуществующий маршрут, а русские названия организаций отображались кракозябрами из-за кодировки при импорте. Всё исправлено: все 14 сайтов доступны по единому формату маршрута, данные переимпортированы в utf8mb4.
Исправление маршрутизации и кодировки
  • Маршруты сайтов единый формат `{slug}/` вместо конфликта с ссылками «Подробнее»
  • Кодировка данных переимпорт с `--default-character-set=utf8mb4` убрал кракозябры («ЗАО Медтехника», «ООО Мистерия»)
v0.4.0 2026-07-20 MINOR
Сайты — из кода в базу данных
Статический каталог из 14 сайтов, hardcoded в контроллере, превращён в полноценную базу MariaDB. Раньше добавить сайт значило редактировать PHP-код — теперь это запись в таблице с полной структурой: домен, статус, сервер, фреймворк, SSL, проблемы, безопасность. Фильтры, сортировка, прогресс-бары и сестринские сайты — каталог стал настоящим инструментом управления.
Экосистема проектов на базе MariaDB
  • Таблицы БД `p2026_projects` (7 проектов) и `p2026_project_sites` (14 сайтов) с полной структурой
  • Фильтрация по статусу, проекту, серверу (VDS/Local/Shared/Cloud), текстовый поиск по домену
  • Сортировка по домену, проекту, статусу, прогрессу, версии, серверу, дате обновления
  • Прогресс-бары визуальная индикация прогресса проекта (0–100%)
  • Сестринские сайты другие сайты того же проекта (например, bober-bob.ipd.by + bober-bob-dev.ipd.by)
  • Хлебные крошки Проекты → Проект → Сайт
  • ProjectsController переписан с hardcoded массива на PDO-запросы к БД
v0.2.0 2026-07-20 MINOR
Страница «Версии системы»
Появилась история изменений платформы: какие версии были, на каком окружении, что сделано в каждой итерации. Введена экосистема видения версий — local/dev/prod, стабильность vs разработка. Теперь развитие платформы прозрачно и прослеживаемо.
Страница «Версии системы»
  • `/admin/settings/versions/` история версий из `changelog.md` в виде карточек: номер версии, дата, тип (MINOR/PATCH), список изменений
  • Версионирование экосистема видения: какая версия на каком окружении (local/dev/prod)
v0.1.2 2026-07-20 MINOR
Автомониторинг сайтов: Uptime Kuma
13 сайтов добавлены в мониторинг Uptime Kuma: автоматическая проверка доступности каждые 60 секунд с Telegram-уведомлениями при падении. Сайты больше не падают молча — Алексей узнаёт о проблеме сразу и на VDS появляется полная документация по серверу, Docker и мониторингу.
Uptime Kuma и VDS-документация
  • Uptime Kuma 13 сайтов в мониторинге (ipd.by, bober-bob.ipd.by, mysteria.ipd.by и другие), проверка HTTP каждые 60 секунд
  • VDS-документация папка `06 VDS и серверы` с документацией по серверу, Docker, Uptime Kuma, MySQL, SSH-ключам
v0.1.1 2026-07-20 PATCH
Чистая кодировка и мониторинг на VDS
Исправлена кодировка имени администратора (кракозябры после миграции) и развёрнут Uptime Kuma на VDS: Docker-контейнер `louislam/uptime-kuma:2` на 185.66.68.122:3001 следит за доступностью сайтов и шлёт алерты в Telegram.
Исправление кодировки и развёртывание Uptime Kuma
  • Кодировка имени убрано двойное UTF-8 кодирование после миграции, «Администратор» отображается корректно
  • Uptime Kuma развёрнут на VDS через Docker, мониторит доступность сайтов с алертами в Telegram
v0.1.0 2026-07-20 MINOR
Локальная среда разработки и каталог сайтов
Разработка переехала с сервера на локальную машину: Laravel Herd + DBngin MariaDB 10.11. Заодно создан каталог сайтов с карточками (домен, проект, SSL, HTTP-код, сервер, фреймворк) и дашборд статистики. Ребрендинг «Бобер Боб» → «Admin Platform Heart». Теперь можно тестировать всё локально, ничего не ломая в проде.
Локальная среда и каталог сайтов
  • Laravel Herd `admin-platform-heart.ipd.test` на DBngin MariaDB 10.11, PHP 8.4, Nginx
  • Каталог сайтов ProjectsController с 14 сайтами в карточках: домен, проект, SSL-статус, HTTP-код, сервер, фреймворк
  • Dashboard карточки статистики (сайты, организации, пользователи, файлы) + таблица сайтов с HTTP-статусами
  • Ребрендинг «Бобер Боб» → «Admin Platform Heart» во всех файлах, URL-ах, названиях
v0.0.1 2026-07-19 MINOR
Старт платформы: перенос готовой платформы под мониторинг сайтов
Первая версия создана на базе уже готовой и работающей платформы bober-bob.ipd.by: её архитектура (кастомный PHP 8.3, авторизация, роли, миграции БД) взята за образец и адаптирована под новую задачу. Создано окружение на VDS — Nginx, PHP-FPM, MariaDB, SSL, DNS. Дашборд переработан под мониторинг сайтов *.ipd.by: таблица известных сайтов, health check, статистика. Задача первого задания — создание окружения и мониторинг сайтов.
Основа и окружение
  • Основа скопирована готовая платформа bober-bob.ipd.by (25 файлов/папок, ~10 МБ) как архитектурная база
  • Окружение на VDS Nginx server block, PHP-FPM 8.3, БД `admin_platform_heart_prod` (13 таблиц), SSL wildcard *.ipd.by, DNS-запись
  • Ребрендинг «Бобер Боб» → «Admin Platform Heart» во всех файлах, логотипах и текстах
Мониторинг сайтов
  • Дашборд адаптирован под мониторинг сайтов *.ipd.by: таблица известных сайтов, health check, статистика
  • Health check `/health/` — 46 проверок окружения, версия и БД
Авторизация и доступ
  • Авторизация login/logout, сессии, роли (admin/client), JWT-токены для API
  • Пользователи CRUD, импорт/экспорт в JSON, роли и права доступа

Полезные ссылки