From ca4d00c895c3511642cb436d60bb1889e9397b6a Mon Sep 17 00:00:00 2001 From: Sergey Korotonozhko <_serezhka_@mail.ru> Date: Sun, 17 May 2026 05:22:06 +0300 Subject: [PATCH] Initial commit --- .htaccess | 21 + VPS_SETUP_INSTRUCTION.md | 1325 +++++++++++++++ assets/css/style.css | 1572 ++++++++++++++++++ assets/img/Max_logo.svg | 1 + assets/img/android-chrome-192x192.png | Bin 0 -> 27883 bytes assets/img/android-chrome-512x512.png | Bin 0 -> 75972 bytes assets/img/apple-touch-icon.png | Bin 0 -> 25226 bytes assets/img/favicon-16x16.png | Bin 0 -> 810 bytes assets/img/favicon-32x32.png | Bin 0 -> 2389 bytes assets/img/favicon.ico | Bin 0 -> 15406 bytes assets/img/logo.png | Bin 0 -> 131633 bytes assets/img/site.webmanifest | 1 + assets/js/main.js | 481 ++++++ audit/.htaccess | 2 + audit/index.php | 92 + blog/.htaccess | 2 + blog/api.php | 109 ++ blog/index.php | 349 ++++ config.php | 97 ++ data/db-config.php | 30 + data/migration.sql | 433 +++++ data/migration_2026-05-16.sql | 170 ++ docs/KPI инженеров.md | 485 ++++++ docs/Owner.md | 520 ++++++ docs/SEO.md | 488 ++++++ docs/SLA.md | 795 +++++++++ docs/Архетиктура бренда.md | 934 +++++++++++ docs/Архитектура компании.md | 459 +++++ docs/Блог.md | 543 ++++++ docs/Воронка.md | 445 +++++ docs/Воронки телеграм и crm.md | 397 +++++ docs/Дашборд инженера.md | 537 ++++++ docs/Дашборд техника.md | 424 +++++ docs/Докозательная экспертиза.md | 574 +++++++ docs/КП и структура аудита.md | 589 +++++++ docs/Контент план.md | 503 ++++++ docs/Маркеттинг.md | 673 ++++++++ docs/Опросник-расчет.md | 1087 ++++++++++++ docs/Основа.md | 1518 +++++++++++++++++ docs/Сайт и упаковка.md | 1417 ++++++++++++++++ docs/Скрипты продаж.md | 340 ++++ docs/УТП и КП.md | 556 +++++++ docs/Цифровая модель общая.md | 458 +++++ docs/автоматическая система SHS.md | 629 +++++++ documentation/.htaccess | 2 + documentation/index.php | 88 + inc/analytics-body.php | 21 + inc/analytics.php | 41 + inc/contact-form.php | 63 + inc/footer.php | 77 + inc/form-handler.php | 89 + inc/header.php | 115 ++ incident/.htaccess | 2 + incident/index.php | 96 ++ index.php | 201 +++ logo.php | 4 + politica.php | 126 ++ py_service/.env.example | 5 + py_service/Dockerfile | 19 + py_service/app/__init__.py | 0 py_service/app/auth.py | 92 + py_service/app/calculations/__init__.py | 0 py_service/app/calculations/engine.py | 499 ++++++ py_service/app/config.py | 24 + py_service/app/database.py | 24 + py_service/app/main.py | 187 +++ py_service/app/models/__init__.py | 0 py_service/app/models/models.py | 465 ++++++ py_service/app/routers/__init__.py | 0 py_service/app/schemas/__init__.py | 0 py_service/app/services/__init__.py | 0 py_service/app/services/docs_permissions.py | 65 + py_service/app/templates/base.html | 16 + py_service/app/templates/dashboard.html | 126 ++ py_service/app/templates/login.html | 28 + py_service/docker-compose.yml | 53 + py_service/requirements.txt | 14 + py_service/scripts/migrate_mysql_to_pg.py | 180 ++ py_service/sql/schema_postgresql.sql | 401 +++++ py_service/sql/seed_data.sql | 149 ++ risk/.htaccess | 2 + risk/index.php | 88 + robots.txt | 13 + seo.php | 90 + service-style.php | 10 + service/api/shs.php | 12 + service/api/tasks.php | 23 + service/api/upload_photo.php | 64 + service/assets/css/service.css | 896 ++++++++++ service/dashboard.php | 106 ++ service/docs/AEGISONE_INFRASTRUCTURE_PLAN.md | 836 ++++++++++ service/docs/KPI_инженеров.md | 485 ++++++ service/docs/Owner.md | 520 ++++++ service/docs/SEO.md | 488 ++++++ service/docs/SLA.md | 795 +++++++++ service/docs/SQL-запросы.md | 69 + service/docs/Архетиктура бренда.md | 934 +++++++++++ service/docs/Архитектура компании.md | 459 +++++ service/docs/Блог.md | 543 ++++++ service/docs/Воронка.md | 445 +++++ service/docs/Воронки телеграм и crm.md | 397 +++++ service/docs/Дашборд инженера.md | 537 ++++++ service/docs/Дашборд техника.md | 424 +++++ service/docs/Докозательная экспертиза.md | 574 +++++++ service/docs/Инструкция по админ-панели.md | 85 + service/docs/КП и структура аудита.md | 589 +++++++ service/docs/Контент план.md | 503 ++++++ service/docs/Маркеттинг.md | 673 ++++++++ service/docs/Опросник-расчет.md | 1087 ++++++++++++ service/docs/Основа.md | 1518 +++++++++++++++++ service/docs/Сайт и упаковка.md | 1417 ++++++++++++++++ service/docs/Скрипты продаж.md | 340 ++++ service/docs/УТП и КП.md | 556 +++++++ service/docs/Формулы и расчёты.md | 157 ++ service/docs/Цифровая модель общая.md | 458 +++++ service/docs/автоматическая_система_SHS.md | 629 +++++++ service/inc/auth.php | 139 ++ service/inc/db.php | 19 + service/inc/docs_functions.php | 379 +++++ service/inc/footer.php | 31 + service/inc/functions.php | 678 ++++++++ service/inc/header.php | 81 + service/index.php | 70 + service/install.php | 61 + service/logout.php | 6 + service/pages/engineer/incidents.php | 220 +++ service/pages/engineer/reports.php | 229 +++ service/pages/engineer/tasks.php | 236 +++ service/pages/owner/assignments.php | 128 ++ service/pages/owner/blog.php | 256 +++ service/pages/owner/cases.php | 188 +++ service/pages/owner/ceo.php | 204 +++ service/pages/owner/ceo_calc.php | 136 ++ service/pages/owner/coefficients.php | 242 +++ service/pages/owner/customers.php | 213 +++ service/pages/owner/docs_section.php | 293 ++++ service/pages/owner/kpi_calc.php | 195 +++ service/pages/owner/objects.php | 229 +++ service/pages/owner/questionnaire_config.php | 210 +++ service/pages/owner/sla.php | 190 +++ service/pages/owner/users.php | 209 +++ service/pages/shared/403.php | 16 + service/pages/shared/docs.php | 133 ++ service/pages/shared/passport_view.php | 140 ++ service/pages/shared/passports.php | 61 + service/pages/shared/questionnaire.php | 393 +++++ service/pages/technician/checklist.php | 123 ++ service/permissions/docs_permissions.json | 112 ++ site_aegisone.zip | Bin 0 -> 532555 bytes sitemap.xml | 51 + sla/.htaccess | 2 + sla/index.php | 90 + style.php | 13 + supervision/.htaccess | 2 + supervision/index.php | 88 + 155 files changed, 45216 insertions(+) create mode 100644 .htaccess create mode 100644 VPS_SETUP_INSTRUCTION.md create mode 100644 assets/css/style.css create mode 100644 assets/img/Max_logo.svg create mode 100644 assets/img/android-chrome-192x192.png create mode 100644 assets/img/android-chrome-512x512.png create mode 100644 assets/img/apple-touch-icon.png create mode 100644 assets/img/favicon-16x16.png create mode 100644 assets/img/favicon-32x32.png create mode 100644 assets/img/favicon.ico create mode 100644 assets/img/logo.png create mode 100644 assets/img/site.webmanifest create mode 100644 assets/js/main.js create mode 100644 audit/.htaccess create mode 100644 audit/index.php create mode 100644 blog/.htaccess create mode 100644 blog/api.php create mode 100644 blog/index.php create mode 100644 config.php create mode 100644 data/db-config.php create mode 100644 data/migration.sql create mode 100644 data/migration_2026-05-16.sql create mode 100644 docs/KPI инженеров.md create mode 100644 docs/Owner.md create mode 100644 docs/SEO.md create mode 100644 docs/SLA.md create mode 100644 docs/Архетиктура бренда.md create mode 100644 docs/Архитектура компании.md create mode 100644 docs/Блог.md create mode 100644 docs/Воронка.md create mode 100644 docs/Воронки телеграм и crm.md create mode 100644 docs/Дашборд инженера.md create mode 100644 docs/Дашборд техника.md create mode 100644 docs/Докозательная экспертиза.md create mode 100644 docs/КП и структура аудита.md create mode 100644 docs/Контент план.md create mode 100644 docs/Маркеттинг.md create mode 100644 docs/Опросник-расчет.md create mode 100644 docs/Основа.md create mode 100644 docs/Сайт и упаковка.md create mode 100644 docs/Скрипты продаж.md create mode 100644 docs/УТП и КП.md create mode 100644 docs/Цифровая модель общая.md create mode 100644 docs/автоматическая система SHS.md create mode 100644 documentation/.htaccess create mode 100644 documentation/index.php create mode 100644 inc/analytics-body.php create mode 100644 inc/analytics.php create mode 100644 inc/contact-form.php create mode 100644 inc/footer.php create mode 100644 inc/form-handler.php create mode 100644 inc/header.php create mode 100644 incident/.htaccess create mode 100644 incident/index.php create mode 100644 index.php create mode 100644 logo.php create mode 100644 politica.php create mode 100644 py_service/.env.example create mode 100644 py_service/Dockerfile create mode 100644 py_service/app/__init__.py create mode 100644 py_service/app/auth.py create mode 100644 py_service/app/calculations/__init__.py create mode 100644 py_service/app/calculations/engine.py create mode 100644 py_service/app/config.py create mode 100644 py_service/app/database.py create mode 100644 py_service/app/main.py create mode 100644 py_service/app/models/__init__.py create mode 100644 py_service/app/models/models.py create mode 100644 py_service/app/routers/__init__.py create mode 100644 py_service/app/schemas/__init__.py create mode 100644 py_service/app/services/__init__.py create mode 100644 py_service/app/services/docs_permissions.py create mode 100644 py_service/app/templates/base.html create mode 100644 py_service/app/templates/dashboard.html create mode 100644 py_service/app/templates/login.html create mode 100644 py_service/docker-compose.yml create mode 100644 py_service/requirements.txt create mode 100644 py_service/scripts/migrate_mysql_to_pg.py create mode 100644 py_service/sql/schema_postgresql.sql create mode 100644 py_service/sql/seed_data.sql create mode 100644 risk/.htaccess create mode 100644 risk/index.php create mode 100644 robots.txt create mode 100644 seo.php create mode 100644 service-style.php create mode 100644 service/api/shs.php create mode 100644 service/api/tasks.php create mode 100644 service/api/upload_photo.php create mode 100644 service/assets/css/service.css create mode 100644 service/dashboard.php create mode 100644 service/docs/AEGISONE_INFRASTRUCTURE_PLAN.md create mode 100644 service/docs/KPI_инженеров.md create mode 100644 service/docs/Owner.md create mode 100644 service/docs/SEO.md create mode 100644 service/docs/SLA.md create mode 100644 service/docs/SQL-запросы.md create mode 100644 service/docs/Архетиктура бренда.md create mode 100644 service/docs/Архитектура компании.md create mode 100644 service/docs/Блог.md create mode 100644 service/docs/Воронка.md create mode 100644 service/docs/Воронки телеграм и crm.md create mode 100644 service/docs/Дашборд инженера.md create mode 100644 service/docs/Дашборд техника.md create mode 100644 service/docs/Докозательная экспертиза.md create mode 100644 service/docs/Инструкция по админ-панели.md create mode 100644 service/docs/КП и структура аудита.md create mode 100644 service/docs/Контент план.md create mode 100644 service/docs/Маркеттинг.md create mode 100644 service/docs/Опросник-расчет.md create mode 100644 service/docs/Основа.md create mode 100644 service/docs/Сайт и упаковка.md create mode 100644 service/docs/Скрипты продаж.md create mode 100644 service/docs/УТП и КП.md create mode 100644 service/docs/Формулы и расчёты.md create mode 100644 service/docs/Цифровая модель общая.md create mode 100644 service/docs/автоматическая_система_SHS.md create mode 100644 service/inc/auth.php create mode 100644 service/inc/db.php create mode 100644 service/inc/docs_functions.php create mode 100644 service/inc/footer.php create mode 100644 service/inc/functions.php create mode 100644 service/inc/header.php create mode 100644 service/index.php create mode 100644 service/install.php create mode 100644 service/logout.php create mode 100644 service/pages/engineer/incidents.php create mode 100644 service/pages/engineer/reports.php create mode 100644 service/pages/engineer/tasks.php create mode 100644 service/pages/owner/assignments.php create mode 100644 service/pages/owner/blog.php create mode 100644 service/pages/owner/cases.php create mode 100644 service/pages/owner/ceo.php create mode 100644 service/pages/owner/ceo_calc.php create mode 100644 service/pages/owner/coefficients.php create mode 100644 service/pages/owner/customers.php create mode 100644 service/pages/owner/docs_section.php create mode 100644 service/pages/owner/kpi_calc.php create mode 100644 service/pages/owner/objects.php create mode 100644 service/pages/owner/questionnaire_config.php create mode 100644 service/pages/owner/sla.php create mode 100644 service/pages/owner/users.php create mode 100644 service/pages/shared/403.php create mode 100644 service/pages/shared/docs.php create mode 100644 service/pages/shared/passport_view.php create mode 100644 service/pages/shared/passports.php create mode 100644 service/pages/shared/questionnaire.php create mode 100644 service/pages/technician/checklist.php create mode 100644 service/permissions/docs_permissions.json create mode 100644 site_aegisone.zip create mode 100644 sitemap.xml create mode 100644 sla/.htaccess create mode 100644 sla/index.php create mode 100644 style.php create mode 100644 supervision/.htaccess create mode 100644 supervision/index.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..d680658 --- /dev/null +++ b/.htaccess @@ -0,0 +1,21 @@ + + Header always set X-Content-Type-Options "nosniff" + Header always set X-Frame-Options "SAMEORIGIN" + + + + ExpiresActive On + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/svg+xml "access plus 1 year" + ExpiresByType image/x-icon "access plus 1 year" + ExpiresByType text/css "access plus 1 month" + ExpiresByType text/javascript "access plus 1 month" + ExpiresByType application/javascript "access plus 1 month" + + + + AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript image/svg+xml + + +DirectoryIndex index.php diff --git a/VPS_SETUP_INSTRUCTION.md b/VPS_SETUP_INSTRUCTION.md new file mode 100644 index 0000000..2d0f311 --- /dev/null +++ b/VPS_SETUP_INSTRUCTION.md @@ -0,0 +1,1325 @@ +# Инструкция по настройке VPS и миграции проектов + +> **Сервер:** Ubuntu 24.04 LTS (чистая установка) +> **Цель:** Docker-инфраструктура для 3+ проектов с мультидоменом, SSL, Git-сервером и CI/CD +> **Дата:** 2026-05-17 +> **Примечание:** Если при выполнении возникнут вопросы — лучше уточнить, чем переделывать потом. + +--- + +## Содержание + +1. [Подключение к VPS](#1-подключение-к-vps) +2. [Базовая настройка сервера](#2-базовая-настройка-сервера) +3. [Установка Docker и Docker Compose](#3-установка-docker-и-docker-compose) +4. [Структура директорий для мультипроекта](#4-структура-директорий-для-мультипроекта) +5. [Nginx Reverse Proxy + Let's Encrypt](#5-nginx-reverse-proxy--lets-encrypt) +6. [Gitea (Git-сервер)](#6-gitea-git-сервер) +7. [Подготовка к переносу AegisOne (PHP)](#7-подготовка-к-переносу-aegisone-php) +8. [Подготовка Python-админки (FastAPI)](#8-подготовка-python-админки-fastapi) +9. [CI/CD с Gitea Actions](#9-cicd-с-gitea-actions) +10. [Бэкапы и мониторинг](#10-бэкапы-и-мониторинг) +11. [Чек-лист завершения](#11-чек-лист-завершения) + +--- + +## 1. Подключение к VPS + +### 1.1. Получение данных для подключения +После создания VPS в панели Jino.ru вы получите: +- **IP-адрес сервера** (например, `185.100.100.50`) +- **Логин:** `root` +- **Пароль:** (указан в панели или отправлен на email) + +### 1.2. Подключение через PowerShell (Windows) +```powershell +# Откройте PowerShell и выполните: +ssh root@ + +# При первом подключении подтвердите fingerprint (yes) +# Введите пароль +``` + +### 1.3. Создание обычного пользователя (безопасность) +```bash +# Создать пользователя (замените 'angel' на ваше имя) +adduser angel + +# Добавить в группу sudo (права администратора) +usermod -aG sudo angel + +# Переключиться на нового пользователя +su - angel +``` + +### 1.4. Настройка SSH-ключей (опционально, но рекомендуется) +```bash +# На локальной машине (Windows PowerShell): +ssh-keygen -t ed25519 -C "angel@vps" +# Нажимайте Enter для всех вопросов (пароль можно оставить пустым) + +# Копирование ключа на сервер: +ssh-copy-id angel@ + +# Проверка подключения без пароля: +ssh angel@ +``` + +--- + +## 2. Базовая настройка сервера + +### 2.1. Обновление системы +```bash +# Обновить списки пакетов и установить обновления +sudo apt update && sudo apt upgrade -y + +# Установить необходимые утилиты +sudo apt install -y \ + curl \ + wget \ + git \ + ufw \ + fail2ban \ + htop \ + nano \ + certbot \ + python3-certbot-nginx +``` + +### 2.2. Настройка фаервола (UFW) +```bash +# Разрешить SSH (порт 22) +sudo ufw allow 22/tcp + +# Разрешить HTTP и HTTPS +sudo ufw allow 80/tcp +sudo ufw allow 443/tcp + +# Включить фаервол +sudo ufw enable + +# Проверить статус +sudo ufw status +``` + +### 2.3. Настройка Fail2Ban (защита от перебора паролей) +```bash +# Скопировать конфиг +sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local + +# Перезапустить сервис +sudo systemctl enable fail2ban +sudo systemctl restart fail2ban + +# Проверить статус +sudo fail2ban-client status +``` + +### 2.4. Настройка часового пояса +```bash +# Установить московское время +sudo timedatectl set-timezone Europe/Moscow + +# Проверить +timedatectl +``` + +### 2.5. Настройка swap-файла (если мало RAM) +```bash +# Создать swap-файл 2GB +sudo fallocate -l 2G /swapfile +sudo chmod 600 /swapfile +sudo mkswap /swapfile +sudo swapon /swapfile + +# Добавить в fstab для автозагрузки +echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab + +# Проверить +free -h +``` + +--- + +## 3. Установка Docker и Docker Compose + +### 3.1. Установка Docker +```bash +# Удалить старые версии (если есть) +for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do + sudo apt-get remove -y $pkg +done + +# Добавить репозиторий Docker +sudo apt-get update +sudo apt-get install -y ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +# Добавить репозиторий в sources +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + +# Установить Docker +sudo apt-get update +sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +# Проверить установку +docker --version +docker compose version +``` + +### 3.2. Настройка пользователя для Docker (без sudo) +```bash +# Добавить текущего пользователя в группу docker +sudo usermod -aG docker $USER + +# Применить изменения (выйти и зайти снова, или выполнить:) +newgrp docker + +# Проверить (должно работать без sudo) +docker run hello-world +``` + +### 3.3. Настройка автозапуска Docker +```bash +sudo systemctl enable docker +sudo systemctl enable containerd +``` + +--- + +## 4. Структура директорий для мультипроекта + +### 4.1. Создание структуры +```bash +# Создать основную директорию для проектов +sudo mkdir -p /opt/projects +sudo chown -R $USER:$USER /opt/projects + +# Создать директории для каждого проекта +mkdir -p /opt/projects/{nginx-proxy,gitea,aegisone-php,aegisone-py,project2,project3} + +# Создать директорию для общих данных +mkdir -p /opt/projects/{backups,certs,data} +``` + +### 4.2. Итоговая структура +``` +/opt/projects/ +├── nginx-proxy/ # Nginx reverse proxy + Certbot +│ ├── docker-compose.yml +│ ├── nginx.conf +│ └── certs/ # SSL-сертификаты Let's Encrypt +├── gitea/ # Git-сервер +│ ├── docker-compose.yml +│ └── data/ # Данные Gitea (репозитории, БД) +├── aegisone-php/ # Публичная часть AegisOne (PHP) +│ ├── docker-compose.yml +│ ├── src/ # Исходный код (git clone) +│ └── nginx.conf +├── aegisone-py/ # Сервисная часть AegisOne (Python) +│ ├── docker-compose.yml +│ ├── app/ # FastAPI приложение +│ └── requirements.txt +├── project2/ # Второй проект +│ └── docker-compose.yml +├── project3/ # Третий проект +│ └── docker-compose.yml +├── backups/ # Бэкапы БД и файлов +├── certs/ # Общие SSL-сертификаты +└── data/ # Общие данные (PostgreSQL, Redis) +``` + +--- + +## 5. Nginx Reverse Proxy + Let's Encrypt + +### 5.1. Создание docker-compose.yml для Nginx +```bash +cd /opt/projects/nginx-proxy +nano docker-compose.yml +``` + +**Содержимое `docker-compose.yml`:** +```yaml +version: '3.8' + +services: + nginx: + image: nginx:alpine + container_name: nginx-proxy + ports: + - "80:80" + - "443:443" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + - ./certs:/etc/nginx/certs:ro + - ./conf.d:/etc/nginx/conf.d:ro + - ./html:/usr/share/nginx/html:ro + restart: unless-stopped + networks: + - proxy-net + + certbot: + image: certbot/certbot:latest + container_name: certbot + volumes: + - ./certs:/etc/letsencrypt + - ./html:/var/www/certbot + entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" + restart: unless-stopped + +networks: + proxy-net: + external: true +``` + +### 5.2. Создание базового nginx.conf +```bash +mkdir -p conf.d html +nano nginx.conf +``` + +**Содержимое `nginx.conf`:** +```nginx +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Логирование + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + + # Оптимизация + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + client_max_body_size 50M; + + # Gzip сжатие + gzip on; + gzip_vary on; + gzip_proxied any; + gzip_comp_level 6; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + # Включение конфигов для каждого домена + include /etc/nginx/conf.d/*.conf; +} +``` + +### 5.3. Создание сети для Docker +```bash +# Создать общую сеть для всех проектов +docker network create proxy-net +``` + +### 5.4. Запуск Nginx +```bash +cd /opt/projects/nginx-proxy +docker compose up -d + +# Проверить +docker compose ps +docker compose logs -f +``` + +### 5.5. Получение SSL-сертификатов +```bash +# Для каждого домена выполнить: +docker compose run --rm certbot certonly \ + --webroot \ + --webroot-path=/var/www/certbot \ + -d aegisone.ru \ + -d www.aegisone.ru \ + -d service.aegisone.ru \ + -d git.aegisone.ru \ + --email your@email.com \ + --agree-tos \ + --non-interactive + +# Проверить сертификаты +ls -la certs/live/aegisone.ru/ +``` + +### 5.6. Пример конфига для домена (aegisone.ru) +```bash +nano conf.d/aegisone.conf +``` + +**Содержимое `conf.d/aegisone.conf`:** +```nginx +# HTTP → HTTPS редирект +server { + listen 80; + server_name aegisone.ru www.aegisone.ru; + return 301 https://aegisone.ru$request_uri; +} + +# HTTPS сервер +server { + listen 443 ssl http2; + server_name aegisone.ru www.aegisone.ru; + + # SSL сертификаты + ssl_certificate /etc/nginx/certs/live/aegisone.ru/fullchain.pem; + ssl_certificate_key /etc/nginx/certs/live/aegisone.ru/privkey.pem; + + # SSL настройки + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + # Проксирование на PHP-контейнер + location / { + proxy_pass http://aegisone-php:80; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +### 5.7. Конфиг для поддомена (service.aegisone.ru) +```bash +nano conf.d/service-aegisone.conf +``` + +**Содержимое `conf.d/service-aegisone.conf`:** +```nginx +server { + listen 80; + server_name service.aegisone.ru; + return 301 https://service.aegisone.ru$request_uri; +} + +server { + listen 443 ssl http2; + server_name service.aegisone.ru; + + ssl_certificate /etc/nginx/certs/live/aegisone.ru/fullchain.pem; + ssl_certificate_key /etc/nginx/certs/live/aegisone.ru/privkey.pem; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + # Проксирование на Python-контейнер + location / { + proxy_pass http://aegisone-py:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +### 5.8. Перезапуск Nginx после изменений +```bash +cd /opt/projects/nginx-proxy +docker compose restart nginx + +# Проверить конфиг +docker compose exec nginx nginx -t +``` + +--- + +## 6. Gitea (Git-сервер) + +### 6.1. Создание docker-compose.yml +```bash +cd /opt/projects/gitea +mkdir -p data +nano docker-compose.yml +``` + +**Содержимое `docker-compose.yml`:** +```yaml +version: '3.8' + +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea_password + - GITEA__server__DOMAIN=git.aegisone.ru + - GITEA__server__HTTP_PORT=3000 + - GITEA__server__ROOT_URL=https://git.aegisone.ru/ + volumes: + - ./data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "2222:22" + depends_on: + - db + restart: unless-stopped + networks: + - proxy-net + - gitea-net + + db: + image: postgres:15-alpine + container_name: gitea-db + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea_password + - POSTGRES_DB=gitea + volumes: + - ./data/postgres:/var/lib/postgresql/data + restart: unless-stopped + networks: + - gitea-net + +networks: + proxy-net: + external: true + gitea-net: + driver: bridge +``` + +### 6.2. Запуск Gitea +```bash +cd /opt/projects/gitea +docker compose up -d + +# Проверить +docker compose ps +docker compose logs -f gitea +``` + +### 6.3. Настройка Nginx для Gitea +```bash +nano /opt/projects/nginx-proxy/conf.d/gitea.conf +``` + +**Содержимое `conf.d/gitea.conf`:** +```nginx +server { + listen 80; + server_name git.aegisone.ru; + return 301 https://git.aegisone.ru$request_uri; +} + +server { + listen 443 ssl http2; + server_name git.aegisone.ru; + + ssl_certificate /etc/nginx/certs/live/aegisone.ru/fullchain.pem; + ssl_certificate_key /etc/nginx/certs/live/aegisone.ru/privkey.pem; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + client_max_body_size 50M; + + location / { + proxy_pass http://gitea:3000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +### 6.4. Перезапуск Nginx +```bash +cd /opt/projects/nginx-proxy +docker compose restart nginx +``` + +### 6.5. Первоначальная настройка Gitea +1. Откройте `https://git.aegisone.ru` +2. Заполните форму регистрации первого пользователя (он станет администратором) +3. В настройках Gitea: + - Включить Gitea Actions (CI/CD) + - Настроить SSH-порт (2222) + - Создать организацию `aegisone` + +### 6.6. Создание репозиториев +```bash +# Через веб-интерфейс Gitea создать: +# - aegisone/aegisone-php (публичная часть) +# - aegisone/aegisone-py (сервисная часть) +# - aegisone/infra (конфигурации Docker, Nginx, CI/CD) +# - aegisone/project2 (второй проект) +# - aegisone/project3 (третий проект) +``` + +--- + +## 7. Подготовка к переносу AegisOne (PHP) + +### 7.1. Создание docker-compose.yml +```bash +cd /opt/projects/aegisone-php +nano docker-compose.yml +``` + +**Содержимое `docker-compose.yml`:** +```yaml +version: '3.8' + +services: + nginx: + image: nginx:alpine + container_name: aegisone-php-nginx + volumes: + - ./src:/var/www/html:ro + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + ports: + - "9080:80" + depends_on: + - php + restart: unless-stopped + networks: + - proxy-net + - aegisone-net + + php: + image: php:7.4-fpm + container_name: aegisone-php-fpm + volumes: + - ./src:/var/www/html + environment: + - DB_HOST=mysql + - DB_PORT=3306 + - DB_NAME=j30663893_engineering + - DB_USER=j30663893_engin + - DB_PASS=.-SHGWa_ + depends_on: + - mysql + restart: unless-stopped + networks: + - aegisone-net + + mysql: + image: mysql:5.7 + container_name: aegisone-php-mysql + environment: + MYSQL_ROOT_PASSWORD: root_password + MYSQL_DATABASE: j30663893_engineering + MYSQL_USER: j30663893_engin + MYSQL_PASSWORD: .-SHGWa_ + volumes: + - mysql_data:/var/lib/mysql + - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro + ports: + - "3306:3306" + restart: unless-stopped + networks: + - aegisone-net + +volumes: + mysql_data: + +networks: + proxy-net: + external: true + aegisone-net: + driver: bridge +``` + +### 7.2. Создание nginx.conf для PHP +```bash +nano nginx.conf +``` + +**Содержимое `nginx.conf`:** +```nginx +server { + listen 80; + server_name localhost; + root /var/www/html; + index index.php index.html; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_pass php:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} +``` + +### 7.3. Перенос файлов с хостинга +```bash +# На локальной машине (Windows): +# 1. Скачать файлы с хостинга через FTP/SFTP +# 2. Или скопировать из локальной папки проекта + +# Копирование на VPS: +scp -r D:\YandexDisk\site_aegisone\* angel@:/opt/projects/aegisone-php/src/ + +# На VPS: +cd /opt/projects/aegisone-php +# Проверить файлы +ls -la src/ +``` + +### 7.4. Миграция БД +```bash +# Экспорт с хостинга (через phpMyAdmin или mysqldump) +# mysqldump -u j30663893_engin -p j30663893_engineering > backup.sql + +# Копирование на VPS +scp backup.sql angel@:/opt/projects/aegisone-php/ + +# На VPS: +cd /opt/projects/aegisone-php +cp backup.sql init.sql + +# Запуск контейнеров +docker compose up -d + +# Проверка +docker compose ps +docker compose logs -f +``` + +### 7.5. Настройка Nginx для aegisone.ru +```bash +# Файл уже создан в шаге 5.6 (conf.d/aegisone.conf) +# Перезапустить Nginx +cd /opt/projects/nginx-proxy +docker compose restart nginx +``` + +### 7.6. Проверка работоспособности +1. Открыть `https://aegisone.ru` +2. Проверить все страницы: главная, услуги, блог, контакты +3. Проверить форму обратной связи +4. Проверить карусель, FAQ, переключение темы +5. Проверить Яндекс.Карту + +--- + +## 8. Подготовка Python-админки (FastAPI) + +### 8.1. Создание структуры проекта +```bash +cd /opt/projects/aegisone-py +mkdir -p app/{api,models,schemas,services,tasks,templates,static/{css,js,img},utils} +mkdir -p migrations +touch app/__init__.py app/main.py app/config.py app/database.py +touch requirements.txt Dockerfile docker-compose.yml alembic.ini +``` + +### 8.2. requirements.txt +```bash +nano requirements.txt +``` + +**Содержимое `requirements.txt`:** +``` +fastapi==0.104.1 +uvicorn[standard]==0.24.0 +sqlalchemy==2.0.23 +alembic==1.13.0 +psycopg2-binary==2.9.9 +python-jose[cryptography]==3.3.0 +passlib[bcrypt]==1.7.4 +python-multipart==0.0.6 +jinja2==3.1.2 +celery==5.3.4 +redis==5.0.1 +weasyprint==60.1 +openpyxl==3.1.2 +yandex-disk==3.1.1 +pydantic==2.5.2 +pydantic-settings==2.1.0 +httpx==0.25.2 +``` + +### 8.3. Dockerfile +```bash +nano Dockerfile +``` + +**Содержимое `Dockerfile`:** +```dockerfile +FROM python:3.11-slim + +WORKDIR /app + +# Установка системных зависимостей +RUN apt-get update && apt-get install -y \ + gcc \ + libpq-dev \ + && rm -rf /var/lib/apt/lists/* + +# Копирование requirements и установка Python-зависимостей +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Копирование исходного кода +COPY . . + +# Запуск приложения +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] +``` + +### 8.4. docker-compose.yml +```bash +nano docker-compose.yml +``` + +**Содержимое `docker-compose.yml`:** +```yaml +version: '3.8' + +services: + app: + build: . + container_name: aegisone-py-app + ports: + - "8000:8000" + environment: + - DATABASE_URL=postgresql://aegisone:aegisone_password@db:5432/aegisone + - REDIS_URL=redis://redis:6379/0 + - SECRET_KEY=your-secret-key-change-in-production + - ALGORITHM=HS256 + - ACCESS_TOKEN_EXPIRE_MINUTES=60 + volumes: + - ./app:/app/app + depends_on: + - db + - redis + restart: unless-stopped + networks: + - proxy-net + - aegisone-py-net + + worker: + build: . + container_name: aegisone-py-worker + command: celery -A app.tasks worker --loglevel=info + environment: + - DATABASE_URL=postgresql://aegisone:aegisone_password@db:5432/aegisone + - REDIS_URL=redis://redis:6379/0 + volumes: + - ./app:/app/app + depends_on: + - db + - redis + restart: unless-stopped + networks: + - aegisone-py-net + + db: + image: postgres:15-alpine + container_name: aegisone-py-db + environment: + - POSTGRES_USER=aegisone + - POSTGRES_PASSWORD=aegisone_password + - POSTGRES_DB=aegisone + volumes: + - postgres_data:/var/lib/postgresql/data + ports: + - "5432:5432" + restart: unless-stopped + networks: + - aegisone-py-net + + redis: + image: redis:7-alpine + container_name: aegisone-py-redis + ports: + - "6379:6379" + restart: unless-stopped + networks: + - aegisone-py-net + +volumes: + postgres_data: + +networks: + proxy-net: + external: true + aegisone-py-net: + driver: bridge +``` + +### 8.5. Базовый app/main.py +```bash +nano app/main.py +``` + +**Содержимое `app/main.py`:** +```python +from fastapi import FastAPI, Request +from fastapi.templating import Jinja2Templates +from fastapi.staticfiles import StaticFiles +from fastapi.responses import HTMLResponse + +app = FastAPI(title="AegisOne Engineering - Admin Panel") + +# Подключение шаблонов и статики +templates = Jinja2Templates(directory="app/templates") +app.mount("/static", StaticFiles(directory="app/static"), name="static") + +@app.get("/", response_class=HTMLResponse) +async def root(request: Request): + return templates.TemplateResponse("index.html", {"request": request}) + +@app.get("/health") +async def health_check(): + return {"status": "ok"} +``` + +### 8.6. Запуск Python-админки +```bash +cd /opt/projects/aegisone-py +docker compose up -d --build + +# Проверить +docker compose ps +docker compose logs -f app +``` + +### 8.7. Настройка Nginx для service.aegisone.ru +```bash +# Файл уже создан в шаге 5.7 (conf.d/service-aegisone.conf) +# Перезапустить Nginx +cd /opt/projects/nginx-proxy +docker compose restart nginx +``` + +--- + +## 9. CI/CD с Gitea Actions + +### 9.1. Включение Gitea Actions +1. Открыть `https://git.aegisone.ru` +2. Зайти в **Site Administration** → **Configuration** +3. Включить **Actions** (Enable Gitea Actions) +4. Сохранить настройки + +### 9.2. Создание workflow для aegisone-py +```bash +# На локальной машине: +cd D:\YandexDisk\site_aegisone +mkdir -p .gitea/workflows +nano .gitea/workflows/deploy.yml +``` + +**Содержимое `.gitea/workflows/deploy.yml`:** +```yaml +name: Deploy AegisOne Python + +on: + push: + branches: [main] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Build Docker image + run: | + docker build -t aegisone-py:latest . + + - name: Deploy to VPS + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.VPS_SSH_KEY }} + script: | + cd /opt/projects/aegisone-py + docker compose down + docker compose up -d --build + docker system prune -f +``` + +### 9.3. Настройка секретов в Gitea +1. Открыть репозиторий `aegisone/aegisone-py` +2. **Settings** → **Secrets** +3. Добавить секреты: + - `VPS_HOST`: IP-адрес VPS + - `VPS_USER`: `angel` (или ваш пользователь) + - `VPS_SSH_KEY`: Приватный SSH-ключ для подключения + +### 9.4. Настройка SSH-ключей для CI/CD +```bash +# На VPS: +# Создать SSH-ключ для Gitea Actions +ssh-keygen -t ed25519 -C "gitea-actions" -f /home/angel/.ssh/gitea_actions -N "" + +# Добавить публичный ключ в authorized_keys +cat /home/angel/.ssh/gitea_actions.pub >> /home/angel/.ssh/authorized_keys + +# Скопировать приватный ключ для добавления в секреты Gitea +cat /home/angel/.ssh/gitea_actions +``` + +### 9.5. Тестирование CI/CD +1. Закоммитить изменения в `main` +2. Открыть репозиторий → **Actions** +3. Проверить выполнение workflow +4. Убедиться, что деплой прошел успешно + +--- + +## 10. Бэкапы и мониторинг + +### 10.1. Настройка бэкапов PostgreSQL +```bash +# Создать скрипт бэкапа +nano /opt/projects/backups/backup-postgres.sh +``` + +**Содержимое `backup-postgres.sh`:** +```bash +#!/bin/bash +BACKUP_DIR="/opt/projects/backups/postgres" +DATE=$(date +%Y%m%d_%H%M%S) +DB_NAME="aegisone" +DB_USER="aegisone" +DB_PASSWORD="aegisone_password" + +# Создать директорию +mkdir -p $BACKUP_DIR + +# Создать бэкап +PGPASSWORD=$DB_PASSWORD pg_dump -h localhost -U $DB_USER $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz + +# Удалить старые бэкапы (старше 30 дней) +find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete + +echo "Backup created: ${DB_NAME}_${DATE}.sql.gz" +``` + +**Сделать скрипт исполняемым:** +```bash +chmod +x /opt/projects/backups/backup-postgres.sh +``` + +### 10.2. Настройка cron для автоматических бэкапов +```bash +# Открыть crontab +crontab -e + +# Добавить задачу (бэкап каждый день в 3:00) +0 3 * * * /opt/projects/backups/backup-postgres.sh >> /opt/projects/backups/backup.log 2>&1 +``` + +### 10.3. Бэкап MySQL (для PHP-части) +```bash +nano /opt/projects/backups/backup-mysql.sh +``` + +**Содержимое `backup-mysql.sh`:** +```bash +#!/bin/bash +BACKUP_DIR="/opt/projects/backups/mysql" +DATE=$(date +%Y%m%d_%H%M%S) +DB_NAME="j30663893_engineering" +DB_USER="j30663893_engin" +DB_PASSWORD=".-SHGWa_" + +mkdir -p $BACKUP_DIR + +docker exec aegisone-php-mysql mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz + +find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete + +echo "MySQL backup created: ${DB_NAME}_${DATE}.sql.gz" +``` + +**Сделать исполняемым и добавить в cron:** +```bash +chmod +x /opt/projects/backups/backup-mysql.sh +crontab -e +# Добавить: 30 3 * * * /opt/projects/backups/backup-mysql.sh >> /opt/projects/backups/backup.log 2>&1 +``` + +### 10.4. Мониторинг с Uptime Kuma (опционально) +```bash +cd /opt/projects +mkdir -p uptime-kuma +cd uptime-kuma +nano docker-compose.yml +``` + +**Содержимое `docker-compose.yml`:** +```yaml +version: '3.8' + +services: + uptime-kuma: + image: louislam/uptime-kuma:latest + container_name: uptime-kuma + ports: + - "3001:3001" + volumes: + - ./data:/app/data + restart: unless-stopped + networks: + - proxy-net + +networks: + proxy-net: + external: true +``` + +**Запуск:** +```bash +docker compose up -d +``` + +**Настройка Nginx для Uptime Kuma:** +```bash +nano /opt/projects/nginx-proxy/conf.d/uptime.conf +``` + +**Содержимое `conf.d/uptime.conf`:** +```nginx +server { + listen 80; + server_name monitor.aegisone.ru; + return 301 https://monitor.aegisone.ru$request_uri; +} + +server { + listen 443 ssl http2; + server_name monitor.aegisone.ru; + + ssl_certificate /etc/nginx/certs/live/aegisone.ru/fullchain.pem; + ssl_certificate_key /etc/nginx/certs/live/aegisone.ru/privkey.pem; + + location / { + proxy_pass http://uptime-kuma:3001; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +--- + +## 11. Чек-лист завершения + +### Этап 1: Базовая настройка +- [ ] Подключение к VPS по SSH +- [ ] Создание пользователя без root +- [ ] Настройка SSH-ключей +- [ ] Обновление системы +- [ ] Настройка фаервола (UFW) +- [ ] Настройка Fail2Ban +- [ ] Настройка часового пояса +- [ ] Настройка swap-файла + +### Этап 2: Docker +- [ ] Установка Docker и Docker Compose +- [ ] Настройка пользователя для Docker (без sudo) +- [ ] Создание общей сети `proxy-net` +- [ ] Проверка `docker run hello-world` + +### Этап 3: Nginx + SSL +- [ ] Создание структуры `/opt/projects/nginx-proxy/` +- [ ] Настройка `docker-compose.yml` для Nginx +- [ ] Создание `nginx.conf` +- [ ] Запуск Nginx +- [ ] Получение SSL-сертификатов Let's Encrypt +- [ ] Создание конфигов для доменов (aegisone.ru, service.aegisone.ru, git.aegisone.ru) +- [ ] Проверка HTTPS для всех доменов + +### Этап 4: Gitea +- [ ] Создание структуры `/opt/projects/gitea/` +- [ ] Настройка `docker-compose.yml` для Gitea +- [ ] Запуск Gitea +- [ ] Настройка Nginx для git.aegisone.ru +- [ ] Первоначальная настройка Gitea (регистрация админа) +- [ ] Включение Gitea Actions +- [ ] Создание репозиториев +- [ ] Настройка SSH-ключей для CI/CD + +### Этап 5: AegisOne PHP +- [ ] Создание структуры `/opt/projects/aegisone-php/` +- [ ] Настройка `docker-compose.yml` +- [ ] Перенос файлов с хостинга +- [ ] Миграция БД +- [ ] Запуск контейнеров +- [ ] Настройка Nginx для aegisone.ru +- [ ] Проверка работоспособности сайта + +### Этап 6: AegisOne Python +- [ ] Создание структуры `/opt/projects/aegisone-py/` +- [ ] Настройка `Dockerfile` и `docker-compose.yml` +- [ ] Создание базового FastAPI приложения +- [ ] Запуск контейнеров +- [ ] Настройка Nginx для service.aegisone.ru +- [ ] Проверка работоспособности API + +### Этап 7: CI/CD +- [ ] Создание workflow `.gitea/workflows/deploy.yml` +- [ ] Настройка секретов в Gitea +- [ ] Тестирование деплоя +- [ ] Настройка rollback + +### Этап 8: Бэкапы и мониторинг +- [ ] Настройка бэкапов PostgreSQL +- [ ] Настройка бэкапов MySQL +- [ ] Настройка cron для автоматических бэкапов +- [ ] (Опционально) Установка Uptime Kuma +- [ ] Настройка алертов + +### Этап 9: Финальная проверка +- [ ] Все домены работают по HTTPS +- [ ] PHP-часть (aegisone.ru) работает +- [ ] Python-часть (service.aegisone.ru) работает +- [ ] Gitea (git.aegisone.ru) работает +- [ ] CI/CD деплой работает +- [ ] Бэкапы создаются автоматически +- [ ] Мониторинг настроен + +--- + +## Полезные команды + +### Управление Docker +```bash +# Посмотреть запущенные контейнеры +docker ps + +# Посмотреть все контейнеры (включая остановленные) +docker ps -a + +# Посмотреть логи контейнера +docker logs -f + +# Остановить контейнер +docker stop + +# Запустить контейнер +docker start + +# Перезапустить контейнер +docker restart + +# Удалить контейнер +docker rm + +# Посмотреть использование ресурсов +docker stats + +# Очистить неиспользуемые ресурсы +docker system prune -f +``` + +### Управление Docker Compose +```bash +# Запустить все сервисы +docker compose up -d + +# Остановить все сервисы +docker compose down + +# Перезапустить все сервисы +docker compose restart + +# Посмотреть логи +docker compose logs -f + +# Посмотреть статус +docker compose ps + +# Пересобрать и запустить +docker compose up -d --build +``` + +### Управление Nginx +```bash +# Проверить конфиг +docker compose exec nginx nginx -t + +# Перезагрузить конфиг +docker compose exec nginx nginx -s reload + +# Посмотреть логи +docker compose logs -f nginx +``` + +### Управление Gitea +```bash +# Посмотреть логи +docker compose logs -f gitea + +# Перезапустить +docker compose restart gitea +``` + +### Системные команды +```bash +# Посмотреть использование диска +df -h + +# Посмотреть использование памяти +free -h + +# Посмотреть загрузку CPU +htop + +# Посмотреть логи системы +journalctl -f + +# Посмотреть открытые порты +sudo ss -tulpn +``` + +--- + +## Контакты и поддержка + +**Документ создан:** 2026-05-17 +**Версия:** 1.0 +**Автор:** AI-ассистент + Владелец +**Статус:** Готов к выполнению + +> **Важно:** Если при выполнении возникнут вопросы — лучше уточнить, чем переделывать потом. +> **Примечание:** Все пароли и ключи в примерах являются демонстрационными. Замените их на реальные перед использованием в продакшене. diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..d119af8 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,1572 @@ +@charset "UTF-8"; +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Montserrat:wght@600;700;800&display=swap'); + +/* =========================== + THEME VARIABLES + =========================== */ +:root, +[data-theme="light"] { + --bg-page: #FFFFFF; + --bg-alt: #F5F7FA; + --bg-card: #FFFFFF; + --bg-header: #0A2A4D; + --bg-footer: #0A2A4D; + --bg-cookie: #0A2A4D; + --bg-sticky: #0A2A4D; + --bg-tooltip: #1a1a2e; + --text-primary: #1a1a2e; + --text-secondary: #5a6a7a; + --text-muted: #8899aa; + --text-on-dark: #FFFFFF; + --text-on-accent: #FFFFFF; + --heading: #0A2A4D; + --accent: #00ADEF; + --accent-hover: #0095cc; + --accent-glow: rgba(0, 173, 239, 0.25); + --border: #e2e8f0; + --shadow-sm: 0 2px 8px rgba(10, 42, 77, 0.06); + --shadow-md: 0 4px 20px rgba(10, 42, 77, 0.08); + --shadow-lg: 0 8px 32px rgba(10, 42, 77, 0.12); + --shadow-btn: 0 4px 14px rgba(0, 173, 239, 0.35); + --shadow-btn-hover: 0 6px 20px rgba(0, 173, 239, 0.45); + --error: #dc2626; + --error-glow: rgba(220, 38, 38, 0.15); + --error-bg: rgba(220, 38, 38, 0.05); + --error-border: rgba(220, 38, 38, 0.2); + --success: #10b981; + --success-dark: #059669; + --radius-sm: 8px; + --radius-md: 12px; + --radius-lg: 16px; + --radius-xl: 20px; + --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +[data-theme="dark"] { + --bg-page: #0D1B2A; + --bg-alt: #152238; + --bg-card: #1B2838; + --bg-header: #0A1628; + --bg-footer: #0A1628; + --bg-cookie: #1B2838; + --bg-sticky: #0A1628; + --bg-tooltip: #2a3a4a; + --text-primary: #E8EDF2; + --text-secondary: #A0B4C8; + --text-muted: #6B8299; + --text-on-dark: #E8EDF2; + --text-on-accent: #FFFFFF; + --heading: #4DA8DA; + --accent: #00ADEF; + --accent-hover: #33bfff; + --accent-glow: rgba(0, 173, 239, 0.2); + --border: #2a3a4a; + --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.2); + --shadow-md: 0 4px 20px rgba(0, 0, 0, 0.25); + --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.3); + --shadow-btn: 0 4px 14px rgba(0, 173, 239, 0.3); + --shadow-btn-hover: 0 6px 20px rgba(0, 173, 239, 0.4); + --error: #ef4444; + --error-glow: rgba(239, 68, 68, 0.2); + --error-bg: rgba(239, 68, 68, 0.08); + --error-border: rgba(239, 68, 68, 0.25); +} + +/* =========================== + BASE + =========================== */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + color: var(--text-primary); + background: var(--bg-page); + line-height: 1.7; + scroll-behavior: smooth; + transition: background var(--transition), color var(--transition); +} + +.container { + max-width: 1200px; + margin: auto; + padding: 0 20px; +} + +.section-title { + text-align: center; + font-size: 2.2rem; + color: var(--heading); + margin-bottom: 50px; + font-family: 'Montserrat', sans-serif; + font-weight: 800; + letter-spacing: -0.02em; + transition: color var(--transition); +} + +/* =========================== + BUTTONS — volumetric + =========================== */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(135deg, var(--accent), var(--accent-hover)); + color: var(--text-on-accent); + padding: 14px 32px; + border: none; + border-radius: var(--radius-md); + font-size: 1rem; + text-decoration: none; + cursor: pointer; + font-weight: 600; + font-family: 'Inter', sans-serif; + box-shadow: var(--shadow-btn); + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); + position: relative; + overflow: hidden; +} + +.btn::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 50%; + background: linear-gradient(to bottom, rgba(255,255,255,0.15), transparent); + border-radius: var(--radius-md) var(--radius-md) 0 0; + pointer-events: none; +} + +.btn:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-btn-hover); +} + +.btn:active { + transform: translateY(0); + box-shadow: var(--shadow-sm); +} + +/* =========================== + HEADER + =========================== */ +.header { + background: var(--bg-header); + color: var(--text-on-dark); + position: sticky; + top: 0; + z-index: 100; + box-shadow: 0 2px 16px rgba(0, 0, 0, 0.15); + transition: background var(--transition); +} + +.header__inner { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 20px; + flex-wrap: wrap; + gap: 12px; +} + +.header__logo img { + height: 56px; + display: block; +} + +.header__menu { + display: flex; + list-style: none; + gap: 28px; +} + +.header__menu a { + color: var(--text-on-dark); + text-decoration: none; + font-weight: 600; + transition: color var(--transition); + font-size: 0.95rem; + position: relative; + font-family: 'Montserrat', sans-serif; + letter-spacing: 0.01em; +} + +.header__menu a::after { + content: ''; + position: absolute; + bottom: -4px; + left: 0; + width: 0; + height: 2px; + background: var(--accent); + transition: width var(--transition); +} + +.header__menu a:hover { + color: var(--accent); +} + +.header__menu a:hover::after { + width: 100%; +} + +.header__phone a { + color: var(--text-on-dark); + text-decoration: none; + font-weight: 700; + font-size: 1.05rem; + white-space: nowrap; + transition: color var(--transition); +} + +.header__phone a:hover { + color: var(--accent); +} + +/* =========================== + THEME SWITCHER + =========================== */ +.theme-switcher { + position: relative; + display: flex; + align-items: center; +} + +.theme-switcher__btn { + background: rgba(255,255,255,0.1); + border: 1px solid rgba(255,255,255,0.15); + border-radius: var(--radius-sm); + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: background var(--transition), border-color var(--transition); + color: var(--text-on-dark); +} + +.theme-switcher__btn:hover { + background: rgba(255,255,255,0.2); + border-color: rgba(255,255,255,0.3); +} + +.theme-switcher__icon { + font-size: 1.2rem; + line-height: 1; +} + +.theme-switcher__tooltip { + position: absolute; + top: calc(100% + 10px); + right: 0; + background: var(--bg-tooltip); + color: #fff; + padding: 10px 14px; + border-radius: var(--radius-sm); + font-size: 0.8rem; + line-height: 1.5; + white-space: nowrap; + opacity: 0; + visibility: hidden; + transform: translateY(-6px); + transition: opacity var(--transition), transform var(--transition), visibility var(--transition); + pointer-events: none; + z-index: 200; + box-shadow: 0 4px 16px rgba(0,0,0,0.3); +} + +.theme-switcher__tooltip::before { + content: ''; + position: absolute; + top: -6px; + right: 14px; + width: 12px; + height: 12px; + background: var(--bg-tooltip); + transform: rotate(45deg); +} + +.theme-switcher:hover .theme-switcher__tooltip, +.theme-switcher__btn:focus + .theme-switcher__tooltip { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +/* =========================== + BURGER + =========================== */ +.burger { + display: none; + flex-direction: column; + gap: 5px; + cursor: pointer; + background: none; + border: none; + padding: 5px; +} + +.burger span { + display: block; + width: 25px; + height: 3px; + background: var(--text-on-dark); + border-radius: 2px; + transition: 0.3s; +} + +/* =========================== + HERO + =========================== */ +.hero { + background: linear-gradient(180deg, var(--bg-alt) 0%, var(--bg-page) 100%); + padding: 100px 20px; + text-align: center; +} + +.hero__title { + font-size: 3rem; + color: var(--heading); + margin-bottom: 20px; + line-height: 1.15; + font-family: 'Montserrat', sans-serif; + font-weight: 800; + letter-spacing: -0.02em; + transition: color var(--transition); +} + +.hero__subtitle { + font-size: 1.2rem; + color: var(--text-secondary); + max-width: 700px; + margin: 0 auto 30px; + line-height: 1.7; + transition: color var(--transition); +} + +.hero__footnote { + margin-top: 15px; + font-size: 0.88rem; + color: var(--text-muted); + transition: color var(--transition); +} + +.hero__footnote::before { + content: '* '; + color: var(--accent); + font-weight: bold; +} + +/* =========================== + SECTIONS — spacing + reveal + =========================== */ +.reveal { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease, transform 0.6s ease; +} + +.reveal.visible { + opacity: 1; + transform: translateY(0); +} + +.problems { + background: var(--bg-page); + padding: 80px 20px; + transition: background var(--transition); +} + +.problems__grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 24px; +} + +.problem-card { + background: var(--bg-card); + padding: 32px 28px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + text-align: center; + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); + border: 1px solid var(--border); +} + +.problem-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); +} + +.problem-card__icon svg { + width: 56px; + height: 56px; + margin-bottom: 20px; + display: inline-block; +} + +.problem-card h3 { + color: var(--heading); + margin-bottom: 12px; + font-size: 1.15rem; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + transition: color var(--transition); +} + +.problem-card p { + color: var(--text-secondary); + font-size: 0.95rem; + line-height: 1.65; + transition: color var(--transition); +} + +/* =========================== + SERVICES + =========================== */ +.services { + background: var(--bg-alt); + padding: 80px 20px; + transition: background var(--transition); +} + +.services__grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 24px; +} + +.service-card { + background: var(--bg-card); + padding: 32px 28px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + text-align: center; + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); + text-decoration: none; + color: inherit; + display: flex; + flex-direction: column; + border: 1px solid var(--border); +} + +.service-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); +} + +.service-card svg.card__icon { + width: 56px; + height: 56px; + margin: 0 auto 20px; + display: block; +} + +.service-card h3 { + color: var(--heading); + margin-bottom: 12px; + font-size: 1.2rem; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + transition: color var(--transition); +} + +.service-card p { + color: var(--text-secondary); + font-size: 0.92rem; + line-height: 1.65; + flex: 1; + transition: color var(--transition); +} + +.service-card__more { + display: inline-block; + margin-top: 16px; + padding-top: 12px; + color: var(--accent); + font-weight: 600; + font-size: 0.9rem; +} + +/* =========================== + INDUSTRIES + =========================== */ +.industries { + background: var(--bg-page); + padding: 80px 20px; + transition: background var(--transition); +} + +.industries__grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; +} + +.industry-card { + background: var(--bg-card); + padding: 28px 18px; + border-radius: var(--radius-md); + text-align: center; + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); + border: 1px solid var(--border); + min-width: 0; +} + +.industry-card:hover { + transform: translateY(-3px); + box-shadow: var(--shadow-md); +} + +.industry-card svg { + width: 48px; + height: 48px; + margin-bottom: 14px; + display: inline-block; +} + +.industry-card h3 { + color: var(--heading); + font-size: 0.92rem; + font-family: 'Montserrat', sans-serif; + font-weight: 600; + transition: color var(--transition); +} + +/* =========================== + ABOUT + =========================== */ +.about { + background: var(--bg-alt); + padding: 60px 20px 30px; + transition: background var(--transition); +} + +.about__content p { + max-width: 800px; + margin: 0 auto 16px; + font-size: 1.05rem; + color: var(--text-secondary); + line-height: 1.75; + transition: color var(--transition); +} + +.about__content strong { + color: var(--heading); + transition: color var(--transition); +} + +.about-card { + max-width: 800px; + margin: 0 auto; + background: var(--bg-card); + padding: 36px 32px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + border: 1px solid var(--border); + transition: background var(--transition), border-color var(--transition); +} + +.about-card p { + font-size: 1.05rem; + color: var(--text-secondary); + line-height: 1.75; + margin-bottom: 16px; + transition: color var(--transition); +} + +.about-card p:last-child { + margin-bottom: 0; +} + +.about-card strong { + color: var(--heading); + transition: color var(--transition); +} + +/* =========================== + INFO CARDS + =========================== */ +.info-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 24px; + max-width: 1000px; + margin: 0 auto; +} + +.info-card { + background: var(--bg-card); + padding: 28px 24px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + border: 1px solid var(--border); + transition: transform var(--transition), box-shadow var(--transition), background var(--transition), border-color var(--transition); +} + +.info-card:hover { + transform: translateY(-3px); + box-shadow: var(--shadow-md); +} + +.info-card h3 { + color: var(--heading); + font-size: 1.1rem; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + margin-bottom: 12px; + transition: color var(--transition); +} + +.info-card p { + color: var(--text-secondary); + font-size: 0.95rem; + line-height: 1.65; + transition: color var(--transition); +} + +/* =========================== + HOW + =========================== */ +.how { + background: var(--bg-page); + padding: 80px 20px; + transition: background var(--transition); +} + +.how__steps { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 24px; +} + +.step { + background: var(--bg-card); + padding: 28px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + display: flex; + gap: 18px; + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); + border: 1px solid var(--border); +} + +.step:hover { + transform: translateY(-3px); + box-shadow: var(--shadow-md); +} + +.step__num { + width: 44px; + height: 44px; + background: linear-gradient(135deg, var(--accent), var(--accent-hover)); + color: var(--text-on-accent); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: 700; + font-size: 1.3rem; + flex-shrink: 0; + box-shadow: 0 3px 10px rgba(0,173,239,0.3); +} + +.step h3 { + color: var(--heading); + margin-bottom: 8px; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + transition: color var(--transition); +} + +.step p { + color: var(--text-secondary); + font-size: 0.92rem; + line-height: 1.65; + transition: color var(--transition); +} + +/* =========================== + SLA TARIFFS + =========================== */ +.sla__tariffs { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; + margin-top: 32px; +} + +.sla-card { + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 32px 24px; + text-align: center; + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition), background var(--transition); + position: relative; +} + +.sla-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); +} + +.sla-card--featured { + border-color: var(--accent); + box-shadow: var(--shadow-md), 0 0 0 1px var(--accent); + transform: scale(1.04); + z-index: 1; +} + +.sla-card--featured:hover { + transform: scale(1.04) translateY(-4px); +} + +.sla-card h3 { + color: var(--heading); + font-family: 'Montserrat', sans-serif; + font-weight: 700; + font-size: 1.2rem; + margin-bottom: 8px; + transition: color var(--transition); +} + +.sla-card__price { + font-size: 1.5rem; + font-weight: 800; + color: var(--accent); + margin-bottom: 20px; + font-family: 'Montserrat', sans-serif; + transition: color var(--transition); +} + +.sla-card ul { + list-style: none; + padding: 0; + margin: 0; + text-align: left; +} + +.sla-card li { + padding: 8px 0 8px 24px; + position: relative; + color: var(--text-secondary); + font-size: 0.9rem; + line-height: 1.5; + border-bottom: 1px solid var(--border); + transition: color var(--transition), border-color var(--transition); +} + +.sla-card li:last-child { + border-bottom: none; +} + +.sla-card li::before { + content: '✓'; + position: absolute; + left: 0; + color: var(--accent); + font-weight: 700; + font-size: 0.85rem; +} + +/* =========================== + CASES — carousel + =========================== */ +.cases { + background: var(--bg-alt); + padding: 30px 0 40px; + transition: background var(--transition); +} + +.cases .section-title { + margin-bottom: 24px; +} + +.carousel { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel__track { + display: flex; + transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); +} + +.case { + flex-shrink: 0; + background: var(--bg-card); + padding: 36px 40px; + display: flex; + flex-direction: column; + justify-content: center; + border: 1px solid var(--border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + transition: background var(--transition), border-color var(--transition), opacity var(--transition); + box-sizing: border-box; + opacity: 0.4; +} + +.case.case--active { + opacity: 1; +} + +.case h3 { + color: var(--heading); + margin-bottom: 14px; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + font-size: 1.15rem; + transition: color var(--transition); + word-wrap: break-word; + overflow-wrap: break-word; +} + +.case p { + color: var(--text-secondary); + font-size: 0.95rem; + line-height: 1.7; + margin-bottom: 10px; + transition: color var(--transition); + word-wrap: break-word; + overflow-wrap: break-word; +} + +.case p:last-child { + margin-bottom: 0; +} + +.case p strong { + color: var(--accent); + transition: color var(--transition); +} + +.carousel__prev, +.carousel__next { + position: absolute; + top: 50%; + transform: translateY(-50%); + background: var(--accent); + color: var(--text-on-accent); + border: none; + font-size: 1.4rem; + width: 40px; + height: 40px; + border-radius: 50%; + cursor: pointer; + opacity: 0.85; + transition: opacity var(--transition), background var(--transition), transform var(--transition); + line-height: 40px; + text-align: center; + z-index: 10; + box-shadow: 0 3px 12px rgba(0,0,0,0.2); +} + +.carousel__prev:hover, +.carousel__next:hover { + opacity: 1; + transform: translateY(-50%) scale(1.08); +} + +.carousel__prev { + left: 8px; +} + +.carousel__next { + right: 8px; +} + +.carousel__counter { + text-align: center; + margin-top: 16px; + font-size: 0.85rem; + color: var(--text-muted); + transition: color var(--transition); +} + +/* =========================== + FAQ + =========================== */ +.faq { + background: var(--bg-page); + padding: 30px 20px 60px; + transition: background var(--transition); +} + +.faq__list { + max-width: 800px; + margin: 0 auto; +} + +.faq-item { + background: var(--bg-card); + border-radius: var(--radius-md); + margin-bottom: 10px; + box-shadow: var(--shadow-sm); + overflow: hidden; + border: 1px solid var(--border); + transition: background var(--transition), border-color var(--transition); +} + +.faq-question { + width: 100%; + padding: 18px 24px; + background: none; + border: none; + text-align: left; + font-size: 1rem; + font-weight: 600; + color: var(--heading); + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + gap: 15px; + font-family: 'Inter', sans-serif; + line-height: 1.45; + transition: color var(--transition); +} + +.faq-question::after { + content: '+'; + font-size: 1.4rem; + color: var(--accent); + flex-shrink: 0; + transition: transform var(--transition); + font-weight: 300; +} + +.faq-item.active .faq-question::after { + transform: rotate(45deg); +} + +.faq-answer { + max-height: 0; + overflow: hidden; + transition: max-height 0.4s ease, padding 0.3s ease; + padding: 0 24px; + color: var(--text-secondary); + line-height: 1.75; + font-size: 0.93rem; + background: var(--bg-alt); + transition: max-height 0.4s ease, padding 0.3s ease, color var(--transition), background var(--transition); +} + +.faq-item.active .faq-answer { + max-height: 2000px; + padding: 16px 24px 20px; +} + +/* =========================== + CONTACTS + =========================== */ +.contacts { + background: var(--bg-alt); + padding: 60px 20px; + transition: background var(--transition); +} + +.contacts__row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 30px; + align-items: start; +} + +.contacts__form { + background: var(--bg-card); + padding: 28px 30px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + border: 1px solid var(--border); + transition: background var(--transition), border-color var(--transition); +} + +.form-group { + margin-bottom: 14px; +} + +.form-group label { + display: block; + margin-bottom: 5px; + font-weight: 600; + color: var(--heading); + font-size: 0.88rem; + transition: color var(--transition); +} + +.form-group input, +.form-group textarea { + width: 100%; + padding: 10px 14px; + border: 1.5px solid var(--border); + border-radius: var(--radius-sm); + font-size: 0.95rem; + font-family: 'Inter', sans-serif; + background: var(--bg-page); + color: var(--text-primary); + transition: border-color var(--transition), background var(--transition), color var(--transition); +} + +.form-group textarea { + height: 80px; + resize: vertical; +} + +.form-group input:focus, +.form-group textarea:focus { + border-color: var(--accent); + outline: none; + box-shadow: 0 0 0 3px var(--accent-glow); +} + +.form-group input::placeholder, +.form-group textarea::placeholder { + color: var(--text-muted); +} + +.form-group--checkbox { + display: flex; + align-items: flex-start; + gap: 10px; +} + +.form-group--checkbox input { + width: auto; + margin-top: 4px; + accent-color: var(--accent); +} + +.form-group--checkbox label { + font-size: 0.83rem; + font-weight: 400; + line-height: 1.45; + color: var(--text-secondary); +} + +.char-count { + font-size: 0.78rem; + color: var(--text-muted); + text-align: right; + margin-top: 2px; +} + +.form-group--error input, +.form-group--error textarea { + border-color: var(--error); + box-shadow: 0 0 0 3px var(--error-glow); +} + +.form-group--error label { + color: var(--error); +} + +.error-msg { + color: var(--error); + font-size: 0.82rem; + font-weight: 500; + display: none; + margin-top: 6px; + padding: 8px 12px; + background: var(--error-bg); + border: 1px solid var(--error-border); + border-left: 3px solid var(--error); + border-radius: var(--radius-md); + animation: errorSlideIn 0.3s ease; +} + +.error-msg::before { + content: '⚠ '; +} + +.error-msg.visible { + display: block; +} + +@keyframes errorSlideIn { + from { opacity: 0; transform: translateY(-4px); } + to { opacity: 1; transform: translateY(0); } +} + +/* Success message — centered */ +.form-response { + margin-top: 24px; + text-align: center; +} + +.form-response .success-msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 32px 20px; + background: var(--bg-card); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + border: 1px solid var(--border); +} + +.form-response .success-msg .check-icon { + width: 56px; + height: 56px; + background: linear-gradient(135deg, var(--success, #10b981), var(--success-dark, #059669)); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 16px; + box-shadow: 0 4px 14px rgba(16, 185, 129, 0.35); +} + +.form-response .success-msg .check-icon svg { + width: 28px; + height: 28px; + stroke: #fff; + stroke-width: 3; + fill: none; +} + +.form-response .success-msg p { + color: var(--heading); + font-weight: 600; + font-size: 1.05rem; + margin: 0; +} + +.map-address { + margin-top: 12px; + font-size: 0.88rem; + color: var(--text-secondary); + transition: color var(--transition); +} + +.map-address strong { + color: var(--heading); + transition: color var(--transition); +} + +/* =========================== + FOOTER + =========================== */ +.footer { + background: var(--bg-footer); + color: var(--text-on-dark); + padding: 30px 20px 15px; + transition: background var(--transition); +} + +.footer__inner { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 30px; + align-items: start; +} + +.footer__col h4 { + color: var(--accent); + font-size: 0.95rem; + margin-bottom: 14px; + text-transform: uppercase; + letter-spacing: 0.5px; + font-family: 'Montserrat', sans-serif; + font-weight: 700; +} + +.footer__col p, +.footer__col a { + color: var(--text-on-dark); + text-decoration: none; + line-height: 1.9; + font-size: 0.88rem; + display: block; + opacity: 0.85; + transition: opacity var(--transition), color var(--transition); +} + +.footer__col a:hover { + color: var(--accent); + opacity: 1; +} + +.footer__social { + display: flex; + gap: 12px; + flex-wrap: wrap; + justify-content: flex-start; +} + +.footer__social a { + width: 36px; + height: 36px; + line-height: 0; + opacity: 0.85; + transition: opacity var(--transition); +} + +.footer__social a:hover { + opacity: 1; +} + +.footer__social svg { + width: 36px; + height: 36px; + fill: var(--text-on-dark); + transition: fill var(--transition); +} + +.footer__social a:hover svg { + fill: var(--accent); +} + +.footer__social img { + width: 36px; + height: 36px; + object-fit: contain; +} + +.footer__bottom { + grid-column: 1 / -1; + text-align: center; + padding-top: 12px; + margin-top: 12px; + font-size: 0.83rem; + opacity: 0.6; +} + +.footer__bottom a { + color: var(--accent); + display: inline-block; + margin-bottom: 6px; + text-decoration: none; + opacity: 1; +} + +/* =========================== + COOKIE BANNER + =========================== */ +.cookie-banner { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: var(--bg-cookie); + color: var(--text-on-dark); + padding: 14px 20px; + z-index: 10001; + display: none; + box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.25); + border-top: 1px solid rgba(255,255,255,0.08); + transition: background var(--transition); +} + +.cookie-banner.active { + display: block; + animation: slideUp 0.35s ease; +} + +@keyframes slideUp { + from { transform: translateY(100%); opacity: 0; } + to { transform: translateY(0); opacity: 1; } +} + +.cookie-banner__inner { + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + flex-wrap: wrap; + max-width: 1200px; + margin: 0 auto; +} + +.cookie-banner p { + font-size: 0.84rem; + flex: 1; + min-width: 200px; + margin: 0; + line-height: 1.55; + opacity: 0.9; +} + +.cookie-banner a { + color: var(--accent); + text-decoration: underline; +} + +.cookie-banner .btn { + flex-shrink: 0; + padding: 8px 22px; + font-size: 0.84rem; +} + +/* =========================== + STICKY PANEL + =========================== */ +.sticky-panel { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: var(--bg-sticky); + padding: 10px 20px; + z-index: 999; + display: none; + box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.2); + border-top: 1px solid rgba(255,255,255,0.06); + transition: background var(--transition); +} + +.sticky-panel.active { + display: block; +} + +.sticky-panel__inner { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + flex-wrap: wrap; + max-width: 1200px; + margin: 0 auto; +} + +.sticky-panel a, +.sticky-panel .btn { + display: flex; + align-items: center; + gap: 6px; + color: var(--text-on-dark); + text-decoration: none; + font-weight: 600; + font-size: 0.84rem; + white-space: nowrap; +} + +.sticky-panel .sticky-icon { + width: 26px; + height: 26px; + fill: var(--text-on-dark); + flex-shrink: 0; +} + +.sticky-panel .btn { + background: linear-gradient(135deg, var(--accent), var(--accent-hover)); + padding: 8px 18px; + border-radius: var(--radius-sm); + font-size: 0.84rem; + box-shadow: 0 3px 10px rgba(0,173,239,0.3); +} + +.sticky-panel .btn:hover { + box-shadow: 0 4px 14px rgba(0,173,239,0.4); +} + +/* =========================== + LEAD MAGNET + =========================== */ +.lead-magnet { + background: linear-gradient(135deg, var(--heading), #0d4077); + color: var(--text-on-dark); + padding: 16px 20px; + border-radius: var(--radius-md); + margin-bottom: 18px; + text-align: center; + font-weight: 600; + font-size: 0.92rem; + box-shadow: 0 4px 16px rgba(10, 42, 77, 0.25); +} + +/* =========================== + TESTIMONIALS + =========================== */ +.testimonials { + background: var(--bg-page); + padding: 80px 20px; + transition: background var(--transition); +} + +.testimonials__grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; + max-width: 1100px; + margin: 0 auto; +} + +.testimonial-card { + background: var(--bg-card); + padding: 28px; + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + display: flex; + flex-direction: column; + border: 1px solid var(--border); + transition: transform var(--transition), box-shadow var(--transition), background var(--transition); +} + +.testimonial-card:hover { + transform: translateY(-3px); + box-shadow: var(--shadow-md); +} + +.testimonial-card__text { + font-style: italic; + flex: 1; + margin-bottom: 18px; + line-height: 1.7; + font-size: 0.93rem; + color: var(--text-secondary); + transition: color var(--transition); +} + +.testimonial-card__author { + font-weight: 700; + color: var(--heading); + font-size: 0.88rem; + transition: color var(--transition); +} + +.testimonial-card__source { + font-size: 0.82rem; + color: var(--text-muted); + transition: color var(--transition); +} + +/* =========================== + RESPONSIVE + =========================== */ +@media (max-width: 768px) { + .header__nav { + display: none; + width: 100%; + order: 4; + } + .header__nav.active { + display: block; + } + .header__menu { + flex-direction: column; + gap: 14px; + padding: 16px 0; + } + .burger { + display: flex; + } + .hero__title { + font-size: 2rem; + } + .hero__subtitle { + font-size: 1.05rem; + } + .section-title { + font-size: 1.7rem; + margin-bottom: 36px; + } + .contacts__row { + grid-template-columns: 1fr; + } + .footer__inner { + grid-template-columns: 1fr; + text-align: center; + } + .footer__social { + justify-content: center; + } + .testimonials__grid { + grid-template-columns: 1fr; + } + .problems__grid, + .services__grid { + grid-template-columns: 1fr; + } + .industries__grid { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + } + .industry-card { + padding: 20px 12px; + } + .industry-card h3 { + font-size: 0.82rem; + word-wrap: break-word; + overflow-wrap: break-word; + } + .how__steps { + grid-template-columns: 1fr; + } + .step { + flex-direction: column; + text-align: center; + padding: 24px 20px; + } + .step__num { + margin: 0 auto 12px; + } + .sla__tariffs { + grid-template-columns: 1fr; + } + .sla-card--featured { + transform: none; + } + .sla-card--featured:hover { + transform: translateY(-5px); + } + .sticky-panel { + padding: 8px 10px; + } + .sticky-panel__inner { + gap: 8px; + } + .sticky-panel a, + .sticky-panel .btn { + font-size: 0.75rem; + } + .sticky-panel .sticky-icon { + width: 22px; + height: 22px; + } + .sticky-panel .btn { + padding: 6px 12px; + font-size: 0.75rem; + } + .cookie-banner__inner { + flex-direction: column; + text-align: center; + } + .case { + padding: 24px 28px; + } + .case h3 { + font-size: 1rem; + } + .case p { + font-size: 0.88rem; + } + .carousel__prev, + .carousel__next { + width: 36px; + height: 36px; + font-size: 1.2rem; + line-height: 36px; + } + .carousel__prev { + left: 4px; + } + .carousel__next { + right: 4px; + } + .theme-switcher__tooltip { + right: -60px; + top: calc(100% + 8px); + } +} diff --git a/assets/img/Max_logo.svg b/assets/img/Max_logo.svg new file mode 100644 index 0000000..f83e6a2 --- /dev/null +++ b/assets/img/Max_logo.svg @@ -0,0 +1 @@ + diff --git a/assets/img/android-chrome-192x192.png b/assets/img/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..6757d9b9e58d4b533ce61edabecb366997d2a1de GIT binary patch literal 27883 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

rT(ZHwZJc8Q;^2V$=;UNq(tI$5C)=4z61atn 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

xZ`6QMS9s~ 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 literal 0 HcmV?d00001 diff --git a/assets/img/favicon-32x32.png b/assets/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..793d9cf6c64914de06e5c842658d20eb96158b46 GIT binary patch literal 2389 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 1) formatted += val.substring(1, 4); + if (val.length >= 4) formatted += ') '; + if (val.length > 4) formatted += val.substring(4, 7); + if (val.length >= 7) formatted += '-'; + if (val.length > 7) formatted += val.substring(7, 9); + if (val.length >= 9) formatted += '-'; + if (val.length > 9) formatted += val.substring(9, 11); + this.value = formatted.trim(); + }); + phoneInput.addEventListener('blur', function () { + if (this.value === '8 (___) ___-__-__' || this.value.replace(/\D/g, '').length < 11) { + this.value = ''; + } + }); + } + + // ===== CHARACTER COUNTER ===== + var messageField = document.getElementById('message'); + var charCount = document.querySelector('.char-count'); + if (messageField && charCount) { + messageField.addEventListener('input', function () { + var remaining = 500 - this.value.length; + charCount.textContent = 'Осталось: ' + remaining; + }); + } + + // ===== CAROUSEL ===== + var carouselEl = document.querySelector('.carousel'); + var track = document.querySelector('.carousel__track'); + var slides = track ? Array.from(track.querySelectorAll('.case')) : []; + var prevBtn = document.querySelector('.carousel__prev'); + var nextBtn = document.querySelector('.carousel__next'); + var counterEl = document.getElementById('carousel-counter'); + + if (carouselEl && track && slides.length > 0 && prevBtn && nextBtn) { + var realCount = slides.length; + var isTransitioning = false; + + // Clone first and last slide for infinite loop + if (realCount > 1) { + var firstClone = slides[0].cloneNode(true); + var lastClone = slides[realCount - 1].cloneNode(true); + firstClone.classList.add('clone'); + lastClone.classList.add('clone'); + track.insertBefore(lastClone, track.firstChild); + track.appendChild(firstClone); + } + + // Re-query all slides including clones + slides = Array.from(track.querySelectorAll('.case')); + var totalSlides = slides.length; + + // Start at real slide #2 (index 2 because clone of last is at index 0) + var currentIndex = realCount > 1 ? 2 : 1; + + var autoTimer = null; + + function getSlideWidth() { + return Math.round(carouselEl.clientWidth * 0.72); + } + + function setupSlides() { + var w = getSlideWidth(); + for (var i = 0; i < slides.length; i++) { + slides[i].style.width = w + 'px'; + } + } + + function updateActiveClass() { + var realIdx = getRealIndex(currentIndex); + for (var i = 0; i < slides.length; i++) { + if (slides[i].classList.contains('clone')) { + slides[i].classList.remove('case--active'); + } else { + var thisRealIdx = i - 1; + slides[i].classList.toggle('case--active', thisRealIdx === realIdx); + } + } + } + + function getRealIndex(idx) { + if (idx <= 0) return realCount - 1; + if (idx >= realCount + 1) return 0; + return idx - 1; + } + + function goToSlide(index, animate) { + var slideW = getSlideWidth(); + var carouselW = carouselEl.clientWidth; + var offset = (slideW * index) - (carouselW / 2) + (slideW / 2); + if (offset < 0) offset = 0; + + if (animate === false) { + track.style.transition = 'none'; + } else { + track.style.transition = 'transform 0.5s cubic-bezier(0.4, 0, 0.2, 1)'; + } + + track.style.transform = 'translateX(-' + offset + 'px)'; + updateActiveClass(); + + if (counterEl) { + counterEl.textContent = (getRealIndex(currentIndex) + 1) + ' / ' + realCount; + } + } + + function handleTransitionEnd() { + isTransitioning = false; + // If we landed on a clone, jump to the real slide without animation + if (currentIndex <= 0) { + currentIndex = realCount; + goToSlide(currentIndex, false); + } else if (currentIndex >= realCount + 1) { + currentIndex = 1; + goToSlide(currentIndex, false); + } + } + + track.addEventListener('transitionend', handleTransitionEnd); + + function startAuto() { + stopAuto(); + if (realCount > 1) { + autoTimer = setInterval(function () { + currentIndex++; + goToSlide(currentIndex, true); + }, 5000); + } + } + + function stopAuto() { + if (autoTimer) { + clearInterval(autoTimer); + autoTimer = null; + } + } + + prevBtn.addEventListener('click', function () { + if (isTransitioning) return; + isTransitioning = true; + stopAuto(); + currentIndex--; + goToSlide(currentIndex, true); + startAuto(); + }); + + nextBtn.addEventListener('click', function () { + if (isTransitioning) return; + isTransitioning = true; + stopAuto(); + currentIndex++; + goToSlide(currentIndex, true); + startAuto(); + }); + + var resizeTimer; + window.addEventListener('resize', function () { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(function () { + setupSlides(); + goToSlide(currentIndex, false); + }, 150); + }); + + setupSlides(); + goToSlide(currentIndex, false); + startAuto(); + } + + // ===== COOKIE BANNER ===== + var cookieBanner = document.getElementById('cookie-banner'); + var cookieAccept = document.getElementById('cookie-accept'); + if (cookieBanner && cookieAccept) { + if (!localStorage.getItem('cookies_accepted')) { + cookieBanner.classList.add('active'); + } + cookieAccept.addEventListener('click', function () { + localStorage.setItem('cookies_accepted', '1'); + cookieBanner.classList.remove('active'); + }); + } + + // ===== STICKY PANEL ===== + var stickyPanel = document.getElementById('sticky-panel'); + var heroSection = document.getElementById('hero'); + var footerEl = document.querySelector('.footer'); + if (stickyPanel && heroSection) { + var footerVisible = false; + + if (footerEl) { + var footerObserver = new IntersectionObserver(function (entries) { + footerVisible = entries[0].isIntersecting; + if (footerVisible) { + stickyPanel.classList.remove('active'); + } + }, { threshold: 0.1 }); + footerObserver.observe(footerEl); + } + + var ticking = false; + + function updateSticky() { + var heroBottom = heroSection.getBoundingClientRect().bottom; + if (!footerVisible) { + stickyPanel.classList.toggle('active', heroBottom < 0); + } + ticking = false; + } + + window.addEventListener('scroll', function () { + if (!ticking) { + window.requestAnimationFrame(updateSticky); + ticking = true; + } + }, { passive: true }); + + updateSticky(); + } + + // ===== FAQ ACCORDION ===== + document.querySelectorAll('.faq-question').forEach(function (btn) { + btn.addEventListener('click', function () { + var item = this.closest('.faq-item'); + if (!item) return; + var isActive = item.classList.contains('active'); + document.querySelectorAll('.faq-item').forEach(function (el) { + el.classList.remove('active'); + }); + if (!isActive) { + item.classList.add('active'); + } + }); + }); + + // ===== SCROLL REVEAL ANIMATIONS ===== + var revealElements = document.querySelectorAll( + '.problem-card, .service-card, .industry-card, .step, .case, .faq-item, .testimonial-card, .info-card, .about-card' + ); + if (revealElements.length > 0) { + var revealObserver = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + revealObserver.unobserve(entry.target); + } + }); + }, { + threshold: 0.1, + rootMargin: '0px 0px -40px 0px' + }); + + revealElements.forEach(function (el, i) { + el.style.transitionDelay = (i % 3) * 0.08 + 's'; + revealObserver.observe(el); + }); + } + + // ===== FORM SUBMIT ===== + var form = document.getElementById('contact-form'); + var responseDiv = document.getElementById('form-response'); + + if (form && responseDiv) { + // Убираем ошибку при фокусе на поле + form.querySelectorAll('input, textarea').forEach(function (input) { + input.addEventListener('focus', function () { + var group = this.closest('.form-group'); + if (group) { + group.classList.remove('form-group--error'); + var err = group.querySelector('.error-msg'); + if (err) { + err.classList.remove('visible'); + err.textContent = ''; + } + } + }); + }); + + form.addEventListener('submit', async function (e) { + e.preventDefault(); + + // Сброс всех ошибок + document.querySelectorAll('.form-group--error').forEach(function (el) { + el.classList.remove('form-group--error'); + }); + document.querySelectorAll('.error-msg.visible').forEach(function (el) { + el.classList.remove('visible'); + el.textContent = ''; + }); + + // Клиентская валидация + var hasError = false; + + var nameInput = document.getElementById('name'); + if (nameInput && !nameInput.value.trim()) { + showFieldError(nameInput, 'Введите ваше имя'); + hasError = true; + } + + var phoneInput = document.getElementById('phone'); + if (phoneInput) { + var digits = phoneInput.value.replace(/\D/g, ''); + if (digits.length < 11) { + showFieldError(phoneInput, 'Введите корректный номер телефона'); + hasError = true; + } + } + + var agreeInput = document.getElementById('agree'); + if (agreeInput && !agreeInput.checked) { + var agreeGroup = agreeInput.closest('.form-group'); + if (agreeGroup) { + agreeGroup.classList.add('form-group--error'); + var errSpan = agreeGroup.querySelector('.error-msg'); + if (errSpan) { + errSpan.textContent = 'Необходимо согласиться с политикой обработки персональных данных'; + errSpan.classList.add('visible'); + } + } + hasError = true; + } + + if (hasError) return; + + var formData = new FormData(form); + formData.append('ajax', '1'); + + try { + var res = await fetch(window.location.href, { + method: 'POST', + body: formData + }); + var data = await res.json(); + + if (data.success) { + form.style.display = 'none'; + responseDiv.innerHTML = + '

'; + } else { + responseDiv.innerHTML = '

' + data.message + '

'; + } + } catch (err) { + responseDiv.innerHTML = '

Произошла ошибка. Попробуйте позже.

'; + } + }); + } + + function showFieldError(input, message) { + var group = input.closest('.form-group'); + if (!group) return; + group.classList.add('form-group--error'); + var errSpan = group.querySelector('.error-msg'); + if (errSpan) { + errSpan.textContent = message; + errSpan.classList.add('visible'); + } + } +}); diff --git a/audit/.htaccess b/audit/.htaccess new file mode 100644 index 0000000..be0634d --- /dev/null +++ b/audit/.htaccess @@ -0,0 +1,2 @@ +DirectoryIndex index.php +Options -Indexes diff --git a/audit/index.php b/audit/index.php new file mode 100644 index 0000000..8fc9d4b --- /dev/null +++ b/audit/index.php @@ -0,0 +1,92 @@ + + +
+ +
+ +
+
+

Что мы проверяем

+
+ '', 'title' => 'Аудит систем видеонаблюдения', 'desc' => 'Комплексная проверка состояния видеокамер, покрытия территории, качества видеозаписей и настроек хранения данных.'], + ['svg' => '', 'title' => 'Аудит систем контроля доступа', 'desc' => 'Проверка СКУД на предмет уязвимостей, правильности настроек и соответствия стандартам безопасности.'], + ['svg' => '', 'title' => 'Аудит охранно-пожарных систем', 'desc' => 'Анализ состояния ОПС, проверка эффективности обнаружения угроз и своевременности реагирования.'], + ['svg' => '', 'title' => 'Комплексный аудит безопасности', 'desc' => 'Полный анализ всех систем безопасности на объекте с выработкой рекомендаций по повышению защищённости.'], + ]; + foreach ($items as $item): ?> +
+ +

+

+
+ +
+
+
+ +
+
+

Как проходит аудит

+
+ '1', 'title' => 'Первичное обсуждение', 'desc' => 'Короткая встреча или созвон, чтобы понять особенности вашего объекта и ваши потребности.'], + ['num' => '2', 'title' => 'Анализ документации', 'desc' => 'Изучаем существующие проекты, планы и отчёты служб безопасности.'], + ['num' => '3', 'title' => 'Выезд на объект', 'desc' => 'Визуальный и инструментальный осмотр систем безопасности с проверкой фактической работоспособности.'], + ['num' => '4', 'title' => 'Подготовка отчёта', 'desc' => 'Детальный отчёт с выявленными уязвимостями, фотографиями и рекомендациями по устранению.'], + ['num' => '5', 'title' => 'Презентация результатов', 'desc' => 'Представляем отчёт руководству и отвечаем на все вопросы.'], + ]; + foreach ($steps as $step): ?> +
+
+

+

+
+ +
+
+
+ +
+
+

Вопросы об аудите

+
+ 'Чем ваш аудит отличается от проверки штатной службы безопасности?', 'a' => 'Штатная служба безопасности часто не замечает системных проблем — она работает «внутри» процесса. Мы смотрим независимо, как внешние аудиторы, и видим то, что стало привычным. Кроме того, мы используем метод «Тайный покупатель».'], + ['q' => 'Вы продаёте оборудование или монтажные работы?', 'a' => 'В рамках независимого аудита мы выступаем исключительно как эксперты. Наша задача — объективно оценить ситуацию, а не продать вам оборудование. Вы сами решаете, какой подрядчик будет устранять замечания.'], + ['q' => 'Сколько стоит аудит?', 'a' => 'Стоимость зависит от объекта: его площади, количества систем и удалённости. Мы называем цену после предварительного обсуждения — это бесплатно и ни к чему не обязывает.'], + ['q' => 'Что входит в отчёт?', 'a' => 'Подробный документ с описанием каждого выявленного недостатка, фотографиями, оценкой уровня риска и конкретными рекомендациями. Вы получаете «дорожную карту»: что делать, в каком порядке и сколько это примерно стоит.'], + ]; + foreach ($faqs as $faq): ?> +
+ +
+
+ +
+
+
+ + + diff --git a/blog/.htaccess b/blog/.htaccess new file mode 100644 index 0000000..be0634d --- /dev/null +++ b/blog/.htaccess @@ -0,0 +1,2 @@ +DirectoryIndex index.php +Options -Indexes diff --git a/blog/api.php b/blog/api.php new file mode 100644 index 0000000..809f0bb --- /dev/null +++ b/blog/api.php @@ -0,0 +1,109 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + ]); + } + return $pdo; +} + +$pdo = getDB(); + +$categories = [ + 'audit' => 'Аудит', + 'sla' => 'SLA', + 'incident' => 'Инциденты', + 'supervision' => 'Технадзор', + 'documentation' => 'Документация', + 'risk' => 'Риск-инжиниринг', + 'cases' => 'Кейсы', +]; + +$search = trim($_GET['search'] ?? ''); +$category = trim($_GET['cat'] ?? ''); +$page = max(1, (int)($_GET['page'] ?? 1)); +$perPage = 12; + +$where = "status='published'"; +$params = []; +if ($category !== '' && isset($categories[$category])) { + $where .= " AND category=?"; + $params[] = $category; +} +if ($search !== '') { + $where .= " AND (title LIKE ? OR excerpt LIKE ? OR content LIKE ?)"; + $searchTerm = '%' . $search . '%'; + $params[] = $searchTerm; + $params[] = $searchTerm; + $params[] = $searchTerm; +} + +$countStmt = $pdo->prepare("SELECT COUNT(*) FROM blog_posts WHERE $where"); +$countStmt->execute($params); +$totalPosts = (int)$countStmt->fetchColumn(); +$totalPages = max(1, (int)ceil($totalPosts / $perPage)); +$offset = ($page - 1) * $perPage; + +$stmt = $pdo->prepare("SELECT bp.*, u.full_name AS author_name FROM blog_posts bp LEFT JOIN users u ON u.id=bp.author_id WHERE $where ORDER BY bp.published_at DESC LIMIT $perPage OFFSET $offset"); +$stmt->execute($params); +$posts = $stmt->fetchAll(); + +ob_start(); + +if (empty($posts)): ?> +
+

Записей пока нет

+

Следите за обновлениями — мы регулярно публикуем новые статьи.

+
+ +
+ +
+
+

+

+
+ + +
+
+ +
+ 1): ?> + + + $html, 'totalPages' => $totalPages, 'currentPage' => $page, 'category' => $category], JSON_UNESCAPED_UNICODE); diff --git a/blog/index.php b/blog/index.php new file mode 100644 index 0000000..a00f194 --- /dev/null +++ b/blog/index.php @@ -0,0 +1,349 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + ]); + } + return $pdo; +} + +$pdo = getDB(); + +$categories = [ + 'audit' => 'Аудит', + 'sla' => 'SLA', + 'incident' => 'Инциденты', + 'supervision' => 'Технадзор', + 'documentation' => 'Документация', + 'risk' => 'Риск-инжиниринг', + 'cases' => 'Кейсы', +]; + +$slug = trim($_GET['slug'] ?? ''); +$search = trim($_GET['search'] ?? ''); +$category = trim($_GET['cat'] ?? ''); +$page = max(1, (int)($_GET['page'] ?? 1)); +$perPage = 12; + +// Single post +if ($slug !== '') { + $stmt = $pdo->prepare("SELECT bp.*, u.full_name AS author_name FROM blog_posts bp LEFT JOIN users u ON u.id=bp.author_id WHERE bp.slug=? AND bp.status='published' LIMIT 1"); + $stmt->execute([$slug]); + $post = $stmt->fetch(); + + $pageTitle = $post ? ($post['title'] . ' — ' . SITE_NAME) : 'Пост не найден — ' . SITE_NAME; + $pageDesc = $post ? ($post['excerpt'] ?: mb_substr(strip_tags($post['content']), 0, 200)) : ''; + $robots = $post ? 'index, follow' : 'noindex, nofollow'; + $canonical = $post ? '/blog/' . $post['slug'] : '/blog/'; +} else { + $pageTitle = 'Блог — ' . SITE_NAME; + $pageDesc = 'Инженерный блог AegisOne Engineering: риск-инжиниринг, SLA, инциденты, аудит систем безопасности.'; + $robots = 'index, follow'; + $canonical = '/blog/'; +} +?> + + + + + + <?= $pageTitle ?> + + + + + + + + + + + +
+

Инженерный блог AegisOne

+

Управление рисками, SLA, инциденты и инженерная экспертиза

+

← На главную

+
+ + + +
+
+

+
+ + + +
+
+
+
+ Поделиться: + Telegram + WhatsApp +
+
+ prepare("SELECT slug,title FROM blog_posts WHERE published_atexecute([$post['published_at']]); $p = $prev->fetch(); + $next = $pdo->prepare("SELECT slug,title FROM blog_posts WHERE published_at>? AND status='published' ORDER BY published_at ASC LIMIT 1"); + $next->execute([$post['published_at']]); $n = $next->fetch(); + ?> + + +
+
+ + + +
+

Пост не найден

+

Возможно, он был удалён или ещё не опубликован.

+ ← Все записи +
+ + + + prepare("SELECT COUNT(*) FROM blog_posts WHERE $where"); + $countStmt->execute($params); + $totalPosts = (int)$countStmt->fetchColumn(); + $totalPages = max(1, (int)ceil($totalPosts / $perPage)); + $offset = ($page - 1) * $perPage; + + $stmt = $pdo->prepare("SELECT bp.*, u.full_name AS author_name FROM blog_posts bp LEFT JOIN users u ON u.id=bp.author_id WHERE $where ORDER BY bp.published_at DESC LIMIT $perPage OFFSET $offset"); + $stmt->execute($params); + $posts = $stmt->fetchAll(); + ?> +
+ +
+ +
+ Категория: + Все записи +
+ + + +
+

Записей пока нет

+

Следите за обновлениями — мы регулярно публикуем новые статьи.

+
+ +
+ +
+
+

+

+
+ + +
+
+ +
+ 1): ?> + + + + + + + + Вперёд → + +
+ + + + + + + + + + + + + diff --git a/config.php b/config.php new file mode 100644 index 0000000..487761e --- /dev/null +++ b/config.php @@ -0,0 +1,97 @@ +5000 м²)', 'calc_complexity()'), +('complexity.it', 10, 'IT-инфраструктура', 'calc_complexity()'), +-- Infrastructure Load +('infra.server_none', 15, 'Нет сервера', 'calc_infrastructure_load()'), +('infra.server_weak', 10, 'Слабый сервер', 'calc_infrastructure_load()'), +('infra.network_unstable', 20, 'Нестабильная сеть', 'calc_infrastructure_load()'), +('infra.network_partial', 10, 'Частичная сеть', 'calc_infrastructure_load()'), +('infra.power_none', 20, 'Нет UPS', 'calc_infrastructure_load()'), +('infra.power_weak', 10, 'Слабый UPS', 'calc_infrastructure_load()'), +-- Service History +('history.none', 30, 'Нет обслуживания', 'calc_service_history()'), +('history.irregular', 20, 'Нерегулярное обслуживание', 'calc_service_history()'), +('history.formal', 10, 'Формальный подрядчик', 'calc_service_history()'), +('history.sla', 0, 'Есть SLA', 'calc_service_history()'), +-- Object Index +('object_index.risk_weight', 0.4, 'Вес Risk Score', 'calc_object_index()'), +('object_index.complexity_weight', 0.3, 'Вес Complexity', 'calc_object_index()'), +('object_index.infra_weight', 0.2, 'Вес Infra Load', 'calc_object_index()'), +('object_index.history_weight', 0.1, 'Вес Service History', 'calc_object_index()'), +-- SLA Price +('sla_price.base_cost', 15000, 'Базовая стоимость инженера', 'calc_sla_price()'), +('sla_price.region_default', 1.0, 'Региональный коэффициент по умолчанию', 'calc_sla_price()'), +-- Engineer Score +('engineer.score.sla_weight', 0.25, 'Вес SLA Compliance', 'calc_engineer_score()'), +('engineer.score.response_weight', 0.20, 'Вес Response Time', 'calc_engineer_score()'), +('engineer.score.resolution_weight', 0.20, 'Вес Resolution Time', 'calc_engineer_score()'), +('engineer.score.diagnosis_weight', 0.15, 'Вес Diagnosis Accuracy', 'calc_engineer_score()'), +('engineer.score.reopen_weight', 0.10, 'Вес Reopen Rate', 'calc_engineer_score()'), +('engineer.score.risk_coverage_weight', 0.10, 'Вес Risk Coverage', 'calc_engineer_score()'), +('engineer.grade.senior', 90, 'Граница Senior', 'engineer_grade()'), +('engineer.grade.strong', 80, 'Граница Strong', 'engineer_grade()'), +('engineer.grade.middle', 70, 'Граница Middle', 'engineer_grade()'), +-- ECS (Engineer Control Score) +('ecs.sla_weight', 0.30, 'Вес SLA Control', 'calc_engineer_control_score()'), +('ecs.task_dist_weight', 0.25, 'Вес Task Distribution', 'calc_engineer_control_score()'), +('ecs.incident_red_weight', 0.20, 'Вес Incident Reduction', 'calc_engineer_control_score()'), +('ecs.team_perf_weight', 0.15, 'Вес Team Performance', 'calc_engineer_control_score()'), +('ecs.response_coord_weight', 0.10, 'Вес Response Coordination', 'calc_engineer_control_score()'), +-- SHS (System Health Score) +('shs.sla_stability_weight', 0.22, 'Вес SLA Stability', 'calc_shs()'), +('shs.revenue_stability_weight', 0.18, 'Вес Revenue Stability', 'calc_shs()'), +('shs.retention_weight', 0.18, 'Вес Retention', 'calc_shs()'), +('shs.engineer_perf_weight', 0.15, 'Вес Engineer Performance', 'calc_shs()'), +('shs.incident_stability_weight', 0.12, 'Вес Incident Stability', 'calc_shs()'), +('shs.sales_flow_weight', 0.10, 'Вес Sales Flow', 'calc_shs()'), +('shs.operational_eff_weight', 0.05, 'Вес Operational Efficiency', 'calc_shs()'), +('shs.zone_growth', 85, 'Граница зоны Growth', 'shs_status(), shs_zone()'), +('shs.zone_stable', 70, 'Граница зоны Stable', 'shs_status(), shs_zone()'), +('shs.zone_risk', 50, 'Граница зоны Risk', 'shs_status(), shs_zone()'), +('shs.delta_warning', 5, 'Порог предупреждения ΔSHS', 'shs_delta()'), +('shs.delta_critical', 10, 'Порог критического ΔSHS', 'shs_delta()'), +-- CEO SHS +('ceo_shs.mrr_weight', 0.25, 'Вес MRR Growth', 'calc_ceo_shs()'), +('ceo_shs.sla_weight', 0.20, 'Вес SLA Compliance', 'calc_ceo_shs()'), +('ceo_shs.retention_weight', 0.20, 'Вес Retention', 'calc_ceo_shs()'), +('ceo_shs.productivity_weight', 0.15, 'Вес Productivity', 'calc_ceo_shs()'), +('ceo_shs.conversion_weight', 0.10, 'Вес Conversion', 'calc_ceo_shs()'), +('ceo_shs.incident_weight', 0.10, 'Вес Incident Stability', 'calc_ceo_shs()'), +-- SSI (SLA Stability Index) +('ssi.breach_severity_p1', 1.0, 'Severity P1', 'calc_breach_severity()'), +('ssi.breach_severity_p2', 0.5, 'Severity P2', 'calc_breach_severity()'), +('ssi.breach_severity_p3', 0.2, 'Severity P3', 'calc_breach_severity()'), +-- ISI (Incident Stability Index) +('isi.severity_p1', 1.0, 'Severity P1', 'calc_incident_stability_index()'), +('isi.severity_p2', 0.5, 'Severity P2', 'calc_incident_stability_index()'), +('isi.severity_p3', 0.2, 'Severity P3', 'calc_incident_stability_index()'), +-- Automation Rules +('rules.shs_threshold', 70, 'Порог SHS', 'check_automation_rules()'), +('rules.sla_threshold', 90, 'Порог SLA Compliance', 'check_automation_rules()'), +('rules.retention_threshold', 90, 'Порог Retention', 'check_automation_rules()'), +-- Bonus +('bonus.score_90plus', 90, 'Граница премии 90+', 'calc_bonus_percent()'), +('bonus.score_80_89', 80, 'Граница премии 80-89', 'calc_bonus_percent()'), +('bonus.premium_90plus', 20, 'Премия при Score >= 90 (%)', 'calc_bonus_percent()'), +('bonus.premium_80_89', 10, 'Премия при Score 80-89 (%)', 'calc_bonus_percent()'), +('bonus.premium_below_80', 0, 'Премия при Score < 80 (%)', 'calc_bonus_percent()'), +-- Retention +('retention.key_client_penalty', 0.1, 'Штраф за потерю ключевого клиента', 'calc_retention_key_client()') +ON DUPLICATE KEY UPDATE `id`=`id`; + +-- ===================================================================== +-- cases — примеры из практики (карусель на главной) +-- ===================================================================== +CREATE TABLE IF NOT EXISTS `cases` ( + `id` int UNSIGNED AUTO_INCREMENT PRIMARY KEY, + `title` varchar(500) NOT NULL, + `text` text NOT NULL, + `effect` text NOT NULL, + `sort_order` int UNSIGNED NOT NULL DEFAULT 0, + `is_active` tinyint(1) NOT NULL DEFAULT 1, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_sort` (`sort_order`), + INDEX `idx_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `cases` (`title`, `text`, `effect`, `sort_order`) VALUES +('Склад крупной торговой сети', 'Выявлено: слепые зоны в зонах разгрузки, недостаточное разрешение камер в зонах погрузки/разгрузки. Одна камера не исправна, у двух не настроена запись.', 'предотвращение убытков на сумму более 5 млн рублей в год.', 1), +('Производство пищевых продуктов', 'Неправильная настройка СКУД позволяла несанкционированный доступ в производственные помещения, создавая риск нарушения норм СанПин.', 'снижение риска порчи продукции и утечки конфиденциальной информации.', 2), +('Банковский офис', 'Недостатки в системе ОПС приводили к невозможности срабатывания или задержкам в реагировании при ЧП.', 'сокращение рисков утраты имущества и ценностей, повышение уровня безопасности.', 3), +('Торгово-развлекательный центр', 'Метод «Тайный покупатель» выявил: охрана не реагирует на срабатывание металлодетекторов, оставляет посты без присмотра. Камеры на парковке не охватывают часть машиномест.', 'снижение риска краж, повышение дисциплины службы охраны.', 4), +('Гостиница', 'СКУД не синхронизирована с системой бронирования — доступ в занятые номера. ОПС в части номеров отключена. Видеокамеры имеют мёртвые зоны.', 'устранение репутационных рисков и риска хищения личных вещей гостей.', 5), +('Логистический центр', 'Отсутствие видеоконтроля на участках приёмки и отгрузки приводило к систематическим хищениям. СКУД на въезде не фиксирует данные транспортных средств.', 'сокращение потерь товара на 15%.', 6) +ON DUPLICATE KEY UPDATE `id`=`id`; diff --git a/data/migration_2026-05-16.sql b/data/migration_2026-05-16.sql new file mode 100644 index 0000000..9306ce0 --- /dev/null +++ b/data/migration_2026-05-16.sql @@ -0,0 +1,170 @@ +-- ============================================ +-- AegisOne Engineering — Combined Migration 2026-05-16 +-- ============================================ +-- 1. Blog categories: English → Russian +-- 2. SLA: response_time_hours, contract_number, description +-- 3. Customers table + links to objects & contracts +-- 4. Dynamic questionnaire items + +-- ============================================ +-- 1. Blog ENUM update +-- ============================================ +ALTER TABLE `blog_posts` MODIFY `category` ENUM( + 'audit', 'sla', 'incident', 'supervision', + 'documentation', 'risk', 'cases' +) NOT NULL DEFAULT 'audit'; + +UPDATE `blog_posts` SET category = 'audit' WHERE category = 'risk-engineering'; +UPDATE `blog_posts` SET category = 'sla' WHERE category = 'sla-service'; +UPDATE `blog_posts` SET category = 'incident' WHERE category = 'incident-cases'; +UPDATE `blog_posts` SET category = 'supervision' WHERE category = 'infrastructure-deep-dive'; +UPDATE `blog_posts` SET category = 'documentation' WHERE category = 'compliance-mchs'; +UPDATE `blog_posts` SET category = 'risk' WHERE category = 'economics-security'; +UPDATE `blog_posts` SET category = 'cases' WHERE category = 'case-studies'; + +-- ============================================ +-- 2. SLA fields +-- ============================================ +ALTER TABLE `sla_contracts` + ADD COLUMN IF NOT EXISTS `response_time_hours` decimal(5,1) DEFAULT NULL AFTER `response_time_p3`, + ADD COLUMN IF NOT EXISTS `contract_number` varchar(50) DEFAULT '' AFTER `id`, + ADD COLUMN IF NOT EXISTS `description` text DEFAULT NULL AFTER `contract_number`; + +-- ============================================ +-- 3. Customers table +-- ============================================ +CREATE TABLE IF NOT EXISTS `customers` ( + `id` int UNSIGNED AUTO_INCREMENT PRIMARY KEY, + `name` varchar(255) NOT NULL, + `inn` varchar(12) DEFAULT '', + `kpp` varchar(9) DEFAULT '', + `legal_address` varchar(500) DEFAULT '', + `contact_person` varchar(255) DEFAULT '', + `contact_phone` varchar(50) DEFAULT '', + `contact_email` varchar(255) DEFAULT '', + `status` enum('active','inactive','prospect') NOT NULL DEFAULT 'active', + `notes` text DEFAULT NULL, + `created_by` int UNSIGNED DEFAULT NULL, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_status` (`status`), + INDEX `idx_inn` (`inn`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Add customer_id to objects (skip if column exists) +SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='objects' AND COLUMN_NAME='customer_id'); +SET @sql = IF(@col_exists=0, + 'ALTER TABLE `objects` ADD COLUMN `customer_id` int UNSIGNED DEFAULT NULL AFTER `id`, ADD INDEX `idx_customer` (`customer_id`)', + 'SELECT 1' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- Add FK objects→customers (skip if exists) +SET @fk_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='objects' AND CONSTRAINT_NAME='fk_object_customer'); +SET @sql = IF(@fk_exists=0, + 'ALTER TABLE `objects` ADD CONSTRAINT `fk_object_customer` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE', + 'SELECT 1' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- Add customer_id to sla_contracts (skip if column exists) +SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='sla_contracts' AND COLUMN_NAME='customer_id'); +SET @sql = IF(@col_exists=0, + 'ALTER TABLE `sla_contracts` ADD COLUMN `customer_id` int UNSIGNED DEFAULT NULL AFTER `id`, ADD INDEX `idx_customer` (`customer_id`)', + 'SELECT 1' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- Add FK sla_contracts→customers (skip if exists) +SET @fk_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='sla_contracts' AND CONSTRAINT_NAME='fk_sla_customer'); +SET @sql = IF(@fk_exists=0, + 'ALTER TABLE `sla_contracts` ADD CONSTRAINT `fk_sla_customer` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE', + 'SELECT 1' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- Migrate existing client_name from sla_contracts to customers +INSERT IGNORE INTO `customers` (`name`, `status`, `created_at`) +SELECT DISTINCT client_name, 'active', NOW() +FROM `sla_contracts` +WHERE client_name != '' AND client_name IS NOT NULL; + +-- Link sla_contracts to customers +UPDATE `sla_contracts` sc +JOIN `customers` c ON c.name = sc.client_name +SET sc.customer_id = c.id +WHERE sc.client_name != '' AND sc.client_name IS NOT NULL AND sc.customer_id IS NULL; + +-- ============================================ +-- 4. Dynamic questionnaire items +-- ============================================ +CREATE TABLE IF NOT EXISTS `questionnaire_items` ( + `id` int UNSIGNED AUTO_INCREMENT PRIMARY KEY, + `step` int UNSIGNED NOT NULL DEFAULT 1, + `section` varchar(100) NOT NULL DEFAULT '', + `question_key` varchar(100) NOT NULL, + `label` varchar(255) NOT NULL, + `type` enum('text','number','select','radio','checkbox','textarea') NOT NULL DEFAULT 'text', + `options` text DEFAULT NULL COMMENT 'JSON array of options for select/radio', + `required` tinyint(1) NOT NULL DEFAULT 0, + `sort_order` int UNSIGNED NOT NULL DEFAULT 0, + `is_active` tinyint(1) NOT NULL DEFAULT 1, + `help_text` varchar(500) DEFAULT '', + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_step` (`step`), + INDEX `idx_key` (`question_key`), + INDEX `idx_sort` (`sort_order`), + UNIQUE KEY `uq_key` (`question_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `questionnaire_items` (`step`, `section`, `question_key`, `label`, `type`, `options`, `required`, `sort_order`, `help_text`) VALUES +(1, 'Коммерческий профиль объекта', 'object_name', 'Название организации / объекта', 'text', NULL, 1, 1, ''), +(1, 'Коммерческий профиль объекта', 'object_type', 'Тип объекта', 'select', '["","Гостиница","Склад","Производство","ТЦ","Офис","БЦ","Медицина","Образование","Другое"]', 0, 2, ''), +(1, 'Коммерческий профиль объекта', 'address', 'Адрес объекта', 'text', NULL, 0, 3, ''), +(1, 'Коммерческий профиль объекта', 'area', 'Площадь (м²)', 'number', NULL, 0, 4, ''), +(1, 'Коммерческий профиль объекта', 'employees', 'Количество сотрудников', 'number', NULL, 0, 5, ''), +(1, 'Коммерческий профиль объекта', 'contact_person', 'Контактное лицо', 'text', NULL, 0, 6, ''), +(1, 'Коммерческий профиль объекта', 'contact_phone', 'Телефон', 'text', NULL, 0, 7, ''), +(1, 'Коммерческий профиль объекта', 'region_factor', 'Региональный коэффициент', 'select', '{"1.0":"Краснодар (1.0)","1.1":"Краснодарский край (1.1)","1.3":"РФ (1.3)","1.6":"РФ удалённые (1.6)","1.8":"Москва (1.8)"}', 0, 8, ''), +(2, 'Видеонаблюдение', 'has_video', 'Есть система видеонаблюдения?', 'radio', '{"1":"Да","0":"Нет"}', 0, 1, ''), +(2, 'Видеонаблюдение', 'camera_count', 'Количество камер', 'number', NULL, 0, 2, ''), +(2, 'Видеонаблюдение', 'video_type', 'Тип системы', 'select', '["","ip","analog","mixed"]', 0, 3, ''), +(2, 'Видеонаблюдение', 'archive_depth', 'Глубина архива', 'select', '{"7":"7 дней","14":"14 дней","30":"30+ дней"}', 0, 4, ''), +(2, 'СКУД', 'has_acs', 'Есть система СКУД?', 'radio', '{"1":"Да","0":"Нет"}', 0, 5, ''), +(2, 'СКУД', 'access_points', 'Точек доступа', 'number', NULL, 0, 6, ''), +(2, 'СКУД', 'acs_vendor', 'Производитель СКУД', 'text', NULL, 0, 7, ''), +(2, 'Пожарная сигнализация', 'has_fire', 'Есть пожарная сигнализация?', 'radio', '{"1":"Да","0":"Нет"}', 0, 8, ''), +(2, 'Пожарная сигнализация', 'fire_type', 'Сложность системы', 'select', '{"simple":"Простая","medium":"Средняя","complex":"Сложная (>5000 м²)"}', 0, 9, ''), +(2, 'Инфраструктура', 'server_state', 'Состояние сервера', 'select', '{"ok":"Нормальный","weak":"Слабый","none":"Нет"}', 0, 10, ''), +(2, 'Инфраструктура', 'network_state', 'Состояние сети', 'select', '{"stable":"Стабильная","partial":"Частично","unstable":"Нестабильная"}', 0, 11, ''), +(2, 'Инфраструктура', 'power_state', 'Электропитание (UPS)', 'select', '{"ok":"Нормальное","weak":"Слабый UPS","none":"Нет UPS"}', 0, 12, ''), +(3, 'Эксплуатационная модель', 'service_state', 'Как обслуживается объект сейчас?', 'select', '{"none":"Не обслуживается","irregular":"Нерегулярно","formal":"Формальный подрядчик","sla":"Есть SLA"}', 0, 1, ''), +(3, 'Эксплуатационная модель', 'has_regulations', 'Есть ли регламент?', 'checkbox', NULL, 0, 2, ''), +(3, 'Эксплуатационная модель', 'problems', 'Отметьте частые проблемы', 'checkbox', '["Не работают камеры","Пропадает архив","Зависает СКУД","Ошибки пожарки","Нет реакции подрядчика","Нет понимания состояния систем"]', 0, 3, ''), +(3, 'Эксплуатационная модель', 'resolution_time', 'Среднее время устранения', 'select', '{"2h":"До 2 часов","24h":"До суток","days":"Несколько дней"}', 0, 4, ''), +(3, 'Эксплуатационная модель', 'controller', 'Кто контролирует систему?', 'select', '{"engineer":"Штатный инженер","contractor":"Подрядчик","nobody":"Никто"}', 0, 5, ''), +(4, 'Risk Assessment', 'no_archive', 'Нет архива видеонаблюдения (+25)', 'checkbox', NULL, 0, 1, ''), +(4, 'Risk Assessment', 'no_power', 'Нет резервного питания (+20)', 'checkbox', NULL, 0, 2, ''), +(4, 'Risk Assessment', 'no_regulations', 'Нет регламента обслуживания (+15)', 'checkbox', NULL, 0, 3, ''), +(4, 'Risk Assessment', 'frequent_failures', 'Частые сбои систем (+20)', 'checkbox', NULL, 0, 4, ''), +(4, 'Risk Assessment', 'no_documentation', 'Нет документации (+10)', 'checkbox', NULL, 0, 5, ''), +(4, 'Risk Assessment', 'consequences', 'Потенциальные последствия', 'checkbox', '["loss_of_evidence","shutdown","fines","no_investigation","access_fail"]', 0, 6, ''), +(4, 'Risk Assessment', 'confidence', 'Уровень уверенности в системе', 'select', '{"high":"Высокая","medium":"Средняя","low":"Низкая"}', 0, 7, ''), +(5, 'Расчёт SLA', 'sla_level', 'Предпочтительный уровень обслуживания', 'select', '{"start":"Базовый (Start SLA)","business":"Стандарт (Business SLA)","enterprise":"Расширенный (Enterprise SLA)"}', 0, 1, ''), +(5, 'Расчёт SLA', 'visit_frequency', 'Интенсивность обслуживания', 'select', '{"1":"1 выезд / мес","2":"2 выезда / мес","incident":"По инцидентам"}', 0, 2, ''), +(5, 'Расчёт SLA', 'reaction_time', 'Требуемое время реакции', 'select', '{"24":"24 часа","4":"4 часа","2":"2 часа"}', 0, 3, ''), +(5, 'Расчёт SLA', 'extra_247', '24/7 поддержка', 'checkbox', NULL, 0, 4, ''), +(5, 'Расчёт SLA', 'extra_emergency', 'Аварийные выезды', 'checkbox', NULL, 0, 5, ''), +(5, 'Расчёт SLA', 'extra_audit', 'Аудит', 'checkbox', NULL, 0, 6, ''), +(5, 'Расчёт SLA', 'extra_docs', 'Документация', 'checkbox', NULL, 0, 7, ''), +(5, 'Расчёт SLA', 'extra_contractors', 'Контроль подрядчиков', 'checkbox', NULL, 0, 8, '') +ON DUPLICATE KEY UPDATE `id`=`id`; diff --git a/docs/KPI инженеров.md b/docs/KPI инженеров.md new file mode 100644 index 0000000..efc4f86 --- /dev/null +++ b/docs/KPI инженеров.md @@ -0,0 +1,485 @@ +Ниже — система KPI, которая превращает инженеров и техников из “выездных исполнителей” в управляемую часть инженерной SLA-модели AegisOne Engineering. + +Главная цель системы: + +> не “оценивать занятость”, а измерять качество эксплуатации, скорость реакции и снижение рисков объекта + + + + +--- + +0. ПРИНЦИП СИСТЕМЫ KPI + +Ты НЕ измеряешь: + +сколько выездов сделал инженер + +сколько он “починил” + + +Ты измеряешь: + +1) надежность объектов + +2) соблюдение SLA + +3) качество диагностики + +4) снижение повторных инцидентов + + +--- + +1. СТРУКТУРА KPI (3 УРОВНЯ) + +2. Операционный KPI (ежедневный) +3. SLA KPI (контрактный) +4. Инженерный KPI качества (экспертный) + + +--- + +2. ОПЕРАЦИОННЫЙ KPI (Execution KPI) + +Это “что сделал инженер”. + + +--- + +KPI 1: Время реакции (Response Time) + +Формула: + +RT = (фактическое время реакции / SLA время реакции) + + +--- + +Оценка: + +RT Оценка + +≤ 1.0 норма +1.0–1.2 допустимо +> 1.2 нарушение + + + +--- + +Пример: + +SLA: 2 часа + +факт: 3 часа + + +RT = 3 / 2 = 1.5 → ❌ нарушение + + +--- + +KPI 2: Время устранения (Resolution Time) + +TTR = фактическое время устранения / нормативное время + + +--- + +Важно: + +Норматив зависит от типа инцидента: + +P1 (критический) — 2–6 часов + +P2 — до 24 часов + +P3 — до 3 дней + + + +--- + +KPI 3: Закрытие заявок в SLA + +SLA Compliance = (заявки в SLA / все заявки) × 100% + + +--- + +Норма: + +≥ 95% — отлично + +90–95% — допустимо + +< 90% — проблема инженера + + + +--- + +KPI 4: Повторные обращения (Reopen Rate) + +RR = (повторные заявки / общее число заявок) × 100% + + +--- + +Норма: + +≤ 5% — хорошо + +5–10% — средне + +> 10% — плохая диагностика + + + + + +--- + +3. SLA KPI (контрактный уровень) + + +--- + +KPI 5: Выполнение SLA по объектам + +Object SLA = (объекты без нарушений SLA / все объекты) × 100% + + +--- + +Норма: + +≥ 95% — стабильная сеть объектов + +< 90% — системная проблема команды + + + +--- + +KPI 6: Доступность систем (System Uptime) + +Uptime = (время работы системы / общее время) × 100% + + +--- + +Цель: + +99%+ для критических объектов + +97–99% допустимо + +< 97% — риск SLA разрыва + + + +--- + +4. ИНЖЕНЕРНЫЙ KPI (КАЧЕСТВО ЭКСПЕРТИЗЫ) + +Это ключевой уровень, который отличает тебя от монтажников. + + +--- + +KPI 7: Точность диагностики + +Accuracy = (подтвержденные неисправности / выявленные) × 100% + + +--- + +Пример: + +выявил 10 проблем + +9 подтвердились + + +→ 90% + + +--- + +Норма: + +≥ 85% — хорошо + +< 80% — инженер слабый + + + +--- + +KPI 8: Глубина диагностики (Risk Coverage Score) + +Оценивает, насколько инженер видит системные риски. + + +--- + +Формула (балльная система): + +Каждый объект оценивается по 5 зонам: + +видео + +СКУД + +пожарка + +питание + +сеть + + +RCS = (проверенные зоны / 5) × 100% + + +--- + +Норма: + +100% — стандарт AegisOne + +< 80% — поверхностная работа + + + +--- + +KPI 9: Снижение повторных инцидентов + +IRR = ((инциденты до - инциденты после) / до) × 100% + + +--- + +Это ключевой KPI бизнеса + + +--- + +5. ФИНАНСОВЫЙ KPI ИНЖЕНЕРА + + +--- + +KPI 10: Доход на инженера (Revenue per Engineer) + +RPE = общий SLA доход / количество инженеров + + +--- + +Норма: + +500k – слабая загрузка + +800k – норм + +1.2M+ – сильная модель + + + +--- + +6. ИТОГОВЫЙ ИНДЕКС ИНЖЕНЕРА (ENGINEER SCORE) + +Это твой главный инструмент управления. + + +--- + +Формула: + +ES = +(0.25 × SLA Compliance) + +(0.20 × Response Time Score) + +(0.20 × Resolution Time Score) + +(0.15 × Diagnosis Accuracy) + +(0.10 × Reopen Rate Score) + +(0.10 × Risk Coverage Score) + + +--- + +Интерпретация: + +Score Уровень + +90–100 Senior Engineer +80–89 Strong Engineer +70–79 Middle +< 70 требует обучения + + + +--- + +7. ДОПОЛНИТЕЛЬНЫЕ KPI (ОЧЕНЬ ВАЖНЫЕ) + + +--- + +KPI 11: Документирование (Documentation Quality) + +DQ = (полные отчёты / все выезды) × 100% + + +--- + +KPI 12: Качество отчёта (Report Quality Score) + +Оценивается по чек-листу: + +есть ли риски + +есть ли вывод + +есть ли рекомендации + +есть ли фото/фиксация + + + +--- + +KPI 13: Самостоятельность инженера + +Autonomy = (самостоятельные решения / всего решений) × 100% + + +--- + +8. КАК ЭТО ВЫГЛЯДИТ В CRM + + +--- + +Инженер: +- SLA Compliance: 96% +- RT: 1.1 +- TTR: 0.9 +- Diagnosis: 88% +- Reopen: 3% +- Score: 91 (Senior) + + +--- + +9. СИСТЕМА МОТИВАЦИИ (ВАЖНО) + + +--- + +БАЗОВАЯ ЛОГИКА: + +фикс оклад + +бонус за KPI + +штрафы только за SLA нарушения + + + +--- + +БОНУС: + +Score 90+ → +20% к премии +Score 80–89 → +10% +Score < 80 → без бонуса + + +--- + +10. ГЛАВНЫЙ ПРИНЦИП СИСТЕМЫ + +Ты НЕ платишь за: + +❌ “работу” +❌ “выезды” + +Ты платишь за: + +стабильность инфраструктуры клиента + + +--- + +11. КАК ЭТА СИСТЕМА МАСШТАБИРУЕТ БИЗНЕС + + +--- + +1 инженер = управляемая единица SLA + +Ты можешь: + +добавлять инженеров + +сравнивать эффективность + +масштабировать регионы + +контролировать качество без присутствия + + + +--- + +12. СВЯЗЬ С ТВОЕЙ БИЗНЕС-МОДЕЛЬЮ + + +--- + +KPI инженера + ↓ +качество SLA + ↓ +удержание клиентов + ↓ +MRR рост + ↓ +масштаб компании + + +--- + +13. СЛЕДУЮЩИЙ УРОВЕНЬ (если продолжать систему) + +Я могу дальше собрать: + +систему грейдов инженеров (Junior → Lead → Chief) + +модель расчёта зарплаты под KPI + +автоматическую таблицу KPI в Excel/Notion + +SLA dashboard (как у IT-компаний) + +систему контроля качества через аудит отчётов + + + +--- + +ИТОГ + +Ты получил не “мотивацию сотрудников”. + +Ты получил: + +> систему управления инженерной эксплуатационной компанией через измеримые риски и SLA + + + +Это уровень компаний, которые продают не услуги — а надежность инфраструктуры бизнеса. \ No newline at end of file diff --git a/docs/Owner.md b/docs/Owner.md new file mode 100644 index 0000000..669fb16 --- /dev/null +++ b/docs/Owner.md @@ -0,0 +1,520 @@ +Ты сейчас описываешь переход от “владельца инженерной фирмы” к роли: + +операционного директора инженерной системы (Engineering Operations System Owner) + +В такой модели ты уже не контролируешь людей напрямую — ты контролируешь поток рисков, денег, SLA и загрузки системы. + +Я разложу это как управленческую “панель управления” (CEO Dashboard), разделив на: + +1. критически важные метрики (must have) + + +2. важные (should have) + + +3. полезные (nice to have) + + +4. формулы + + +5. графики и визуализации + + +6. как это связывается в одну систему управления + + + + +--- + +1. КРИТИЧЕСКИ ВАЖНЫЕ ПАРАМЕТРЫ (CEO CORE CONTROL LAYER) + +Это то, без чего ты не управляешь компанией, а просто “наблюдаешь бизнес”. + + +--- + +1.1 MRR / ARR (регулярный доход SLA) + +Формула: + +MRR = Σ (все SLA контракты / 12) +ARR = MRR × 12 + + +--- + +Почему это главное: + +Ты продаёшь не монтаж, а: + +> стабильность объектов + + + + +--- + +График: + +📈 линия роста MRR по месяцам +📊 разбивка по типам объектов + + +--- + +Управленческая логика: + +если MRR растёт → система здорова + +если нет → маркетинг/воронка сломана + + + +--- + +1.2 RETENTION RATE (удержание клиентов) + +Формула: + +Retention = (клиенты в конце периода / клиенты в начале) × 100% + + +--- + +Норма: + +95–100% = отлично + +85–95% = нормально + +<85% = проблема в SLA + + + +--- + +График: + +📉 “утечка клиентов по месяцам” + + +--- + +Интерпретация: + +Если падает retention — проблема не в продажах, а в: + +инженерах + +SLA + +качестве реакции + + + +--- + +1.3 SLA COMPLIANCE (исполнение контрактов) + +Формула: + +SLA Compliance = (выполненные заявки в SLA / все заявки) × 100% + + +--- + +Норма: + +95–99% = система стабильна + +<90% = начинаются разрывы контрактов + + + +--- + +График: + +📊 compliance по инженерам / регионам + + +--- + +1.4 COST PER SLA OBJECT (стоимость обслуживания объекта) + +Формула: + +Cost per Object = (ФОТ + выезды + оборудование + накладные) / количество объектов + + +--- + +Почему важно: + +Ты должен видеть: + +> объект приносит деньги или сжигает ресурс + + + + +--- + +График: + +📊 распределение стоимости по типам объектов + + +--- + +1.5 ENGINEER PRODUCTIVITY (производительность инженера) + +Формула: + +EP = SLA Revenue / количество инженеров + + +--- + +Или глубже: + +EP2 = (закрытые заявки × сложность) / часы работы + + +--- + +График: + +📊 эффективность по инженерам (ranking) + + +--- + +2. ВАЖНЫЕ ПАРАМЕТРЫ (OPTIMIZATION LAYER) + +Это влияет на прибыль, но не ломает систему сразу. + + +--- + +2.1 LEAD → SLA CONVERSION RATE + +Формула: + +Conversion = SLA contracts / all qualified leads + + +--- + +График: + +📈 воронка: лиды → аудит → SLA + + +--- + +Диагностика: + +низкая конверсия → проблема продаж/аудита + +высокая → система сильная + + + +--- + +2.2 AVERAGE SLA CONTRACT VALUE + +Формула: + +ARPC = Total SLA revenue / number of contracts + + +--- + +График: + +📊 средний чек по объектам + + +--- + +2.3 INCIDENT RATE (частота аварий) + +Формула: + +IR = incidents / objects + + +--- + +Почему важно: + +Показывает: + +> реальное качество эксплуатации + + + + +--- + +2.4 REOPEN RATE (повторные заявки) + +Reopen = повторные обращения / все обращения + + +--- + +Если растёт: + +→ инженер плохо диагностирует + + +--- + +3. ПОЛЕЗНЫЕ ПАРАМЕТРЫ (NICE TO HAVE) + +Это усиливает контроль, но не критично. + + +--- + +3.1 CUSTOMER SATISFACTION (CSAT) + +CSAT = (положительные оценки / все оценки) × 100% + + +--- + +3.2 RESPONSE TIME DISTRIBUTION + +Не среднее, а распределение: + +📊 0–2 часа +📊 2–6 +📊 6–24 + + +--- + +3.3 EQUIPMENT HEALTH INDEX + +EHI = (исправное оборудование / общее оборудование) × 100% + + +--- + +3.4 ENGINEER UTILIZATION RATE + +Utilization = рабочие часы / доступные часы + + +--- + +4. ГЛАВНЫЙ CEO-ИНДЕКС (SYSTEM HEALTH SCORE) + +Это твоя “панель управления бизнесом”. + + +--- + +Формула: + +SHS = +(0.25 × MRR growth) + +(0.20 × SLA compliance) + +(0.20 × retention) + +(0.15 × engineer productivity) + +(0.10 × conversion rate) + +(0.10 × incident stability) + + +--- + +Интерпретация: + +SHS состояние + +85–100 масштабируемый рост +70–85 стабильный бизнес +50–70 проблемы в системе +<50 системный кризис + + + +--- + +5. КЛЮЧЕВЫЕ ГРАФИКИ CEO (ДОСКА УПРАВЛЕНИЯ) + + +--- + +5.1 MRR Growth Curve + +📈 рост повторного дохода + + +--- + +5.2 SLA Compliance Heatmap + +🟥 красный = проблемные инженеры +🟩 зелёный = сильные + + +--- + +5.3 Client Retention Funnel + +📊 где теряются клиенты + + +--- + +5.4 Engineer Performance Ranking + +📊 топ / низ производительности + + +--- + +5.5 Incident Map + +📍 какие объекты ломаются чаще + + +--- + +5.6 Cost vs Revenue per Object + +📊 прибыльность каждого SLA + + +--- + +6. КРИТИЧЕСКАЯ ЛОГИКА УПРАВЛЕНИЯ + +Ты управляешь не людьми. + +Ты управляешь: + +рисками → SLA → деньгами → нагрузкой инженеров + + +--- + +7. ЧТО ТЕБЕ ОБЯЗАТЕЛЬНО ВИДЕТЬ КАЖДЫЙ ДЕНЬ + + +--- + +DAILY CEO DASHBOARD: + +SLA compliance + +аварии за 24ч + +новые SLA контракты + +просрочки + +перегруз инженеров + + + +--- + +8. ЧТО ТЕБЕ НУЖНО ВИДЕТЬ РАЗ В НЕДЕЛЮ + + +--- + +MRR рост + +retention + +эффективность инженеров + +конверсия аудита в SLA + + + +--- + +9. ЧТО СМОТРЕТЬ РАЗ В МЕСЯЦ + + +--- + +прибыльность объектов + +эффективность регионов + +нагрузка команды + +системные сбои + + + +--- + +10. ГЛАВНЫЙ ПРИНЦИП + +Ты не управляешь: + +❌ монтажами +❌ выездами +❌ людьми + + +--- + +Ты управляешь: + +системой инженерной надежности объектов бизнеса + + +--- + +11. ЕСЛИ СВЯЗАТЬ ВСЁ В ОДНУ МОДЕЛЬ + +Аудит → Risk Score → SLA цена → контракт → MRR → KPI инженеров → retention → рост + + +--- + +12. ИТОГ + +Ты как CEO должен видеть не “что происходит”, а: + +> где именно в системе возникает прибыль или утечка денег/риска + + + + +--- + +13. ЕСЛИ ДАЛЬШЕ РАЗВИВАТЬ СИСТЕМУ + +Я могу собрать: + +полноценный CEO-dashboard (Excel / Notion / Power BI) + +автоматическую систему расчёта SHS + +дашборд инженеров в реальном времени + +модель прогнозирования MRR на 3–6 месяцев + +систему раннего предупреждения потерь клиентов + + + +--- + +Если коротко: + +ты строишь не компанию — ты строишь управляемую инженерную систему с финансовыми законами внутри неё. diff --git a/docs/SEO.md b/docs/SEO.md new file mode 100644 index 0000000..6bbcfaf --- /dev/null +++ b/docs/SEO.md @@ -0,0 +1,488 @@ +Сейчас мы подходим к одному из самых важных этапов. +Потому что SEO для тебя — это НЕ “трафик ради трафика”. + +Тебе не нужны: + +- тысячи посетителей; +- B2C заявки; +- мусорные лиды. + +Тебе нужен: + +# узкий B2B SEO с высокой экспертностью. + +И здесь у тебя огромный шанс, потому что рынок безопасности: + +# SEO делает ужасно. + +Большинство сайтов: + +- про “монтаж камер”; +- про оборудование; +- про бренды; +- про “низкие цены”. + +А ты можешь занять: + +# нишу инженерной эксплуатации. + +--- + +# ГЛАВНАЯ СТРАТЕГИЯ SEO + +--- + +# НЕ ПРОДАВАТЬ: + +- камеры; +- оборудование; +- монтаж. + +--- + +# ПРОДАВАТЬ: + +- эксплуатацию; +- SLA; +- аудит; +- контроль; +- сопровождение; +- надежность. + +--- + +# ТВОЯ SEO-МОДЕЛЬ + +--- + +# УРОВЕНЬ 1 + +# КОММЕРЧЕСКИЕ СТРАНИЦЫ + +Это: + +# страницы услуг. + +Они приводят клиентов. + +--- + +# УРОВЕНЬ 2 + +# ОТРАСЛЕВЫЕ СТРАНИЦЫ + +Это: + +# страницы под конкретный бизнес. + +Они повышают доверие и SEO. + +--- + +# УРОВЕНЬ 3 + +# ЭКСПЕРТНЫЙ БЛОГ + +Это: + +# двигатель доверия. + +--- + +# СТРУКТУРА САЙТА + +Вот идеальная структура для тебя. + +--- + +# ГЛАВНАЯ + +## URL: + +`/` + +--- + +## Цель: + +- показать позиционирование; +- перевести из “монтажников”; +- дать B2B доверие. + +--- + +# РАЗДЕЛ УСЛУГ + +--- + +## `/services/` + +Общая страница услуг. + +--- + +# ОСНОВНЫЕ СТРАНИЦЫ + +--- + +## `/services/audit/` + +# Технический аудит систем безопасности + +--- + +## `/services/sla/` + +# SLA сопровождение объектов + +--- + +## `/services/maintenance/` + +# Техническое обслуживание систем безопасности + +--- + +## `/services/external-engineer/` + +# Внешний инженер безопасности + +--- + +## `/services/recovery/` + +# Восстановление проблемных объектов + +--- + +## `/services/fire-alarm/` + +# Обслуживание пожарной сигнализации + +--- + +## `/services/video-surveillance/` + +# Эксплуатация видеонаблюдения + +--- + +## `/services/access-control/` + +# Обслуживание СКУД + +--- + +# ОТРАСЛЕВЫЕ СТРАНИЦЫ + +Это очень важно. + +--- + +## `/industries/hotels/` + +# Системы безопасности гостиниц + +--- + +## `/industries/logistics/` + +# Склады и логистика + +--- + +## `/industries/medical/` + +# Клиники и медцентры + +--- + +## `/industries/commercial/` + +# Коммерческая недвижимость + +--- + +## `/industries/agro/` + +# Агропредприятия + +--- + +# БЛОГ + +--- + +## `/blog/` + +--- + +# КАТЕГОРИИ + +--- + +## `/blog/video/` + +Проблемы видеонаблюдения. + +--- + +## `/blog/fire-alarm/` + +Пожарная безопасность. + +--- + +## `/blog/sla/` + +Эксплуатация и SLA. + +--- + +## `/blog/audit/` + +Технический аудит. + +--- + +# ПОЧЕМУ ЭТО ТАК ВАЖНО + +Google и Яндекс сейчас любят: + +- структуру; +- экспертность; +- тематичность; +- глубину. + +--- + +# ЧТО НЕЛЬЗЯ ДЕЛАТЬ + +--- + +# НЕ ДЕЛАТЬ: + +- 1 страницу “все услуги”; +- короткие SEO-тексты; +- переспам; +- “установка камер Краснодар”. + +Это мусорный рынок. + +--- + +# ТВОЯ SEO-СТРАТЕГИЯ + +--- + +# НЕ: + +“дешевый монтаж” + +--- + +# А: + +# “эксплуатационные риски объектов”. + +--- + +# ГЛАВНЫЕ SEO КЛЮЧИ + +Вот где деньги. + +--- + +# АУДИТ + +- аудит систем безопасности +- технический аудит объекта +- аудит видеонаблюдения +- аудит пожарной сигнализации +- проверка систем безопасности + +--- + +# SLA + +- SLA обслуживание +- сопровождение систем безопасности +- техническое сопровождение объекта +- эксплуатация систем безопасности + +--- + +# ОБСЛУЖИВАНИЕ + +- обслуживание пожарной сигнализации Краснодар +- обслуживание видеонаблюдения Краснодар +- обслуживание СКУД Краснодар + +--- + +# ОТРАСЛЕВЫЕ + +- системы безопасности гостиниц +- обслуживание гостиниц Краснодар +- безопасность складов Краснодар + +--- + +# ТЕПЕРЬ ГЛАВНОЕ + +# КАК ПИСАТЬ SEO-ТЕКСТЫ + +--- + +# ТВОЯ ЦЕЛЬ + +НЕ: “набить ключи”. + +--- + +# А: + +# показать инженерную экспертность. + +--- + +# ПРИМЕР SEO-ТЕКСТА + +--- + +--- + +# ТЕПЕРЬ: + +# КОД СТРАНИЦЫ УСЛУГИ + +Например: + +# `/services/audit/index.php` + +--- + +--- + +# SEO РЕКОМЕНДАЦИИ ПО ТЕХНИЧЕСКОЙ ЧАСТИ + +--- + +# ОБЯЗАТЕЛЬНО: + +--- + +# 1. ЧПУ URL + +--- + +# ХОРОШО: + +`/services/audit/` + +--- + +# ПЛОХО: + +`/page.php?id=123` + +--- + +# 2. TITLE И DESCRIPTION + +Для каждой страницы. + +--- + +# Пример: + +## TITLE: + +Технический аудит систем безопасности в Краснодаре + +--- + +## DESCRIPTION: + +Проверка состояния систем безопасности коммерческих объектов. Аудит видеонаблюдения, СКУД и пожарной сигнализации. + +--- + +# 3. H1 ТОЛЬКО ОДИН + +Это важно. + +--- + +# 4. schema.org + +Очень желательно. + +--- + +# 5. СКОРОСТЬ + +Не перегружать: + +- анимацией; +- тяжелыми видео; +- конструкторами. + +--- + +# 6. GEO SEO + +На каждой странице: + +- Краснодар; +- Краснодарский край. + +--- + +# 7. ВНУТРЕННЯЯ ПЕРЕЛИНКОВКА + +Например: + +- из статьи → на аудит; +- из отрасли → на SLA; +- из кейса → на услугу. + +--- + +# ЧТО ДАСТ РЕАЛЬНЫЙ РОСТ + +--- + +# НЕ: + +- покупка ссылок; +- SEO-магия. + +--- + +# А: + +- экспертные статьи; +- кейсы; +- отраслевые страницы; +- техническая глубина; +- регулярность. + +--- + +# САМОЕ ВАЖНОЕ + +Ты должен выглядеть: + +# не как “сайт монтажников”. + +А как: + +# инженерная эксплуатационная компания. + +И это: + +- редкость; +- слабоконкурентная ниша; +- высокий уровень доверия; +- хороший B2B SEO. \ No newline at end of file diff --git a/docs/SLA.md b/docs/SLA.md new file mode 100644 index 0000000..20e0fa6 --- /dev/null +++ b/docs/SLA.md @@ -0,0 +1,795 @@ +SLA — ЭТО ОСНОВА ТВОЕГО ПЕРЕХОДА ИЗ “МОНТАЖНИКОВ” В B2B-СЕРВИС + +Большинство компаний безопасности в Краснодарском крае: + +“иногда приезжают”; + +“что-то смотрят”; + +“делают отметку”; + +работают хаотично. + + +SLA делает тебя: + +инженерной сервисной компанией; + +предсказуемым подрядчиком; + +частью эксплуатации бизнеса клиента. + + +Именно SLA позволяет: + +продавать дороже; + +получать абонентку; + +заходить в сети; + +работать с коммерческой недвижимостью; + +уходить от демпинга. + + + +--- + +ЧТО ТАКОЕ SLA ПРОСТЫМИ СЛОВАМИ + +SLA (Service Level Agreement) + +это: + +соглашение об уровне сервиса. + +То есть: ты заранее фиксируешь: + +что обслуживаешь; + +как быстро реагируешь; + +что считается аварией; + +что входит в обслуживание; + +какие обязательства у сторон. + + + +--- + +ПОЧЕМУ B2B ЭТО ЛЮБИТ + +Потому что бизнес покупает: + +предсказуемость; + +контроль; + +ответственность; + +понятные сроки. + + + +--- + +ТВОЯ ЦЕЛЬ + +НЕ: + +> “мы обслуживаем камеры” + + + +А: + +“мы гарантируем работоспособность критической инфраструктуры объекта”. + + +--- + +КАК SLA ПОДНИМАЕТ ТЕБЯ НАД РЫНКОМ + +Без SLA: + +“звоните если что”. + +С SLA: + +регламенты; + +сроки реакции; + +журналирование; + +прозрачность; + +ответственность. + + + +--- + +ГЛАВНАЯ ОШИБКА + +Многие делают: + +> “приедем в течение суток”. + + + +Это НЕ SLA. + + +--- + +НАСТОЯЩИЙ SLA ВКЛЮЧАЕТ + + +--- + +1. КЛАССИФИКАЦИЮ ИНЦИДЕНТОВ + +Например: + +Приоритет Пример Реакция + +P1 Критический Не работает пожарка 2 часа +P2 Высокий Нет архива камер 4 часа +P3 Средний Частично не работает СКУД 24 часа +P4 Низкий Настройка доступа Планово + + + +--- + +2. ВРЕМЯ РЕАКЦИИ + +Очень важно: не “устранения”. + +А: + +начала работ. + + +--- + +3. РЕГЛАМЕНТНЫЕ РАБОТЫ + +Например: + +ежемесячные проверки; + +тестирование; + +резервное копирование; + +контроль архивов; + +проверка питания; + +чистка; + +тест тревог. + + + +--- + +4. ОТЧЕТНОСТЬ + +Это критично. + +Ты должен быть: + +“прозрачным подрядчиком”. + + +--- + +5. SLA ПО КАНАЛАМ СВЯЗИ + +Например: + +Telegram; + +email; + +аварийный телефон; + +сервисный портал. + + + +--- + +6. SLA ПО ДОСТУПНОСТИ + +Вот тут начинаются большие чеки. + +Например: + +Система Целевая доступность + +Пожарка 99.9% +Видеонаблюдение 99% +СКУД 99% + + + +--- + +ТЕПЕРЬ ГЛАВНОЕ: + +КАК ТЕБЕ ДЕЛАТЬ SLA В РЕАЛЬНОСТИ + +Тебе НЕ нужен корпоративный монстр. + +Тебе нужна: + +простая инженерная система. + + +--- + +БАЗОВАЯ МОДЕЛЬ SLA ДЛЯ ТЕБЯ + + +--- + +START SLA + +Для: + +небольших объектов; + +офисов; + +клиник; + +магазинов. + + + +--- + +Реакция: + +до 24 часов + + +--- + +Регламент: + +1 раз в месяц. + + +--- + +Что входит: + +проверка состояния; + +диагностика; + +журнал; + +рекомендации; + +консультации. + + + +--- + +Стоимость: + +25–40 тыс ₽/мес + +Для Краснодара — нормально для качественного B2B. + + +--- + +BUSINESS SLA + +Твой основной продукт. + + +--- + +Реакция: + +критическая авария — 4 часа; + +обычная — 24 часа. + + + +--- + +Регламент: + +2–4 раза в месяц. + + +--- + +Входит: + +аварийные выезды; + +удаленная диагностика; + +контроль архива; + +контроль питания; + +фотоотчеты; + +журнал; + +рекомендации; + +сопровождение проверок. + + + +--- + +Стоимость: + +60–120 тыс ₽/мес + +Для: + +гостиниц; + +складов; + +коммерческой недвижимости. + + + +--- + +ENTERPRISE SLA + +Вот это путь к большим деньгам. + + +--- + +Реакция: + +2 часа + + +--- + +Формат: + +“внешний инженерный отдел”. + + +--- + +Входит: + +постоянный контроль; + +участие в эксплуатации; + +работа с подрядчиками; + +аудит; + +сопровождение модернизаций; + +приемка; + +развитие систем. + + + +--- + +Стоимость: + +180–500 тыс ₽/мес + + +--- + +ВАЖНО: + +SLA НЕЛЬЗЯ ПРОДАВАТЬ КАК “ТО” + +Иначе: ты вернешься в дешевый рынок. + + +--- + +SLA ПРОДАЕТСЯ КАК: + +“управление рисками объекта”. + + +--- + +ПРИМЕР ТЕКСТА ДЛЯ САЙТА + + +--- + +SLA-сопровождение систем безопасности + +Мы работаем по регламентированным SLA-моделям обслуживания. + +Это означает: +— фиксированное время реакции; +— контроль состояния систем; +— прозрачную отчетность; +— регламентные проверки; +— ответственность за работоспособность инфраструктуры объекта. + +SLA позволяет снизить риски простоев, исключить скрытые неисправности и обеспечить стабильную эксплуатацию систем безопасности. + +Для каждого объекта разрабатывается индивидуальный регламент обслуживания. +--- + +ПРИМЕР SLA ТАБЛИЦЫ ДЛЯ САЙТА + + +--- + +Приоритет| Описание| Реакция +P1| Полный отказ критической системы| до 2 часов +P2| Частичная потеря функционала| до 4 часов +P3| Некритичная неисправность| до 24 часов +P4| Плановые работы и настройки| по графику +--- + +ТЕПЕРЬ САМОЕ ВАЖНОЕ + +КАК ТЕБЕ СЧИТАТЬ ЦЕНУ SLA + +Не “от количества камер”. + +Это ошибка рынка. + + +--- + +ТВОЯ МОДЕЛЬ ЦЕНООБРАЗОВАНИЯ + +Цена считается по: + +критичности объекта; + +количеству систем; + +SLA; + +расстоянию; + +времени реакции; + +рискам; + +сложности эксплуатации. + + + +--- + +МОДЕЛЬ ДЛЯ КРАСНОДАРСКОГО КРАЯ + + +--- + +КРАСНОДАР + +Можно: + +быстрые выезды; + +дешевле логистика. + + + +--- + +СОЧИ + +Цена должна быть: + +выше на 30–50%. + +Из-за: + +логистики; + +сезонности; + +срочности. + + + +--- + +УДАЛЕННЫЕ РАЙОНЫ + +Нужно: + +отдельное SLA. + + +--- + +Например: + +Базовая реакция: + +24 часа. + +Срочный выезд: + +дополнительная ставка. + + +--- + +КАК СЧИТАТЬ SLA + +Вот модель. + + +--- + +БАЗА + +Например: + +35 000 ₽ + + +--- + +ПЛЮС: + +Параметр Доплата + +24/7 доступность +20% +SLA 2 часа +35% +Удаленный район +15–40% +Несколько объектов индивидуально +Высокая критичность +25% + + + +--- + +ПРИМЕР + +Гостиница: + +64 камеры; + +СКУД; + +пожарка; + +архив; + +Краснодар. + + + +--- + +SLA: + +4 часа. + + +--- + +Цена: + +85–120 тыс ₽/мес + +И это нормальный рынок для качественного сервиса. + + +--- + +ТЕПЕРЬ САМОЕ ВАЖНОЕ + +КАК ТЕБЕ ВЫПОЛНЯТЬ SLA БЕЗ БОЛИ + + +--- + +НЕ БРАТЬ ВСЕХ ПОДРЯД + +Только: + +нормальные объекты; + +нормальные бюджеты; + +адекватные заказчики. + + + +--- + +НЕ ПРОДАВАТЬ “ДЕШЕВО” + +Иначе SLA развалится. + + +--- + +ОБЯЗАТЕЛЬНО: + +журнал заявок; + +регламент; + +чек-листы; + +фотофиксация; + +история обслуживания. + + + +--- + +ТЕХНИЧЕСКИ ТЕБЕ НУЖНО + + +--- + +1. HELP DESK + +Минимум: + +Telegram; + +1С; + +Google Sheets. + + + +--- + +Лучше: + +GLPI; + +Zammad; + +Jira Service Desk. + + + +--- + +2. БАЗА ОБЪЕКТОВ + +Для каждого: + +схемы; + +пароли; + +оборудование; + +IP; + +контакты; + +история. + + + +--- + +3. ЧЕК-ЛИСТЫ + +Например: + +Видеонаблюдение: + +запись; + +архив; + +питание; + +доступ; + +фокус; + +время. + + + +--- + +4. SLA-ДОКУМЕНТ + +Это обязательно. + + +--- + +ПРИМЕР СТРУКТУРЫ SLA ДОГОВОРА + + +--- + +1. Предмет SLA + +Исполнитель обеспечивает техническое сопровождение +и контроль работоспособности систем безопасности объекта. + +2. Время реакции + +P1 — до 2 часов +P2 — до 4 часов +P3 — до 24 часов + +3. Регламентные работы + +— диагностика +— тестирование +— проверка журналов +— контроль архива +— проверка питания + +4. Отчетность + +По результатам работ предоставляется отчет. + +5. Ограничения SLA + +SLA не распространяется на: +— физическое повреждение оборудования +— аварии электропитания +— действия третьих лиц +— форс-мажор +--- + +ИТОГ + +SLA — это: + +не “дополнение”. + +Это: + +фундамент твоего нового бизнеса. + +Именно SLA: + +выводит тебя из монтажников; + +делает recurring revenue; + +дает стабильность; + +повышает чек; + +позволяет масштабироваться. + + +И это идеально совпадает с твоим профилем инженера и системного человека. \ No newline at end of file diff --git a/docs/Архетиктура бренда.md b/docs/Архетиктура бренда.md new file mode 100644 index 0000000..ee7f532 --- /dev/null +++ b/docs/Архетиктура бренда.md @@ -0,0 +1,934 @@ +Хорошо, это важный шаг — ты фактически выбираешь архитектуру бренда (brand architecture), а не просто название. От этого зависит: + +как тебя воспринимают (монтажники vs инженерная компания), + +как ты продаёшь SLA, + +насколько легко масштабируешься по РФ. + + +Я разложу каждый вариант строго по твоей модели: +👉 аудит → эксплуатация → SLA → инженерный сервис → масштабирование + + +--- + +1. AegisOne Engineering + +Суть позиционирования: + +инженерная компания полного цикла + + +--- + +Как воспринимается рынком: + +“серьёзная инженерная организация” + +ближе к проектированию / эксплуатации + +высокий уровень доверия B2B + + + +--- + +Сильные стороны: + +подходит под SLA и аудит + +звучит “дорого и системно” + +легко масштабируется на РФ + +не привязан к монтажу + + + +--- + +Слабые стороны: + +не сразу понятно “сервис” + +нужно объяснение через сайт/контент + + + +--- + +Лучше всего подходит для: + +✔ SLA обслуживание +✔ аудит объектов +✔ эксплуатация систем безопасности +✔ B2B рынок (гостиницы, склады, УК) + + +--- + +Итог: + +> ❗ ЛУЧШИЙ ОСНОВНОЙ БРЕНД (ядро компании) + + + + +--- + +2. AegisOne Service + +Суть: + +сервисная эксплуатационная компания + + +--- + +Восприятие: + +обслуживание + +ремонт + +“сервисники” + + + +--- + +Сильные стороны: + +понятный вход для клиентов + +хорошо продаёт обслуживание + +легко объяснить + + + +--- + +Слабые стороны: + +слишком “сервис/ремонт” + +занижает статус инженера + +хуже для крупных B2B объектов + + + +--- + +Лучше для: + +✔ абонентское обслуживание +✔ выездной сервис +✔ мелкие и средние клиенты +✔ поддержка SLA как продукт + + +--- + +Итог: + +> ⚠ можно как подразделение, но не основной бренд + + + + +--- + +3. AegisOne Security Engineering + +Суть: + +инженерия безопасности (очень сильный B2B бренд) + + +--- + +Восприятие: + +высокий уровень экспертизы + +ближе к проектированию и системной безопасности + +звучит “международно” + + + +--- + +Сильные стороны: + +максимальная экспертность + +идеально под аудит и SLA + +хорошо для РФ + будущего выхода за регион + +не “монтажники” + + + +--- + +Слабые стороны: + +длинное название + +чуть тяжеловесно в маркетинге + +требует сокращений (AegisOne SE) + + + +--- + +Лучше для: + +✔ аудит +✔ техническая экспертиза +✔ корпоративные объекты +✔ крупные B2B сделки +✔ федеральное масштабирование + + +--- + +Итог: + +> ⭐ ЛУЧШИЙ ДЛЯ ЭКСПЕРТНОСТИ И PREMIUM B2B + + + + +--- + +4. AegisOne Facility Security + +Суть: + +безопасность объектов (facility management) + + +--- + +Восприятие: + +управление объектами + +эксплуатация зданий + +FM-компании уровня “facility management” + + + +--- + +Сильные стороны: + +очень сильный корпоративный сегмент + +подходит для УК, ТЦ, гостиниц + +легко встраивается в FM-рынок + + + +--- + +Слабые стороны: + +менее технический фокус + +может размывать “инженерность” + +ближе к управлению недвижимостью + + + +--- + +Лучше для: + +✔ управляющие компании +✔ гостиничные сети +✔ торговые центры +✔ facility management подрядчики + + +--- + +Итог: + +> ⚠ хорошо как направление, но не ядро + + + + +--- + +5. AegisOne TechService + +Суть: + +техсервис / техническое обслуживание + + +--- + +Восприятие: + +ремонтная служба + +IT/техподдержка стиль + + + +--- + +Сильные стороны: + +простое и понятное + +легко продаётся “в лоб” + +подходит для мелких объектов + + + +--- + +Слабые стороны: + +дешёвое восприятие + +не тянет премиум SLA + +теряет инженерный статус + + + +--- + +Лучше для: + +✔ массовое обслуживание +✔ низкий чек рынок +✔ быстрые заявки +✔ простые сервисные работы + + +--- + +Итог: + +> ❌ не подходит под твою стратегию роста + + + + +--- + +6. РЕКОМЕНТИРУЕМАЯ СТРУКТУРА БРЕНДА (ОПТИМАЛЬНАЯ) + +Вот как это должно выглядеть в системе: + + +--- + +🧠 ГЛАВНЫЙ БРЕНД (основа) + +AegisOne Engineering + +👉 ядро: + +SLA + +аудит + +эксплуатация + +инженерный контроль + + + +--- + +🔧 СЕРВИСНОЕ ПОДРАЗДЕЛЕНИЕ + +AegisOne Service + +👉 внутри: + +выезды + +ремонт + +поддержка + +реакция по SLA + + + +--- + +🧪 ЭКСПЕРТНЫЙ КОНТУР + +AegisOne Security Engineering + +👉 используется для: + +сайта экспертного уровня + +презентаций + +коммерческих предложений + +крупных B2B переговоров + + + +--- + +🏢 ФУТУРОЛОГИЧЕСКИЙ КОНТУР (масштаб) + +AegisOne Facility Security + +👉 когда выйдешь в: + +УК + +сети отелей + +FM-контракты + + + +--- + +⚙️ ТЕХПОДДЕРЖКА (НЕ ОСНОВНАЯ) + +AegisOne TechService + +👉 можно использовать как: + +внутренний бренд + +дешёвый сегмент (если вдруг нужен) + + + +--- + +7. ЛУЧШАЯ СТРАТЕГИЯ (РЕАЛЬНО ПРАВИЛЬНАЯ) + +Вот как это делает сильная инженерная компания: + + +--- + +AegisOne Engineering + ↓ +AegisOne Security Engineering (экспертиза / доверие) + ↓ +AegisOne Service (исполнение SLA) + ↓ +AegisOne Facility Security (масштаб на УК и сети) + + +--- + +8. ВАЖНОЕ РЕШЕНИЕ ДЛЯ ТЕБЯ + +Если брать твою стратегию: + +уход от монтажа + +переход в SLA + +рост до 2–3 млн+ + +B2B рынок + +экспертность + + + +--- + +ТОП-1 выбор: + +✔ AegisOne Engineering + + +--- + +ТОП-2 усиление: + +✔ AegisOne Security Engineering + + +--- + +НЕ РЕКОМЕНДУЮ КАК ОСНОВУ: + +Service (снижает статус) + +TechService (дешевит бренд) + +Facility Security (узкая ниша на будущее) + + + +--- + +9. ЕСЛИ ХОЧЕШЬ ДАЛЬШЕ УСИЛИТЬ БРЕНД + +Я могу собрать тебе следующий уровень: + +нейминг архитектуры сайта (как разложить домены/страницы) + +логотип-систему (как должен выглядеть бренд инженерной компании) + +упаковку КП под каждый бренд + +позиционирование для тендеров + +“как выглядеть как федеральный подрядчик при локальном бизнесе” + + + +--- + +Если коротко: + +> тебе нужен не набор названий, а система уровней доверия + + + +И из всех вариантов: + +AegisOne Engineering — фундамент бизнеса. + +--- + +Отлично, теперь мы фиксируем **архитектуру компании как инженерной системы**, а не сайта. + +Ты строишь не “фирму услуг”, а: + +# AegisOne Engineering — операционную систему эксплуатации объектов + +Ниже даю тебе: + +1. структуру компании (как она “разложена в голове клиента”) +2. все разделы сайта / системы +3. документы (шаблоны, которые продают SLA сами) +4. сценарии взаимодействия с клиентом +5. стандарты (как ты выглядишь как федеральный подрядчик) + +--- + +# 1. СТРУКТУРА AEGISONE ENGINEERING + +## 🧠 ЯДРО КОМПАНИИ + +# AegisOne Engineering + +> Инженерная компания по эксплуатации и контролю систем безопасности объектов + +--- + +## ФУНКЦИОНАЛЬНЫЕ БЛОКИ + +```text +1. Engineering Audit (аудит и диагностика) +2. SLA Operations (эксплуатация) +3. Incident Response (аварийные работы) +4. Technical Supervision (контроль подрядчиков) +5. Documentation & Compliance (документация) +6. Risk Engineering (анализ рисков) +``` + +--- + +# 2. СТРУКТУРА САЙТА (КАК ДОЛЖЕН ВЫГЛЯДЕТЬ AEGISONE) + +--- + +# 🏠 ГЛАВНАЯ + +## `/` + +### Название: + +AegisOne Engineering + +### Смысл: + +> инженерная эксплуатация систем безопасности объектов + +--- + +# 3. РАЗДЕЛЫ САЙТА + +--- + +# 3.1 ENGINEERING AUDIT + +## `/engineering-audit/` + +### Описание: + +```text +Технический аудит систем безопасности с оценкой рисков эксплуатации. + +Проверка: +- видеонаблюдения +- СКУД +- пожарной сигнализации +- инфраструктуры объекта + +Результат: +инженерное заключение и карта рисков объекта +``` + +--- + +### Подразделы: + +- `/engineering-audit/video-surveillance` +- `/engineering-audit/access-control` +- `/engineering-audit/fire-alarm` +- `/engineering-audit/risk-report` + +--- + +# 3.2 SLA OPERATIONS + +## `/sla-operations/` + +### Описание: + +```text +Постоянное техническое сопровождение объектов с регламентами и SLA. + +Мы обеспечиваем: +- стабильную работу систем +- контроль состояния оборудования +- аварийное реагирование +- регулярные проверки +``` + +--- + +### Подразделы: + +- `/sla-operations/start` +- `/sla-operations/business` +- `/sla-operations/enterprise` +- `/sla-operations/sla-regulations` + +--- + +# 3.3 INCIDENT RESPONSE + +## `/incident-response/` + +### Описание: + +```text +Экстренное устранение неисправностей систем безопасности. + +Сценарии: +- отказ видеонаблюдения +- потеря архива +- сбой СКУД +- проблемы пожарной сигнализации +``` + +--- + +### Подразделы: + +- `/incident-response/critical` +- `/incident-response/emergency-call` +- `/incident-response/post-incident-report` + +--- + +# 3.4 TECHNICAL SUPERVISION + +## `/technical-supervision/` + +### Описание: + +```text +Контроль подрядчиков и проверка качества работ сторонних организаций. + +Мы выступаем как независимый инженерный контроль объекта. +``` + +--- + +### Подразделы: + +- `/technical-supervision/contractor-check` +- `/technical-supervision/acceptance-testing` +- `/technical-supervision/project-review` + +--- + +# 3.5 DOCUMENTATION & COMPLIANCE + +## `/documentation-compliance/` + +### Описание: + +```text +Ведение и восстановление инженерной документации объектов. + +Системы: +- схемы +- журналы +- паспорта оборудования +- регламенты эксплуатации +``` + +--- + +### Подразделы: + +- `/documentation-compliance/passport` +- `/documentation-compliance/regulations` +- `/documentation-compliance/reporting` + +--- + +# 3.6 RISK ENGINEERING + +## `/risk-engineering/` + +### Описание: + +```text +Анализ рисков эксплуатации инженерных систем безопасности объекта. + +Мы оцениваем не оборудование, а последствия его отказа. +``` + +--- + +### Подразделы: + +- `/risk-engineering/video-risk` +- `/risk-engineering/fire-risk` +- `/risk-engineering/access-risk` + +--- + +# 4. ШАБЛОНЫ ДОКУМЕНТОВ (ЭТО ВАЖНЕЕ САЙТА) + +Это твой “продукт доверия”. + +--- + +# 4.1 ИНЖЕНЕРНОЕ ЗАКЛЮЧЕНИЕ + +```text +AegisOne Engineering +Инженерное заключение по состоянию систем безопасности + +Объект: __________ +Дата: __________ + +1. Проведённые проверки: +- видеонаблюдение +- СКУД +- пожарная сигнализация +- инфраструктура + +2. Выявленные отклонения: +- __________ +- __________ + +3. Критические риски: +- __________ + +4. Оценка состояния системы: +[ ] стабильная +[ ] частично стабильная +[ ] требует вмешательства + +5. Заключение инженера: + +Система безопасности объекта требует/не требует +технического сопровождения по SLA модели эксплуатации. +``` + +--- + +# 4.2 SLA СОГЛАШЕНИЕ + +```text +AegisOne Engineering +Service Level Agreement (SLA) + +1. Объект обслуживания +2. Перечень систем +3. Время реакции: + P1 — 2 часа + P2 — 4 часа + P3 — 24 часа + +4. Регламент обслуживания: +- ежемесячные проверки +- отчётность +- диагностика + +5. Зоны ответственности: +- заказчик +- инженерная компания + +6. Исключения: +- повреждение третьими лицами +- форс-мажор +``` + +--- + +# 4.3 АКТ ТЕХНИЧЕСКОГО АУДИТА + +```text +Проверено: +- видеонаблюдение +- СКУД +- пожарная система + +Результаты: +- __________ + +Рекомендации: +- критические +- важные +- плановые +``` + +--- + +# 4.4 ПАСПОРТ ОБЪЕКТА + +```text +AegisOne Engineering +Паспорт инженерных систем объекта + +Содержит: +- схема систем +- оборудование +- IP-адреса +- точки отказа +- история обслуживания +``` + +--- + +# 4.5 ОТЧЁТ ПО ИНЦИДЕНТУ + +```text +Описание инцидента: +Время реакции: +Причина: +Последствия: +Устранение: +Рекомендации: +``` + +--- + +# 5. СЦЕНАРИИ ВЗАИМОДЕЙСТВИЯ + +--- + +## СЦЕНАРИЙ 1 — ВХОД + +```text +Контакт → мини-диагностика → аудит → отчет → SLA +``` + +--- + +## СЦЕНАРИЙ 2 — АВАРИЯ + +```text +Инцидент → выезд → устранение → отчет → предложение SLA +``` + +--- + +## СЦЕНАРИЙ 3 — ПАРТНЁРСКИЙ ВХОД + +```text +Партнёр → объект → аудит → сопровождение +``` + +--- + +## СЦЕНАРИЙ 4 — ТЕНДЕР / КОММЕРЧЕСКИЙ ВХОД + +```text +Запрос → аудит → КП → SLA контракт +``` + +--- + +# 6. КАК ЭТО ВОСПРИНИМАЕТСЯ РЫНКОМ + +Ты становишься не: + +❌ монтажной фирмой +❌ сервисниками +❌ подрядчиком + +--- + +А: + +# 🧠 инженерной эксплуатационной системой объектов + +--- + +# 7. ГЛАВНЫЙ ЭФФЕКТ ЭТОЙ УПАКОВКИ + +## Клиент думает: + +> “Это не монтажники. Это те, кто контролирует безопасность объекта как систему.” + +--- + +# 8. СЛЕДУЮЩИЙ УРОВЕНЬ (ЕСЛИ ПРОДОЛЖАЕМ) + +Я могу собрать тебе дальше: + +- автоматическую CRM (Notion / 1C модель под эти разделы) +- шаблон коммерческого предложения под каждый блок +- визуальную архитектуру сайта (UI/UX) +- систему KPI инженеров +- модель масштабирования до федерального уровня + +--- + +# ИТОГ + +Ты только что получил: + +> полноценную архитектуру инженерной компании уровня enterprise + +И если это внедрить — ты перестаёшь быть “подрядчиком”. + +Ты становишься: + +# операционной системой эксплуатации объектов безопасности. \ No newline at end of file diff --git a/docs/Архитектура компании.md b/docs/Архитектура компании.md new file mode 100644 index 0000000..a896b4e --- /dev/null +++ b/docs/Архитектура компании.md @@ -0,0 +1,459 @@ +Отлично, теперь мы фиксируем архитектуру компании как инженерной системы, а не сайта. + +Ты строишь не “фирму услуг”, а: + +AegisOne Engineering — операционную систему эксплуатации объектов + +Ниже даю тебе: + +1. структуру компании (как она “разложена в голове клиента”) + + +2. все разделы сайта / системы + + +3. документы (шаблоны, которые продают SLA сами) + + +4. сценарии взаимодействия с клиентом + + +5. стандарты (как ты выглядишь как федеральный подрядчик) + + + + +--- + +1. СТРУКТУРА AEGISONE ENGINEERING + +🧠 ЯДРО КОМПАНИИ + +AegisOne Engineering + +> Инженерная компания по эксплуатации и контролю систем безопасности объектов + + + + +--- + +ФУНКЦИОНАЛЬНЫЕ БЛОКИ + +1. Engineering Audit (аудит и диагностика) +2. SLA Operations (эксплуатация) +3. Incident Response (аварийные работы) +4. Technical Supervision (контроль подрядчиков) +5. Documentation & Compliance (документация) +6. Risk Engineering (анализ рисков) + + +--- + +2. СТРУКТУРА САЙТА (КАК ДОЛЖЕН ВЫГЛЯДЕТЬ AEGISONE) + + +--- + +🏠 ГЛАВНАЯ + +/ + +Название: + +AegisOne Engineering + +Смысл: + +> инженерная эксплуатация систем безопасности объектов + + + + +--- + +3. РАЗДЕЛЫ САЙТА + + +--- + +3.1 ENGINEERING AUDIT + +/engineering-audit/ + +Описание: + +Технический аудит систем безопасности с оценкой рисков эксплуатации. + +Проверка: +- видеонаблюдения +- СКУД +- пожарной сигнализации +- инфраструктуры объекта + +Результат: +инженерное заключение и карта рисков объекта + + +--- + +Подразделы: + +/engineering-audit/video-surveillance + +/engineering-audit/access-control + +/engineering-audit/fire-alarm + +/engineering-audit/risk-report + + + +--- + +3.2 SLA OPERATIONS + +/sla-operations/ + +Описание: + +Постоянное техническое сопровождение объектов с регламентами и SLA. + +Мы обеспечиваем: +- стабильную работу систем +- контроль состояния оборудования +- аварийное реагирование +- регулярные проверки + + +--- + +Подразделы: + +/sla-operations/start + +/sla-operations/business + +/sla-operations/enterprise + +/sla-operations/sla-regulations + + + +--- + +3.3 INCIDENT RESPONSE + +/incident-response/ + +Описание: + +Экстренное устранение неисправностей систем безопасности. + +Сценарии: +- отказ видеонаблюдения +- потеря архива +- сбой СКУД +- проблемы пожарной сигнализации + + +--- + +Подразделы: + +/incident-response/critical + +/incident-response/emergency-call + +/incident-response/post-incident-report + + + +--- + +3.4 TECHNICAL SUPERVISION + +/technical-supervision/ + +Описание: + +Контроль подрядчиков и проверка качества работ сторонних организаций. + +Мы выступаем как независимый инженерный контроль объекта. + + +--- + +Подразделы: + +/technical-supervision/contractor-check + +/technical-supervision/acceptance-testing + +/technical-supervision/project-review + + + +--- + +3.5 DOCUMENTATION & COMPLIANCE + +/documentation-compliance/ + +Описание: + +Ведение и восстановление инженерной документации объектов. + +Системы: +- схемы +- журналы +- паспорта оборудования +- регламенты эксплуатации + + +--- + +Подразделы: + +/documentation-compliance/passport + +/documentation-compliance/regulations + +/documentation-compliance/reporting + + + +--- + +3.6 RISK ENGINEERING + +/risk-engineering/ + +Описание: + +Анализ рисков эксплуатации инженерных систем безопасности объекта. + +Мы оцениваем не оборудование, а последствия его отказа. + + +--- + +Подразделы: + +/risk-engineering/video-risk + +/risk-engineering/fire-risk + +/risk-engineering/access-risk + + + +--- + +4. ШАБЛОНЫ ДОКУМЕНТОВ (ЭТО ВАЖНЕЕ САЙТА) + +Это твой “продукт доверия”. + + +--- + +4.1 ИНЖЕНЕРНОЕ ЗАКЛЮЧЕНИЕ + +AegisOne Engineering +Инженерное заключение по состоянию систем безопасности + +Объект: __________ +Дата: __________ + +1. Проведённые проверки: +- видеонаблюдение +- СКУД +- пожарная сигнализация +- инфраструктура + +2. Выявленные отклонения: +- __________ +- __________ + +3. Критические риски: +- __________ + +4. Оценка состояния системы: +[ ] стабильная +[ ] частично стабильная +[ ] требует вмешательства + +5. Заключение инженера: + +Система безопасности объекта требует/не требует +технического сопровождения по SLA модели эксплуатации. + + +--- + +4.2 SLA СОГЛАШЕНИЕ + +AegisOne Engineering +Service Level Agreement (SLA) + +1. Объект обслуживания +2. Перечень систем +3. Время реакции: + P1 — 2 часа + P2 — 4 часа + P3 — 24 часа + +4. Регламент обслуживания: +- ежемесячные проверки +- отчётность +- диагностика + +5. Зоны ответственности: +- заказчик +- инженерная компания + +6. Исключения: +- повреждение третьими лицами +- форс-мажор + + +--- + +4.3 АКТ ТЕХНИЧЕСКОГО АУДИТА + +Проверено: +- видеонаблюдение +- СКУД +- пожарная система + +Результаты: +- __________ + +Рекомендации: +- критические +- важные +- плановые + + +--- + +4.4 ПАСПОРТ ОБЪЕКТА + +AegisOne Engineering +Паспорт инженерных систем объекта + +Содержит: +- схема систем +- оборудование +- IP-адреса +- точки отказа +- история обслуживания + + +--- + +4.5 ОТЧЁТ ПО ИНЦИДЕНТУ + +Описание инцидента: +Время реакции: +Причина: +Последствия: +Устранение: +Рекомендации: + + +--- + +5. СЦЕНАРИИ ВЗАИМОДЕЙСТВИЯ + + +--- + +СЦЕНАРИЙ 1 — ВХОД + +Контакт → мини-диагностика → аудит → отчет → SLA + + +--- + +СЦЕНАРИЙ 2 — АВАРИЯ + +Инцидент → выезд → устранение → отчет → предложение SLA + + +--- + +СЦЕНАРИЙ 3 — ПАРТНЁРСКИЙ ВХОД + +Партнёр → объект → аудит → сопровождение + + +--- + +СЦЕНАРИЙ 4 — ТЕНДЕР / КОММЕРЧЕСКИЙ ВХОД + +Запрос → аудит → КП → SLA контракт + + +--- + +6. КАК ЭТО ВОСПРИНИМАЕТСЯ РЫНКОМ + +Ты становишься не: + +❌ монтажной фирмой +❌ сервисниками +❌ подрядчиком + + +--- + +А: + +🧠 инженерной эксплуатационной системой объектов + + +--- + +7. ГЛАВНЫЙ ЭФФЕКТ ЭТОЙ УПАКОВКИ + +Клиент думает: + +> “Это не монтажники. Это те, кто контролирует безопасность объекта как систему.” + + + + +--- + +8. СЛЕДУЮЩИЙ УРОВЕНЬ (ЕСЛИ ПРОДОЛЖАЕМ) + +Я могу собрать тебе дальше: + +автоматическую CRM (Notion / 1C модель под эти разделы) + +шаблон коммерческого предложения под каждый блок + +визуальную архитектуру сайта (UI/UX) + +систему KPI инженеров + +модель масштабирования до федерального уровня + + + +--- + +ИТОГ + +Ты только что получил: + +> полноценную архитектуру инженерной компании уровня enterprise + + + +И если это внедрить — ты перестаёшь быть “подрядчиком”. + +Ты становишься: + +операционной системой эксплуатации объектов безопасности. \ No newline at end of file diff --git a/docs/Блог.md b/docs/Блог.md new file mode 100644 index 0000000..0dc4fbd --- /dev/null +++ b/docs/Блог.md @@ -0,0 +1,543 @@ +Хороший вопрос — блог в твоей нише (системы безопасности + SLA + B2B + обслуживание) это не “контент-маркетинг”, а: + +> инструмент продажи доверия, SLA и инженерной компетентности + + + +Если блог сделан правильно, он заменяет: + +отдел продаж (частично) + +коммерческие предложения (частично) + +презентации + +кейсы + +и даже тендерные обоснования + + + +--- + +1. ГЛАВНАЯ ОШИБКА БОЛЬШИНСТВА БЛОГОВ В ТВОЕЙ НИШЕ + +Они делают: + +“мы установили систему” + +“мы молодцы” + +“как выбрать камеру” + +“новости компании” + + +👉 директору (заказчику B2B) это НЕ интересно + + +--- + +2. ЧТО ХОЧЕТ ВИДЕТЬ ДИРЕКТОР (ЗАКАЗЧИК B2B) + +Директору не нужен контент. + +Ему нужно: + +1. Снижение риска + +“у меня не сломается объект” + +“меня не оштрафуют” + +“у меня будет доказательная база” + + + +--- + +2. Управляемость + +SLA + +контроль + +прозрачность + +ответственность + + + +--- + +3. Деньги и потери + +сколько стоит простой + +сколько стоит отказ системы + +где риски потерь + + + +--- + +4. Компетентность подрядчика + +понимает ли подрядчик реальные риски + +умеет ли он управлять системой, а не “чинить камеры” + + + +--- + +3. КАК ДОЛЖЕН БЫТЬ УСТРОЕН БЛОГ (АРХИТЕКТУРА) + +BLOG AEGISONE + +1. Risk Engineering (риски объектов) +2. SLA & Service (обслуживание) +3. Incident Cases (разбор аварий) +4. Infrastructure Deep Dive (техническая экспертиза) +5. Compliance / MCHS / Audit (регуляторика) +6. Economics of Security (экономика потерь) +7. Case Studies (реальные объекты) + + +--- + +4. КАТЕГОРИИ БЛОГА (ПОЛНАЯ СТРУКТУРА) + + +--- + +4.1 RISK ENGINEERING (САМАЯ ВАЖНАЯ) + +Суть: + +Показывает директору: + +> где он уже теряет деньги, даже если всё “работает” + + + + +--- + +Примеры статей: + +“Почему 70% объектов теряют видеодоказательства и не знают об этом” + +“Что происходит, когда SLA пожарной системы формальный” + +“7 скрытых точек отказа в СКУД” + + + +--- + +Формат: + +риск + +последствия + +реальные сценарии + +стоимость потерь + + + +--- + +Почему это продаёт: + +👉 вызывает страх + осознание потерь + + +--- + +4.2 SLA & SERVICE (ТВОЯ ДЕНЕЖНАЯ КАТЕГОРИЯ) + +Суть: + +объясняет, почему SLA = бизнес-стабильность + + +--- + +Примеры: + +“Почему обслуживание пожарной сигнализации — это не обслуживание, а юридическая ответственность” + +“Как SLA снижает риск остановки бизнеса” + +“Почему разовые выезды не работают” + + + +--- + +Формат: + +объяснение SLA + +цифры + +последствия без SLA + +кейсы + + + +--- + +4.3 INCIDENT CASES (СИЛЬНЕЙШИЙ ДОВЕРИТЕЛЬНЫЙ БЛОК) + +Суть: + +реальные аварии + + +--- + +Примеры: + +“Как один отказ СКУД остановил склад на 14 часов” + +“Пожарная система без регламента: разбор инцидента” + +“Почему не работал архив видеонаблюдения 3 месяца” + + + +--- + +Структура: + +1. Что случилось +2. Почему это произошло +3. Какие были последствия +4. Как это выявили +5. Как исправили +6. Как избежать + + +--- + +Это: + +👉 главный доверительный инструмент + + +--- + +4.4 INFRASTRUCTURE DEEP DIVE + +Суть: + +показывает инженерную глубину + + +--- + +Примеры: + +“Как устроена современная система видеонаблюдения на объекте 10 000 м²” + +“Почему сеть — это главный риск безопасности” + +“UPS как критический элемент безопасности” + + + +--- + +4.5 COMPLIANCE / MCHS + +Суть: + +работа с нормативкой + + +--- + +Примеры: + +“Что проверяет МЧС в 2026 году” + +“Типовые ошибки объектов при проверках” + +“Почему формальное ТО приводит к штрафам” + + + +--- + +4.6 ECONOMICS OF SECURITY + +Суть: + +деньги, потери, риск + + +--- + +Примеры: + +“Сколько стоит 1 час простоя склада” + +“Стоимость потери видеодоказательства” + +“Почему дешёвый подрядчик обходится дороже” + + + +--- + +4.7 CASE STUDIES (ОСНОВА ПРОДАЖ) + +Суть: + +твои реальные объекты + + +--- + +Формат: + +объект + +проблемы + +что сделали + +результат + +SLA модель + + + +--- + +5. КАК ДОЛЖЕН ВЫГЛЯДЕТЬ БЛОГ (UI/UX) + + +--- + +5.1 НЕ ДОЛЖНО БЫТЬ: + +❌ “новости компании” +❌ “мы молодцы” +❌ маркетинговых текстов +❌ воды + + +--- + +5.2 ДОЛЖНО БЫТЬ: + +Главная страница блога: + +“инженерные риски” + +“разбор инцидентов” + +“стоимость отказов” + +“кейсы объектов” + + + +--- + +5.3 Визуально: + +строгий технический стиль + +таблицы + +схемы + +диаграммы + +риск-блоки + + + +--- + +6. КАЖДАЯ СТАТЬЯ ДОЛЖНА ПРОДАВАТЬ + + +--- + +структура статьи (обязательная): + +1. Проблема +2. Реальный сценарий +3. Что происходит технически +4. Риски +5. Финансовые последствия +6. Как решается +7. Как это делает AegisOne + + +--- + +7. ПРИМЕР “ПРОДАЮЩЕЙ” СТАТЬИ + + +--- + +Заголовок: + +> “Почему 80% систем видеонаблюдения не дают доказательств в момент инцидента” + + + + +--- + +Внутри: + +потеря архива + +сбои HDD + +неправильная настройка + +отсутствие контроля + + + +--- + +Финал: + +> “в AegisOne это решается через SLA мониторинг и инженерный контроль” + + + + +--- + +8. КАК БЛОГ ПРИВОДИТ КЛИЕНТА + + +--- + +Статья → Осознание риска → Страх потерь → Аудит → SLA контракт + + +--- + +9. ГЛАВНАЯ ЛОГИКА БЛОГА + +Ты не пишешь статьи. + +Ты создаёшь: + +> систему формирования потребности в SLA + + + + +--- + +10. ЧТО ДЕЛАЕТ БЛОГ СИЛЬНЫМ (КРИТИЧНО) + + +--- + +1. РЕАЛЬНЫЕ ЦИФРЫ + +потери + +простои + +риски + + + +--- + +2. РЕАЛЬНЫЕ ИНЦИДЕНТЫ + +аварии + +сбои + +последствия + + + +--- + +3. ИНЖЕНЕРНАЯ ГЛУБИНА + +схемы + +логика систем + +причины отказов + + + +--- + +4. ЭКОНОМИКА + +сколько стоит ошибка + + + +--- + +11. ЧТО НЕЛЬЗЯ ДЕЛАТЬ + + +--- + +❌ SEO-статьи “для трафика” +❌ поверхностные обзоры +❌ “лайфхаки безопасности” +❌ маркетинг + + +--- + +12. ИТОГ + +Правильный блог в твоей модели — это: + +> “система инженерного страха + доверия + экспертизы” + + + + +--- + +13. ЕСЛИ РАЗВИВАТЬ ДАЛЬШЕ + +Я могу дальше собрать: + +30 готовых статей под твой блог (с заголовками + структурами) + +SEO-структуру под Краснодарский край + +Telegram-воронку из блога + +автоматическое превращение статей в заявки на аудит + +систему “контент → SHS влияние” + + + +--- + +Если коротко: + +👉 блог в твоей модели — это не контент +👉 это “машина продажи SLA через понимание риска” \ No newline at end of file diff --git a/docs/Воронка.md b/docs/Воронка.md new file mode 100644 index 0000000..e06f6ee --- /dev/null +++ b/docs/Воронка.md @@ -0,0 +1,445 @@ +Ок, здесь мы уже собираем не “маркетинг”, а полноценную B2B-машину: + +# вход → доверие → аудит → SLA → долгий повторяющийся доход + +Ты как раз в нише, где деньги делаются не на разовых монтажах, а на: + +> эксплуатации + рисках + ответственности + +--- + +# ЧАСТЬ 1. ПЕРВАЯ ВОРОНКА КЛИЕНТОВ (КРАСНОДАРСКИЙ КРАЙ) + +--- + +# 0. ЛОГИКА ВОРОНКИ + +Твоя воронка НЕ классическая: + +❌ “реклама → заявка → продажа” + +У тебя: + +# контент → доверие → аудит → выявление проблем → SLA + +--- + +# 1. ВХОД В ВОРОНКУ (ТОЧКИ ПРИКОСНОВЕНИЯ) + +## 1.1. Локальный B2B рынок (основа) + +Ты работаешь не по всей РФ, а: + +- Краснодар +- Сочи +- Новороссийск +- Анапа +- Армавир +- промзоны + логистика + гостиницы + +--- + +## 1.2. Каналы входа (без агрессивного маркетинга) + +### 1) Telegram (основной канал доверия) + +Контент + кейсы + разборы + +--- + +### 2) Яндекс / Google SEO + +Страницы: + +- аудит систем безопасности +- SLA обслуживание +- обслуживание видеонаблюдения Краснодар +- обслуживание пожарной сигнализации + +--- + +### 3) Партнеры (очень важно) + +- электрики +- IT-аутсорс +- управляющие компании +- проектировщики +- пожарники +- строители + +--- + +### 4) Прямые инженерные выходы + +НЕ продажи. + +Формат: + +> “если нужен технический аудит или проверка систем — можем подключиться” + +--- + +# 2. ПЕРВЫЙ ПРОДУКТ (ВХОД В ДЕНЬГИ) + +# 🔥 Технический аудит объекта + +--- + +## Почему это ядро воронки + +Потому что: + +- легко продать без давления +- низкий чек +- высокая ценность +- выявляет проблемы +- логично ведёт в SLA + +--- + +## Цена (Краснодарский край) + +- малый объект: 15–25 тыс +- средний: 25–50 тыс +- крупный: 50–100 тыс + +--- + +## Что важно + +Аудит НЕ продаёт услуги. + +Он: + +# показывает проблемы → создаёт необходимость SLA + +--- + +# 3. ВТОРОЙ ЭТАП + +# 🔥 “Диагностика + отчет” + +После аудита: + +Ты выдаешь документ: + +- риски +- неисправности +- слабые места +- последствия +- рекомендации + +--- + +## Ключевая мысль отчета: + +> “Система формально работает, но не защищает объект” + +--- + +# 4. ТРЕТИЙ ЭТАП + +# 🔥 ПЕРЕХОД В SLA + +--- + +## Это главный момент денег + +Ты НЕ продаешь обслуживание. + +Ты продаешь: + +# “устранение рисков эксплуатации” + +--- + +## Как выглядит оффер + +> Мы берем объект на техническое сопровождение с SLA контролем состояния систем безопасности. + +--- + +## Конверсия + +Из аудита → в SLA: + +- 30% слабые объекты +- 50% средние +- 10–20% сильные (очень хорошие деньги) + +--- + +# 5. SLA (ПРОДУКТ ДЕНЕГ) + +--- + +## Структура: + +### START + +25–40k + +--- + +### BUSINESS + +60–120k + +--- + +### ENTERPRISE + +150–400k + +--- + +## Что ты продаешь на самом деле: + +НЕ обслуживание + +А: + +# “инженерную стабильность объекта” + +--- + +# 6. ПОЛНАЯ ВОРОНКА В ВИДЕ СХЕМЫ + +``` +Контент / SEO / партнеры + ↓ + Лид (запрос) + ↓ + Мини-аудит (или первичная диагностика) + ↓ + Полный технический аудит + ↓ + Отчет с рисками + ↓ + SLA предложение + ↓ + Долгосрочный контракт +``` + +--- + +# ЧАСТЬ 2. МОДЕЛЬ РОСТА ДО 2–3 МЛН ₽/МЕС RECURRENT + +--- + +# 1. КЛЮЧЕВОЕ ПРАВИЛО + +Ты не масштабируешь монтаж. + +Ты масштабируешь: + +# количество объектов на SLA + +--- + +# 2. МАТЕМАТИКА МОДЕЛИ + +--- + +## Вариант реалистичный (Краснодар → край → РФ) + +### Средний чек SLA: + +80 000 ₽ + +--- + +## Тебе нужно: + +### 25–35 объектов + +--- + +## Доход: + +``` +30 объектов × 80 000 ₽ = 2 400 000 ₽/мес +``` + +--- + +# 3. КАК ЭТО ДОСТИГАЕТСЯ + +--- + +## ЭТАП 1 — 0–500k + +Фокус: + +- аудит +- первые SLA +- 5–7 объектов + +--- + +## ЭТАП 2 — 500k–1.5M + +Фокус: + +- стабильные SLA +- отбор клиентов +- отказ от токсичных объектов +- первые крупные клиенты + +--- + +## ЭТАП 3 — 1.5M–3M + +Фокус: + +- стандартизация +- регламенты +- техподдержка +- 2–3 инженера +- удаленный контроль + +--- + +# 4. КЛЮЧЕВОЙ РЫЧАГ РОСТА + +--- + +# НЕ реклама + +# НЕ продажи + +# А: + +## “плотность объектов на инженера” + +--- + +# 5. СИСТЕМА РОСТА + +--- + +## 1 инженер = 8–12 объектов + +--- + +## значит: + +|Кол-во инженеров|Доход| +|---|---| +|1|0.8–1.2M| +|2|1.6–2.4M| +|3|2.4–3.6M| + +--- + +# 6. ГЛАВНЫЕ РЫЧАГИ МАСШТАБА + +--- + +## 1. Аудит как продукт входа + +(дешево / легко / продается сам) + +--- + +## 2. SLA как подписка + +(деньги каждый месяц) + +--- + +## 3. Контент как доверие + +(заменяет рекламу) + +--- + +## 4. Партнерки + +(дают теплые объекты) + +--- + +## 5. Отказ от дешевых клиентов + +(самый важный фактор) + +--- + +# 7. КРИТИЧЕСКИЙ МОМЕНТ + +--- + +Если ты не сделаешь это: + +> “мы не берем монтаж без SLA” + +ты останешься в рынке: + +- демпинга +- разовых работ +- кассовых разрывов + +--- + +# 8. ИДЕАЛЬНАЯ ЭВОЛЮЦИЯ БИЗНЕСА + +--- + +## Было: + +монтажники + +--- + +## Стало: + +SLA + эксплуатация + +--- + +## Будет: + +# внешний инженерный отдел объектов + +--- + +# 9. СИЛЬНЫЙ СДВИГ МЫШЛЕНИЯ + +--- + +Ты больше не продаешь: + +❌ камеры +❌ монтаж +❌ оборудование + +--- + +Ты продаешь: + +# “спокойствие собственника за техническую инфраструктуру объекта” + +--- + +# ЕСЛИ СЖАТЬ В ОДНУ ФОРМУЛУ: + +--- + +> Аудит → выявление рисков → SLA → долгосрочный инженерный доход + +--- + +# ЕСЛИ ДАЛЬШЕ ДВИГАТЬСЯ + +Я могу следующим шагом собрать тебе: + +- точную систему продаж аудита (скрипты + сообщения) +- упаковку Telegram как лидогенератора +- CRM воронку под SLA +- регламент инженера (чтобы масштабироваться) +- финансовую модель до 5–10 млн/мес + +Это уже будет не “бизнес идея”, а: + +# операционная система инженерной компании. \ No newline at end of file diff --git a/docs/Воронки телеграм и crm.md b/docs/Воронки телеграм и crm.md new file mode 100644 index 0000000..6e85df1 --- /dev/null +++ b/docs/Воронки телеграм и crm.md @@ -0,0 +1,397 @@ +Отлично, это уже уровень, где бизнес начинает “дышать сам”: +Telegram → доверие → аудит → SLA → регулярный доход. + +Разобьём на две системы: + +# 1) Telegram как лидогенератор (не блог, а воронка) + +# 2) CRM-воронка под SLA (повторяемые деньги) + +--- + +# 1. TELEGRAM КАК ЛИДОГЕНЕРАТОР (ИНЖЕНЕРНАЯ МОДЕЛЬ) + +--- + +## 1.1. Главная ошибка всех + +Обычно делают: + +- “посты про монтаж” +- “новости компании” +- “фото объектов” + +👉 это НЕ генерирует SLA + +--- + +## 1.2. Твоя роль канала + +Твой Telegram — это: + +# “инженерный журнал рисков объектов” + +Не маркетинг. Не реклама. Не блог. + +--- + +## 1.3. Главная цель Telegram + +Не подписки. + +А: + +> заявки на аудит + +--- + +# 2. СТРУКТУРА TELEGRAM-КАНАЛА + +--- + +## 2.1. Закреп (ОБЯЗАТЕЛЬНО) + +```text +Мы занимаемся инженерной эксплуатацией систем безопасности коммерческих объектов. + +Перед обслуживанием всегда проводим технический аудит: +— видеонаблюдение +— СКУД +— пожарная сигнализация +— инфраструктура + +Цель — выявить скрытые риски, которые не видны в ежедневной работе. + +📌 Если нужно — можем провести аудит объекта и выдать инженерное заключение. + +Написать: @your_contact +``` + +--- + +## 2.2. 3 типа контента (ВСЕГДА) + +--- + +### 1) РИСКИ (60%) + +👉 основа роста + +Примеры: + +- “Почему архив видеонаблюдения исчезает незаметно” +- “Почему пожарка работает, но не защищает” +- “3 скрытые ошибки СКУД” + +--- + +### 2) КЕЙСЫ (25%) + +👉 доверие + +Примеры: + +- “Аудит склада: 12 критических ошибок” +- “Гостиница без резервного питания” + +--- + +### 3) ЭКСПЕРТИЗА (15%) + +👉 статус + +Примеры: + +- “Как должен выглядеть нормальный SLA” +- “Что проверяет инженер, а не монтажник” + +--- + +# 2.3. ФОРМАТ ПОСТОВ (СТАНДАРТ) + +```text +1. Проблема +2. Инженерное объяснение +3. Последствия для бизнеса +4. Спокойный вывод +``` + +--- + +## Пример готового поста + +```text +Большинство объектов уверены, что видеонаблюдение работает корректно. + +На практике часто есть скрытая проблема — архив. + +Камеры могут показывать картинку, но запись: +— не сохраняется полностью +— перезаписывается раньше срока +— теряет часть каналов +— сбоит из-за питания или дисков + +Это не видно в ежедневной работе. + +Проблема проявляется только после инцидента. + +По сути, система существует, но не выполняет свою функцию хранения доказательной базы. + +Именно поэтому видеонаблюдение нужно рассматривать как систему эксплуатации, а не просто установленное оборудование. +``` + +--- + +# 2.4. CTA (ОЧЕНЬ ВАЖНО) + +Каждый 3–4 пост: + +```text +Если нужно — можем провести технический аудит объекта и проверить состояние систем безопасности. +``` + +--- + +# 2.5. ЛИД-МАГНИТ (ОЧЕНЬ СИЛЬНЫЙ РЫЧАГ) + +--- + +## PDF: + +# “Чек-лист скрытых рисков систем безопасности” + +или + +# “10 ошибок эксплуатации объектов” + +--- + +## Telegram пост: + +```text +Мы собрали чек-лист из 10 критических ошибок, которые встречаются на большинстве объектов. + +Если хотите — отправим бесплатно. +``` + +👉 это даёт первые контакты без давления + +--- + +# 3. TELEGRAM → ВОРОНКА + +```text +Контент + ↓ +Интерес + ↓ +Чек-лист / диалог + ↓ +Диагностика (мини-аудит) + ↓ +Полный аудит + ↓ +SLA +``` + +--- + +# 4. CRM-ВОРОНКА ПОД SLA + +Теперь самое важное. + +Ты не продаёшь “услуги”. Ты ведёшь объекты по состояниям. + +--- + +# 4.1. СТРУКТУРА CRM (СТАДИИ) + +--- + +## 1. ЛИД + +Источник: + +- Telegram +- сайт +- партнер +- холодный контакт + +--- + +## 2. ПЕРВИЧНЫЙ КОНТАКТ + +- написал / ответил +- уточнение объекта + +--- + +## 3. КВАЛИФИКАЦИЯ + +Вопросы: + +- тип объекта +- системы +- есть ли подрядчик +- проблемы + +--- + +## 4. ДИАГНОСТИКА (мини-аудит) + +- быстрый осмотр +- удаленно или выезд +- выявление боли + +--- + +## 5. ПОЛНЫЙ АУДИТ + +- инженерный выезд +- отчет +- риски + +--- + +## 6. ПРЕДЛОЖЕНИЕ SLA + +- тариф +- регламент +- реакция + +--- + +## 7. ПЕРЕГОВОРЫ + +- согласование цены +- условия + +--- + +## 8. ДОГОВОР SLA + +- подписан +- объект активен + +--- + +## 9. АКТИВНЫЙ SLA + +- обслуживание +- отчёты + +--- + +## 10. РАСШИРЕНИЕ + +- новые объекты +- доп. системы + +--- + +# 4.2. ВИЗУАЛЬНАЯ CRM-СХЕМА + +```text +ЛИД + ↓ +КОНТАКТ + ↓ +КВАЛИФИКАЦИЯ + ↓ +МИНИ-ДИАГНОСТИКА + ↓ +АУДИТ + ↓ +SLA ОФФЕР + ↓ +ДОГОВОР + ↓ +ОБСЛУЖИВАНИЕ + ↓ +РАСШИРЕНИЕ +``` + +--- + +# 5. ПРОСТАЯ CRM В ТАБЛИЦЕ (СТАРТ) + +Если без софта: + +|Клиент|Объект|Статус|Проблема|Этап|Потенциал| +|---|---|---|---|---|---| +|X|гостиница|аудит|нет архива|прогрев|80k/мес| + +--- + +# 6. КЛЮЧЕВОЙ ПРИНЦИП CRM + +Ты не ведёшь “продажи”. + +Ты ведёшь: + +# инженерные объекты + +--- + +# 7. МЕТРИКА УСПЕХА (ВАЖНО) + +Не: + +- подписчики +- заявки + +А: + +## 1 объект = SLA контракт + +--- + +# 8. РОЛЬ TELEGRAM В МОДЕЛИ ДЕНЕГ + +```text +Telegram = генератор доверия +Аудит = генератор денег входа +SLA = генератор повторного дохода +``` + +--- + +# 9. СИСТЕМА РОСТА (СВЯЗКА ВСЕГО) + +```text +Контент (Telegram) + ↓ +Диалог + ↓ +Аудит + ↓ +SLA контракт + ↓ +Постоянный доход + ↓ +Масштаб через инженеров +``` + +--- + +# 10. СЛЕДУЮЩИЙ УРОВЕНЬ (если хочешь усилить систему) + +Я могу дальше собрать тебе: + +### 1. Полную CRM в Notion / 1C структуру под SLA + +### 2. Скрипт “закрытия в SLA после аудита” + +### 3. Таблицу квалификации клиента (кого брать/кого нет) + +### 4. Финмодель роста до 3 млн+ + +### 5. Регламент инженера (чтобы масштабировать команду) + +--- + +Если коротко: ты сейчас строишь не маркетинг, а: + +> инженерную подписочную сервисную компанию + +И Telegram + CRM — это её нервная система. \ No newline at end of file diff --git a/docs/Дашборд инженера.md b/docs/Дашборд инженера.md new file mode 100644 index 0000000..54c19d1 --- /dev/null +++ b/docs/Дашборд инженера.md @@ -0,0 +1,537 @@ +Ниже — полноценная модель **“Дашборд инженера (тимлид / руководитель техников)”** для AegisOne Engineering. + +Это ключевой слой между: + +- техник → (исполнение) +- директор → (управление системой) + +Инженер тут не “старший техник”, а: + +> операционный контроллер SLA, качества и рисков на объектах + +--- + +# 1. РОЛЬ ИНЖЕНЕРА В СИСТЕМЕ + +## 1.1 Основная функция + +```text +Инженер = управление качеством исполнения SLA + распределение нагрузки + контроль рисков объектов +``` + +--- + +## 1.2 Он НЕ делает: + +- не чинит оборудование (это техник) +- не продаёт SLA (это коммерция) +- не ведёт бухгалтерию + +--- + +## 1.3 Он ДЕЛАЕТ: + +- распределяет заявки +- контролирует SLA +- проверяет качество работ +- снижает инциденты +- управляет техниками +- влияет на SHS + +--- + +# 2. АРХИТЕКТУРА DASHBOARD ИНЖЕНЕРА + +```text +CEO DASHBOARD + ↓ +ENGINEER DASHBOARD + ↓ +TECHNICIAN DASHBOARD + ↓ +OBJECT SYSTEMS +``` + +--- + +# 3. DASHBOARD ИНЖЕНЕРА (REAL-TIME) + +## 3.1 Главные блоки интерфейса + +### Блок 1 — SLA контроль региона + +- SLA compliance (%) +- просроченные заявки +- риск нарушения SLA +- критические объекты + +--- + +### Блок 2 — команда техников + +- загрузка каждого техника +- эффективность +- ошибки / reopen rate +- скорость реакции + +--- + +### Блок 3 — инциденты + +- P1 / P2 / P3 +- открытые критические +- повторяющиеся аварии + +--- + +### Блок 4 — объекты + +- риск-уровень (Risk Score) +- SHS влияние объекта +- проблемные системы + +--- + +### Блок 5 — KPI инженера + +- качество управления SLA +- распределение нагрузки +- снижение инцидентов +- эффективность команды + +--- + +# 4. PHP АРХИТЕКТУРА + +--- + +## 4.1 API инженера + +```php +query(" +SELECT + e.id, + e.name, + + AVG(t.sla_compliance) as sla, + COUNT(i.id) as incidents, + AVG(t.response_time) as response_time + +FROM engineers e +LEFT JOIN tasks t ON t.engineer_id = e.id +LEFT JOIN incidents i ON i.engineer_id = e.id + +GROUP BY e.id +")->fetchAll(PDO::FETCH_ASSOC); + +echo json_encode($data); +?> +``` + +--- + +## 4.2 SHS ENGINEER IMPACT API + +```php +query(" +SELECT +AVG(sla_compliance) as sla, +AVG(response_time) as rt, +AVG(reopen_rate) as rr +FROM tasks +")->fetch(PDO::FETCH_ASSOC); + +/* Engineer Impact on SHS */ +$EIS = +(0.5 * $k['sla']) + +(0.3 * (1 - $k['rr'])) + +(0.2 * (1 - $k['rt']/10)); + +echo json_encode([ + "ENGINEER_IMPACT_SCORE" => round($EIS * 100, 2) +]); +?> +``` + +--- + +# 5. ФОРМУЛЫ ИНЖЕНЕРА (КРИТИЧЕСКИЕ KPI) + +--- + +## 5.1 ENGINEER CONTROL SCORE (ECS) + +```text +ECS = +(0.30 × SLA Compliance Control) ++ (0.25 × Task Distribution Efficiency) ++ (0.20 × Incident Reduction Rate) ++ (0.15 × Team Performance Score) ++ (0.10 × Response Coordination Speed) +``` + +--- + +## 5.2 SLA CONTROL INDEX + +```text +SCI = closed_tasks_in_SLA / total_tasks +``` + +--- + +## 5.3 TEAM LOAD BALANCE + +```text +TLB = std_dev(tasks_per_engineer) +``` + +👉 чем меньше → тем лучше распределение + +--- + +## 5.4 INCIDENT REDUCTION RATE + +```text +IRR = (incidents_previous - incidents_current) / incidents_previous +``` + +--- + +## 5.5 ESCALATION RATE + +```text +ER = escalated_tasks / total_tasks +``` + +--- + +# 6. DASHBOARD (HTML + JS) + +--- + +## 6.1 HTML + +```html + + + +Engineer Control Panel + + + + + + + +

Engineer Live Dashboard

+ +
+ +
+
SLA Control
+
--
+
+ +
+
Engineer Impact (SHS)
+
--
+
+ +
+
Incidents
+
--
+
+ +
+ +
+ + + + + +``` + +--- + +## 6.2 JS realtime + +```javascript +async function loadEngineer(){ + + const res = await fetch('/api/engineer.php'); + const data = await res.json(); + + let sla = 0; + let inc = 0; + + let html = ""; + + data.forEach(e => { + + sla += parseFloat(e.sla); + inc += parseInt(e.incidents); + + let color = + e.sla > 0.9 ? "green" : + e.sla > 0.75 ? "yellow" : "red"; + + html += ` +
+

${e.name}

+ +

SLA: + ${(e.sla * 100).toFixed(1)}% +

+ +

Incidents: ${e.incidents}

+

Response: ${e.response_time}

+
+ `; + }); + + document.getElementById("team").innerHTML = html; + + document.getElementById("sla").innerText = + ((sla / data.length) * 100).toFixed(1) + "%"; + + document.getElementById("inc").innerText = inc; + + let shs = (sla / data.length) * 100 - inc * 0.5; + + document.getElementById("shs").innerText = + shs.toFixed(1); +} + +setInterval(loadEngineer, 15000); +loadEngineer(); +``` + +--- + +# 7. ДОКУМЕНТЫ ИНЖЕНЕРА (ОБЯЗАТЕЛЬНЫЕ) + +--- + +## 7.1 РЕГЛАМЕНТ ИНЖЕНЕРА + +```text +AegisOne Engineering +Engineer Operational Standard + +1. Назначение +Инженер отвечает за выполнение SLA и контроль качества работ техников. + +--- + +2. Обязанности + +- распределение заявок +- контроль SLA выполнения +- контроль качества диагностики +- управление инцидентами +- предотвращение повторных аварий + +--- + +3. Запрещено + +- закрывать задачи без проверки +- игнорировать SLA нарушения +- делегировать без фиксации +``` + +--- + +## 7.2 ESCALATION MATRIX + +```text +P1 → инженер → директор (немедленно) +P2 → инженер → инженер контроль +P3 → техник + +Если SLA риск > 80%: +→ обязательная эскалация +``` + +--- + +## 7.3 ЧЕК-ЛИСТ ИНЖЕНЕРА + +```text +AegisOne Engineering +Engineer Control Checklist + +[ ] Все заявки распределены +[ ] SLA риск оценён +[ ] Техники назначены +[ ] P1 инциденты закрыты +[ ] Повторные аварии проанализированы +[ ] Отчёты проверены +``` + +--- + +## 7.4 ОТЧЁТ ИНЖЕНЕРА + +```text +Engineer Report + +Период: +Инженер: + +--- + +1. SLA состояние: +- + +2. Проблемные объекты: +- + +3. Инциденты: +- + +4. Перегруз команды: +- + +5. Принятые меры: +- + +6. Риски: +- +``` + +--- + +# 8. ЧТО ИНЖЕНЕР ДОЛЖЕН ИМЕТЬ В СИСТЕМЕ + +--- + +## ОБЯЗАТЕЛЬНО: + +- SLA статус всех объектов +- список техников +- инциденты P1–P3 +- риск объектов +- SHS влияние + +--- + +## РЕКОМЕНДУЕМО: + +- история объектов +- схемы систем +- фото оборудования +- прошлые ремонты +- нагрузка по часам + +--- + +# 9. ЧТО ЕМУ НЕЛЬЗЯ ДАВАТЬ + +--- + +## КАТЕГОРИЧЕСКИ НЕ НУЖНО: + +- прямые продажи +- финансовые данные прибыли +- доступ к CRM сделкам +- доступ к договорам без SLA слоя +- административные функции директора + +--- + +# 10. РИСКИ СИСТЕМЫ + +--- + +## РИСК 1 — инженер превращается в диспетчера + +👉 решение: + +- оставить KPI, а не “ручное управление” + +--- + +## РИСК 2 — перегруз инженера + +👉 решение: + +- TLB (load balance) + +--- + +## РИСК 3 — потеря SLA контроля + +👉 решение: + +- SHS alert system + +--- + +# 11. ГЛАВНАЯ ЛОГИКА + +```text +Техник → выполняет +Инженер → управляет качеством +Директор → управляет системой +``` + +--- + +# 12. ИТОГ + +Ты получаешь: + +> управляемый слой контроля SLA между исполнением и бизнесом + +--- + +# 13. ЕСЛИ РАЗВИВАТЬ ДАЛЬШЕ + +Я могу собрать: + +- автораспределение заявок (AI dispatch) +- прогноз поломок объектов +- система “умного SLA риска” +- мобильный кабинет инженера +- интеграция с Telegram уведомлениями + +--- + +Если коротко: + +👉 это уже не “дашборд” +👉 это уровень операционной системы инженерного бизнеса (mini-SAP под твою нишу) \ No newline at end of file diff --git a/docs/Дашборд техника.md b/docs/Дашборд техника.md new file mode 100644 index 0000000..ed0857b --- /dev/null +++ b/docs/Дашборд техника.md @@ -0,0 +1,424 @@ +Ниже — полноценная система **“Дашборд техника в реальном времени” + пакет документов и инструкций**, который превращает техника не в “исполнителя заявок”, а в **узел управляемой SLA-системы**. + +Я разделю на 3 уровня: + +1. Дашборд техника (web / PHP система) +2. Документы и регламенты (полные тексты) +3. Шаблоны (акты, чек-листы, отчёты) + +--- + +# 1. DASHBOARD ТЕХНИКА (REAL-TIME) + +## 1.1 Логика системы + +```text +Заявка → Назначение → Выезд → Диагностика → Исполнение → Закрытие → SLA фиксация → SHS влияние +``` + +--- + +## 1.2 Что должен видеть техник (главное) + +### Блок 1 — текущая нагрузка + +- активные заявки +- срочность (P1–P3) +- дедлайн SLA +- расстояние до объекта +- статус выполнения + +--- + +### Блок 2 — SLA контроль + +- осталось времени до нарушения SLA +- критичность заявки +- штрафной риск + +--- + +### Блок 3 — оборудование объекта + +- камеры / СКУД / пожарка +- история неисправностей +- последние ремонты + +--- + +### Блок 4 — чек-лист работ + +- пошаговый регламент +- обязательные проверки +- фотофиксация + +--- + +### Блок 5 — результат + +- закрытие заявки +- причина +- подтверждение клиента +- влияние на KPI + +--- + +# 2. PHP ДАШБОРД ТЕХНИКА (ГОТОВЫЙ ШАБЛОН) + +--- + +## 2.1 API задач техника + +```php +query(" +SELECT + t.id, + t.title, + t.priority, + t.status, + t.deadline, + t.address, + t.system_type, + t.sla_remaining_hours +FROM tasks t +WHERE t.status != 'closed' +ORDER BY t.priority DESC, t.deadline ASC +"); + +echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); +?> +``` + +--- + +## 2.2 FRONTEND (ТЕХНИК DASHBOARD) + +```html + + + +Technician Panel - AegisOne + + + + + + + +

Technician Live Dashboard

+ +
+ + + + + +``` + +--- + +## 2.3 JS realtime обновление + +```javascript +async function loadTasks(){ + const res = await fetch('/api/tech_tasks.php'); + const data = await res.json(); + + let html = ""; + + data.forEach(t => { + + let color = + t.sla_remaining_hours < 2 ? "red" : + t.sla_remaining_hours < 6 ? "yellow" : "green"; + + html += ` +
+

${t.title}

+ +

Priority: ${t.priority}

+

Address: ${t.address}

+

System: ${t.system_type}

+ +

SLA: + + ${t.sla_remaining_hours}h left + +

+ + + +
+ `; + }); + + document.getElementById("tasks").innerHTML = html; +} + +setInterval(loadTasks, 10000); +loadTasks(); +``` + +--- + +# 3. ДОКУМЕНТЫ ДЛЯ ТЕХНИКА (ОБЯЗАТЕЛЬНЫЕ) + +--- + +# 3.1 РЕГЛАМЕНТ РАБОТЫ ТЕХНИКА + +```text +AegisOne Engineering +Регламент работы инженера-техника + +1. Общие положения + +Техник обязан выполнять работы строго по SLA и чек-листу объекта. +Любое отклонение фиксируется в системе. + +--- + +2. Прибытие на объект + +- зарегистрировать прибытие в системе +- подтвердить время начала работ +- сделать фото объекта до начала работ + +--- + +3. Диагностика + +- проверить систему по чек-листу +- зафиксировать неисправности +- определить причину (если возможно) + +--- + +4. Выполнение работ + +- устранить неисправность +- не изменять конфигурацию без согласования +- использовать только разрешённые материалы + +--- + +5. Завершение работ + +- тестирование системы +- фото после выполнения +- подтверждение работоспособности + +--- + +6. Закрытие заявки + +- заполнить отчет +- указать причину неисправности +- получить подтверждение клиента (если возможно) +``` + +--- + +# 3.2 ЧЕК-ЛИСТ ВЫЕЗДА + +```text +AegisOne Engineering +Checklist Technician Visit + +[ ] Прибытие на объект зафиксировано +[ ] Фото “до” +[ ] Проверка питания системы +[ ] Проверка камер / датчиков +[ ] Проверка СКУД +[ ] Проверка пожарной панели +[ ] Локализация неисправности +[ ] Устранение проблемы +[ ] Тестирование системы +[ ] Фото “после” +[ ] Закрытие заявки +``` + +--- + +# 3.3 СТАНДАРТ ДИАГНОСТИКИ + +```text +AegisOne Engineering +Diagnostic Standard + +1. Неисправность фиксируется только после проверки: + - питания + - сети + - оборудования + - конфигурации + +2. Причина должна быть классифицирована: + +- Hardware +- Software +- Network +- Human error +- External factor + +3. Запрещено: +- закрывать заявку без причины +- менять систему без фиксации +``` + +--- + +# 3.4 ОТЧЁТ ТЕХНИКА (ШАБЛОН) + +```text +AegisOne Engineering +Technician Report + +Объект: +Дата: +Техник: + +--- + +1. Выполненные работы: +- + +2. Выявленные проблемы: +- + +3. Причина неисправности: +(Hardware / Software / Network / Other) + +4. Что было сделано: +- + +5. Результат: +[ ] Исправлено +[ ] Частично исправлено +[ ] Требует повторного выезда + +6. Фото до/после: +(вложение) + +7. Комментарий: +- +``` + +--- + +# 4. ОБЯЗАТЕЛЬНЫЕ ДАННЫЕ ТЕХНИКА В СИСТЕМЕ + +--- + +## 4.1 Минимум данных + +- текущие заявки +- SLA таймер +- адрес объекта +- тип системы +- приоритет + +--- + +## 4.2 Рекомендуемые данные + +- история объекта +- прошлые неисправности +- схема оборудования +- контакт ответственного +- тип неисправности по базе + +--- + +# 5. КЛЮЧЕВАЯ ЛОГИКА СИСТЕМЫ + +```text +Техник не “чинит оборудование” + +Техник: +→ закрывает SLA +→ влияет на SHS +→ формирует retention +``` + +--- + +# 6. КОНТРОЛЬ РИСКОВ + +--- + +## РИСК 1 — “закрытие без факта” + +👉 решение: + +- фотофиксация обязательна + +--- + +## РИСК 2 — “ложное устранение” + +👉 решение: + +- reopen rate KPI + +--- + +## РИСК 3 — перегруз техника + +👉 решение: + +- utilization tracking + +--- + +## РИСК 4 — нарушение SLA + +👉 решение: + +- live SLA countdown + +--- + +# 7. ИТОГОВАЯ МОДЕЛЬ + +```text +CRM → SLA → TASK → TECH DASHBOARD → EXECUTION → KPI → SHS +``` + +--- + +# 8. СУТЬ СИСТЕМЫ + +Ты создаёшь не “работу техника”: + +> ты создаёшь управляемый процесс физической эксплуатации инфраструктуры бизнеса + +--- + +# 9. ЕСЛИ ДАЛЬШЕ РАЗВИВАТЬ + +Можно собрать: + +- мобильное приложение техника (PWA) +- GPS контроль выездов +- автоакты выполненных работ +- голосовые отчёты +- AI диагностику неисправностей +- автоматическое распределение заявок + +--- + +Если хочешь следующий шаг: + +👉 я могу объединить дашборд техника + инженера + CEO в одну единую систему управления AegisOne (как ERP уровня SAP, но для твоей ниши) \ No newline at end of file diff --git a/docs/Докозательная экспертиза.md b/docs/Докозательная экспертиза.md new file mode 100644 index 0000000..25138f8 --- /dev/null +++ b/docs/Докозательная экспертиза.md @@ -0,0 +1,574 @@ +Ниже — система, которая делает тебя не “компанией по безопасности”, а: + +доказательным инженерным экспертом + +Это ключевой переход. +Потому что рынок верит не словам, а: + +> измерениям, проверкам и воспроизводимым результатам + + + + +--- + +0. ЧТО ТАКОЕ “ДОКАЗАТЕЛЬНАЯ ЭКСПЕРТИЗА” + +Это подход, где каждое твоё утверждение: + +проверяется тестом + +фиксируется + +документируется + +повторяется на любом объекте + +подтверждается результатом + + + +--- + +1. ГЛАВНАЯ ИДЕЯ СИСТЕМЫ + +Ты перестаёшь говорить: + +❌ “у вас плохое обслуживание” +❌ “система работает неправильно” + +Ты начинаешь говорить: + +✔ “мы провели тест №X” +✔ “результат измерен” +✔ “отклонение от нормы” +✔ “риск подтверждён” + + +--- + +2. СТРУКТУРА СИСТЕМЫ ДОКАЗАТЕЛЬНОСТИ + +3. Тест (что проверяем) +4. Методика (как проверяем) +5. Норма (как должно быть) +6. Фактический результат +7. Отклонение +8. Риск для бизнеса +9. Вывод инженера + + +--- + +3. БАЗОВЫЕ ТЕСТЫ (ЯДРО ТВОЕЙ ЭКСПЕРТИЗЫ) + + +--- + +ТЕСТ №1 — РЕАЛЬНОСТЬ АРХИВА ВИДЕОНАБЛЮДЕНИЯ + + +--- + +🔧 Методика + +Выборочно проверяется запись с камер за последние: +- 1 день +- 7 дней +- 14 дней +- 30 дней + +Проверяется: +- наличие записи +- непрерывность +- пропуски +- доступность воспроизведения + + +--- + +📏 Норма + +запись 100% камер + +непрерывность без пропусков + +доступность архива согласно заявленному сроку + + + +--- + +📉 Частая реальность + +часть камер не пишет + +архив “дыры” + +перезапись раньше срока + +сбои HDD + + + +--- + +⚠️ Риск + +> Потеря доказательной базы при инциденте + + + + +--- + +🧠 Заключение от тебя + +> “На объекте система видеонаблюдения формально функционирует, но не гарантирует сохранность событийного архива.” + + + + +--- + +ТЕСТ №2 — СИНХРОНИЗАЦИЯ ВРЕМЕНИ + + +--- + +Методика + +Сравнение времени: +- на камерах +- на регистраторе +- на сервере СКУД +- фактическое время события + + +--- + +Норма + +отклонение ≤ 1–2 секунды + + + +--- + +Часто + +разрыв 2–15 минут + +разные часовые зоны + +нет NTP синхронизации + + + +--- + +Риск + +> невозможность юридически доказать момент события + + + + +--- + +Вывод + +> “Система не обеспечивает юридически корректную фиксацию времени событий.” + + + + +--- + +ТЕСТ №3 — РЕЗЕРВНОЕ ПИТАНИЕ + + +--- + +Методика + +Проверка: +- UPS +- время автономной работы +- отключение питания +- поведение систем + + +--- + +Норма + +15–60 минут автономии минимум + + + +--- + +Часто + +UPS “для галочки” + +не держит нагрузку + +отсутствует тестирование + + + +--- + +Риск + +> полная остановка системы при отключении электричества + + + + +--- + +Вывод + +> “Инфраструктура объекта не защищена от отключения электропитания.” + + + + +--- + +ТЕСТ №4 — ПОЛНОТА КАМЕРНОГО ПОКРЫТИЯ + + +--- + +Методика + +Проверка зон: +- входы +- кассы +- периметр +- слепые зоны + + +--- + +Норма + +отсутствие “мертвых зон” + + + +--- + +Часто + +перекрытия нет + +камеры направлены неправильно + +часть зон не контролируется + + + +--- + +Риск + +> невозможность фиксации инцидентов + + + + +--- + +Вывод + +> “Фактическое покрытие объекта не соответствует заявленной системе безопасности.” + + + + +--- + +ТЕСТ №5 — ЖУРНАЛ СОБЫТИЙ СКУД + + +--- + +Методика + +Проверка: +- записи проходов +- корректность пользователей +- история событий + + +--- + +Норма + +полный лог всех проходов + + + +--- + +Часто + +потери логов + +сбои базы + +отключённый журнал + + + +--- + +Риск + +> невозможность отследить перемещения персонала + + + + +--- + +Вывод + +> “СКУД не выполняет функцию контроля доступа в полном объёме.” + + + + +--- + +ТЕСТ №6 — СОСТОЯНИЕ ПИТАНИЯ СИСТЕМ + + +--- + +Методика + +Проверка: +- напряжения +- нагрузки +- перегрева +- стабильности питания оборудования + + +--- + +Часто + +перегрузка линий + +дешёвые блоки питания + +нестабильное напряжение + + + +--- + +Риск + +> деградация оборудования и внезапные отказы + + + + +--- + +Вывод + +> “Система имеет скрытую деградацию по питанию.” + + + + +--- + +ТЕСТ №7 — СОСТОЯНИЕ ХРАНЕНИЯ ДАННЫХ + + +--- + +Методика + +Проверка: +- HDD/SSD +- заполнение +- циклы перезаписи +- ошибки записи + + +--- + +Часто + +диски в деградации + +нет мониторинга + +потеря данных без уведомлений + + + +--- + +Риск + +> потеря архива без внешних признаков + + + + +--- + +Вывод + +> “Система хранения не контролируется и не мониторится.” + + + + +--- + +4. КАК ТЫ ПРЕЗЕНТУЕШЬ ЭТО КЛИЕНТУ + + +--- + +НЕ так: + +❌ “у вас проблемы” + + +--- + +А так: + +✔ “мы провели тест №3 и зафиксировали отклонение” + + +--- + +5. ШАБЛОН ТВОЕГО ЭКСПЕРТНОГО ЗАКЛЮЧЕНИЯ + +ИНЖЕНЕРНОЕ ЗАКЛЮЧЕНИЕ + +Объект: ________ + +Проведены тесты: +- архив видеонаблюдения +- синхронизация времени +- резервное питание +- СКУД +- хранение данных + +Выявленные отклонения: + +1. ________ +2. ________ +3. ________ + +Риски: + +- ________ +- ________ + +Заключение инженера: + +Система безопасности объекта требует технического сопровождения +для обеспечения стабильной эксплуатации и снижения рисков отказов. + + +--- + +6. СИЛА ЭТОЙ СИСТЕМЫ + +Ты становишься: + +не монтажником + +не продавцом услуг + +не подрядчиком + + + +--- + +А ЧЕМ? + +инженером, который доказывает состояние объекта + + +--- + +7. ПОЧЕМУ ЭТО ПРОДАЁТ SLA + +Потому что клиент видит: + +факты + +отклонения + +риски + + +И сам приходит к выводу: + +> “это нужно сопровождать постоянно” + + + + +--- + +8. КАК ЭТО МАСШТАБИРУЕТСЯ + +Ты можешь: + +обучить инженеров тестам + +стандартизировать отчёты + +превратить это в продукт аудита + +автоматизировать CRM + + + +--- + +9. СЛЕДУЮЩИЙ УРОВЕНЬ (если продолжим) + +Я могу дальше собрать: + +автоматический шаблон отчёта (PDF + PHP генерация) + +систему балльной оценки объекта (risk scoring) + +SLA-переход на основе результатов тестов + +“паспорт объекта безопасности” + +стандарты для инженеров в команде + + + +--- + +Если коротко: + +> ты превращаешь “услуги безопасности” в инженерную измеряемую систему контроля риска + + + +И это уже не рынок монтажников. +Это рынок эксплуатационных инженеров уровня enterprise. \ No newline at end of file diff --git a/docs/КП и структура аудита.md b/docs/КП и структура аудита.md new file mode 100644 index 0000000..e9ba12b --- /dev/null +++ b/docs/КП и структура аудита.md @@ -0,0 +1,589 @@ +Ниже — уже не просто “текст КП”, а фундамент твоей новой модели бизнеса. + +Я делаю это в формате: + +инженерного B2B; + +без “маркетингового мусора”; + +с акцентом на доверие, SLA и эксплуатацию. + + +Это можно: + +сразу использовать; + +конвертировать в PDF; + +вставить на сайт; + +генерировать автоматически через CRM. + + + +--- + +1. ПОЛНОЦЕННЫЙ ШАБЛОН КП (.md) + +# КОММЕРЧЕСКОЕ ПРЕДЛОЖЕНИЕ +## Техническое сопровождение систем безопасности + +--- + +# AEGISONE ENGINEERING +### Эксплуатация и сопровождение систем безопасности коммерческих объектов + +--- + +## Контакты + +Телефон: +7 (XXX) XXX-XX-XX +Email: info@aegisone.ru +Сайт: https://aegisone.ru + +--- + +# О компании + +AEGISONE ENGINEERING — инженерная сервисная компания, +специализирующаяся на техническом сопровождении +и эксплуатации систем безопасности коммерческих объектов. + +Мы обеспечиваем: +- стабильную работу систем; +- контроль инфраструктуры; +- регламентное обслуживание; +- SLA и контроль сроков реакции; +- технический аудит; +- сопровождение эксплуатации объектов. + +--- + +# Какие проблемы мы решаем + +Большинство неисправностей систем безопасности +выявляются только после возникновения проблем: + +- отсутствует архив видеонаблюдения; +- системы работают нестабильно; +- часть оборудования неисправна; +- отсутствует документация; +- неисправности копятся месяцами; +- подрядчики не несут ответственности; +- проверки выявляют критические нарушения. + +Это приводит: +- к рискам простоев; +- потере контроля; +- проблемам при проверках; +- финансовым потерям. + +--- + +# Решение + +Мы берем на себя техническое сопровождение +и контроль работоспособности систем безопасности объекта. + +В рамках сопровождения обеспечиваем: + +- регламентное обслуживание; +- диагностику; +- контроль состояния оборудования; +- аварийное реагирование; +- сопровождение эксплуатации; +- фотоотчетность; +- рекомендации по модернизации; +- технический контроль подрядчиков. + +--- + +# Состав услуг + +| Услуга | Описание | +|---|---| +| Регламентные проверки | Контроль состояния систем | +| Диагностика | Поиск неисправностей | +| Контроль архива | Проверка записи и хранения | +| Проверка питания | Бесперебойность работы | +| Аварийные выезды | Реагирование по SLA | +| Фотоотчетность | Подтверждение работ | +| Ведение журналов | История обслуживания | +| Консультации | Поддержка эксплуатации | + +--- + +# SLA + +| Приоритет | Описание | Время реакции | +|---|---|---| +| P1 | Полный отказ критической системы | до 2 часов | +| P2 | Частичная потеря функционала | до 4 часов | +| P3 | Некритичная неисправность | до 24 часов | +| P4 | Плановые работы | по графику | + +--- + +# Почему выбирают нас + +- более 20 лет инженерного опыта; +- лицензия МЧС; +- работа по SLA и регламентам; +- опыт эксплуатации коммерческих объектов; +- прозрачная отчетность; +- несем ответственность за результат; +- не работаем по принципу «сделали и забыли». + +--- + +# Тарифы + +## START +Для небольших объектов. + +Включает: +- ежемесячный регламент; +- диагностику; +- удаленную поддержку; +- отчетность. + +Стоимость: +от 25 000 ₽ / месяц + +--- + +## BUSINESS +Для коммерческих объектов. + +Включает: +- SLA; +- аварийные выезды; +- контроль архива; +- сопровождение проверок; +- фотоотчетность. + +Стоимость: +от 60 000 ₽ / месяц + +--- + +## ENTERPRISE +Формат внешнего инженерного отдела. + +Включает: +- постоянное сопровождение; +- участие в эксплуатации; +- контроль подрядчиков; +- развитие инфраструктуры; +- аудит объектов. + +Стоимость: +индивидуально + +--- + +# Этапы работы + +1. Предварительная консультация +2. Технический аудит объекта +3. Подготовка отчета и рекомендаций +4. Формирование SLA и регламентов +5. Постановка объекта на сопровождение +6. Регулярное обслуживание и отчетность + +--- + +# Технический аудит + +Перед постановкой объекта на сопровождение +рекомендуем проведение технического аудита. + +Аудит позволяет: +- выявить скрытые проблемы; +- оценить состояние систем; +- определить риски; +- подготовить рекомендации. + +--- + +# Контакты + +AEGISONE ENGINEERING + +Телефон: ++7 (XXX) XXX-XX-XX + +Email: +info@aegisone.ru + +Сайт: +https://aegisone.ru +--- + +2. СТРУКТУРА ПЕРВОГО АУДИТА + +Вот здесь начинается твоя реальная экспертная модель. + +ЦЕЛЬ АУДИТА + +НЕ: + +“найти поломку”. + + +А: + +показать уровень инженерной зрелости объекта. + + +--- + +ЧТО ДОЛЖЕН ДАВАТЬ АУДИТ + +После него клиент должен понять: + +где риски; + +что не работает; + +что может привести к проблемам; + +насколько объект управляем; + +почему нужен SLA. + + + +--- + +ИДЕАЛЬНАЯ СТРУКТУРА АУДИТА + + +--- + +ЭТАП 1 + +ВВОДНАЯ ИНФОРМАЦИЯ + + +--- + +Собираем: + +тип объекта; + +площадь; + +количество систем; + +ответственные лица; + +история проблем; + +подрядчики; + +наличие документации. + + + +--- + +ЭТАП 2 + +ВИЗУАЛЬНЫЙ ОСМОТР + + +--- + +Проверяем: + +шкафы; + +коммутацию; + +маркировку; + +кабельные трассы; + +питание; + +серверные; + +доступ к оборудованию. + + + +--- + +ЭТАП 3 + +ПРОВЕРКА РАБОТОСПОСОБНОСТИ + + +--- + +Видеонаблюдение: + +запись; + +архив; + +синхронизация времени; + +качество изображения; + +доступность камер; + +питание. + + + +--- + +СКУД: + +проходы; + +журналы; + +права доступа; + +аварийное открытие; + +контроллеры. + + + +--- + +Пожарка: + +индикация; + +ошибки; + +оповещение; + +связь; + +резервное питание. + + + +--- + +ЭТАП 4 + +ПРОВЕРКА ДОКУМЕНТАЦИИ + + +--- + +Проверяем: + +схемы; + +пароли; + +IP; + +журналы; + +проекты; + +исполнительную документацию. + + + +--- + +ЭТАП 5 + +ОЦЕНКА РИСКОВ + +Это важнейшая часть. + + +--- + +Например: + +Риск Последствие + +Не пишется архив Потеря доказательств +Нет резервного питания Полный отказ +Нет документации Долгое восстановление +Ошибки пожарки Риски проверок + + + +--- + +ЭТАП 6 + +РЕКОМЕНДАЦИИ + + +--- + +Разделяем: + +Критические + +Исправить срочно. + + +--- + +Важные + +В течение 30 дней. + + +--- + +Плановые + +При модернизации. + + +--- + +ЭТАП 7 + +ПРЕДЛОЖЕНИЕ SLA + +Вот тут ты переводишь аудит: + +в абонентское сопровождение. + + +--- + +3. ЧЕК-ЛИСТ АУДИТА + +Это уже реальный инструмент продаж. + + +--- + +# ЧЕК-ЛИСТ ТЕХНИЧЕСКОГО АУДИТА + +## Общая информация + +- [ ] Тип объекта +- [ ] Адрес +- [ ] Ответственное лицо +- [ ] Количество систем +- [ ] Наличие документации +- [ ] Наличие подрядчиков + +--- + +# Видеонаблюдение + +## Сервер / регистратор + +- [ ] Проверка записи +- [ ] Проверка архива +- [ ] Проверка HDD +- [ ] Проверка времени +- [ ] Проверка сети +- [ ] Проверка питания + +## Камеры + +- [ ] Наличие сигнала +- [ ] Качество изображения +- [ ] Наличие загрязнений +- [ ] Корректность обзора +- [ ] Наличие ИК подсветки + +--- + +# СКУД + +- [ ] Проверка контроллеров +- [ ] Проверка считывателей +- [ ] Проверка журналов +- [ ] Проверка доступа +- [ ] Проверка аварийного открытия +- [ ] Проверка резервного питания + +--- + +# Пожарная сигнализация + +- [ ] Проверка панели +- [ ] Проверка ошибок +- [ ] Проверка шлейфов +- [ ] Проверка оповещения +- [ ] Проверка резервного питания +- [ ] Проверка журналов событий + +--- + +# Сетевая инфраструктура + +- [ ] Проверка коммутаторов +- [ ] Проверка UPS +- [ ] Проверка кабельной инфраструктуры +- [ ] Проверка интернет-каналов +- [ ] Проверка температурного режима + +--- + +# Документация + +- [ ] Схемы +- [ ] IP-адресация +- [ ] Пароли +- [ ] Журналы обслуживания +- [ ] Исполнительная документация + +--- + +# Риски + +- [ ] Отсутствие записи +- [ ] Отказ резервного питания +- [ ] Отсутствие документации +- [ ] Ошибки оборудования +- [ ] Нестабильность сети + +--- + +# Рекомендации + +## Критические: +_________________________________ + +## Важные: +_________________________________ + +## Плановые: +_________________________________ +--- + +САМОЕ ВАЖНОЕ + +Вот что тебе нужно понять стратегически. + +АУДИТ — ЭТО НЕ “ДОП. УСЛУГА”. + +Это: + +твоя система продаж. + +Потому что: + +не надо “впаривать”; + +ты показываешь реальность; + +ты становишься экспертом; + +клиент сам понимает необходимость SLA. + + +И это идеально подходит под твою модель инженерного B2B. \ No newline at end of file diff --git a/docs/Контент план.md b/docs/Контент план.md new file mode 100644 index 0000000..f895b62 --- /dev/null +++ b/docs/Контент план.md @@ -0,0 +1,503 @@ +Хорошо. Здесь ты фактически строишь не “контент”, а: + +инженерную медийную репутацию компании + +Это важно различать. + +Контент в твоей нише выполняет 3 функции: + +1. формирует доверие у B2B (директора, УК, собственники) + + +2. объясняет, почему эксплуатация важнее монтажа + + +3. подводит к SLA и аудитам (деньгам) + + + + +--- + +0. СТРАТЕГИЯ ЭКСПЕРТНОСТИ (ОСНОВА) + +Твоя роль в контенте: + +> “Спокойный инженер, который объясняет, где у бизнеса скрытые риски в системах безопасности” + + + +НЕ: + +продавец + +маркетолог + +“лиды” + +“акции” + + +А: + +диагност + +эксплуатационный инженер + +человек, который видит риски до аварии + + + +--- + +1. КОНТЕНТ-СТОЛПЫ (PILLARS) + +У тебя должно быть 5 контент-направлений: + + +--- + +1. Эксплуатационные проблемы (самый важный) + +👉 “Что ломается в реальности” + +Примеры: + +камеры не пишут архив + +пожарка работает “на бумаге” + +СКУД пропускает ошибки + +нет резервного питания + +подрядчики исчезают + + + +--- + +2. Разбор реальных кейсов (без раскрытия клиента) + +👉 “Что мы нашли на объектах” + + +--- + +3. Ошибки монтажа и эксплуатации + +👉 “Почему дешево = дорого” + + +--- + +4. Инженерные разборы систем + +👉 “как это должно работать правильно” + + +--- + +5. Управление рисками (B2B язык) + +👉 “что теряет бизнес” + + +--- + +2. ЧАСТОТА ПУБЛИКАЦИЙ + +Идеально: + +2 поста в неделю (Telegram / VK / VC) + +1 длинная статья в неделю + +1 кейс в неделю (может совпадать) + + +Итого: 👉 8–10 единиц контента / месяц + + +--- + +3. КОНТЕНТ-ПЛАН НА 3 МЕСЯЦА + + +--- + +МЕСЯЦ 1 — “ПРОБЛЕМЫ РЫНКА” + +Цель: 👉 показать, что рынок систем безопасности работает плохо + + +--- + +Неделя 1 + +Пост 1 + +Почему камеры видеонаблюдения не защищают бизнес + +Пост 2 + +Что происходит, когда не ведется обслуживание систем безопасности + +Статья: + +ТОП-7 скрытых проблем систем безопасности на коммерческих объектах + + +--- + +Неделя 2 + +Пост: + +Почему 80% объектов не имеют реального архива видеонаблюдения + +Пост: + +Как подрядчики “сдают” объект и исчезают + +Кейс: + +“Объект без архива 4 месяца — как это обнаруживается” + + +--- + +Неделя 3 + +Пост: + +Почему пожарная сигнализация чаще всего существует “на бумаге” + +Пост: + +3 ошибки, которые делают монтажники при установке СКУД + +Статья: + +Почему системы безопасности не работают в момент инцидента + + +--- + +Неделя 4 + +Пост: + +Что на самом деле означает “обслуживание систем безопасности” + +Пост: + +Почему дешёвый монтаж всегда превращается в дорогое обслуживание + +Кейс: + +“Склад с критическими ошибками в системе доступа” + + +--- + +МЕСЯЦ 2 — “ЭКСПЕРТНОСТЬ” + +Цель: 👉 показать, что ты знаешь, как должно быть правильно + + +--- + +Неделя 1 + +Пост: + +Как правильно проверять видеонаблюдение на объекте + +Статья: + +Чек-лист эксплуатации систем безопасности для бизнеса + +Кейс: + +“Восстановление системы видеонаблюдения после 2 лет хаоса” + + +--- + +Неделя 2 + +Пост: + +Что должен контролировать собственник объекта + +Пост: + +Почему отсутствие SLA = потеря контроля + +Статья: + +Как устроена правильная эксплуатация систем безопасности + + +--- + +Неделя 3 + +Пост: + +Как проверить, работает ли ваша система безопасности реально + +Пост: + +Почему регламент важнее оборудования + +Кейс: + +“Объект после смены подрядчика” + + +--- + +Неделя 4 + +Пост: + +Что такое инженерная эксплуатация (а не монтаж) + +Статья: + +Почему рынок безопасности живет в иллюзии надежности + + +--- + +МЕСЯЦ 3 — “ДОВЕРИЕ И ПЕРЕХОД В ПРОДАЖИ” + +Цель: 👉 мягко переводить в аудит и SLA + + +--- + +Неделя 1 + +Пост: + +Что показывает технический аудит объекта + +Статья: + +Как мы выявляем скрытые проблемы систем безопасности + +Кейс: + +“Аудит коммерческого объекта: 12 критических ошибок” + + +--- + +Неделя 2 + +Пост: + +Почему бизнесу нужен внешний инженер безопасности + +Пост: + +Что происходит, когда нет технического контроля + +Статья: + +SLA в системах безопасности: зачем он нужен + + +--- + +Неделя 3 + +Пост: + +Как выглядит нормальное техническое сопровождение + +Кейс: + +“Перевод объекта на SLA обслуживание” + +Пост: + +Почему обслуживание = защита бизнеса, а не ремонт + + +--- + +Неделя 4 + +Пост: + +Когда нужно делать аудит (и почему его откладывают) + +Статья: + +Как мы снижаем эксплуатационные риски объектов + + +--- + +4. ФОРМАТ КОНТЕНТА (ВАЖНО) + +Каждый пост должен иметь структуру: + + +--- + +1. Проблема + +2. Реальный инженерный разбор + +3. Последствия для бизнеса + +4. Вывод (очень спокойный) + + +--- + +5. ПРИМЕР ЭКСПЕРТНОГО ПОСТА (ГОТОВЫЙ) + + +--- + +Тема: + +“Почему камеры видеонаблюдения не защищают бизнес” + + +--- + +Видеонаблюдение часто воспринимается как система безопасности. + +На практике это не всегда так. + +Основная проблема заключается не в оборудовании, а в эксплуатации. + +На большинстве объектов мы наблюдаем типовые ситуации: + +— часть камер не записывает архив; +— запись есть, но не сохраняется нужный период; +— часть каналов отключена; +— время на устройствах не синхронизировано; +— отсутствует резервирование питания; +— система не тестируется регулярно. + +В результате при инциденте система формально есть, но фактически не выполняет свою функцию. + +Бизнес узнаёт об этом только постфактум. + +Правильная эксплуатация видеонаблюдения — это не установка оборудования, а регулярный контроль: + +— состояния записи; +— целостности архива; +— доступности камер; +— корректности времени; +— работоспособности хранения. + +Без этого система превращается в формальность. + +Именно поэтому в инженерной эксплуатации видеонаблюдение рассматривается как сервис, а не как установленное оборудование. +--- + +6. КОД ДЛЯ КОНТЕНТ-СТРАНИЦЫ (PHP БЛОГ) + + +--- + + + +
+
+ +

Почему камеры видеонаблюдения не защищают бизнес

+ +

Инженерный разбор систем безопасности

+ +

+Видеонаблюдение часто воспринимается как система безопасности... +

+ +

Типовые проблемы эксплуатации

+ +
    +
  • нет записи архива
  • +
  • сбои хранения
  • +
  • отсутствие резервирования
  • +
  • рассинхронизация времени
  • +
+ +

Почему это критично

+ +

+Система формально работает, но не выполняет функцию защиты бизнеса. +

+ +

Вывод

+ +

+Без регламентной эксплуатации система безопасности превращается в формальность. +

+ +
+
+ + + + +--- + +7. ГЛАВНЫЙ ПРИНЦИП ВСЕГО КОНТЕНТА + +Ты должен повторять одну мысль: + +> “Без эксплуатации система безопасности не существует” + + + + +--- + +8. ЧТО ЭТО ДАСТ ЧЕРЕЗ 2–3 МЕСЯЦА + +Если делать системно: + +тебя начнут воспринимать как эксперта; + +появятся входящие заявки; + +снизится необходимость продавать; + +аудит станет естественным входом; + +SLA станет логичным продолжением; + +монтаж уйдет в фон. + + + +--- + +9. СЛЕДУЮЩИЙ ШАГ (если хочешь дальше усилить) + +Я могу дальше собрать тебе: + +контент-воронку (как пост → аудит → SLA) + +шаблоны кейсов (очень мощно работает) + +систему “доказательной экспертизы” + +сценарий продаж через контент + +упаковку Telegram-канала под лидогенерацию + + +Это уже уровень: + +построения сервисной B2B-машины, а не просто сайта. \ No newline at end of file diff --git a/docs/Маркеттинг.md b/docs/Маркеттинг.md new file mode 100644 index 0000000..3c7be93 --- /dev/null +++ b/docs/Маркеттинг.md @@ -0,0 +1,673 @@ +Вот здесь начинается настоящий B2B. +И это как раз твоя сильная сторона. + +Потому что: + +# тебе НЕ нужен агрессивный маркетинг. + +Ты не: + +- франшиза, +- массовый монтажник, +- “льем лиды”. + +Твой рынок: + +# доверительный инженерный B2B. + +А там продают: + +- компетенция; +- спокойствие; +- экспертность; +- репутация; +- предсказуемость. + +--- + +# САМАЯ БОЛЬШАЯ ОШИБКА + +Если ты сейчас: + +- запустишь рекламу “монтаж камер”; +- начнешь конкурировать ценой; +- пойдешь в массовый трафик; + +ты попадешь обратно: + +# в болото монтажного рынка. + +--- + +# ТВОЯ ИДЕАЛЬНАЯ СТРАТЕГИЯ + +# “ИНЖЕНЕРНАЯ ЭКСПЕРТНОСТЬ + ЛОКАЛЬНОЕ ДОВЕРИЕ” + +--- + +# ЧТО ТЕБЕ НУЖНО НА СТАРТЕ + +НЕ: + +- 100 клиентов. + +А: + +# 3–5 правильных объектов. + +Это принципиально. + +--- + +# ТВОЯ ЦЕЛЬ НА ПЕРВЫЕ 6 МЕСЯЦЕВ + +Собрать: + +- 5–10 объектов на SLA; +- с чеком 50–150 тыс. + +Это уже: + +# 500 тыс – 1.5 млн recurring revenue. + +И это достижимо без рекламы. + +--- + +# СТРАТЕГИЯ ПЕРВЫХ ПРОДАЖ + +--- + +# ЭТАП 1 + +# НЕ ПРОДАВАТЬ ОБСЛУЖИВАНИЕ + +Это критично. + +Потому что: “ТО” воспринимается как: + +- обязаловка; +- минималка; +- формальность. + +--- + +# ПРОДАВАТЬ НУЖНО: + +# АУДИТ И СНИЖЕНИЕ РИСКОВ. + +--- + +# ТВОЙ ИДЕАЛЬНЫЙ ВХОД + +НЕ: + +> “давайте мы вас обслужим”. + +А: + +# “давайте проверим текущее состояние систем”. + +--- + +# ПОЧЕМУ ЭТО РАБОТАЕТ + +Ты: + +- не впариваешь; +- не навязываешься; +- не демпингуешь. + +Ты: + +# инженер-эксперт. + +--- + +# ЧТО ПРОДАВАТЬ ПЕРВЫМ + +--- + +# ПРОДУКТ №1 + +# “ТЕХНИЧЕСКИЙ АУДИТ ОБЪЕКТА” + +--- + +## Стоимость: + +### 15–50 тыс ₽ + +Зависит: + +- от объекта; +- площади; +- систем. + +--- + +# ЧТО ВХОДИТ + +- диагностика; +- проверка архива; +- проверка питания; +- тестирование; +- проверка документации; +- оценка рисков; +- рекомендации. + +--- + +# РЕЗУЛЬТАТ: + +PDF-отчет. + +--- + +# ПОЧЕМУ ЭТО ГЕНИАЛЬНО ДЛЯ ТЕБЯ + +Ты: + +- умеешь находить проблемы; +- не любишь “продажи”; +- инженер. + +То есть: + +# это идеальная модель продаж под тебя. + +--- + +# ЭТАП 2 + +# ПРОДАЖА SLA + +После аудита. + +--- + +# СХЕМА + +## Ты показываешь: + +### Сейчас: + +- риски; +- неисправности; +- слабые места. + +--- + +## Потом: + +> “Чтобы это не накапливалось — нужен регламент эксплуатации.” + +--- + +# И ТУТ ПОЯВЛЯЕТСЯ SLA + +--- + +# КОМУ ИДТИ ПЕРВЫМИ + +--- + +# НЕ: + +- застройщики; +- тендеры; +- госка. + +Это болото. + +--- + +# ИДЕАЛЬНЫЕ ПЕРВЫЕ КЛИЕНТЫ + +--- + +# 1. ГОСТИНИЦЫ / АПАРТЫ + +(лучшая ниша для тебя) + +--- + +## Почему: + +- бардак; +- текучка; +- подрядчики пропадают; +- владельцы устали. + +--- + +# 2. НЕБОЛЬШИЕ СКЛАДЫ + +Очень хорошая ниша. + +--- + +# 3. КОММЕРЧЕСКИЕ УК + +Золото. + +--- + +# 4. ЧАСТНЫЕ КЛИНИКИ + +Отличная ниша. + +--- + +# 5. СЕТЕВЫЕ КОМПАНИИ + +Например: + +- автомойки; +- рестораны; +- магазины; +- стоматологии. + +--- + +# КАК ИСКАТЬ КЛИЕНТОВ БЕЗ РЕКЛАМЫ + +Вот тут твой рынок. + +--- + +# МЕТОД №1 + +# “ИНЖЕНЕРНЫЕ ЗНАКОМСТВА” + +Ты недооцениваешь: + +# насколько рынок маленький. + +--- + +# ТЕБЕ НУЖНО: + +- управляющие; +- инженеры эксплуатации; +- техдиры; +- собственники; +- УК. + +--- + +# НЕ ПРОДАВАТЬ + +А: + +# знакомиться. + +--- + +# ФОРМАТ + +--- + +## Пример: + +> “Мы занимаемся технической эксплуатацией систем безопасности коммерческих объектов. Если будет нужна диагностика или помощь — обращайтесь.” + +--- + +# ВСЕ. + +Никаких: + +- впариваний; +- “акций”; +- скидок. + +--- + +# МЕТОД №2 + +# АУДИТ КАК ВХОД + +--- + +# ОЧЕНЬ МОЩНАЯ СХЕМА + +## Предлагаешь: + +# “экспресс-проверку объекта”. + +--- + +## Например: + +- проверка архива; +- отказоустойчивость; +- питание; +- документация. + +--- + +# ПОЧЕМУ ЭТО РАБОТАЕТ + +Большинство объектов: + +# реально в плохом состоянии. + +--- + +# МЕТОД №3 + +# LINKEDIN / TELEGRAM / VC / ДЗЕН + +Это твоя золотая жила. + +--- + +# ПОЧЕМУ + +Рынок безопасности: + +# чудовищно слаб по экспертности. + +--- + +# А ТЫ: + +- умеешь говорить по делу; +- инженер; +- системный. + +--- + +# ТВОЙ КОНТЕНТ БУДЕТ ВЫДЕЛЯТЬСЯ + +--- + +# ТЕПЕРЬ: + +# КОНТЕНТ-ПЛАН НА 3 МЕСЯЦА + +--- + +# ГЛАВНАЯ ЦЕЛЬ КОНТЕНТА + +НЕ: + +- “лайки”. + +А: + +# доверие B2B. + +--- + +# ТВОЯ РОЛЬ В КОНТЕНТЕ + +НЕ: “маркетолог”. + +А: + +# “спокойный инженер-эксперт”. + +--- + +# СТИЛЬ КОНТЕНТА + +--- + +# НЕ: + +- хайп; +- кликбейт; +- “ТОП-5 камер”. + +--- + +# А: + +- реальные проблемы; +- эксплуатация; +- ошибки; +- риски; +- практика. + +--- + +# КАНАЛЫ + +--- + +# ОБЯЗАТЕЛЬНО: + +- Telegram; +- сайт/блог; +- Яндекс Бизнес; +- VC.ru; +- Дзен. + +--- + +# МОЖНО: + +- YouTube Shorts; +- Rutube. + +--- + +# ГЛАВНОЕ: + +# не количество. + +А: + +# экспертность. + +--- + +# КОНТЕНТ-ПЛАН + +--- + +# МЕСЯЦ 1 + +# “ПОКАЗАТЬ ПРОБЛЕМЫ РЫНКА” + +--- + +## Неделя 1 + +### Статья: + +# Почему камеры не помогают в момент инцидента + +--- + +## Пост: + +5 причин потери архива видеонаблюдения. + +--- + +## Короткое видео: + +“Почему регистратор — не гарантия записи.” + +--- + +## Кейс: + +“На объекте архив не записывался 4 месяца.” + +--- + +# Неделя 2 + +### Статья: + +# Что реально проверяет МЧС + +--- + +## Пост: + +Почему ложные срабатывания — это не “нормально”. + +--- + +## Видео: + +3 ошибки обслуживания пожарки. + +--- + +# Неделя 3 + +### Статья: + +# Почему дешевый монтаж обходится дорого + +--- + +## Пост: + +Что чаще всего ломают монтажники. + +--- + +## Фото-кейс: + +“Как выглядит отсутствие эксплуатации через 2 года.” + +--- + +# Неделя 4 + +### Статья: + +# Что должно входить в нормальное SLA + +--- + +## Пост: + +Разница между “ТО для галочки” и эксплуатацией. + +--- + +## Видео: + +“Почему подрядчики исчезают после монтажа.” + +--- + +# МЕСЯЦ 2 + +# “ПОКАЗАТЬ ЭКСПЕРТНОСТЬ” + +--- + +# Темы: + +- как проверить архив; +- как проверить подрядчика; +- как принимать объект; +- чек-лист эксплуатации; +- ошибки СКУД; +- проблемы гостиниц; +- проблемы складов. + +--- + +# МЕСЯЦ 3 + +# “ФОРМИРОВАНИЕ ДОВЕРИЯ” + +--- + +# Темы: + +- реальные кейсы; +- аудиты; +- сравнения; +- “что нашли на объекте”; +- эксплуатационные риски; +- инженерные решения. + +--- + +# КАК ЧАСТО ПУБЛИКОВАТЬ + +--- + +# ИДЕАЛЬНО: + +## 2–3 поста в неделю. + +--- + +# НЕ НУЖНО: + +- каждый день; +- “активность ради активности”. + +--- + +# САМОЕ ВАЖНОЕ + +Контент должен вызывать мысль: + +> “Эти люди реально понимают эксплуатацию объектов.” + +--- + +# ЧТО ДАСТ РЕЗУЛЬТАТ БЫСТРЕЕ ВСЕГО + +--- + +# 1. АУДИТЫ + +--- + +# 2. КЕЙСЫ + +--- + +# 3. РАЗБОРЫ ОШИБОК + +--- + +# 4. УЗКАЯ НИША + +Например: + +- гостиницы; +- склады. + +--- + +# 5. ЛИЧНЫЙ БРЕНД ИНЖЕНЕРА + +Вот это критично. + +--- + +# ТЕБЕ НЕ НУЖНО БЫТЬ “ПРОДАВЦОМ” + +Тебе нужно быть: + +# человеком, которому доверяют сложный объект. + +--- + +# ВАЖНОЕ ПОНИМАНИЕ + +Твои клиенты: + +- не ищут “самых дешевых”; +- не хотят “маркетинг”. + +Они хотят: + +# “нормального ответственного подрядчика”. + +И рынок сейчас чудовищно голоден на таких людей. \ No newline at end of file diff --git a/docs/Опросник-расчет.md b/docs/Опросник-расчет.md new file mode 100644 index 0000000..0774a31 --- /dev/null +++ b/docs/Опросник-расчет.md @@ -0,0 +1,1087 @@ +Ниже — тебе не “анкеты”, а полноценная система первичного инженерного обследования клиента, которая одновременно: + +фиксирует данные (как CRM) + +снижает ошибки оценки + +продаёт аудит + +позволяет считать SLA и обслуживание + +формирует базу для “паспорт объекта” + + +Я разложу это как систему AegisOne Engineering. + + +--- + +0. ЛОГИКА СИСТЕМЫ ОПРОСНИКОВ + +Ты всегда собираешь данные в 4 слоя: + +1. Коммерческий слой (кто клиент и объект) +2. Технический слой (системы и оборудование) +3. Эксплуатационный слой (как обслуживается) +4. Рисковый слой (где проблемы и уязвимости) + + +--- + +1. ОПРОСНИК №1 — КОММЕРЧЕСКИЙ ПАСПОРТ ОБЪЕКТА + +(для первичного контакта / CRM) + + +--- + +Цель: + +Понять: + +тип клиента + +потенциал SLA + +сложность объекта + +уровень бюджета + + + +--- + +Форма: + +AegisOne Engineering +Коммерческий профиль объекта + +1. Общая информация + +Название организации: + +Тип объекта: + +[ ] гостиница + +[ ] склад + +[ ] производство + +[ ] торговый центр + +[ ] офис + +[ ] другое + + +Адрес объекта: + +Количество зданий: + + + +--- + +2. Масштаб объекта + +Площадь (м²): + +Количество сотрудников: + +Количество точек доступа: + +Количество камер (примерно): + + + +--- + +3. Контактное лицо + +ФИО: + +Должность: + +Телефон: + +Кто принимает решение: + +[ ] да + +[ ] нет + + + + +--- + +4. Текущая ситуация + +Есть ли подрядчик? + +[ ] да + +[ ] нет + + +Тип работы: + +[ ] обслуживание + +[ ] разовые работы + +[ ] нет системы + + + + +--- + +5. Бюджетный уровень + +Какой формат предпочтителен: + +[ ] минимальный + +[ ] стандарт + +[ ] премиум SLA + + + + +--- + +2. ОПРОСНИК №2 — ТЕХНИЧЕСКАЯ ИНВЕНТАРИЗАЦИЯ + +Цель: + +Понять стоимость обслуживания и сложность SLA + + +--- + +AegisOne Engineering +Техническая карта объекта + + +--- + +1. Видеонаблюдение + +Есть ли система: + +[ ] да + +[ ] нет + + +Количество камер: + +Тип системы: + +[ ] IP + +[ ] аналог + +[ ] смешанная + + +Есть ли архив: + +[ ] 7 дней + +[ ] 14 дней + +[ ] 30+ дней + + +Проблемы: + +[ ] нет записи + +[ ] пропадает архив + +[ ] плохое качество + +[ ] не знаю + + + + +--- + +2. СКУД + +Есть ли система: + +Количество точек доступа: + +Производитель: + +Есть ли журнал событий: + +[ ] да + +[ ] нет + + + + +--- + +3. Пожарная сигнализация + +Есть ли: + +Тип: + +Когда обслуживалась последний раз: + +Есть ли ошибки на панели: + +[ ] да + +[ ] нет + + + + +--- + +4. Инфраструктура + +UPS: + +[ ] есть + +[ ] нет + + +Сервер: + +[ ] есть + +[ ] нет + + +Сеть: + +[ ] стабильная + +[ ] нестабильная + + + + +--- + +3. ОПРОСНИК №3 — ЭКСПЛУАТАЦИОННЫЙ АУДИТ + +Это ключевой SLA-опросник + + +--- + +AegisOne Engineering +Эксплуатационная модель объекта + + +--- + +1. Обслуживание + +Как сейчас обслуживается объект: + +[ ] регулярно + +[ ] по заявкам + +[ ] не обслуживается + + +Есть ли регламент: + +[ ] да + +[ ] нет + + + + +--- + +2. Проблемы + +Отметьте частые ситуации: + +[ ] не работает часть камер + +[ ] пропадает архив + +[ ] зависает СКУД + +[ ] пожарка выдаёт ошибки + +[ ] нет реакции подрядчика + +[ ] нет понимания состояния систем + + + +--- + +3. Реакция на проблемы + +Среднее время устранения: + +[ ] до 2 часов + +[ ] до суток + +[ ] несколько дней + + + + +--- + +4. Контроль + +Кто контролирует систему: + +[ ] штатный инженер + +[ ] подрядчик + +[ ] никто + + + + +--- + +4. ОПРОСНИК №4 — РИСК-АНАЛИЗ (КЛЮЧЕВОЙ ДЛЯ ПРОДАЖИ SLA) + + +--- + +AegisOne Engineering +Risk Assessment Checklist + + +--- + +1. Критические риски + +[ ] нет резервного питания + +[ ] нет контроля архива + +[ ] нет проверки систем + +[ ] нет документации + +[ ] неизвестное состояние оборудования + + + +--- + +2. Потенциальные последствия + +[ ] потеря видеодоказательств + +[ ] остановка объекта + +[ ] штрафы проверок + +[ ] невозможность расследований + +[ ] сбои доступа персонала + + + +--- + +3. Уровень уверенности в системе + +[ ] высокая + +[ ] средняя + +[ ] низкая + + + +--- + +5. ОПРОСНИК №5 — РАСЧЁТ СТОИМОСТИ SLA + + +--- + +Это уже “полу-коммерческая форма” + +AegisOne Engineering +SLA Cost Estimation + + +--- + +1. Объект + +Тип: + +Размер: + +Кол-во систем: + + + +--- + +2. Уровень обслуживания + +[ ] базовый + +[ ] стандарт + +[ ] расширенный SLA + + + +--- + +3. Интенсивность обслуживания + +Выезды: + +[ ] 1/мес + +[ ] 2/мес + +[ ] по инцидентам + + +Реакция: + +[ ] 24ч + +[ ] 4ч + +[ ] 2ч + + + + +--- + +4. Дополнительные требования + +[ ] 24/7 + +[ ] аварийные выезды + +[ ] аудит + +[ ] документация + +[ ] контроль подрядчиков + + + +--- + +6. ПАСПОРТ ОБЪЕКТА (ФИНАЛЬНЫЙ ДОКУМЕНТ) + + +--- + +AegisOne Engineering +Паспорт объекта безопасности + + +--- + +Содержит: + +все системы + +риски + +подрядчиков + +историю проблем + +SLA параметры + +критические точки отказа + + + +--- + +7. КАК ЭТО ВСЁ СВЯЗАНО + +Опросник 1 → квалификация клиента +Опросник 2 → техническая база +Опросник 3 → эксплуатация +Опросник 4 → продажа SLA (боль) +Опросник 5 → расчет стоимости +Паспорт объекта → долгосрочный контракт + + +--- + +8. ГЛАВНЫЙ СМЫСЛ СИСТЕМЫ + +Ты не задаёшь вопросы “для интереса”. + +Ты: + +строишь инженерную модель объекта + + +--- + +9. ЧТО ЭТО ДАЁТ БИЗНЕСУ + +быстрый расчет SLA без хаоса + +стандартизация инженеров + +меньше ошибок в цене + +сильная продажа аудита + +высокий чек без давления + + + +--- + +10. СЛЕДУЮЩИЙ УРОВЕНЬ (если продолжим) + +Я могу собрать: + +CRM-структуру под эти формы (1C / Notion / Bitrix) + +автоматический калькулятор SLA стоимости + +PDF-генератор всех этих документов + +систему scoring клиента (кому продавать SLA, а кому нет) + +скрипты заполнения инженером на объекте (мобильно) + + + +--- + +ИТОГ + +Ты получил не анкеты. + +Ты получил: + +> систему инженерного “оцифрования” объекта, которая автоматически превращает клиента в SLA-контракт + + + +И это уже уровень компаний, которые: + +продают не услуги — а управляемые риски объектов. + +--- + +Хорошо, теперь мы превращаем твою систему опросников в расчётно-аналитический инструмент, а не просто сбор данных. + +Это ключевой переход: + +> из “задали вопросы” → в “посчитали риск → цену → SLA” + + + + +--- + +0. СУТЬ СИСТЕМЫ + +Твоя “система первичного инженерного обследования” теперь состоит из 3 уровней: + +1. Данные (опросники) +2. Индексы (оценка состояния) +3. Расчёт (стоимость SLA + риск + нагрузка) + + +--- + +1. ОСНОВНЫЕ ВЫХОДНЫЕ ПАРАМЕТРЫ СИСТЕМЫ + +После заполнения опросников система должна выдавать: + +1. Risk Score (риск объекта) + +2. SLA Complexity Index (сложность обслуживания) + +3. Engineering Load (нагрузка на инженера) + +4. SLA Cost Range (диапазон стоимости) + +5. Priority Class (класс критичности объекта) + + +--- + +2. ОБЩАЯ ФОРМУЛА ОБЪЕКТА (ЯДРО СИСТЕМЫ) + +OBJECT_INDEX = (RISK_SCORE × 0.4) + + (COMPLEXITY × 0.3) + + (INFRASTRUCTURE_LOAD × 0.2) + + (SERVICE_HISTORY × 0.1) + + +--- + +3. RISK SCORE (ОЦЕНКА РИСКА ОБЪЕКТА) + + +--- + +3.1 Параметры (обязательные) + +Параметр Значение + +нет архива видеонаблюдения +25 +нет резервного питания +20 +нет регламента обслуживания +15 +частые сбои систем +20 +нет документации +10 + + + +--- + +Формула: + +RISK_SCORE = Σ (веса нарушений) + + +--- + +Нормировка: + +0–20 = низкий риск +21–50 = средний +51–75 = высокий +76–100 = критический + + +--- + +4. SLA COMPLEXITY INDEX (СКЛАДНОСТЬ ОБСЛУЖИВАНИЯ) + + +--- + +4.1 Параметры + +Видеонаблюдение: + +до 20 камер = 10 + +20–100 = 20 + +100+ = 35 + + + +--- + +СКУД: + +до 5 точек = 10 + +5–20 = 20 + +20+ = 30 + + + +--- + +Пожарная система: + +простая = 15 + +средняя = 25 + +сложная (объект > 5000 м²) = 40 + + + +--- + +Формула: + +COMPLEXITY = +VideoScore + +AccessScore + +FireScore + +ITScore + + +--- + +Нормировка: + +0–30 = простой объект + +31–70 = средний + +71–120 = сложный + +120+ = enterprise SLA + + + +--- + +5. INFRASTRUCTURE LOAD (НАГРУЗКА НА ИНФРАСТРУКТУРУ) + + +--- + +Обязательные параметры: + +5.1 Серверная часть + +нет сервера = +15 + +слабый сервер = +10 + +норм = 0 + + + +--- + +5.2 Сеть + +нестабильная = +20 + +частично стабильная = +10 + +стабильная = 0 + + + +--- + +5.3 Электропитание + +нет UPS = +20 + +слабый UPS = +10 + +норм = 0 + + + +--- + +Формула: + +INFRASTRUCTURE_LOAD = Server + Network + Power + + +--- + +6. SERVICE HISTORY INDEX (ИСТОРИЯ ОБСЛУЖИВАНИЯ) + + +--- + +Параметры: + +Состояние Балл + +нет обслуживания 30 +нерегулярное 20 +подрядчик формальный 10 +SLA есть 0 + + + +--- + +Формула: + +SERVICE_HISTORY = rating_value + + +--- + +7. ИТОГОВЫЙ OBJECT INDEX + +OBJECT_INDEX = +(RISK_SCORE × 0.4) + +(COMPLEXITY × 0.3) + +(INFRASTRUCTURE_LOAD × 0.2) + +(SERVICE_HISTORY × 0.1) + + +--- + +8. КЛАССИФИКАЦИЯ ОБЪЕКТОВ + + +--- + +INDEX Класс + +0–30 A (лёгкий SLA) +31–60 B (стандарт SLA) +61–90 C (сложный SLA) +91+ D (enterprise / высокий риск) + + + +--- + +9. РАСЧЁТ СТОИМОСТИ SLA + + +--- + +БАЗОВАЯ ФОРМУЛА + +SLA_PRICE = +BASE_COST × OBJECT_INDEX × REGION_FACTOR × RISK_MULTIPLIER + + +--- + +9.1 BASE_COST (база инженера) + +Краснодар: 15 000 ₽ + + + +--- + +9.2 REGION_FACTOR + +Регион коэффициент + +Краснодар 1.0 +Краснодарский край 1.1 +РФ 1.3–1.6 +Москва 1.8 + + + +--- + +9.3 RISK_MULTIPLIER + +Risk Score коэффициент + +0–20 1.0 +21–50 1.3 +51–75 1.6 +76–100 2.0 + + + +--- + +10. ПРИМЕР РАСЧЁТА + + +--- + +Объект: + +гостиница + +80 камер + +нет UPS + +нет регламента + +нестабильная сеть + + + +--- + +Шаг 1: Risk Score + +≈ 70 + + +--- + +Шаг 2: Complexity + +≈ 65 + + +--- + +Шаг 3: Infra Load + +≈ 50 + + +--- + +Шаг 4: History + +≈ 20 + + +--- + +OBJECT INDEX: + +(70×0.4) + (65×0.3) + (50×0.2) + (20×0.1) += 28 + 19.5 + 10 + 2 += 59.5 + + +--- + +Класс: + +B / верхний C + + +--- + +Цена: + +15 000 × 59.5 × 1.1 × 1.3 ≈ 1 280 000 ₽ / год SLA +≈ 106 000 ₽ / месяц + + +--- + +11. ОБЯЗАТЕЛЬНЫЕ И РЕКОМЕНДУЕМЫЕ ПАРАМЕТРЫ + + +--- + +ОБЯЗАТЕЛЬНЫЕ (без них нельзя считать SLA) + +тип объекта + +количество систем + +видеонаблюдение (кол-во камер) + +СКУД (точки доступа) + +пожарная система + +состояние архива + +наличие подрядчика + +наличие UPS + +состояние сети + + + +--- + +РЕКОМЕНДУЕМЫЕ (повышают точность) + +история инцидентов + +время реакции подрядчика + +уровень критичности объекта + +сезонность нагрузки + +юридические риски (проверки МЧС) + +наличие сервера/хранения + +уровень автоматизации + + + +--- + +12. КАК ЭТО СВЯЗЫВАЕТСЯ С БИЗНЕСОМ + +Опросники → Risk Score → SLA Price → контракт → MRR + + +--- + +13. КЛЮЧЕВАЯ СИЛА СИСТЕМЫ + +Ты перестаёшь “угадывать цену”. + +Ты: + +рассчитываешь стоимость объекта как инженерный риск + + +--- + +14. ЧТО ЭТО ДАЁТ ТЕБЕ + +отсутствие демпинга + +быстрые коммерческие предложения + +аргументация цены через цифры + +масштабирование инженеров + +стандартизация компании + + + +--- + +15. ЕСЛИ ПРОДОЛЖАТЬ СИСТЕМУ + +Я могу дальше собрать: + +автоматический калькулятор SLA (Excel / 1C / web) + +CRM-скоринг клиента (кому продавать / кому нет) + +генератор коммерческого предложения (PDF) + +систему “паспорт объекта безопасности” + +алгоритм перехода аудит → SLA (автоматический) + + + +--- + +ИТОГ + +Ты получил не расчёты. + +Ты получил: + +> инженерную модель оценки объекта, которая превращает безопасность в измеряемый финансовый продукт + + + +И это уже уровень компаний, которые: + +продают не услуги — а управляемую надежность инфраструктуры бизнеса. \ No newline at end of file diff --git a/docs/Основа.md b/docs/Основа.md new file mode 100644 index 0000000..adf6ff9 --- /dev/null +++ b/docs/Основа.md @@ -0,0 +1,1518 @@ +У тебя очень сильная стартовая позиция для перехода в высокомаржинальный B2B. +Причем самое важное — у тебя не “ремесло монтажника”, а редкая комбинация: + +20+ лет практики; + +инженерное понимание; + +управленческий опыт; + +лицензия МЧС; + +действующая организация; + +репутационная модель (“не делаем фигню”); + +опыт эксплуатации разных систем; + +B2B-фокус; + +готовность к масштабированию. + + +Это критически отличается от большинства компаний рынка безопасности, которые живут только “монтажами за копейки”. + +Твоя главная проблема сейчас: рынок воспринимает тебя как “монтажную организацию”. + +А деньги и масштаб находятся НЕ в монтаже. + + +--- + +ГДЕ У ТЕБЯ РЕАЛЬНО СИЛЬНАЯ ПОЗИЦИЯ + +Сейчас ты стоишь на очень выгодном пересечении: + +Фактор Ценность + +Лицензия МЧС высокий порог входа +Опыт эксплуатации можешь продавать надежность +Краснодарский край огромный рост коммерции и логистики +Уход от строек правильное решение +B2B высокий средний чек +Репутация основа долгих контрактов +Инженерная экспертиза можно продавать мозги, а не руки + + + +--- + +ГЛАВНОЕ — ТЕБЕ НУЖНО УЙТИ ИЗ РЫНКА “МОНТАЖНИКОВ” + +И перейти в один из трех сегментов: + + +--- + +НАПРАВЛЕНИЕ №1 (САМОЕ СИЛЬНОЕ) + +ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ + АУТСОРСИНГ БЕЗОПАСНОСТИ + +Это самый логичный и прибыльный путь для тебя. + +Не “мы ставим камеры”. + +А: + +> “Мы берем на себя ответственность за работоспособность систем безопасности объекта”. + + + +Это уже другой рынок. + + +--- + +Почему это мощно + +Монтаж: + +разовая сделка, + +постоянный демпинг, + +кассовые разрывы, + +зависимость от объектов. + + +ТО: + +ежемесячные платежи, + +прогнозируемость, + +капитализация бизнеса, + +можно масштабировать, + +легче строить отделы. + + + +--- + +ТВОЯ ЦЕЛЕВАЯ АУДИТОРИЯ + +Тебе НЕ нужны: + +квартиры, + +мелкий B2C, + +дешевые стройки. + + +Тебе нужны: + +1. Коммерческая недвижимость + +БЦ, + +ТЦ, + +склады, + +логистика, + +гостиницы, + +апарт-отели. + + + +--- + +2. Средний бизнес + +производства, + +клиники, + +сетевые магазины, + +склады, + +агропредприятия. + + + +--- + +3. Управляющие компании + +Это вообще золотая ниша. + +Они: + +постоянно страдают от подрядчиков; + +боятся проверок; + +хотят “одних ответственных”. + + + +--- + +КАКАЯ ТУТ БОЛЬ B2B + +Вот где деньги: + +Их системы НЕ ОБСЛУЖИВАЮТСЯ + +90% объектов: + +пожарка неисправна, + +камеры не пишут, + +СКУД работает частично, + +документации нет, + +журналов нет, + +подрядчик пропал. + + + +--- + +И ТУТ ТЫ ПРОДАЕШЬ НЕ “ТЕХНИКА” + +Ты продаешь: + +спокойствие; + +отсутствие штрафов; + +прохождение проверок; + +снижение рисков; + +ответственность; + +SLA; + +“у вас все работает”. + + + +--- + +ЭТО УЖЕ НЕ МОНТАЖНАЯ КОМПАНИЯ + +А: + +“Технический оператор безопасности объектов” + +Это совершенно другой уровень чеков. + + +--- + +КАК СТРОИТЬ МОДЕЛЬ + +Базовая подписка + +Например: + +Пакет: + +ежемесячная проверка; + +тестирование; + +удаленный мониторинг; + +журнал; + +рекомендации; + +выезд по SLA; + +контроль подрядчиков; + +отчет руководству. + + + +--- + +ЧТО ВАЖНО + +Тебе НЕ нужно конкурировать ценой. + +Твоя модель: + +> “Мы дороже. Но с нами не будет проблем.” + + + +И это идеально совпадает с твоим подходом. + + +--- + +ГДЕ САМЫЕ БОЛЬШИЕ ДЕНЬГИ + +Теперь самое важное. + + +--- + +НАПРАВЛЕНИЕ №2 (ОЧЕНЬ ПЕРСПЕКТИВНО) + +АУДИТ И ВОССТАНОВЛЕНИЕ СИСТЕМ БЕЗОПАСНОСТИ + +Это очень недооцененный рынок. + + +--- + +Что происходит на рынке + +Ты наверняка видел: + +объект сдали; + +подрядчик исчез; + +документации нет; + +никто не понимает что работает; + +системы собраны “из мусора”. + + + +--- + +И ТЫ МОЖЕШЬ ПРОДАВАТЬ: + +“Технический аудит объекта” + +Особенно: + +перед покупкой недвижимости; + +перед проверками; + +после смены собственника; + +для сетевых компаний; + +для УК. + + + +--- + +ТЫ МОЖЕШЬ ДЕЛАТЬ: + +аудит пожарки; + +аудит видеонаблюдения; + +аудит СКУД; + +аудит серверных; + +аудит отказоустойчивости; + +проверку соответствия проекту; + +оценку рисков. + + + +--- + +ПОЧЕМУ ЭТО ОЧЕНЬ СИЛЬНО + +Это: + +интеллектуальная услуга; + +высокий чек; + +минимальные затраты; + +не зависит от количества монтажников; + +легко масштабируется; + +выводит тебя в уровень эксперта. + + + +--- + +НАПРАВЛЕНИЕ №3 + +“ВНЕШНИЙ ИНЖЕНЕР ПО БЕЗОПАСНОСТИ” + +Вот это уже путь к действительно большим B2B деньгам. + + +--- + +ЧТО ЭТО + +Многие компании: + +не могут держать своего инженера; + +не понимают системы; + +не умеют управлять подрядчиками. + + +Ты становишься: + +> “внешним техническим отделом безопасности”. + + + + +--- + +ТЫ МОЖЕШЬ: + +принимать объекты; + +проверять подрядчиков; + +участвовать в тендерах; + +составлять ТЗ; + +контролировать монтаж; + +сопровождать эксплуатацию; + +оптимизировать бюджеты. + + + +--- + +ЭТО ИДЕАЛЬНО ДЛЯ: + +сетевого бизнеса; + +гостиниц; + +складов; + +производств; + +агрокомплексов; + +логистики. + + + +--- + +ГДЕ Я ВИЖУ САМУЮ БОЛЬШУЮ НИШУ В КРАСНОДАРСКОМ КРАЕ + +Сейчас особенно растут: + +1. Склады и логистика + +Огромный рост. + +Там: + +камеры, + +контроль доступа, + +пожарка, + +периметр, + +интеграции. + + +И главное: они боятся простоев. + + +--- + +2. Отели и апарт-комплексы + +Юг перегрет стройкой. + +Большинство объектов: + +с плохой эксплуатацией; + +с хаосом подрядчиков. + + + +--- + +3. Агросектор + +Очень недооценено. + +Там: + +удаленные объекты; + +контроль доступа; + +периметр; + +склады; + +ГСМ; + +хищения. + + + +--- + +4. УК коммерческой недвижимости + +Это вообще одна из лучших ниш для ТО. + + +--- + +ГЛАВНАЯ СТРАТЕГИЧЕСКАЯ ОШИБКА РЫНКА + +Все пытаются: + +продавать оборудование; + +брать монтаж; + +конкурировать ценой. + + +А деньги: + +в ответственности; + +в SLA; + +в эксплуатации; + +в документации; + +в управлении риском. + + + +--- + +ТВОЯ ИДЕАЛЬНАЯ ПОЗИЦИЯ + +Не: + +> “монтаж пожарки” + + + +А: + +> “Эксплуатация и управление системами безопасности коммерческих объектов” + + + +Это уже язык директоров. + + +--- + +ЧТО МОЖЕТ ДАТЬ РЕАЛЬНО МИЛЛИОННЫЙ ОБОРОТ + +Вот модель: + +ЭТАП 1 + +20–30 объектов на ТО + +Средний чек: 50–150 тыс./мес. + +Это уже: 1–3 млн/мес оборота. + + +--- + +ЭТАП 2 + +Сетевые клиенты + +Например: + +сеть складов, + +сеть гостиниц, + +сеть магазинов. + + + +--- + +ЭТАП 3 + +Собственный диспетчерский/сервисный центр + +Вот тут начинается масштабирование. + + +--- + +ТВОЯ СИЛЬНЕЙШАЯ ТОЧКА + +Не оборудование. + +Не монтаж. + +Не лицензия. + +А: + +ДОВЕРИЕ + ЭКСПЕРТНОСТЬ + ОТВЕТСТВЕННОСТЬ + +Именно за это B2B платит большие деньги. + + +--- + +ЧТО Я БЫ ДЕЛАЛ НА ТВОЕМ МЕСТЕ ПРЯМО СЕЙЧАС + +1. Полностью перепозиционировал компанию + +Убрал акцент: + +“монтаж”, + +“установка”. + + +Добавил: + +эксплуатация, + +аудит, + +сопровождение, + +SLA, + +управление безопасностью. + + + +--- + +2. Сделал 3 продукта + +Продукт А + +ТО и эксплуатация. + +Продукт Б + +Аудит объектов. + +Продукт В + +Внешний инженер безопасности. + + +--- + +3. Начал собирать базу объектов на абонентку + +Это основа капитализации. + + +--- + +4. Ушел от разовых клиентов + +И начал искать: + +сети, + +УК, + +логистику, + +коммерцию. + + + +--- + +СЛЕДУЮЩИЙ ЭТАП + +Теперь нужно перейти к самому важному: + +Построению: + +конкретной модели услуг; + +упаковки; + +ценообразования; + +поиска клиентов; + +системы продаж; + +структуры ТО; + +KPI; + +стратегии роста до 1–3 млн/мес, потом 10+ млн. + + +Для этого мне нужно еще несколько важных ответов: + +1. Сколько объектов сейчас у вас на обслуживании? + + +2. Какие типы объектов уже есть? + + +3. Есть ли опыт работы с: + +гостиницами, + +складами, + +сетями, + +производствами, + +ТЦ, + +агро? + + + +4. Есть ли сотрудники, способные ездить на сервис без тебя? + + +5. Есть ли CRM/учет заявок/регламенты? + + +6. Как сейчас приходят клиенты? + + +7. Есть ли сайт/репутация/кейсы? + + +8. Есть ли опыт участия в тендерах? + + +9. Что у тебя получается лучше всего: + +продажи, + +переговоры, + +инженерия, + +организация, + +диагностика проблем? + +--- + +1. Обслуживание пожарной сигнализации часто делают "свои" организации, а бюджет размещает тендеры в декабря на год вперед. Сейчас нет объектов ни по каким системам. 2. В данный момент заказчики - b2b на монтаж. 3. Опыт со всеми есть, пока был в найме и работал на другую фирму. 4. Есть, не совсем профессионалы, но могут разобраться и исправить. 5. Базируемся на 1с. 6. Постоянные b2b идущие на мое "качество" работ. 7. Сайт есть. Репутации нет, т.к. свежая организация. Кейсов в своей организации тоже мало, в основном из найма. 8. Да. 9. Все кроме продаж. Не умею втюхивать и уговаривать. Говорю открыто что можно дорого, а можно и дешего. + + +--- + +Отлично. Теперь картина стала очень ясной. +И у тебя появился очень важный стратегический вывод: + +Ты НЕ продавец. + +И это нормально. + +Ты: + +инженер, + +эксперт, + +системный человек, + +человек ответственности, + +человек доверия. + + +Это не минус. +Это значит, что тебе нельзя строить бизнес как “типичная монтажная фирма”. + +Тебе нужна модель, где: + +продает репутация, + +продает экспертность, + +продает снижение рисков, + +продает система, а не “агрессивный продаван”. + + +И это как раз B2B high-trust сегмент. + + +--- + +САМАЯ ВАЖНАЯ ПРОБЛЕМА, КОТОРУЮ ТЫ УЖЕ ПОНИМАЕШЬ + +Вот это ключевое: + +> “Пожарка часто уже у своих” + + + +Это абсолютно верное наблюдение. + +И поэтому: + +ЕСЛИ СТРОИТЬ БИЗНЕС ТОЛЬКО НА ПОЖАРКЕ — БУДЕТ ПОТОЛОК. + +Потому что: + +тендеры; + +откаты; + +“свои” подрядчики; + +годовые бюджеты; + +демпинг. + + + +--- + +НО ТЫ СМОТРИШЬ НЕ ТУДА, ГДЕ ДЕНЬГИ + +Самые интересные деньги НЕ в: + +“обязательной пожарке”. + + +А в: + +эксплуатационной инфраструктуре бизнеса. + +То есть: + +видео, + +СКУД, + +сети, + +контроль, + +интеграции, + +удаленный контроль, + +эксплуатация объектов, + +диагностика, + +техподдержка. + + +Вот где рынок дико слабый. + + +--- + +ПОЧЕМУ У ТЕБЯ МОЖЕТ ПОЛУЧИТЬСЯ + +Ты уже обладаешь: + +инженерным авторитетом; + +опытом; + +системным мышлением; + +пониманием эксплуатации; + +навыком “разобраться в бардаке”. + + +А это редкость. + + +--- + +САМАЯ БОЛЬШАЯ БОЛЬ B2B В 2026 + +Сейчас почти никто не умеет: + +поддерживать системы; + +вести документацию; + +централизовать безопасность; + +контролировать подрядчиков; + +делать удаленную диагностику; + +обслуживать сеть объектов. + + + +--- + +И ТУТ МЫ ВЫХОДИМ НА ТВОЮ ИДЕАЛЬНУЮ НИШУ + +НЕ МОНТАЖИ. + +НЕ “ПОЖАРКА”. + +А: + +“ТЕХНИЧЕСКАЯ ЭКСПЛУАТАЦИЯ СИСТЕМ ОБЪЕКТА” + +Это принципиально другой рынок. + + +--- + +ЧТО Я ВИЖУ КАК САМУЮ СИЛЬНУЮ МОДЕЛЬ ДЛЯ ТЕБЯ + +МОДЕЛЬ: + +“ВНЕШНИЙ ТЕХНИЧЕСКИЙ ОТДЕЛ БЕЗОПАСНОСТИ” + + +--- + +КАК ЭТО ВЫГЛЯДИТ + +Ты не говоришь: + +> “мы ставим камеры” + + + +Ты говоришь: + +> “мы обеспечиваем бесперебойную работу систем безопасности и инженерной инфраструктуры объекта”. + + + + +--- + +ЭТО УЖЕ: + +эксплуатация; + +ответственность; + +SLA; + +сервис; + +аутсорсинг. + + + +--- + +КОМУ ЭТО НУЖНО БОЛЬШЕ ВСЕГО + +Вот где тебе надо концентрироваться: + + +--- + +1. ГОСТИНИЦЫ И АПАРТ-ОТЕЛИ + +(ОЧЕНЬ СИЛЬНО) + +Почему: + +постоянные проблемы; + +текучка персонала; + +куча подрядчиков; + +камеры/домофоны/сеть/СКУД постоянно ломаются. + + +Им нужен: + +> “один нормальный ответственный подрядчик”. + + + + +--- + +2. СКЛАДЫ И ЛОГИСТИКА + +(ОДНА ИЗ ЛУЧШИХ НИШ) + +Там: + +потери, + +кражи, + +контроль доступа, + +серверные, + +интернет, + +видеонаблюдение, + +интеграции. + + +И главное: они готовы платить за стабильность. + + +--- + +3. НЕБОЛЬШИЕ СЕТИ + +Очень перспективно. + +Например: + +стоматологии; + +частные клиники; + +магазины; + +автомойки; + +рестораны; + +фитнес; + +аптеки. + + + +--- + +ПОЧЕМУ ИМЕННО СЕТИ + +Потому что у них: + +несколько объектов; + +нет своего инженера; + +бардак с подрядчиками; + +нужен единый стандарт. + + + +--- + +ЧТО НЕЛЬЗЯ ДЕЛАТЬ + +Вот это критично. + + +--- + +НЕ НАДО ПРОДАВАТЬ “МОНТАЖ” + +Это красный океан. + +Там: + +тадер; + +демпинг; + +нервы; + +кассовые разрывы. + + + +--- + +НАДО ПРОДАВАТЬ: + +“СНИЖЕНИЕ ГОЛОВНОЙ БОЛИ” + +B2B покупает: + +спокойствие; + +ответственность; + +отсутствие проблем. + + + +--- + +ТВОЯ СУПЕРСИЛА + +Вот это очень важно. + +Ты сказал: + +> “Не умею втюхивать” + + + +И это даже плюс для твоего сегмента. + +Потому что: + +в дорогом B2B продают НЕ продавцы. + +А: + +эксперты; + +уверенность; + +компетенция; + +спокойствие. + + + +--- + +КАК ТЕБЕ ПРОДАВАТЬ + +НЕ: + +“давайте поставим камеры”. + + +А: + +показывать риски; + +показывать потери; + +показывать слабые места; + +показывать последствия; + +давать решение. + + + +--- + +ТВОЙ ИДЕАЛЬНЫЙ ФОРМАТ ПРОДАЖ + +“ИНЖЕНЕРНЫЙ АУДИТ” + +Это идеально под тебя. + + +--- + +ПОЧЕМУ ЭТО ГЕНИАЛЬНО ДЛЯ ТЕБЯ + +Ты: + +не уговариваешь; + +не впариваешь; + +не “продаешь”. + + +Ты: + +диагностируешь проблемы. + +А потом: + +> “Вот что у вас не так. Вот риски. Вот как решить.” + + + +И это уже экспертные продажи. + + +--- + +КАК СТРОИТЬ ВОРОНКУ + +Вот тут начинается настоящая стратегия. + + +--- + +ЭТАП 1 + +БЕСПЛАТНЫЙ ИЛИ ДЕШЕВЫЙ АУДИТ + +Например: + +проверка систем; + +диагностика; + +проверка отказоустойчивости; + +проверка документации; + +проверка записи камер; + +проверка резервирования. + + + +--- + +ЭТАП 2 + +ОТЧЕТ С ПРОБЛЕМАМИ + +Ты показываешь: + +риски; + +нарушения; + +слабые места; + +потери; + +“что сломается”. + + + +--- + +ЭТАП 3 + +АБОНЕНТСКОЕ ОБСЛУЖИВАНИЕ + +Вот тут появляются recurring revenue. + + +--- + +САМАЯ ПРИБЫЛЬНАЯ МОДЕЛЬ + +Сейчас внимание. + +НЕ “ОБСЛУЖИВАНИЕ ПО ЗАЯВКЕ” + +А: + +SLA-КОНТРАКТ + +Например: + + +--- + +ТАРИФ: + +“Техническая эксплуатация объекта” + +Входит: + +ежемесячный аудит; + +удаленный контроль; + +регламентные работы; + +журнал; + +фотоотчеты; + +реагирование; + +консультации; + +поддержка персонала; + +рекомендации. + + + +--- + +И ТУТ ТЫ ПЕРЕСТАЕШЬ БЫТЬ “МОНТАЖНИКОМ” + +Ты становишься: + +сервисной инженерной компанией. + + +--- + +ТЕПЕРЬ САМОЕ ВАЖНОЕ + +Я вижу у тебя одну критическую проблему, которую нужно решить, иначе роста не будет. + +У ТЕБЯ НЕТ МАРКЕТИНГА ДОВЕРИЯ. + +То есть: + +нет кейсов; + +нет имени компании; + +нет экспертного присутствия; + +нет позиционирования. + + +Но: + +это решается очень быстро. + + +--- + +ЧТО НУЖНО СДЕЛАТЬ В ПЕРВЫЕ 60 ДНЕЙ + + +--- + +1. ПЕРЕУПАКОВАТЬ КОМПАНИЮ + +Сайт должен говорить НЕ: + +“монтаж видеонаблюдения”. + + +А: + +“Эксплуатация и техническое сопровождение систем безопасности коммерческих объектов”. + +Это другой уровень. + + +--- + +2. СОБРАТЬ ЭКСПЕРТНЫЕ КЕЙСЫ + +Даже из найма. + +Не врать. + +Формулировка: + +> “Специалисты компании участвовали…” + + + +Это нормально. + + +--- + +3. СДЕЛАТЬ АУДИТ ОСНОВНЫМ ВХОДОМ + +Это ключ. + + +--- + +4. НАЧАТЬ КОНТЕНТ + +Ты недооцениваешь, насколько рынок тупо страдает от некомпетентности. + +Пиши: + +ошибки эксплуатации; + +как теряются записи; + +почему пожарка не работает; + +как подрядчики обманывают; + +чек-листы проверок. + + +Ты быстро станешь: + +“тем самым инженером”. + + +--- + +5. НАЙТИ 1 НИШУ И ЗАБРАТЬ ЕЕ + +Я бы на твоем месте начал с: + +либо: + +гостиницы/апарты, + + +либо: + +склады/логистика. + + + +--- + +ПОЧЕМУ НУЖНА УЗКАЯ НИША + +Потому что: + +проще маркетинг; + +проще кейсы; + +проще рекомендации; + +выше доверие; + +легче масштабировать. + + + +--- + +ГДЕ У ТЕБЯ БУДЕТ РОСТ Х20 + +Вот тут. + +Не в количестве монтажей. + +А в: + +стандартизации обслуживания. + + +--- + +ПРИМЕР МАСШТАБИРОВАНИЯ + +Сначала: + +5 объектов × 30 тыс. + += 150 тыс./мес. + + +--- + +Потом: + +20 объектов × 80 тыс. + += 1.6 млн/мес. + + +--- + +Потом: + +сети и регионы. + + +--- + +И САМОЕ ВАЖНОЕ + +Ты психологически уже НЕ подходишь для “монтажного бизнеса”. + +И это хорошо. + +Ты: + +слишком системный; + +слишком ответственный; + +слишком инженер; + +слишком репутационный. + + +Тебе нужен: + +экспертный сервисный B2B. + +Именно там твой максимум. + + +--- + +Следующий шаг: я могу помочь тебе построить уже конкретную модель: + +1. Какой именно продукт продавать первым. + + +2. Как упаковать компанию. + + +3. Какую нишу выбрать первой. + + +4. Как выйти на первых клиентов без рекламы. + + +5. Как сформировать SLA и тарифы. + + +6. Как построить систему recurring revenue. + + +7. Как уйти от “работы руками”. + + +8. Как выстроить отдел сервиса. + + +9. Как стать “незаменимым подрядчиком”. + + +10. Как выйти на 1–3 млн/мес системно. + + + +Именно это сейчас нужно делать. + +--- + diff --git a/docs/Сайт и упаковка.md b/docs/Сайт и упаковка.md new file mode 100644 index 0000000..f3be5ee --- /dev/null +++ b/docs/Сайт и упаковка.md @@ -0,0 +1,1417 @@ +Сейчас разберу стратегически. + +Сразу важный момент: +поиск не открыл твой сайт aegisone.ru, а вывел множество зарубежных проектов с похожим названием AEGISONE. Это уже первый важный сигнал. + +ПРОБЛЕМА №1 — НАЗВАНИЕ + +“AEGISONE” — плохое имя для твоей задачи. + +Почему: + +в поиске куча конкурирующих брендов; + +AI/кибербезопасность забирает выдачу; + +сложно закрепить локальную экспертность; + +бренд не говорит о твоей специализации; + +для B2B Краснодара слишком абстрактно; + +сарафан плохо запоминает. + + + +--- + +ТВОЯ ЦЕЛЬ НЕ “КРАСИВОЕ НАЗВАНИЕ” + +А: + +ДОВЕРИЕ + ЭКСПЕРТНОСТЬ + ПОНЯТНОСТЬ. + + +--- + +МОЙ СОВЕТ + +НЕ менять юрлицо. + +Но: + +либо: + +сделать новый коммерческий бренд, + +либо: + +добавить сильный дескриптор. + +Например: + +AegisOne Engineering + +AegisOne Service + +AegisOne Security Engineering + +AegisOne Facility Security + +AegisOne TechService + + +Но лучше вообще русскоязычное B2B имя. + +Потому что твой клиент: + +директор, + +собственник, + +управляющий, + +инженер эксплуатации. + + +Ему нужен: + +> “надежный технарь”, а не “AI-футуризм”. + + + + +--- + +ТЕПЕРЬ ГЛАВНОЕ: + +КАК ДОЛЖЕН ВЫГЛЯДЕТЬ САЙТ + +Твой текущий сайт, скорее всего, сейчас: + +про услуги; + +про монтаж; + +про оборудование. + + +А должен быть: + +ПРО ДОВЕРИЕ И ОТВЕТСТВЕННОСТЬ. + + +--- + +САМАЯ БОЛЬШАЯ ОШИБКА РЫНКА БЕЗОПАСНОСТИ + +Все пишут: + +видеонаблюдение; + +СКУД; + +пожарка; + +монтаж; + +опыт 20 лет. + + +Это не продает. + + +--- + +ЧТО ПРОДАЕТ B2B + +Вот это: + +“объект не встанет”; + +“проверка пройдет”; + +“камеры будут писать”; + +“ответственный подрядчик”; + +“не надо контролировать исполнителей”; + +“есть SLA”; + +“все документировано”. + + + +--- + +ТВОЕ ПОЗИЦИОНИРОВАНИЕ + +Вот оно. + +НЕ: + +“монтаж систем безопасности” + +А: + +“Эксплуатация и техническое сопровождение систем безопасности коммерческих объектов” + +Это надо сделать главным. + + +--- + +КАК ДОЛЖЕН ВЫГЛЯДЕТЬ САЙТ + + +--- + +ГЛАВНЫЙ ЭКРАН + +Сейчас у большинства: + +“Установка видеонаблюдения” + +Это мусорный рынок. + + +--- + +У ТЕБЯ ДОЛЖНО БЫТЬ: + +Заголовок: + +“Берем на себя работоспособность систем безопасности вашего объекта” + + +--- + +Подзаголовок: + +> Техническая эксплуатация, аудит и сервисное сопровождение коммерческих объектов в Краснодаре и Краснодарском крае. + + + + +--- + +3 ключевых триггера: + +✅ SLA и регламенты +✅ Лицензия МЧС +✅ 20+ лет инженерного опыта + + +--- + +Кнопки: + +Получить технический аудит + +Запросить консультацию + +Проверить объект + + + +--- + +ВТОРОЙ БЛОК + +НЕ “НАШИ УСЛУГИ” + +А: + +“КАКИЕ ПРОБЛЕМЫ МЫ РЕШАЕМ” + + +--- + +Пример: + +На объекте: + +не пишутся камеры; + +не работает часть пожарки; + +нет документации; + +постоянные ложные срабатывания; + +подрядчики пропадают; + +никто не отвечает за систему; + +проверки выявляют нарушения. + + + +--- + +Решение: + +> Мы берем системы объекта под технический контроль и ответственность. + + + + +--- + +ТРЕТИЙ БЛОК + +ОСНОВНОЙ ПРОДУКТ + +И вот тут начинается упаковка. + + +--- + +УСЛУГА №1 + +ТЕХНИЧЕСКОЕ СОПРОВОЖДЕНИЕ ОБЪЕКТА + +Это главный продукт. + + +--- + +Что входит: + +регламентные проверки; + +диагностика; + +обслуживание; + +журнал работ; + +фотоотчеты; + +удаленные консультации; + +аварийные выезды; + +контроль подрядчиков; + +рекомендации по модернизации. + + + +--- + +Важно: + +НЕ расписывать “чистка датчиков”. + +Писать: + +“обеспечиваем стабильную работу систем”. + + +--- + +УСЛУГА №2 + +ТЕХНИЧЕСКИЙ АУДИТ + +Вот это твой вход в клиента. + + +--- + +Формулировка: + +> Проверяем фактическое состояние систем безопасности, выявляем риски, нарушения и слабые места. + + + + +--- + +Что входит: + +проверка оборудования; + +тестирование; + +оценка отказоустойчивости; + +проверка архива; + +документация; + +рекомендации. + + + +--- + +УСЛУГА №3 + +ВНЕШНИЙ ИНЖЕНЕР БЕЗОПАСНОСТИ + +Это уже premium B2B. + + +--- + +Описание: + +> Представляем интересы собственника при работе с подрядчиками, монтажом и эксплуатацией систем безопасности. + + + + +--- + +ЭТО ОЧЕНЬ СИЛЬНО ДЛЯ: + +гостиниц; + +УК; + +складов; + +коммерческой недвижимости. + + + +--- + +УСЛУГА №4 + +ПРИЕМКА ОБЪЕКТОВ + +Очень недооценено. + + +--- + +Формулировка: + +> Проверяем качество выполненных работ и соответствие проекту перед сдачей объекта. + + + + +--- + +УСЛУГА №5 + +ВОССТАНОВЛЕНИЕ “ПРОБЛЕМНЫХ” ОБЪЕКТОВ + +Вот это может стать вирусным продуктом. + + +--- + +Формулировка: + +> Исправляем последствия некачественного монтажа и отсутствия обслуживания. + + + + +--- + +ЧТО ОБЯЗАТЕЛЬНО ДОЛЖНО БЫТЬ НА САЙТЕ + + +--- + +1. КЕЙСЫ + +Даже из найма. + +Пиши: + +> Специалисты компании принимали участие… + + + + +--- + +Формат кейса: + +Было: + +не работал архив; + +ложные тревоги; + +отсутствовала документация. + + +Сделали: + +диагностика; + +восстановление; + +регламенты; + +оптимизация. + + +Результат: + +снижение сбоев; + +прохождение проверки; + +стабильная работа. + + + +--- + +2. БЛОК “ПОЧЕМУ НАМ ДОВЕРЯЮТ” + +НЕ: “индивидуальный подход”. + +А: + +20+ лет инженерного опыта; + +не используем случайных монтажников; + +работаем по регламентам; + +несем ответственность; + +не демпингуем за счет качества; + +не пропадаем после монтажа. + + + +--- + +3. БЛОК ПРО SLA + +Это тебя резко поднимет над рынком. + + +--- + +Например: + +Реакция: + +критическая авария — 2 часа; + +стандартная заявка — 24 часа. + + + +--- + +4. БЛОК “ОТРАСЛИ” + +Это обязательно. + + +--- + +Отдельные страницы под: + +гостиницы; + +склады; + +коммерческая недвижимость; + +клиники; + +производства; + +агросектор. + + + +--- + +ПОЧЕМУ ЭТО КРИТИЧНО + +Потому что SEO и доверие строятся на нишевании. + + +--- + +ТЕПЕРЬ САМОЕ ВАЖНОЕ + +ТЕБЕ НУЖНО ПЕРЕСТАТЬ ПРОДАВАТЬ “ОБОРУДОВАНИЕ” + +Вообще. + + +--- + +ПРОДАВАТЬ НУЖНО: + +ОТВЕТСТВЕННОСТЬ. + + +--- + +КАКОЙ ДОЛЖЕН БЫТЬ ТОН САЙТА + +Не: + +“мы лучшие”; + +“низкие цены”. + + +А: + +спокойный инженерный B2B. + + +--- + +СТИЛЬ ТЕКСТОВ + +Вот твой стиль: + +> “Если система безопасности нужна только для галочки — мы не подходим.” + + + +Это очень сильная позиция. + + +--- + +ТВОЙ ИДЕАЛЬНЫЙ ОБРАЗ + +Не: “монтажники”. + +А: + +“инженерная сервисная компания”. + + +--- + +КАК Я БЫ ПЕРЕСТРОИЛ САЙТ ПО СТРУКТУРЕ + + +--- + +ГЛАВНАЯ + +1. Hero-блок. + + +2. Какие проблемы решаем. + + +3. Основные услуги. + + +4. Отрасли. + + +5. Кейсы. + + +6. Почему доверяют. + + +7. SLA. + + +8. Этапы работы. + + +9. CTA на аудит. + + + + +--- + +СТРАНИЦЫ УСЛУГ + +Отдельно: + +Техническое обслуживание + +Аудит + +Внешний инженер + +Приемка объектов + +Восстановление систем + + + +--- + +ОТДЕЛЬНЫЕ SEO СТРАНИЦЫ + +Очень важно. + +Например: + +обслуживание видеонаблюдения Краснодар; + +аудит пожарной сигнализации; + +техническое сопровождение гостиниц; + +обслуживание СКУД складов; + +эксплуатация систем безопасности. + + + +--- + +БЛОГ (ОЧЕНЬ ВАЖНО) + +Вот тут у тебя будет расти доверие. + + +--- + +ТЕМЫ СТАТЕЙ + +Почему камеры “не пишут” в нужный момент + +7 проблем пожарной сигнализации на коммерческих объектах + +Как проверить подрядчика по безопасности + +Почему дешевые монтажи обходятся дорого + +Что проверяет МЧС + +Как теряются архивы видеонаблюдения + +Почему обслуживание важнее монтажа + + + +--- + +ТЕПЕРЬ ГЛАВНОЕ + +УПАКОВКА КОМПАНИИ + +Твоя цель: + +перейти из: + +“монтажная фирма” + +в: + +“оператор инженерной безопасности объектов”. + +Это совершенно другой уровень чеков и клиентов. + + +--- + +Следующий этап предлагаю сделать уже практически: + +1. Полностью написать структуру главной страницы. + + +2. Сформировать тексты блоков. + + +3. Составить 3 тарифных пакета. + + +4. Сделать позиционирование. + + +5. Прописать УТП. + + +6. Составить структуру коммерческого предложения. + + +7. Сформировать линейку услуг. + + +8. Сделать стратегию первых продаж без агрессивного маркетинга. + + +9. Продумать контент-план на 3 месяца. + + +10. Построить модель выхода на recurring revenue. + + + +Именно это сейчас даст тебе переход в другой сегмент рынка. + +--- + +Отлично. Теперь переходим в практическую плоскость. +И здесь начинается уже настоящий переход из “монтажной фирмы” в инженерную B2B-компанию. + +Сразу важный вывод после анализа: + +Название “AEGISONE” тебе сейчас МЕШАЕТ. + +Потому что поисковая выдача забита: + +кибербезопасностью, + +AI, + +западными security-компаниями, + +IT-продуктами. + + +Для регионального B2B это плохо: + +SEO тяжелое; + +бренд не считывается; + +нет ассоциации с инженерной эксплуатацией. + + + +--- + +МОЙ СОВЕТ ПО БРЕНДУ + +Пока не менять домен. + +Но добавить подзаголовок бренда: + +Например: + +> AegisOne Engineering +Эксплуатация и сопровождение систем безопасности + + + +или: + +> AegisOne Service +Инженерная безопасность коммерческих объектов + + + + +--- + +Теперь к главному. + +1. СТРУКТУРА ГЛАВНОЙ СТРАНИЦЫ (PHP + HTML) + +Я дам тебе структуру не “сайта монтажников”, +а сайта инженерной сервисной компании. + +Ниже — каркас главной страницы. + + +--- + + + +
+
+

+ Эксплуатация и техническое сопровождение + систем безопасности коммерческих объектов +

+ +

+ Берем на себя ответственность за работоспособность + систем безопасности, видеонаблюдения, СКУД, + пожарной сигнализации и инженерной инфраструктуры объекта. +

+ + + +
+
20+ лет инженерного опыта
+
Лицензия МЧС
+
SLA и регламентное обслуживание
+
+
+
+ + +
+
+

Какие проблемы мы решаем

+ +
+ +
+

Системы работают нестабильно

+

+ Камеры не пишут архив, СКУД работает частично, + пожарная сигнализация дает ложные срабатывания. +

+
+ +
+

Нет ответственного подрядчика

+

+ После монтажа подрядчики исчезают, + документация отсутствует, + неисправности копятся месяцами. +

+
+ +
+

Риски проверок и простоев

+

+ Нарушения выявляются только при проверках + или уже после возникновения проблем. +

+
+ +
+
+
+ + +
+
+ +

Основные услуги

+ +
+ +
+

Техническое сопровождение объектов

+

+ Регламентное обслуживание, диагностика, + контроль работоспособности и аварийное реагирование. +

+
+ +
+

Технический аудит

+

+ Проверка состояния систем безопасности, + выявление рисков и проблем эксплуатации. +

+
+ +
+

Внешний инженер безопасности

+

+ Представление интересов собственника + при работе с подрядчиками и эксплуатацией объекта. +

+
+ +
+

Восстановление проблемных объектов

+

+ Исправление последствий некачественного монтажа + и отсутствия обслуживания. +

+
+ +
+ +
+
+ + +
+
+ +

Отрасли

+ +
+ +
Гостиницы и апарт-отели
+
Складские комплексы
+
Коммерческая недвижимость
+
Производственные предприятия
+
Медицинские центры
+
Агропредприятия
+ +
+ +
+
+ + +
+
+ +

SLA и регламенты

+ +
+ +
+

Критическая авария

+

Реакция в течение 2 часов

+
+ +
+

Стандартная заявка

+

Обработка до 24 часов

+
+ +
+

Регламентные проверки

+

По утвержденному графику

+
+ +
+ +
+
+ + +
+
+ +

Практический опыт

+ +
+

Коммерческий объект

+ +

+ Специалисты компании участвовали в восстановлении + системы видеонаблюдения и СКУД после некачественного монтажа. +

+ +
    +
  • Восстановлен архив видеонаблюдения
  • +
  • Устранены ложные срабатывания
  • +
  • Подготовлена документация
  • +
  • Снижено количество аварийных обращений
  • +
+
+ +
+
+ + +
+
+ +

+ Закажите технический аудит объекта +

+ +

+ Проверим текущее состояние систем безопасности, + выявим слабые места и подготовим рекомендации. +

+ +
+ + + + + + + + + +
+ +
+
+ + +--- + +ЧТО КРИТИЧНО В ЭТОЙ СТРУКТУРЕ + +Обрати внимание. + +Тут НЕТ: + +“установка камер”; + +“низкие цены”; + +“монтаж под ключ”. + + +Это уже: + +B2B эксплуатационная инженерия. + + +--- + +2. ЧТО ЕЩЕ НУЖНО ДОБАВИТЬ НА САЙТ + + +--- + +ОТДЕЛЬНЫЕ СТРАНИЦЫ + +Обязательно сделать: + +/audit + +Технический аудит объектов. + + +--- + +/service + +Техническое сопровождение. + + +--- + +/sla + +Регламенты и SLA. + + +--- + +/industries/hotels + +Для гостиниц. + + +--- + +/industries/logistics + +Для складов и логистики. + + +--- + +ПОЧЕМУ ЭТО КРИТИЧНО + +Потому что: + +SEO; + +доверие; + +нишевание; + +B2B конверсия. + + + +--- + +3. ТАРИФЫ ДЛЯ КРАСНОДАРСКОГО КРАЯ + +Теперь самое важное. + +Ты не можешь быть дешевым. Иначе: + +утонешь в демпинге; + +соберешь мусорных клиентов; + +не выйдешь из монтажей. + + + +--- + +КАК СЕЙЧАС РЫНОК ЖИВЕТ + +Большинство: + +продают ТО “по минималке”; + +делают фиктивное обслуживание; + +приезжают “для галочки”. + + +Особенно по пожарке. + +Это твое преимущество. + + +--- + +ТВОЯ МОДЕЛЬ: + +“НЕ ДЕШЕВО. НО ОТВЕТСТВЕННО.” + + +--- + +РЕКОМЕНДУЕМЫЕ ТАРИФЫ + +ТАРИФ 1 + +START + +Для небольших объектов. + +Стоимость: + +от 25 000 ₽/мес + + +--- + +Что входит: + +1 регламентный выезд; + +диагностика; + +журнал работ; + +консультации; + +удаленная поддержка; + +контроль состояния систем. + + + +--- + +Кому подходит: + +офисы; + +небольшие гостиницы; + +магазины; + +клиники. + + + +--- + +ТАРИФ 2 + +BUSINESS + +Основной тариф. + +Стоимость: + +60 000 – 120 000 ₽/мес + + +--- + +Что входит: + +плановые регламенты; + +SLA; + +аварийные выезды; + +фотоотчеты; + +контроль подрядчиков; + +сопровождение проверок; + +рекомендации; + +приоритетная поддержка. + + + +--- + +Идеально: + +склады; + +сетевые объекты; + +гостиницы; + +коммерческая недвижимость. + + + +--- + +ТАРИФ 3 + +ENTERPRISE + +Вот здесь начинаются большие деньги. + +Стоимость: + +от 180 000 ₽/мес + + +--- + +Формат: + +“Внешний инженерный отдел безопасности” + + +--- + +Входит: + +постоянное сопровождение; + +аудит объектов; + +удаленный контроль; + +работа с подрядчиками; + +технический представитель заказчика; + +участие в совещаниях; + +приемка работ; + +развитие инфраструктуры. + + + +--- + +КОМУ ПРОДАВАТЬ ENTERPRISE + +сети гостиниц; + +логистика; + +агрохолдинги; + +коммерческая недвижимость; + +производства. + + + +--- + +САМОЕ ВАЖНОЕ + +НЕ ПИШИ: + +“от 5 000 ₽”. + + +Это сразу переводит тебя в мусорный сегмент. + + +--- + +КАК ПРОДАВАТЬ ДОРОГО + +Не через: + +“обслуживание камер”. + + +А через: + +снижение рисков; + +ответственность; + +SLA; + +отсутствие простоев; + +прозрачность. + + + +--- + +ЧТО Я БЫ ДОБАВИЛ ЕЩЕ + + +--- + +УСЛУГА: + +“АУДИТ ПЕРЕД ПОКУПКОЙ/АРЕНДОЙ ОБЪЕКТА” + +Это очень сильная ниша. + + +--- + +СТОИМОСТЬ: + +50–250 тыс ₽ + + +--- + +ПОЧЕМУ ЭТО СИЛЬНО + +Собственники: + +не понимают состояние систем; + +покупают “кота в мешке”. + + +А ты: + +проверяешь инфраструктуру объекта. + + +--- + +ИТОГ + +Ты сейчас находишься в точке перехода: + +ИЗ: + +монтажной фирмы + +В: + +инженерную сервисную компанию. + +Это: + +выше чеки; + +стабильнее деньги; + +меньше демпинга; + +меньше зависимости от строек; + +выше капитализация бизнеса. + + +И это идеально соответствует твоему профилю. \ No newline at end of file diff --git a/docs/Скрипты продаж.md b/docs/Скрипты продаж.md new file mode 100644 index 0000000..fbf5903 --- /dev/null +++ b/docs/Скрипты продаж.md @@ -0,0 +1,340 @@ +Ниже — тебе не “скрипты продаж”, а инженерная система входа в аудит, адаптированная под Краснодарский край и B2B-реальность (УК, гостиницы, склады, собственники). + +Главная идея: + +> Ты не продаёшь аудит. Ты предлагаешь проверку рисков объекта. + + + + +--- + +1. ПСИХОЛОГИЯ ПРОДАЖ АУДИТА (ВАЖНО) + +Что продаёт аудит на самом деле: + +снижение рисков проверок (МЧС, внутренние, страховые) + +уверенность, что система реально работает + +снятие ответственности с менеджера/собственника + +“независимое мнение инженера” + + + +--- + +Что НЕ работает: + +“проверим камеры” + +“сделаем диагностику” + +“обслуживание дешевле” + + + +--- + +Рабочая позиция: + +> “Мы делаем техническую проверку систем безопасности объекта с выдачей инженерного заключения по рискам эксплуатации.” + + + + +--- + +2. ВХОД В ПРОДАЖУ (3 КАНАЛА) + + +--- + +2.1 Холодный вход (самый важный в регионе) + +Кому пишем: + +гостиницы + +апарт-отели + +склады + +УК + +коммерческая недвижимость + + + +--- + +2.2 Тёплый вход (через знакомства) + +электрики + +IT + +строители + +подрядчики + +проектировщики + + + +--- + +2.3 Вход через контент + +Telegram / статьи / кейсы + + +--- + +3. СТРУКТУРА ПРОДАЖИ АУДИТА + + +--- + +1. Контакт +2. Короткое позиционирование +3. Выявление боли +4. Предложение аудита +5. Подтверждение логики +6. Назначение выезда + + +--- + +4. ХОЛОДНЫЙ СКРИПТ (ТЕКСТ + WA / TG) + +Вариант 1 — максимально инженерный (основной) + +Добрый день. + +Мы занимаемся техническим сопровождением систем безопасности коммерческих объектов в Краснодарском крае. + +Перед тем как брать объекты на обслуживание, обычно делаем технический аудит: +— проверка видеонаблюдения (архив, запись, питание) +— проверка СКУД +— проверка пожарной сигнализации +— оценка рисков эксплуатации + +По практике, на большинстве объектов выявляются скрытые проблемы, которые не видны в ежедневной работе. + +Если у вас есть задача понять текущее состояние систем — можем провести аудит и дать инженерное заключение по рискам. + +Подскажите, у вас сейчас системы на обслуживании или “как есть работают”? + + +--- + +Почему это работает: + +нет продажи + +есть диагностика + +есть статус эксперта + +есть вопрос (диалог) + + + +--- + +5. ВТОРОЙ СООБЩЕНИЕ (если отвечают “работает/есть подрядчик”) + +Понял. + +В таких случаях чаще всего проблема не в “работает/не работает”, а в том, что: +— архив не проверяется регулярно +— резервирование не тестируется +— часть оборудования работает нестабильно +— нет объективного контроля состояния + +А это всплывает обычно в момент инцидента или проверки. + +Мы как раз делаем аудит, который показывает такие скрытые вещи до проблем. + +Если интересно — можем сделать экспресс-проверку объекта с коротким отчётом по рискам. + + +--- + +6. КОНВЕРСИЯ В АУДИТ (КЛЮЧЕВОЙ МОМЕНТ) + +Можем сделать так: + +— выезд инженера +— проверка всех систем +— фиксация состояния +— короткий инженерный отчёт +— список рисков и рекомендаций + +Обычно это занимает 1–2 дня в зависимости от объекта. + +По стоимости — от 15 до 50 тыс, зависит от объёма систем. + +Если удобно — могу уточнить объект и сказать точнее по формату. + + +--- + +7. СКРИПТ ДЛЯ ГОЛОСА (ЕСЛИ ЗВОНЯТ) + +структура: + +1. Позиционирование (10–15 сек) + +Мы занимаемся техническим сопровождением систем безопасности коммерческих объектов. +Перед обслуживанием всегда делаем аудит состояния систем. + + +--- + +2. Боль + +На большинстве объектов, которые мы смотрим, есть скрытые проблемы — архив, питание, доступ, пожарка. +Обычно это не видно в ежедневной работе. + + +--- + +3. Переход + +Поэтому предлагаем сначала сделать техническую проверку объекта и дать инженерное заключение. + + +--- + +4. Закрытие + +Если вам актуально — можем согласовать выезд инженера и формат проверки. + + +--- + +8. ОБРАБОТКА ВОЗРАЖЕНИЙ + + +--- + +❌ “У нас уже есть подрядчик” + +Понял. + +Аудит как раз часто показывает, что объект обслуживается формально, но без проверки ключевых параметров: +архив, резервирование, ошибки, питание. + +Мы не конкурируем с подрядчиком — мы даём независимую оценку состояния систем. + + +--- + +❌ “Дорого” + +Аудит не про “сделать дешевле”. + +Это проверка рисков, которые могут стоить дороже: +— потеря архива +— отказ системы +— проблемы при проверках + +Поэтому стоимость зависит от масштаба объекта, но обычно это разовая диагностика, а не постоянные расходы. + + +--- + +❌ “Нам не нужно” + +Понял. + +На практике аудит нужен не всегда “сейчас”, а когда появляются сомнения в стабильности систем или перед проверками. + +Если актуализируется — можем подключиться. + + +--- + +9. СИСТЕМА ДОГРЕВА (ЕСЛИ НЕ КУПИЛИ СРАЗУ) + +Через 3–5 дней: + +Добрый день. + +Подскажите, актуально ли сейчас техническое обследование систем безопасности? + +По опыту, на объектах часто всплывают вопросы по архиву и резервированию, которые лучше проверить заранее, чем в момент инцидента. + + +--- + +10. МИКРО-CRM ЛОГИКА (ВАЖНО) + +Каждый контакт делишь на: + +не ответил + +думает + +есть подрядчик + +отказ + +сделал аудит + +ушёл в SLA + + + +--- + +11. КЛЮЧЕВОЙ МЕХАНИЗМ ПРОДАЖ + +Твоя система должна работать так: + +контакт → инженерная диагностика → выявление рисков → логичный переход в SLA + + +--- + +12. ПОЧЕМУ ЭТО РАБОТАЕТ ИМЕННО В КРАСНОДАРСКОМ КРАЕ + +Рынок региона: + +много частных объектов + +слабая эксплуатация систем + +подрядчики “формальные” + +мало инженерных компаний уровня SLA + + +👉 значит: ты не конкурируешь по цене — ты создаёшь новый тип услуги + + +--- + +13. ЕСЛИ ДАЛЬШЕ УСИЛИВАТЬ СИСТЕМУ + +Следующий уровень, который я могу тебе собрать: + +скрипт “закрытия в SLA после аудита” + +таблица квалификации клиента (кого брать/кого нет) + +CRM-воронка под SLA (по стадиям) + +шаблон отчёта аудита (который продаёт сам себя) + +шаблон договора SLA (который не торгуется) + + +И это уже будет не продажи. + +Это будет: + +инженерная коммерческая система повторяемого дохода. \ No newline at end of file diff --git a/docs/УТП и КП.md b/docs/УТП и КП.md new file mode 100644 index 0000000..6fe45a1 --- /dev/null +++ b/docs/УТП и КП.md @@ -0,0 +1,556 @@ +Сейчас мы выходим на ключевой этап. +Потому что: + +УТП — это не “красивый текст”. + +Это: + +твоя позиция на рынке. + +Именно здесь определяется: + +будешь ли ты конкурировать ценой; + +попадешь ли в “монтажников”; + +или станешь инженерным B2B подрядчиком. + + + +--- + +ГЛАВНАЯ ОШИБКА РЫНКА + +Все пишут: + +“качественный монтаж”; + +“20 лет опыта”; + +“индивидуальный подход”. + + +Это не УТП. + +Это информационный шум. + + +--- + +ТВОЕ РЕАЛЬНОЕ ПРЕИМУЩЕСТВО + +Ты НЕ: + +продавец оборудования; + +бригада монтажников; + +дешевый подрядчик. + + +Ты: + +инженерная сервисная компания. + +И продавать нужно: + +ответственность; + +стабильность; + +контроль; + +снижение рисков; + +эксплуатацию; + +прозрачность. + + + +--- + +ТВОЕ ОСНОВНОЕ УТП + +Вот сильная база. + + +--- + +AEGISONE — инженерное сопровождение систем безопасности коммерческих объектов. + +Мы не просто устанавливаем оборудование. +Мы берем на себя ответственность за стабильную работу систем безопасности объекта. + +Работаем с коммерческой недвижимостью, гостиницами, складами, производствами и сетевыми объектами. + +Обеспечиваем: +— регламентное обслуживание; +— SLA и контроль сроков реакции; +— технический аудит; +— восстановление проблемных объектов; +— сопровождение эксплуатации; +— прозрачную отчетность и контроль инфраструктуры. + +Если система безопасности нужна не «для галочки», а для реальной работы объекта — мы подходим. +--- + +ПОЧЕМУ ЭТО СИЛЬНО + +Тут нет: + +“лучших цен”; + +“монтажа под ключ”; + +“любых работ”. + + +Это: + +позиция эксперта. + + +--- + +ДОПОЛНИТЕЛЬНЫЕ УТП ДЛЯ РАЗНЫХ СЕГМЕНТОВ + + +--- + +ДЛЯ ГОСТИНИЦ + +Обеспечиваем стабильную работу систем безопасности гостиниц и апарт-отелей без постоянного контроля со стороны управляющего. + +Берем на себя техническое сопровождение: +— видеонаблюдения; +— СКУД; +— пожарной сигнализации; +— сетевой инфраструктуры. + +Работаем по SLA и регламентам. +--- + +ДЛЯ СКЛАДОВ И ЛОГИСТИКИ + +Снижаем риски потери архива, отказов систем и простоев инфраструктуры складских объектов. + +Контролируем работоспособность: +— видеонаблюдения; +— контроля доступа; +— периметра; +— сетевой инфраструктуры. + +Обеспечиваем регламентное обслуживание и аварийное реагирование. +--- + +ТЕПЕРЬ САМОЕ ВАЖНОЕ + +СТРУКТУРА КОММЕРЧЕСКОГО ПРЕДЛОЖЕНИЯ + +Большинство КП на рынке — мусор. + +Там: + +список оборудования; + +цены; + +таблицы; + +“надежные решения”. + + +B2B это НЕ читает. + + +--- + +ТВОЕ КП ДОЛЖНО ПРОДАВАТЬ: + +СПОКОЙСТВИЕ И КОНТРОЛЬ. + + +--- + +ИДЕАЛЬНАЯ СТРУКТУРА КП ДЛЯ ТЕБЯ + + +--- + +1. ТИТУЛЬНАЯ СТРАНИЦА + + +--- + +Заголовок: + +Коммерческое предложение + +по техническому сопровождению систем безопасности + + +--- + +Подзаголовок: + +Для: + +гостиницы; + +склада; + +коммерческого объекта; + +производства. + + + +--- + +Внизу: + +логотип; + +контакты; + +дата. + + + +--- + +2. КРАТКО О ПРОБЛЕМЕ + +Это критически важно. + + +--- + +Пример: + + +--- + +Большинство неисправностей систем безопасности выявляются только после возникновения проблем: +— отсутствует архив видеонаблюдения; +— часть оборудования не функционирует; +— отсутствует документация; +— подрядчики не несут ответственности; +— неисправности накапливаются месяцами. + +Это приводит к рискам простоев, потере контроля и проблемам при проверках. + +Для снижения этих рисков необходимо регулярное техническое сопровождение и контроль состояния инфраструктуры объекта. +--- + +ПОЧЕМУ ЭТО СИЛЬНО + +Ты: + +не “продаешь услуги”; + +а показываешь проблему бизнеса. + + + +--- + +3. ЧТО ТЫ ПРЕДЛАГАЕШЬ + + +--- + +Заголовок: + +Решение + + +--- + +Пример: + + +--- + +AEGISONE обеспечивает техническое сопровождение и контроль работоспособности систем безопасности объекта. + +Мы берем на себя: +— регламентное обслуживание; +— диагностику; +— аварийное реагирование; +— технический контроль; +— сопровождение эксплуатации; +— контроль подрядчиков; +— отчетность и рекомендации. +--- + +4. ЧТО ВХОДИТ В ОБСЛУЖИВАНИЕ + +Вот здесь уже конкретика. + + +--- + +Пример структуры: + +Услуга Описание + +Регламентные проверки Проверка состояния оборудования +Контроль архива Проверка записи и хранения +Аварийные выезды Реагирование по SLA +Диагностика Поиск неисправностей +Отчетность Фото и рекомендации +Поддержка Консультации персонала + + + +--- + +5. SLA + +Очень важно. + + +--- + +Пример: + +Приоритет Время реакции + +Критическая авария до 2 часов +Частичный отказ до 4 часов +Плановая заявка до 24 часов + + + +--- + +6. ПОЧЕМУ ИМЕННО ВЫ + +Вот тут нельзя писать банальности. + + +--- + +ПРАВИЛЬНО: + + +--- + +Почему заказчики работают с нами: + +— более 20 лет инженерного опыта; +— лицензия МЧС; +— работа по регламентам и SLA; +— прозрачная отчетность; +— опыт эксплуатации сложных объектов; +— несем ответственность за результат; +— не работаем по принципу «сделали и забыли». +--- + +7. СТОИМОСТЬ + +Очень важный блок. + + +--- + +НЕ ДЕЛАЙ: + +“от 5000 ₽”. + + +--- + +ПРАВИЛЬНО: + +Тариф Формат Стоимость + +START Небольшие объекты от 25 000 ₽ +BUSINESS Коммерческие объекты от 60 000 ₽ +ENTERPRISE Внешний инженерный отдел индивидуально + + + +--- + +8. ЭТАПЫ РАБОТЫ + +Это резко повышает доверие. + + +--- + +Пример: + +1. Технический аудит объекта + + +2. Формирование регламентов + + +3. Подписание SLA + + +4. Постановка объекта на сопровождение + + +5. Регулярное обслуживание и отчетность + + + + +--- + +9. CTA + +Очень важно. + + +--- + +НЕ: + +“оставьте заявку”. + + +--- + +ПРАВИЛЬНО: + +Предлагаем провести технический аудит объекта и подготовить рекомендации по снижению эксплуатационных рисков. + + +--- + +КАК ДОЛЖНО ВЫГЛЯДЕТЬ КП ВИЗУАЛЬНО + + +--- + +НЕ: + +“цветастая реклама”; + +“маркетинговый шум”. + + + +--- + +А: + +спокойный инженерный документ. + + +--- + +ЦВЕТА + +темно-синий; + +графит; + +белый; + +серый. + + + +--- + +СТИЛЬ + +Как: + +техническая компания; + +инженерный аудит; + +эксплуатация объектов. + + + +--- + +САМОЕ ВАЖНОЕ + +Твое КП должно вызывать мысль: + +> “Эти люди понимают, как работает объект.” + + + +А не: + +> “Очередные монтажники.” + + + + +--- + +И ТУТ КЛЮЧЕВОЙ МОМЕНТ + +Ты не должен пытаться понравиться всем. + +Тебе нужны: + +нормальные объекты; + +нормальные бюджеты; + +нормальные заказчики. + + + +--- + +ТВОЯ СТРАТЕГИЯ + +Не: + +“много дешевых клиентов”. + +А: + +“мало, но качественных объектов на абонентке”. + +Это огромная разница в бизнес-модели. + + +--- + +Следующий логичный этап: + +1. Сделать полноценный шаблон КП (PDF-структуру). + + +2. Прописать тарифы глубже. + + +3. Сделать SLA-документ. + + +4. Подготовить скрипт инженерной продажи. + + +5. Сделать структуру первого аудита. + + +6. Составить чек-листы. + + +7. Построить первую воронку клиентов в Краснодарском крае. + + +8. Подготовить SEO-структуру сайта. + + +9. Разработать контент-план для выхода в экспертность. + + +10. Построить модель роста до 1–3 млн/мес recurring revenue. + + diff --git a/docs/Цифровая модель общая.md b/docs/Цифровая модель общая.md new file mode 100644 index 0000000..f3ad85b --- /dev/null +++ b/docs/Цифровая модель общая.md @@ -0,0 +1,458 @@ +Ниже — единая цифровая операционная модель AegisOne Engineering в формате .md. + +Это не просто документация — это “скелет системы”, который можно отдать разработчику, внедрить в Notion/Bitrix/1C/веб-CRM или развернуть как внутренний продукт. + + +--- + +# AegisOne Engineering +## Unified Digital Operating System (UDOS) + +--- + +# 0. СУТЬ СИСТЕМЫ + +AegisOne UDOS — это единая цифровая система управления инженерной эксплуатацией объектов безопасности. + +Она объединяет: + +- CRM (клиенты и сделки) +- SLA (контракты и обслуживание) +- KPI инженеров (исполнение) +- SHS (здоровье бизнеса) +- Финансовую модель +- Операционный дашборд + +--- + +# 1. АРХИТЕКТУРА СИСТЕМЫ + +┌──────────────────────┐ + │ LEADS / CRM │ + └─────────┬────────────┘ + ↓ + ┌──────────────────────┐ + │ AUDIT SYSTEM │ + └─────────┬────────────┘ + ↓ + ┌──────────────────────┐ + │ SLA CONTRACTS │ + └─────────┬────────────┘ + ↓ + ┌─────────────────────────────────────────┐ + │ OPERATIONS (ENGINEERS) │ + └─────────┬───────────────┬──────────────┘ + ↓ ↓ + ┌──────────────┐ ┌─────────────────────┐ + │ KPI ENGINEERS │ │ INCIDENT SYSTEM │ + └──────┬───────┘ └─────────┬───────────┘ + ↓ ↓ + ┌─────────────────────────────────────────┐ + │ SHS ENGINE │ + └──────────────┬──────────────────────────┘ + ↓ + ┌─────────────────────────────────────────┐ + │ CEO DASHBOARD │ + └─────────────────────────────────────────┘ + +--- + +# 2. CRM СИСТЕМА + +## 2.1 Структура клиента + +```json +Client { + id, + company_name, + object_type, + location, + contact_person, + decision_maker, + number_of_objects, + systems: { + video: int, + access_control: int, + fire_alarm: bool, + it_infrastructure: bool + }, + current_provider, + pain_points[], + budget_level, + status: [lead, qualified, audit, offer, sla, lost] +} + + +--- + +2.2 Воронка CRM + +Lead + ↓ +Qualification + ↓ +Technical Audit + ↓ +Risk Report + ↓ +SLA Offer + ↓ +Contract + ↓ +Active SLA + + +--- + +3. AUDIT SYSTEM (ИНЖЕНЕРНЫЙ ВХОД) + +3.1 Формирование Risk Score + +Risk Score = + missing_archive (25) ++ no_power_backup (20) ++ no_regulations (15) ++ system_failures (20) ++ no_documentation (10) + + +--- + +3.2 Output аудита + +Audit Report: +- Risk Score +- System condition +- Critical vulnerabilities +- SLA recommendation +- Cost estimation + + +--- + +4. SLA СИСТЕМА + +4.1 Формула стоимости + +SLA Price = +Base Cost × Object Index × Region Factor × Risk Multiplier + + +--- + +4.2 Object Index + +Object Index = +(Risk × 0.4) ++ (Complexity × 0.3) ++ (Infrastructure × 0.2) ++ (Service History × 0.1) + + +--- + +4.3 SLA уровни + +Class Index Description + +A 0–30 simple SLA +B 31–60 standard SLA +C 61–90 complex SLA +D 90+ enterprise SLA + + + +--- + +4.4 SLA метрики + +Response Time + +Resolution Time + +Uptime % + +Incident Rate + + + +--- + +5. KPI СИСТЕМА ИНЖЕНЕРОВ + +5.1 Engineer Score + +ES = +(0.25 × SLA Compliance) ++ (0.20 × Response Time Score) ++ (0.20 × Resolution Time Score) ++ (0.15 × Diagnosis Accuracy) ++ (0.10 × Reopen Rate Score) ++ (0.10 × Documentation Quality) + + +--- + +5.2 KPI метрики + +SLA Compliance + +closed_in_SLA / total_requests + +Reopen Rate + +reopened_requests / total_requests + +Diagnosis Accuracy + +confirmed_faults / found_faults + +Utilization + +working_hours / available_hours + + +--- + +5.3 Грейды инженеров + +Score Level + +90–100 Senior +80–89 Strong +70–79 Middle +<70 Junior + + + +--- + +6. SHS (SYSTEM HEALTH SCORE) + +6.1 Формула SHS + +SHS = +(0.22 × SLA Stability) ++ (0.18 × Revenue Stability) ++ (0.18 × Retention) ++ (0.15 × Engineer Performance) ++ (0.12 × Incident Stability) ++ (0.10 × Sales Flow) ++ (0.05 × Operational Efficiency) + + +--- + +6.2 Интерпретация + +SHS Status + +85–100 Growth +70–85 Stable +50–70 Risk +<50 Crisis + + + +--- + +6.3 Alert System + +SHS ↓ 5% weekly → Warning + +SHS ↓ 10% → Critical + +Retention drop → Immediate audit trigger + + + +--- + +7. INCIDENT SYSTEM + +7.1 Incident Classification + +Level Description + +P1 critical system failure +P2 partial failure +P3 minor issue + + + +--- + +7.2 Incident Rate + +IR = incidents / number_of_objects + + +--- + +7.3 SLA breach tracking + +breach_rate = failed_SLA_cases / total_cases + + +--- + +8. FINANCIAL LAYER + +8.1 MRR + +MRR = Σ SLA contracts / 12 + + +--- + +8.2 Revenue per Engineer + +RPE = SLA Revenue / number_of_engineers + + +--- + +8.3 Cost per Object + +CPO = total_operational_cost / number_of_objects + + +--- + +9. CEO DASHBOARD + +9.1 Main indicators + +SHS (system health) + +MRR (monthly recurring revenue) + +SLA Compliance + +Retention + +Incident Rate + +Engineer Score Avg + +Sales Conversion + + + +--- + +9.2 Dashboard visualization blocks + +1. SHS Line Chart + +trend over time + + +2. SLA Heatmap + +engineers vs performance + + +3. MRR Growth Curve + +monthly recurring revenue + + +4. Client Retention Funnel + +drop-off points + + +5. Incident Map + +problematic objects + + +6. Engineer Ranking Table + +top/bottom performers + + + +--- + +10. AUTOMATION RULES + +10.1 If SHS drops + +IF SHS < 70: + reduce new sales + trigger audit cycle + reassign engineers + + +--- + +10.2 If SLA compliance drops + +IF SLA < 90%: + freeze non-critical projects + increase inspection frequency + + +--- + +10.3 If retention drops + +IF retention < 90%: + mandatory client audit + review engineer assignments + + +--- + +11. SYSTEM BEHAVIOR MODEL + +DATA → KPI → SHS → DECISION → ACTION → FEEDBACK LOOP + + +--- + +12. STRATEGIC PRINCIPLE + +AegisOne Engineering is not a service company. + +It is: + +> an operating system for managing engineering risk in physical infrastructure. + + + + +--- + +13. END STATE MODEL + +The system evolves into: + +predictive SLA risk detection + +automated pricing + +engineer auto-allocation + +client churn prediction + +MRR forecasting + + + +--- + +END OF SYSTEM + +--- + +Если хочешь следующий уровень, я могу собрать тебе: + +1) визуальный UI дашборда (как он должен выглядеть как продукт) +2) структуру базы данных (SQL / 1C / Bitrix schema) +3) алгоритм “предикта потери клиента за 14 дней” +4) или автоматический генератор КП + SLA из этой системы + +Это уже уровень **enterprise SaaS, а не просто инженерной компании**. \ No newline at end of file diff --git a/docs/автоматическая система SHS.md b/docs/автоматическая система SHS.md new file mode 100644 index 0000000..174a2f4 --- /dev/null +++ b/docs/автоматическая система SHS.md @@ -0,0 +1,629 @@ +Ниже — как должна работать автоматическая система SHS (System Health Score) в твоей модели AegisOne Engineering. + +Это уже не “аналитика бизнеса”, а: + +> инженерная система раннего предупреждения о деградации компании + + + + +--- + +0. ЧТО ТАКОЕ SHS (СУТЬ СИСТЕМЫ) + +SHS — это единый индекс здоровья бизнеса (0–100), который показывает: + +насколько стабильно работает SLA-модель + +где теряются деньги + +где растут риски разрыва контрактов + +где перегружается команда + +где падает качество эксплуатации + + + +--- + +1. ЛОГИКА СИСТЕМЫ SHS + +Данные (CRM + SLA + инженеры) + ↓ +Нормализация метрик + ↓ +Взвешивание показателей + ↓ +Расчёт SHS + ↓ +Детектирование отклонений + ↓ +Сигналы риска (alerts) + + +--- + +2. ФИНАЛЬНАЯ ФОРМУЛА SHS + +SHS = +(0.22 × SLA Stability Index) + +(0.18 × Revenue Stability Index) + +(0.18 × Retention Index) + +(0.15 × Engineering Performance Index) + +(0.12 × Incident Stability Index) + +(0.10 × Sales Flow Index) + +(0.05 × Operational Efficiency Index) + + +--- + +3. РАСШИФРОВКА ВСЕХ КОМПОНЕНТОВ + + +--- + +3.1 SLA STABILITY INDEX (критический) + +Смысл: + +Насколько система выполняет SLA без сбоев. + + +--- + +Формула: + +SSI = SLA_compliance × (1 - SLA_breach_severity) + + +--- + +Где: + +SLA_compliance = выполненные заявки / все заявки + +SLA_breach_severity = тяжесть нарушений (0–1) + + + +--- + +Пример: + +compliance = 0.96 + +нарушения = 0.1 + + +→ SSI = 0.864 + + +--- + +Риски: + +падение ниже 0.85 = начинается утечка клиентов + + + +--- + +3.2 REVENUE STABILITY INDEX + +Смысл: + +Стабильность денежного потока SLA + + +--- + +Формула: + +RSI = 1 - (σ(MRR) / mean(MRR)) + + +--- + +Интерпретация: + +чем меньше колебания → тем выше индекс + + + +--- + +Риски: + +RSI < 0.7 → нестабильная финансовая модель + + + +--- + +3.3 RETENTION INDEX (очень критично) + +Формула: + +RI = retained_clients / total_clients + + +--- + +Дополнение: + +штраф за уход крупных клиентов: + +RI_adjusted = RI - (lost_key_clients × 0.1) + + +--- + +Риски: + +падение ниже 0.9 = системная проблема SLA + + + +--- + +3.4 ENGINEERING PERFORMANCE INDEX + +Смысл: + +качество работы инженеров + + +--- + +Формула: + +EPI = +(0.3 × SLA compliance engineers) + +(0.25 × diagnosis accuracy) + +(0.2 × reopen rate inverse) + +(0.15 × response time score) + +(0.1 × documentation quality) + + +--- + +Важный момент: + +это единственный KPI, который напрямую влияет на: + +> удержание клиентов + + + + +--- + +Риски: + +EPI < 0.75 → будущие потери клиентов через 1–2 месяца + + + +--- + +3.5 INCIDENT STABILITY INDEX + +Смысл: + +насколько система “ломается” + + +--- + +Формула: + +ISI = 1 - (incidents / objects × severity_weight) + + +--- + +Где severity_weight: + +критический = 1.0 + +средний = 0.5 + +низкий = 0.2 + + + +--- + +Риски: + +рост ISI вниз = деградация инфраструктуры + + + +--- + +3.6 SALES FLOW INDEX + +Смысл: + +здоровье входящего потока денег + + +--- + +Формула: + +SFI = (audits → SLA conversion rate) × lead quality + + +--- + +Пример: + +конверсия 0.35 + +качество лидов 0.8 + + +→ SFI = 0.28 + + +--- + +Риски: + +SFI < 0.25 → нет роста MRR + + + +--- + +3.7 OPERATIONAL EFFICIENCY INDEX + +Смысл: + +насколько эффективно работает компания внутри + + +--- + +Формула: + +OEI = revenue / (engineer_hours × cost) + + +--- + +Риски: + +падение → перегруз команды + + + +--- + +4. ИНТЕРПРЕТАЦИЯ SHS + + +--- + +SHS Состояние системы + +85–100 масштабируемый рост +70–85 стабильная работа +50–70 скрытые проблемы +<50 системный кризис + + + +--- + +5. ГЛАВНАЯ СИЛА SHS — НЕ ЧИСЛО, А ДИНАМИКА + + +--- + +ВАЖНО: + +Ты смотришь не на значение, а на: + +Δ SHS (изменение) + +ΔSHS = SHS_today - SHS_last_week + + +--- + +Критично: + +падение > 5 пунктов за неделю → тревога + +падение > 10 → кризис + + + +--- + +6. СИСТЕМА АВТОМАТИЧЕСКИХ СИГНАЛОВ + + +--- + +GREEN ZONE: + +SHS > 80 + +нет действий + + + +--- + +YELLOW ZONE: + +SHS 65–80 + + +👉 действия: + +проверить инженеров + +проверить SLA просадки + +проверить загрузку + + + +--- + +RED ZONE: + +SHS < 65 + + +👉 действия: + +аудит клиентов + +пересмотр инженеров + +срочный анализ SLA нарушений + +заморозка новых продаж + + + +--- + +7. КОГДА ПОЯВЛЯЮТСЯ РИСКИ + + +--- + +РИСК №1 — падение EPI + +Причина: + +инженеры начали “делать быстро, но плохо” + +Симптом: + +рост повторных заявок + +жалобы клиентов через 2–3 недели + + + +--- + +РИСК №2 — рост INCIDENT RATE + +Причина: + +старое оборудование + +плохая эксплуатация + + + +--- + +РИСК №3 — падение RETENTION + +Самый опасный + +👉 означает: + +> клиент уже не верит системе + + + + +--- + +РИСК №4 — нестабильный SFI + +Причина: + +слабый маркетинг + +неправильный аудит + +некачественные лиды + + + +--- + +РИСК №5 — падение OEI + +Причина: + +перегруз инженеров + +хаотичные выезды + +нет стандартизации + + + +--- + +8. КАК ИСПРАВЛЯТЬ РИСКИ + + +--- + +ЕСЛИ ПАДАЕТ SHS: + + +--- + +ШАГ 1 — локализация + +разбить SHS на компоненты: + +где падение? + +SLA? + +инженеры? + +продажи? + + + + +--- + +ШАГ 2 — точечное вмешательство + +проблема действие + +EPI падает обучение инженеров + чек-листы +retention падает аудит объектов +SLA падает перераспределение нагрузки +SFI падает фильтрация лидов + + + +--- + +ШАГ 3 — стабилизация + +ограничить новые продажи + +усилить контроль SLA + +снизить нагрузку + + + +--- + +9. ВАЖНОЕ ПРАВИЛО СИСТЕМЫ + + +--- + +> нельзя “растить бизнес”, если SHS падает + + + + +--- + +10. ВИЗУАЛИЗАЦИЯ SHS (CEO DASHBOARD) + + +--- + +1. SHS LINE + +📈 динамика здоровья компании + + +--- + +2. STACKED INDEX CHART + +SLA + +Revenue + +Engineers + +Retention + + + +--- + +3. ALERT MAP + +🟥 проблемные зоны + + +--- + +4. ENGINEER IMPACT MAP + +📍 какой инженер влияет на SHS + + +--- + +11. ГЛАВНЫЙ СМЫСЛ SHS + + +--- + +Ты больше не управляешь: + +❌ людьми +❌ объектами +❌ заявками + + +--- + +Ты управляешь: + +системой стабильности инженерного бизнеса + + +--- + +12. ЕСЛИ ДАЛЬШЕ РАЗВИВАТЬ + +Я могу собрать: + +автоматический SHS калькулятор (Excel / 1C / web) + +real-time dashboard + +систему предиктивных предупреждений (падение SHS за 7–14 дней) + +интеграцию SHS в KPI инженеров + +систему автоматического “замедления продаж” при риске + + + +--- + +ИТОГ + +SHS — это не метрика. + +> это “нервная система” твоей компании, которая заранее показывает, где бизнес начнёт терять деньги или клиентов + + + + +--- + +Если хочешь дальше, следующий логичный шаг: + +сделать тебе полноценную цифровую модель AegisOne (дашборд + CRM + SHS + SLA + KPI инженеров в одной системе) \ No newline at end of file diff --git a/documentation/.htaccess b/documentation/.htaccess new file mode 100644 index 0000000..be0634d --- /dev/null +++ b/documentation/.htaccess @@ -0,0 +1,2 @@ +DirectoryIndex index.php +Options -Indexes diff --git a/documentation/index.php b/documentation/index.php new file mode 100644 index 0000000..fa6d727 --- /dev/null +++ b/documentation/index.php @@ -0,0 +1,88 @@ + + +
+
+

+

Разработка, экспертиза и сопровождение проектной документации систем безопасности. Аудит соответствия требованиям регуляторов.

+ Заказать документацию +

Работаем по всей России

+
+
+ +
+
+

Наши услуги в области документации

+
+ '', 'title' => 'Проектная документация', 'desc' => 'Разработка разделов проектной документации для систем видеонаблюдения, СКУД, ОПС, периметральной защиты.'], + ['svg' => '', 'title' => 'Экспертиза документации', 'desc' => 'Аудит существующей документации на полноту, соответствие нормативам и актуальность.'], + ['svg' => '', 'title' => 'Аудит соответствия нормативам', 'desc' => 'Проверка соответствия систем и документации требованиям регуляторов: МЧС, Росгвардия, трудовые инспекции.'], + ['svg' => '', 'title' => 'Сопровождение проверок', 'desc' => 'Подготовка документов к проверкам надзорных органов, представительство интересов, устранение замечаний.'], + ]; + foreach ($items as $item): ?> +
+ +

+

+
+ +
+
+
+ +
+
+

Почему это важно

+
+
+

Риск штрафов и предписаний

+

Отсутствие или неактуальность документации — одна из частых причин штрафов надзорных органов. Корректно оформленная документация — доказательство соответствия систем всем требованиям.

+
+
+

Полный порядок в документах

+

Мы помогаем привести документацию в порядок: от разработки «с нуля» до экспертизы существующих томов. Все документы разрабатываются в соответствии с актуальными ГОСТ, СП и ведомственными нормативами.

+
+
+

Опыт прохождения проверок

+

Наши специалисты имеют опыт прохождения проверок МЧС, Росгвардии, Ростехнадзора. Мы знаем, на что обращают внимание инспекторы, и подготовим вас к проверке.

+
+
+
+
+ +
+
+

Вопросы о документации

+
+ 'Какие документы нужны для сдачи объекта?', 'a' => 'Зависит от типа объекта. В общем случае: проектная документация (стадия П и Р), исполнительная документация, акты скрытых работ, паспорта и сертификаты на оборудование, акты приёмки.'], + ['q' => 'У вас есть лицензия на проектирование?', 'a' => 'Да, наша компания имеет необходимые допуски и компетенции для разработки проектной документации для объектов любого класса сложности.'], + ['q' => 'Можно ли восстановить утерянную документацию?', 'a' => 'Да, мы проводим обследование объекта и восстанавливаем документацию по фактическому состоянию систем с составлением исполнительных схем.'], + ]; + foreach ($faqs as $faq): ?> +
+ +
+
+ +
+
+
+ + + diff --git a/inc/analytics-body.php b/inc/analytics-body.php new file mode 100644 index 0000000..406d251 --- /dev/null +++ b/inc/analytics-body.php @@ -0,0 +1,21 @@ + счётчиков аналитики + * + * Должен подключаться сразу после . + * Содержит только