From c9ed6ec8e334db48f40dd04efbd70b04f99fd4f4 Mon Sep 17 00:00:00 2001 From: german Date: Mon, 28 Sep 2026 17:28:09 +0300 Subject: [PATCH] Animate equipment artwork and publish optimized motion release, agent=codex --- README.md | 5 +- SITE-BUILD.md | 5 +- .../2026-09-28-motion-release.json | 1386 +++++++++++++++++ assets/motion.css | 13 + assets/motion.js | 25 + build.py | 19 +- content/image-motion.json | 14 + deploy_beget.py | 61 +- public/approach/index.html | 2 +- public/approach/it-subscription/index.html | 2 +- public/approach/rapid-response/index.html | 2 +- public/approach/remote-sites/index.html | 2 +- public/assets/editorial/motion.css | 13 + public/assets/editorial/motion.js | 25 + public/index.html | 26 +- public/industries/agriculture/index.html | 2 +- public/industries/construction/index.html | 2 +- public/industries/horeca/index.html | 2 +- public/industries/index.html | 2 +- public/services/automation/index.html | 2 +- public/services/index.html | 2 +- .../services/monitoring-security/index.html | 2 +- public/services/networks-vpn/index.html | 2 +- public/services/remote-desktop/index.html | 2 +- public/services/servers-hosting/index.html | 2 +- public/services/video-surveillance/index.html | 2 +- verify.py | 19 +- verify_live.py | 2 + 28 files changed, 1605 insertions(+), 38 deletions(-) create mode 100644 archive-manifests/2026-09-28-motion-release.json create mode 100644 assets/motion.css create mode 100644 assets/motion.js create mode 100644 content/image-motion.json create mode 100644 public/assets/editorial/motion.css create mode 100644 public/assets/editorial/motion.js diff --git a/README.md b/README.md index 0487079..e89af60 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ Здесь сохранены исходники, оригиналы изображений и готовый каталог `public/`, который опубликован на Beget. Главная связывает 12 карточек с профильными статьями; -есть 3 каталога, адаптивные изображения, лёгкие схемы работы оборудования и SEO-разметка. +есть 3 каталога, адаптивные изображения, анимированные маршруты сигнала на карточках, +лёгкие схемы работы оборудования и SEO-разметка. Состав сборки, проверки, доступ к хостингу без секретов и порядок отката — в [SITE-BUILD.md](SITE-BUILD.md). Актуальные тарифы: «Старт» — 9 000 ₽/мес., «Бизнес» — 21 000 ₽/мес., @@ -12,6 +13,8 @@ Исходные генерации, варианты, промпты и готовый выпуск дополнительно сохранены в папке Яндекс Диска `servaki.online/лендинги/servaki.online site/2026-09-28-landing-generations/`. Контрольные суммы 251 файла — в [архивном манифесте](archive-manifests/2026-09-28-generations.json). Для следующих выпусков действует правило в [AGENTS.md](AGENTS.md). +Выпуск с анимацией изображений сохранён в `servaki.online/лендинги/servaki.online site/2026-09-28-motion-release/`; 256 файлов проверены по [манифесту](archive-manifests/2026-09-28-motion-release.json). Эффекты работают только на видимых карточках и выключаются при настройке «уменьшить движение». Все 23 проверенных адреса опубликованного сайта совпали со сборкой. + ## Сведения о прежней версии **Сайт:** https://servaki.online diff --git a/SITE-BUILD.md b/SITE-BUILD.md index 1b14a6a..2fedd11 100644 --- a/SITE-BUILD.md +++ b/SITE-BUILD.md @@ -12,6 +12,7 @@ - 12 тематических AI-иллюстраций для карточек главной и 12 тёплых фотореалистичных AI-изображений для внутренних страниц, с WebP-версиями 480/960/1536 px. У каждой статьи своё изображение и подпись о том, что оно создано ИИ без данных и фотографий клиентов. - На страницах услуг — конкретные пояснения о согласовании доступа, ограничении видимости данных и бережной работе в действующем офисе или на объекте. Это описание подхода, а не обещание абсолютной безопасности. - В тексте каждой из 12 статей — тематическая схема работы оборудования: индикаторы приборов и движение сигнала между ними. Схемы состоят из компактных SVG и CSS, не загружают GIF или видео. При настройке «уменьшить движение» индикаторы и путь остаются статичными. +- На 12 иллюстрациях карточек главной, в каталогах и блоках связанных решений поверх WebP добавлены короткие маршруты сигнала и индикаторы работы оборудования. Они не содержат данных клиентов. Анимация включается только при появлении карточки на экране и выключается при настройке «уменьшить движение»; изображение остаётся доступным без JavaScript. Общий вес новых CSS и JS — 2 404 байта. Самая тяжёлая иллюстрация: 37,1 КБ при 480 px, 116,7 КБ при 960 px и 236,2 КБ при 1536 px. - Описания под всеми 12 карточками главной переписаны: задача клиента, способ работы и результат; условия отклика указаны без обещания устранить любой сбой за 15 минут. У трёх каталогов и главной — отдельные поисковые описания. ## Просмотр и сборка @@ -29,7 +30,7 @@ python -m http.server 5186 --bind 127.0.0.1 --directory public python verify.py ``` -`content/pages.json` — тексты; `content/card-copy.json` — тексты карточек; `content/flow-scenes.json` — подписи и оборудование для анимированных схем; `content/image-prompts.json` и `content/photo-prompts.json` — промпты встроенного image_gen; `content/photo-alt.json` и `content/privacy-notes.json` — описания фото и редакционные пояснения; `artwork/` — оригиналы; `assets/` — CSS и WebP; `public/` — готовый сайт; `reference/original.html` — сохранённая исходная главная. +`content/pages.json` — тексты; `content/card-copy.json` — тексты карточек; `content/flow-scenes.json` — подписи и оборудование для анимированных схем; `content/image-motion.json` — иллюстративные маршруты сигнала на карточках; `content/image-prompts.json` и `content/photo-prompts.json` — промпты встроенного image_gen; `content/photo-alt.json` и `content/privacy-notes.json` — описания фото и редакционные пояснения; `artwork/` — оригиналы; `assets/` — CSS, JS и WebP; `public/` — готовый сайт; `reference/original.html` — сохранённая исходная главная. ## Фактическая основа @@ -55,6 +56,8 @@ python verify.py `live-verification.json`: 21 публичный URL отдал 200 и байт-в-байт совпал со сборкой. Старый сертификат истёк 17.09.2026, заявка на бесплатный перевыпуск принята панелью Beget 28.09.2026. Повторная проверка в тот же день подтвердила действующий сертификат с окончанием срока 27.12.2026, 12:31 UTC. Диагностический скрипт отдельно проверяет HTTPS стандартной цепочкой доверия. +Выпуск анимации 28.09.2026: локальная проверка подтвердила 12 анимированных иллюстраций, 16 доступных HTML-страниц, лимиты размеров WebP и неизменные цены. В Chrome проверены каталоги при ширине 1280 и 500 px, а также режим «уменьшить движение». Скрипт `deploy_beget.py update-motion` перед заменой сравнивает все файлы предыдущего выпуска с боевым сайтом и сохраняет изменяемые HTML вне публичного каталога. + Браузер: главная и статья на обычном экране и 390×844; горизонтального переполнения нет, responsive images загружаются, оглавление и FAQ работают. Анимированная схема сети визуально проверена на 1280 px и в мобильном окне 390 px: устройства выстраиваются вертикально, путь сигнала сохраняется. Исходная форма на главной остаётся демонстрационной; все новые CTA ведут прямо в Telegram или на телефон, сообщения автоматически не отправлялись. ## Публикация и откат diff --git a/archive-manifests/2026-09-28-motion-release.json b/archive-manifests/2026-09-28-motion-release.json new file mode 100644 index 0000000..8cd256a --- /dev/null +++ b/archive-manifests/2026-09-28-motion-release.json @@ -0,0 +1,1386 @@ +{ + "site": "servaki.online", + "release_date": "2026-09-28", + "files": [ + { + "path": "SITE-BUILD.md", + "bytes": 15161, + "sha256": "169ed822ee5508a8715b020470f091aff4ca81d85f04d9972547acf33e429f30" + }, + { + "path": "artwork/agriculture.png", + "bytes": 2647629, + "sha256": "5997fd7e1797f28610dde42ed22dead3e1fabcf6109d54b21b9473af3c46be3b" + }, + { + "path": "artwork/automation.png", + "bytes": 2026931, + "sha256": "8182d1dfb2c1603f86805a9903fcef9ab51a2c3f144f2dbd45d5c692dc41f320" + }, + { + "path": "artwork/construction.png", + "bytes": 2591922, + "sha256": "49417046c9a59fd001066881d09ec0980553fb29a668af2bd79df1943e770b83" + }, + { + "path": "artwork/contact-sheet.jpg", + "bytes": 342270, + "sha256": "8740c1879edf96462d40aff21f6cf73e028dfa79097786c355973dda91e163cb" + }, + { + "path": "artwork/horeca.png", + "bytes": 2581983, + "sha256": "fb8d834212db29c244e2ff85381782a17a04bbfec57063e999631e8698c0df36" + }, + { + "path": "artwork/it-subscription.png", + "bytes": 1932910, + "sha256": "34c7a27b62343092e5b666498bd32df7edb4395e6435c339bfd257ba32acfa88" + }, + { + "path": "artwork/monitoring-security.png", + "bytes": 1928162, + "sha256": "545b7dae63c019c87bba6f9a8c025435a692cf3cf207efbdaf2a0c8425f7792d" + }, + { + "path": "artwork/networks-vpn.png", + "bytes": 2131432, + "sha256": "477d07c3cb051a14bf5dcc45192a3c007708f438cdac684a8e4996d38b159547" + }, + { + "path": "artwork/photos-selected/agriculture.png", + "bytes": 2227864, + "sha256": "3cab490cf3ab337b33bb8271ee72d7b3617bb6d328006f8d3974cb689b6383b2" + }, + { + "path": "artwork/photos-selected/automation.png", + "bytes": 2060967, + "sha256": "155c17a595ce2a669a7586d38e51ee4cac1bcd9fbe3b90d5a3c7d5b5c31603f3" + }, + { + "path": "artwork/photos-selected/construction.png", + "bytes": 1855721, + "sha256": "586df166b670707aea5b44257beee35c3d599c01437d78d82e94b502ac1684f8" + }, + { + "path": "artwork/photos-selected/contact-sheet.jpg", + "bytes": 364215, + "sha256": "a23db0c7d7ef6b440fd4a77b804adc685f543db49b4a5ef567f965e8531a553f" + }, + { + "path": "artwork/photos-selected/horeca.png", + "bytes": 2019455, + "sha256": "a915b522b5fcda922f0c7c55ec8edc72a9b524da4634155962e89a7f49f93735" + }, + { + "path": "artwork/photos-selected/it-subscription.png", + "bytes": 2234101, + "sha256": "c0d87a01a19d77066b09bf09f0bb5c22f49ba9a76d0288654e2769befa7286bb" + }, + { + "path": "artwork/photos-selected/monitoring-security.png", + "bytes": 2115901, + "sha256": "590d30389cdec559f136c6196730319d553e4388b4ac5945f196ec1be432c1db" + }, + { + "path": "artwork/photos-selected/networks-vpn.png", + "bytes": 2263701, + "sha256": "146a9c2c5a8d363df61879ff4620bad18930420546aa4da0cad75d4eb8a45c21" + }, + { + "path": "artwork/photos-selected/rapid-response.png", + "bytes": 1957116, + "sha256": "60d3ed076ee1cb6ea61e1ce88a15a0b8fc948b027f2e7ba06d5ff6ba8521d949" + }, + { + "path": "artwork/photos-selected/remote-desktop.png", + "bytes": 2146998, + "sha256": "00f2a6fbdd3f79c398a0bdb94be9f150ffa3dda5c4b7005713ea6cbb8a84e7da" + }, + { + "path": "artwork/photos-selected/remote-sites.png", + "bytes": 2311691, + "sha256": "02b8e1b31930d59411b7878b3a97e675593caa57c845a1744252f1b590c97c2b" + }, + { + "path": "artwork/photos-selected/servers-hosting.png", + "bytes": 1858936, + "sha256": "b502740b92f77d2ed188da70f213986d9e679617f8e564fa9097ea597adc221f" + }, + { + "path": "artwork/photos-selected/video-surveillance.png", + "bytes": 2337420, + "sha256": "697d3921233b19f46a789a57752c37109f59163b1870379652788828a6422bcc" + }, + { + "path": "artwork/photos/agriculture.png", + "bytes": 2227864, + "sha256": "3cab490cf3ab337b33bb8271ee72d7b3617bb6d328006f8d3974cb689b6383b2" + }, + { + "path": "artwork/photos/automation.png", + "bytes": 2122884, + "sha256": "8250ded29bba18cca23576da0d17aef9b6c7affb2be3dad17afe169b10e50f9d" + }, + { + "path": "artwork/photos/construction.png", + "bytes": 1855721, + "sha256": "586df166b670707aea5b44257beee35c3d599c01437d78d82e94b502ac1684f8" + }, + { + "path": "artwork/photos/contact-sheet.jpg", + "bytes": 364477, + "sha256": "1b26d16edbcead7145b34baa100de74284730259dadd4ed625790381ce94c509" + }, + { + "path": "artwork/photos/horeca.png", + "bytes": 2109612, + "sha256": "a13ea734f2435be1984b0b97f986e78d84a27a403813b512865f527547972d18" + }, + { + "path": "artwork/photos/it-subscription.png", + "bytes": 2234101, + "sha256": "c0d87a01a19d77066b09bf09f0bb5c22f49ba9a76d0288654e2769befa7286bb" + }, + { + "path": "artwork/photos/monitoring-security.png", + "bytes": 2193261, + "sha256": "e0573a72ad92affcc252b88492968b7e26e20fd719ca18c3e92aafbd0f0bab2f" + }, + { + "path": "artwork/photos/networks-vpn.png", + "bytes": 2444353, + "sha256": "737afa550de774d0cca9f95537151a1cc0391fa963fe851296a536f2f4567cd7" + }, + { + "path": "artwork/photos/rapid-response.png", + "bytes": 1957116, + "sha256": "60d3ed076ee1cb6ea61e1ce88a15a0b8fc948b027f2e7ba06d5ff6ba8521d949" + }, + { + "path": "artwork/photos/remote-desktop.png", + "bytes": 2254204, + "sha256": "52a4f1f6d686ea7533b64eeb27d147396fac446e1151f0cabe977eba84f17da9" + }, + { + "path": "artwork/photos/remote-sites.png", + "bytes": 2311691, + "sha256": "02b8e1b31930d59411b7878b3a97e675593caa57c845a1744252f1b590c97c2b" + }, + { + "path": "artwork/photos/servers-hosting.png", + "bytes": 1928760, + "sha256": "c4a5f046ea78590d30e3aebe52df6799a2d597715fd1eda21e9f87d81b16cc6d" + }, + { + "path": "artwork/photos/video-surveillance.png", + "bytes": 2459341, + "sha256": "735364d09ba3eee09375fa02c5967c36b24c5d9a1faa2f7ad60c9b1e9dd64c98" + }, + { + "path": "artwork/rapid-response.png", + "bytes": 1856373, + "sha256": "09940f4b92266d58ca16be5c29bd1cfda86c8e448dfd4cf42d7c9dec936cc5e3" + }, + { + "path": "artwork/remote-desktop.png", + "bytes": 1893214, + "sha256": "70f575bedecc2dca777bbbcda53db5564d5057c711b8754f8e205d07962b1cc9" + }, + { + "path": "artwork/remote-sites.png", + "bytes": 2506550, + "sha256": "34a4b6d54951c817b37699e2fe199fd0e196141818675173bb31d4892ea95c6c" + }, + { + "path": "artwork/servers-hosting.png", + "bytes": 2000971, + "sha256": "2316f92788906fff0e46e51f337f3db046cb39b958b30721bc14f1f78e31c7af" + }, + { + "path": "artwork/video-surveillance.png", + "bytes": 2147875, + "sha256": "fbb7cb9719a7b2e7df1c5676b17a2fcd8455ae48f120af362118ef5b978ab246" + }, + { + "path": "assets/agriculture-1536.webp", + "bytes": 213438, + "sha256": "0620c8848fa19b06eba11f03b427b073125f576be61b7a37a24e99f1983d2529" + }, + { + "path": "assets/agriculture-480.webp", + "bytes": 30138, + "sha256": "ca6783ae677b83d2046432ffc11709eab5a6257742784a336c6c449668107b05" + }, + { + "path": "assets/agriculture-960.webp", + "bytes": 101508, + "sha256": "7f3b65935494197fb34f704d7d8622e515f5060880ff400fe89cb44b870b402a" + }, + { + "path": "assets/automation-1536.webp", + "bytes": 103890, + "sha256": "2ac74affac2f77df7570791611608ca3871a6f411cbd12821c72406626772572" + }, + { + "path": "assets/automation-480.webp", + "bytes": 20552, + "sha256": "5d94300a756413f0e6e17df2457dfafcf96ceab725a16716295b2838fcc3758f" + }, + { + "path": "assets/automation-960.webp", + "bytes": 55244, + "sha256": "1456ba92c329ae3ac458561eac19652fe2814eaccef652bb13368862be209095" + }, + { + "path": "assets/construction-1536.webp", + "bytes": 218014, + "sha256": "5717c1fc9ea1cfaaf29f2e6482ff69bfe702f684980f30faa7cb0fa672ae94c9" + }, + { + "path": "assets/construction-480.webp", + "bytes": 28678, + "sha256": "1949a7d869cda57fcd4299ddb70c826748af461efe9f618f8026cd7779b6eb01" + }, + { + "path": "assets/construction-960.webp", + "bytes": 101112, + "sha256": "ef22f37ab3d466f382a86ceff4965cf4e26791d494a3d70f1bca18524a8a2d1f" + }, + { + "path": "assets/editorial.css", + "bytes": 12574, + "sha256": "fb2289d8cd79e7dd58117e588350c7e6e4b425be699af99ded1cfe1eac0e4e47" + }, + { + "path": "assets/horeca-1536.webp", + "bytes": 236248, + "sha256": "47ec8dd840d8aaaa1009cc1c79bfb0ca16773f987af3b857661a37a9d03cb99a" + }, + { + "path": "assets/horeca-480.webp", + "bytes": 37094, + "sha256": "b12876832cd94665f0a0396b6ae915b2deb04fef2927c24eff311619ca24ff47" + }, + { + "path": "assets/horeca-960.webp", + "bytes": 116668, + "sha256": "beeb4632678d55e6503a1b3326b493d8e5bbd7b1193c8683b706b6877f06919a" + }, + { + "path": "assets/it-subscription-1536.webp", + "bytes": 91866, + "sha256": "41b6308a5b8b936ba067e5b935f7ccb460b193e0c51015993558ffc6cd128e81" + }, + { + "path": "assets/it-subscription-480.webp", + "bytes": 16198, + "sha256": "5fc9fd775450b07b020d627cb78daa81d706c4fe7dbcbcaa0e22a6444f705a00" + }, + { + "path": "assets/it-subscription-960.webp", + "bytes": 46302, + "sha256": "8af2500c6f2eeebe3ecdba0beb9e2159656c4d9c88384c67c161ec616eeb1c08" + }, + { + "path": "assets/monitoring-security-1536.webp", + "bytes": 106710, + "sha256": "354c4755dcfe83ae67575228914d431ebda92cc853e787310476b7d4f030174a" + }, + { + "path": "assets/monitoring-security-480.webp", + "bytes": 17086, + "sha256": "fd855080fead0d2defaecde2cb91ce6f57b5a75d373de8d772ecf560083c3bfb" + }, + { + "path": "assets/monitoring-security-960.webp", + "bytes": 53216, + "sha256": "bd881ddb7f5cf3f5dd49ce243ce61fe69543cc95980629a5cf72b2293be733c7" + }, + { + "path": "assets/motion.css", + "bytes": 1265, + "sha256": "636fb027214143075c58d99e6d9cfe007c08a9cd5c4122c2316e06bd26ec0dcc" + }, + { + "path": "assets/motion.js", + "bytes": 1139, + "sha256": "612dcde5f733d6cc0512c2686965367198551e830f405f6a7d2e8444da8b4e49" + }, + { + "path": "assets/networks-vpn-1536.webp", + "bytes": 136714, + "sha256": "78efb3c01bc857d2c79e9313daeaebd8c13182480740dbdfa41b4f0e432b9745" + }, + { + "path": "assets/networks-vpn-480.webp", + "bytes": 21284, + "sha256": "38198e246acf1485f01de657aadb843bb68fdfa11df8b5d117e69d835e1eecf5" + }, + { + "path": "assets/networks-vpn-960.webp", + "bytes": 66250, + "sha256": "d9b61573e446211c797878ad92b8381f6aa4ba4ba671ae27b15f864369f4b19d" + }, + { + "path": "assets/photo-agriculture-1536.webp", + "bytes": 136382, + "sha256": "9c625b1cf9222e139689d483c7b84f77ab366d85be1a48f7c6e7f71eca4e138a" + }, + { + "path": "assets/photo-agriculture-480.webp", + "bytes": 27858, + "sha256": "5d15e89103a0e26f967f20d805eb6a6363e37fd35091ea7dd5d15ea9e3726d4b" + }, + { + "path": "assets/photo-agriculture-960.webp", + "bytes": 71602, + "sha256": "9b4cb1df300f01321ddd3a716958f6a4b655c3f438e9ea93cab22731cc472bf7" + }, + { + "path": "assets/photo-automation-1536.webp", + "bytes": 127676, + "sha256": "1a35d8ddb87cf868e9077c7f7fca1f92ce458d3f67302f6aeca79283600d3687" + }, + { + "path": "assets/photo-automation-480.webp", + "bytes": 27506, + "sha256": "926561b70ea3dee3f7c3dbf8efd339354d489e819fcbb75528de9c74e7201f73" + }, + { + "path": "assets/photo-automation-960.webp", + "bytes": 73428, + "sha256": "80620ccc52795e438a16ad35c77166dc4fe87ec077ee62d59f108cef873a3c97" + }, + { + "path": "assets/photo-construction-1536.webp", + "bytes": 103804, + "sha256": "1ac4e3829523bd1077613dc9a0a0ebd62966798c570267bfac3ae7aeade2314e" + }, + { + "path": "assets/photo-construction-480.webp", + "bytes": 24646, + "sha256": "7d35ac4f014bc95fb3649f039a0acabecc7c980e373111b12f930db36151f8af" + }, + { + "path": "assets/photo-construction-960.webp", + "bytes": 61064, + "sha256": "28af23e212f768b672f29986bda90186e35856e02edfa5c671d637561507b523" + }, + { + "path": "assets/photo-horeca-1536.webp", + "bytes": 103336, + "sha256": "690c3c987260ef683be38865f677c5be64612f89c4fe503bed702c2baaed23bc" + }, + { + "path": "assets/photo-horeca-480.webp", + "bytes": 22648, + "sha256": "9474aa44e616b05e94571e3aac8f52f3f302e59f090b1c8daff711c7c59e74ab" + }, + { + "path": "assets/photo-horeca-960.webp", + "bytes": 54012, + "sha256": "f1462026f5511f9c697711c95608c81099647444d66ef35fc9882b8798b95ce4" + }, + { + "path": "assets/photo-it-subscription-1536.webp", + "bytes": 128324, + "sha256": "0f551b0b2f1d2ff09ae953d40ab1aa99e0de71363dd17a807d2ac66c8dccd1f4" + }, + { + "path": "assets/photo-it-subscription-480.webp", + "bytes": 27776, + "sha256": "555cba166f5fc52472187e9e1f2d0dc63cf03821b0902331a1ab7e57ecbde819" + }, + { + "path": "assets/photo-it-subscription-960.webp", + "bytes": 67654, + "sha256": "b25181993b50c86b2802912e1262ad9388e6ffb29d9ee7f65b6aaeb475ade797" + }, + { + "path": "assets/photo-monitoring-security-1536.webp", + "bytes": 126088, + "sha256": "6f1a2ffeddf17e46fbda9ad26fc2f59d11d33c8fe0801ac9031b44aac06eae0b" + }, + { + "path": "assets/photo-monitoring-security-480.webp", + "bytes": 26826, + "sha256": "8b7fda9f49dcdd9a894099eb86602c11bc357fc5ee6c46d00d4462e1735402f1" + }, + { + "path": "assets/photo-monitoring-security-960.webp", + "bytes": 69118, + "sha256": "e0023a3fceee338eb11a6e164e5d11566dc528a979a0407d205928ca196e0ca0" + }, + { + "path": "assets/photo-networks-vpn-1536.webp", + "bytes": 144178, + "sha256": "596f68d0a7e33e4f33c0a538fc034a5bdc494f9d4a3e1d9db75fab638d5fb04a" + }, + { + "path": "assets/photo-networks-vpn-480.webp", + "bytes": 29080, + "sha256": "4426fbeebdcd89fb89592ae439ee81b7e0a891e9d739d23eec5284ac64eb6de5" + }, + { + "path": "assets/photo-networks-vpn-960.webp", + "bytes": 77720, + "sha256": "57480881f518a0ad7282df6f21bc6eadbbb75d056b6a088fdbc38a53d3c90f32" + }, + { + "path": "assets/photo-rapid-response-1536.webp", + "bytes": 90396, + "sha256": "64b2657438807d5f200a9d43b1542bdfa22804918315911919cd0aab815cded1" + }, + { + "path": "assets/photo-rapid-response-480.webp", + "bytes": 21230, + "sha256": "e7fff91bc9a4143ebfa00d430ea39767b978050671acb0b32962549cd0767287" + }, + { + "path": "assets/photo-rapid-response-960.webp", + "bytes": 50484, + "sha256": "fd3d510e414acfe393bba7701b72a1044ee981118f935525dac156b0fcdfc118" + }, + { + "path": "assets/photo-remote-desktop-1536.webp", + "bytes": 125836, + "sha256": "b4910beeab10f408769583bc5c34236f01033501f4e61668ea4325eaf67b98b1" + }, + { + "path": "assets/photo-remote-desktop-480.webp", + "bytes": 25384, + "sha256": "0c5af5f3de76925baa278621034b8e42b579ca22bf2414fbb3c7e445ec673d58" + }, + { + "path": "assets/photo-remote-desktop-960.webp", + "bytes": 67260, + "sha256": "9bfd4d3f09b5c1eca32b320e327ee3d48ce9b7c8d5a9f52c28be904a4d4a6f09" + }, + { + "path": "assets/photo-remote-sites-1536.webp", + "bytes": 148902, + "sha256": "99525507fbf854b006cfa9b6476e823c9a698adaf7ef0666ed2ffe2ce6083561" + }, + { + "path": "assets/photo-remote-sites-480.webp", + "bytes": 27656, + "sha256": "ba70cf8d6d098a1bc0362234b9f6f86e6df2bacb89deebd450fc1835efb7310d" + }, + { + "path": "assets/photo-remote-sites-960.webp", + "bytes": 77360, + "sha256": "320cb55f93f660868cdee995f27bc5527032673a4364f33384c37e5d0f858ad0" + }, + { + "path": "assets/photo-servers-hosting-1536.webp", + "bytes": 104664, + "sha256": "3254a91191a697189584349949532fb26491f7d9dc6a6f5342c1b383ca244c48" + }, + { + "path": "assets/photo-servers-hosting-480.webp", + "bytes": 21842, + "sha256": "d5dd4e0a5cbaba2f61ce470e18f2a9d0bb4afbac342a1030890f68130f992167" + }, + { + "path": "assets/photo-servers-hosting-960.webp", + "bytes": 57140, + "sha256": "ea3b8d269d79b972c368e44821b4cb110e0fa733673371afbef9c08e557efac3" + }, + { + "path": "assets/photo-video-surveillance-1536.webp", + "bytes": 167560, + "sha256": "4e11868832b747e58160573c9dc706cc520fbc238146f7e8ed9bb7963cd689e7" + }, + { + "path": "assets/photo-video-surveillance-480.webp", + "bytes": 38650, + "sha256": "8946f34d23b613cde2148eca92ff1819d0c7ea251d253e11d81800eee595c175" + }, + { + "path": "assets/photo-video-surveillance-960.webp", + "bytes": 98416, + "sha256": "95ef7d78485dc5ca357084509a7d92e4b09147d0a990ab4c3e7d0c18454605eb" + }, + { + "path": "assets/rapid-response-1536.webp", + "bytes": 93146, + "sha256": "3d77da7db2c5cb1395af7a992dfecf71d971c8bcf9be77e7a1ee5aeadc8bac68" + }, + { + "path": "assets/rapid-response-480.webp", + "bytes": 17016, + "sha256": "a912b29439c306b92730491fdc7cf2e66f77815f627c384cde6962d575b962a5" + }, + { + "path": "assets/rapid-response-960.webp", + "bytes": 48660, + "sha256": "3f4ea0e0dcfba5f7acf93054388571da7fdc418e29dbbf5c0971c3e0b7b2e774" + }, + { + "path": "assets/remote-desktop-1536.webp", + "bytes": 100842, + "sha256": "3579fa08efb75a5b499e26af49082823962bee6c6f2425dcfa63212d63e358a3" + }, + { + "path": "assets/remote-desktop-480.webp", + "bytes": 18244, + "sha256": "3767188d160a0f6faa12650c78a840134ccf2685729fefc53876a6ee59919da2" + }, + { + "path": "assets/remote-desktop-960.webp", + "bytes": 51374, + "sha256": "97b24a59d5764d28d8fd42c2ac4f4b2bf5ab7c0e8d260088bd7f5fffd620ba1b" + }, + { + "path": "assets/remote-sites-1536.webp", + "bytes": 167892, + "sha256": "01d49ac63c1b96ad85ab4e29ac9477951ccfd879b58670eb3f3c62f8042482f8" + }, + { + "path": "assets/remote-sites-480.webp", + "bytes": 26030, + "sha256": "e16a12315cde12c94ca32f4b39e740a9450870014db7d1e04639c8a997686415" + }, + { + "path": "assets/remote-sites-960.webp", + "bytes": 83688, + "sha256": "5482117e83b6d107ab1bb173a39daad64ad7669982596f9d1269fac6dd3c198d" + }, + { + "path": "assets/servers-hosting-1536.webp", + "bytes": 107668, + "sha256": "ceb3974a6908fbc646de464cf4989339bdcbf3232dd438f8f52116039330c3d3" + }, + { + "path": "assets/servers-hosting-480.webp", + "bytes": 15398, + "sha256": "6bf480b68dae5ea7d7df876e7ea4e4f7458d46f10bb4d057eb7a0b99ca0f84c9" + }, + { + "path": "assets/servers-hosting-960.webp", + "bytes": 49298, + "sha256": "f24c62785bd0576c6401fb2fc3a0de52b6269decc579319069e61bf94ccecc3c" + }, + { + "path": "assets/video-surveillance-1536.webp", + "bytes": 126936, + "sha256": "d4139267e8f2e6e60aab5c48a068c9812b84803203aaf0580eb14db983e05db8" + }, + { + "path": "assets/video-surveillance-480.webp", + "bytes": 19212, + "sha256": "e18153c2572624843d4dcebc2cbdb19d081badcd44c6e48bac80f2ac16717391" + }, + { + "path": "assets/video-surveillance-960.webp", + "bytes": 60030, + "sha256": "76189da0303bc5903d71c7bab4512991495c6a4308244867952a51defe1b648e" + }, + { + "path": "content/card-copy.json", + "bytes": 4175, + "sha256": "2d35f8ed727c11ee16da538a6953787664449af760eaac9817fb9942d8e6cf04" + }, + { + "path": "content/flow-scenes.json", + "bytes": 2510, + "sha256": "cfefa76c2a0278ad4c67b76f7254d3db6081199e430e3f1b2668c8bcf4e5e9d6" + }, + { + "path": "content/image-manifest.json", + "bytes": 993, + "sha256": "a645923f914758632e01372a05f751b217cae812f8a9864b605cd30753634967" + }, + { + "path": "content/image-motion.json", + "bytes": 1758, + "sha256": "ebf3335bafa80b2cf7e02e1d9f7f9f645a43ce6be026e6c79690ef58a9b9163b" + }, + { + "path": "content/image-prompts.json", + "bytes": 3703, + "sha256": "77630b28d6851957b8b5573ff9749a01c1890dbf5114a9af450f8488acb36184" + }, + { + "path": "content/pages.json", + "bytes": 68685, + "sha256": "cc5af56c763fabbeb68cfb4d2a640bfb3b60a6f8700ab5f1aed11b5710c16503" + }, + { + "path": "content/photo-alt.json", + "bytes": 1877, + "sha256": "795811b3257dfc743fdc9e61eb1b3c2243d95e6b2d3691c7868b9426edcfe859" + }, + { + "path": "content/photo-manifest.json", + "bytes": 1184, + "sha256": "ee3f47ea9887eb935d5d7caa50b374980e6d72ec5aa5b9c0ca1ca0d578c81e8b" + }, + { + "path": "content/photo-prompts.json", + "bytes": 4360, + "sha256": "be8ffae1aa27bc099e6c616871356b2da02ea0403c27228e79163f7340860c8a" + }, + { + "path": "content/privacy-notes.json", + "bytes": 3852, + "sha256": "a58b49cf4ad16baa2a65cdf4cff576cb9c5d6d4b670d5a13493d8f30e9915729" + }, + { + "path": "imagegen-raw/exec-02d51137-9275-4107-aab0-b3aec51a1dad.png", + "bytes": 2147875, + "sha256": "fbb7cb9719a7b2e7df1c5676b17a2fcd8455ae48f120af362118ef5b978ab246" + }, + { + "path": "imagegen-raw/exec-1b28dbd9-1b57-45e2-b54f-c383d56d6060.png", + "bytes": 2019455, + "sha256": "a915b522b5fcda922f0c7c55ec8edc72a9b524da4634155962e89a7f49f93735" + }, + { + "path": "imagegen-raw/exec-1e275585-1588-432a-bc1e-fd15c7b85927.png", + "bytes": 2459341, + "sha256": "735364d09ba3eee09375fa02c5967c36b24c5d9a1faa2f7ad60c9b1e9dd64c98" + }, + { + "path": "imagegen-raw/exec-1ee5178f-425c-418b-a035-f0ee471c9785.png", + "bytes": 2234101, + "sha256": "c0d87a01a19d77066b09bf09f0bb5c22f49ba9a76d0288654e2769befa7286bb" + }, + { + "path": "imagegen-raw/exec-39369184-d328-4ad5-9f41-eddfeb94508f.png", + "bytes": 2146998, + "sha256": "00f2a6fbdd3f79c398a0bdb94be9f150ffa3dda5c4b7005713ea6cbb8a84e7da" + }, + { + "path": "imagegen-raw/exec-4b3155ff-9827-4ae2-a0ec-5a75d8e53a58.png", + "bytes": 1858936, + "sha256": "b502740b92f77d2ed188da70f213986d9e679617f8e564fa9097ea597adc221f" + }, + { + "path": "imagegen-raw/exec-5f0f5101-6c0b-448b-b0a1-71ba1a0824d1.png", + "bytes": 1957116, + "sha256": "60d3ed076ee1cb6ea61e1ce88a15a0b8fc948b027f2e7ba06d5ff6ba8521d949" + }, + { + "path": "imagegen-raw/exec-61eacaed-d2f3-4955-9727-0050b3833f5c.png", + "bytes": 1856373, + "sha256": "09940f4b92266d58ca16be5c29bd1cfda86c8e448dfd4cf42d7c9dec936cc5e3" + }, + { + "path": "imagegen-raw/exec-62f4909d-76c8-4a92-b8de-b8a52886fda4.png", + "bytes": 2026931, + "sha256": "8182d1dfb2c1603f86805a9903fcef9ab51a2c3f144f2dbd45d5c692dc41f320" + }, + { + "path": "imagegen-raw/exec-6b233f08-5a14-47bc-a0ff-f5764ee81358.png", + "bytes": 2591922, + "sha256": "49417046c9a59fd001066881d09ec0980553fb29a668af2bd79df1943e770b83" + }, + { + "path": "imagegen-raw/exec-6ebb0e96-dbdb-42fc-b961-deac1bcc47e4.png", + "bytes": 1928162, + "sha256": "545b7dae63c019c87bba6f9a8c025435a692cf3cf207efbdaf2a0c8425f7792d" + }, + { + "path": "imagegen-raw/exec-77c5b007-4c9a-4c06-a2ba-998165ba31af.png", + "bytes": 2227864, + "sha256": "3cab490cf3ab337b33bb8271ee72d7b3617bb6d328006f8d3974cb689b6383b2" + }, + { + "path": "imagegen-raw/exec-8a0cd1c3-cee8-4730-94da-efe1284423e3.png", + "bytes": 2254204, + "sha256": "52a4f1f6d686ea7533b64eeb27d147396fac446e1151f0cabe977eba84f17da9" + }, + { + "path": "imagegen-raw/exec-8f67ef1d-5fb4-4fd6-9173-be51861b4f49.png", + "bytes": 1855721, + "sha256": "586df166b670707aea5b44257beee35c3d599c01437d78d82e94b502ac1684f8" + }, + { + "path": "imagegen-raw/exec-93d89369-e112-40c8-b145-0bb9a6aebd5b.png", + "bytes": 2000971, + "sha256": "2316f92788906fff0e46e51f337f3db046cb39b958b30721bc14f1f78e31c7af" + }, + { + "path": "imagegen-raw/exec-9c6feef1-82fd-4c82-841e-7dfdd1eda43d.png", + "bytes": 2060967, + "sha256": "155c17a595ce2a669a7586d38e51ee4cac1bcd9fbe3b90d5a3c7d5b5c31603f3" + }, + { + "path": "imagegen-raw/exec-9eae21ab-8e29-4bde-a7a0-16ff60198e85.png", + "bytes": 2311691, + "sha256": "02b8e1b31930d59411b7878b3a97e675593caa57c845a1744252f1b590c97c2b" + }, + { + "path": "imagegen-raw/exec-a4670691-b05c-4508-90d6-be9b0e364550.png", + "bytes": 2109612, + "sha256": "a13ea734f2435be1984b0b97f986e78d84a27a403813b512865f527547972d18" + }, + { + "path": "imagegen-raw/exec-a7186d04-ce0a-4b37-b693-a6e11a8d446e.png", + "bytes": 2506550, + "sha256": "34a4b6d54951c817b37699e2fe199fd0e196141818675173bb31d4892ea95c6c" + }, + { + "path": "imagegen-raw/exec-a831e3ef-b8b0-438b-b3b4-41cd1c986465.png", + "bytes": 2263701, + "sha256": "146a9c2c5a8d363df61879ff4620bad18930420546aa4da0cad75d4eb8a45c21" + }, + { + "path": "imagegen-raw/exec-afb4de23-8a8f-4bb9-b7c9-b4340eac4634.png", + "bytes": 1928760, + "sha256": "c4a5f046ea78590d30e3aebe52df6799a2d597715fd1eda21e9f87d81b16cc6d" + }, + { + "path": "imagegen-raw/exec-b37ae9f3-1290-47d8-8422-535881431064.png", + "bytes": 2337420, + "sha256": "697d3921233b19f46a789a57752c37109f59163b1870379652788828a6422bcc" + }, + { + "path": "imagegen-raw/exec-b6ffe55d-e553-40d2-a091-9def97ab9945.png", + "bytes": 1893214, + "sha256": "70f575bedecc2dca777bbbcda53db5564d5057c711b8754f8e205d07962b1cc9" + }, + { + "path": "imagegen-raw/exec-cd106f52-885c-43b2-885a-03f9c7e93dae.png", + "bytes": 2131432, + "sha256": "477d07c3cb051a14bf5dcc45192a3c007708f438cdac684a8e4996d38b159547" + }, + { + "path": "imagegen-raw/exec-d3faf4a3-0cc1-4829-801c-ce9ddfc20067.png", + "bytes": 1932910, + "sha256": "34c7a27b62343092e5b666498bd32df7edb4395e6435c339bfd257ba32acfa88" + }, + { + "path": "imagegen-raw/exec-e0a9d62c-84c6-47b5-98e6-7ce83011c1f9.png", + "bytes": 2115901, + "sha256": "590d30389cdec559f136c6196730319d553e4388b4ac5945f196ec1be432c1db" + }, + { + "path": "imagegen-raw/exec-e6458072-925a-4eb2-840a-1c4977c979b1.png", + "bytes": 2122884, + "sha256": "8250ded29bba18cca23576da0d17aef9b6c7affb2be3dad17afe169b10e50f9d" + }, + { + "path": "imagegen-raw/exec-e9c22a40-e210-4f73-becc-3fc54312fe35.png", + "bytes": 2444353, + "sha256": "737afa550de774d0cca9f95537151a1cc0391fa963fe851296a536f2f4567cd7" + }, + { + "path": "imagegen-raw/exec-f42c374b-ac2e-460f-9c2e-cbe43405f8a9.png", + "bytes": 2193261, + "sha256": "e0573a72ad92affcc252b88492968b7e26e20fd719ca18c3e92aafbd0f0bab2f" + }, + { + "path": "imagegen-raw/exec-f7a9557c-4473-4560-82d8-3fdba4a25eba.png", + "bytes": 2647629, + "sha256": "5997fd7e1797f28610dde42ed22dead3e1fabcf6109d54b21b9473af3c46be3b" + }, + { + "path": "imagegen-raw/exec-fbbb25e2-d453-4003-b933-13105e209940.png", + "bytes": 2581983, + "sha256": "fb8d834212db29c244e2ff85381782a17a04bbfec57063e999631e8698c0df36" + }, + { + "path": "public/approach/index.html", + "bytes": 9351, + "sha256": "26a40cadcd32697c579a8f61992e17ef8107902fb15ae286b46622da64979eef" + }, + { + "path": "public/approach/it-subscription/index.html", + "bytes": 23147, + "sha256": "8b8f556322a1fb1ff1636eb2cba288cea9ee565ed40341c5c7bd7348487cae67" + }, + { + "path": "public/approach/rapid-response/index.html", + "bytes": 23352, + "sha256": "b45e2306921c4b9db5345448235bf89bb44a060fd3cc02ca71aea67a7d374752" + }, + { + "path": "public/approach/remote-sites/index.html", + "bytes": 23923, + "sha256": "d5fcb620690b4632fed4e6eae1065bef04645dc62c177f2b681001f831789f8d" + }, + { + "path": "public/assets/editorial/agriculture-1536.webp", + "bytes": 213438, + "sha256": "0620c8848fa19b06eba11f03b427b073125f576be61b7a37a24e99f1983d2529" + }, + { + "path": "public/assets/editorial/agriculture-480.webp", + "bytes": 30138, + "sha256": "ca6783ae677b83d2046432ffc11709eab5a6257742784a336c6c449668107b05" + }, + { + "path": "public/assets/editorial/agriculture-960.webp", + "bytes": 101508, + "sha256": "7f3b65935494197fb34f704d7d8622e515f5060880ff400fe89cb44b870b402a" + }, + { + "path": "public/assets/editorial/automation-1536.webp", + "bytes": 103890, + "sha256": "2ac74affac2f77df7570791611608ca3871a6f411cbd12821c72406626772572" + }, + { + "path": "public/assets/editorial/automation-480.webp", + "bytes": 20552, + "sha256": "5d94300a756413f0e6e17df2457dfafcf96ceab725a16716295b2838fcc3758f" + }, + { + "path": "public/assets/editorial/automation-960.webp", + "bytes": 55244, + "sha256": "1456ba92c329ae3ac458561eac19652fe2814eaccef652bb13368862be209095" + }, + { + "path": "public/assets/editorial/construction-1536.webp", + "bytes": 218014, + "sha256": "5717c1fc9ea1cfaaf29f2e6482ff69bfe702f684980f30faa7cb0fa672ae94c9" + }, + { + "path": "public/assets/editorial/construction-480.webp", + "bytes": 28678, + "sha256": "1949a7d869cda57fcd4299ddb70c826748af461efe9f618f8026cd7779b6eb01" + }, + { + "path": "public/assets/editorial/construction-960.webp", + "bytes": 101112, + "sha256": "ef22f37ab3d466f382a86ceff4965cf4e26791d494a3d70f1bca18524a8a2d1f" + }, + { + "path": "public/assets/editorial/editorial.css", + "bytes": 12574, + "sha256": "fb2289d8cd79e7dd58117e588350c7e6e4b425be699af99ded1cfe1eac0e4e47" + }, + { + "path": "public/assets/editorial/horeca-1536.webp", + "bytes": 236248, + "sha256": "47ec8dd840d8aaaa1009cc1c79bfb0ca16773f987af3b857661a37a9d03cb99a" + }, + { + "path": "public/assets/editorial/horeca-480.webp", + "bytes": 37094, + "sha256": "b12876832cd94665f0a0396b6ae915b2deb04fef2927c24eff311619ca24ff47" + }, + { + "path": "public/assets/editorial/horeca-960.webp", + "bytes": 116668, + "sha256": "beeb4632678d55e6503a1b3326b493d8e5bbd7b1193c8683b706b6877f06919a" + }, + { + "path": "public/assets/editorial/it-subscription-1536.webp", + "bytes": 91866, + "sha256": "41b6308a5b8b936ba067e5b935f7ccb460b193e0c51015993558ffc6cd128e81" + }, + { + "path": "public/assets/editorial/it-subscription-480.webp", + "bytes": 16198, + "sha256": "5fc9fd775450b07b020d627cb78daa81d706c4fe7dbcbcaa0e22a6444f705a00" + }, + { + "path": "public/assets/editorial/it-subscription-960.webp", + "bytes": 46302, + "sha256": "8af2500c6f2eeebe3ecdba0beb9e2159656c4d9c88384c67c161ec616eeb1c08" + }, + { + "path": "public/assets/editorial/monitoring-security-1536.webp", + "bytes": 106710, + "sha256": "354c4755dcfe83ae67575228914d431ebda92cc853e787310476b7d4f030174a" + }, + { + "path": "public/assets/editorial/monitoring-security-480.webp", + "bytes": 17086, + "sha256": "fd855080fead0d2defaecde2cb91ce6f57b5a75d373de8d772ecf560083c3bfb" + }, + { + "path": "public/assets/editorial/monitoring-security-960.webp", + "bytes": 53216, + "sha256": "bd881ddb7f5cf3f5dd49ce243ce61fe69543cc95980629a5cf72b2293be733c7" + }, + { + "path": "public/assets/editorial/motion.css", + "bytes": 1265, + "sha256": "636fb027214143075c58d99e6d9cfe007c08a9cd5c4122c2316e06bd26ec0dcc" + }, + { + "path": "public/assets/editorial/motion.js", + "bytes": 1139, + "sha256": "612dcde5f733d6cc0512c2686965367198551e830f405f6a7d2e8444da8b4e49" + }, + { + "path": "public/assets/editorial/networks-vpn-1536.webp", + "bytes": 136714, + "sha256": "78efb3c01bc857d2c79e9313daeaebd8c13182480740dbdfa41b4f0e432b9745" + }, + { + "path": "public/assets/editorial/networks-vpn-480.webp", + "bytes": 21284, + "sha256": "38198e246acf1485f01de657aadb843bb68fdfa11df8b5d117e69d835e1eecf5" + }, + { + "path": "public/assets/editorial/networks-vpn-960.webp", + "bytes": 66250, + "sha256": "d9b61573e446211c797878ad92b8381f6aa4ba4ba671ae27b15f864369f4b19d" + }, + { + "path": "public/assets/editorial/photo-agriculture-1536.webp", + "bytes": 136382, + "sha256": "9c625b1cf9222e139689d483c7b84f77ab366d85be1a48f7c6e7f71eca4e138a" + }, + { + "path": "public/assets/editorial/photo-agriculture-480.webp", + "bytes": 27858, + "sha256": "5d15e89103a0e26f967f20d805eb6a6363e37fd35091ea7dd5d15ea9e3726d4b" + }, + { + "path": "public/assets/editorial/photo-agriculture-960.webp", + "bytes": 71602, + "sha256": "9b4cb1df300f01321ddd3a716958f6a4b655c3f438e9ea93cab22731cc472bf7" + }, + { + "path": "public/assets/editorial/photo-automation-1536.webp", + "bytes": 127676, + "sha256": "1a35d8ddb87cf868e9077c7f7fca1f92ce458d3f67302f6aeca79283600d3687" + }, + { + "path": "public/assets/editorial/photo-automation-480.webp", + "bytes": 27506, + "sha256": "926561b70ea3dee3f7c3dbf8efd339354d489e819fcbb75528de9c74e7201f73" + }, + { + "path": "public/assets/editorial/photo-automation-960.webp", + "bytes": 73428, + "sha256": "80620ccc52795e438a16ad35c77166dc4fe87ec077ee62d59f108cef873a3c97" + }, + { + "path": "public/assets/editorial/photo-construction-1536.webp", + "bytes": 103804, + "sha256": "1ac4e3829523bd1077613dc9a0a0ebd62966798c570267bfac3ae7aeade2314e" + }, + { + "path": "public/assets/editorial/photo-construction-480.webp", + "bytes": 24646, + "sha256": "7d35ac4f014bc95fb3649f039a0acabecc7c980e373111b12f930db36151f8af" + }, + { + "path": "public/assets/editorial/photo-construction-960.webp", + "bytes": 61064, + "sha256": "28af23e212f768b672f29986bda90186e35856e02edfa5c671d637561507b523" + }, + { + "path": "public/assets/editorial/photo-horeca-1536.webp", + "bytes": 103336, + "sha256": "690c3c987260ef683be38865f677c5be64612f89c4fe503bed702c2baaed23bc" + }, + { + "path": "public/assets/editorial/photo-horeca-480.webp", + "bytes": 22648, + "sha256": "9474aa44e616b05e94571e3aac8f52f3f302e59f090b1c8daff711c7c59e74ab" + }, + { + "path": "public/assets/editorial/photo-horeca-960.webp", + "bytes": 54012, + "sha256": "f1462026f5511f9c697711c95608c81099647444d66ef35fc9882b8798b95ce4" + }, + { + "path": "public/assets/editorial/photo-it-subscription-1536.webp", + "bytes": 128324, + "sha256": "0f551b0b2f1d2ff09ae953d40ab1aa99e0de71363dd17a807d2ac66c8dccd1f4" + }, + { + "path": "public/assets/editorial/photo-it-subscription-480.webp", + "bytes": 27776, + "sha256": "555cba166f5fc52472187e9e1f2d0dc63cf03821b0902331a1ab7e57ecbde819" + }, + { + "path": "public/assets/editorial/photo-it-subscription-960.webp", + "bytes": 67654, + "sha256": "b25181993b50c86b2802912e1262ad9388e6ffb29d9ee7f65b6aaeb475ade797" + }, + { + "path": "public/assets/editorial/photo-monitoring-security-1536.webp", + "bytes": 126088, + "sha256": "6f1a2ffeddf17e46fbda9ad26fc2f59d11d33c8fe0801ac9031b44aac06eae0b" + }, + { + "path": "public/assets/editorial/photo-monitoring-security-480.webp", + "bytes": 26826, + "sha256": "8b7fda9f49dcdd9a894099eb86602c11bc357fc5ee6c46d00d4462e1735402f1" + }, + { + "path": "public/assets/editorial/photo-monitoring-security-960.webp", + "bytes": 69118, + "sha256": "e0023a3fceee338eb11a6e164e5d11566dc528a979a0407d205928ca196e0ca0" + }, + { + "path": "public/assets/editorial/photo-networks-vpn-1536.webp", + "bytes": 144178, + "sha256": "596f68d0a7e33e4f33c0a538fc034a5bdc494f9d4a3e1d9db75fab638d5fb04a" + }, + { + "path": "public/assets/editorial/photo-networks-vpn-480.webp", + "bytes": 29080, + "sha256": "4426fbeebdcd89fb89592ae439ee81b7e0a891e9d739d23eec5284ac64eb6de5" + }, + { + "path": "public/assets/editorial/photo-networks-vpn-960.webp", + "bytes": 77720, + "sha256": "57480881f518a0ad7282df6f21bc6eadbbb75d056b6a088fdbc38a53d3c90f32" + }, + { + "path": "public/assets/editorial/photo-rapid-response-1536.webp", + "bytes": 90396, + "sha256": "64b2657438807d5f200a9d43b1542bdfa22804918315911919cd0aab815cded1" + }, + { + "path": "public/assets/editorial/photo-rapid-response-480.webp", + "bytes": 21230, + "sha256": "e7fff91bc9a4143ebfa00d430ea39767b978050671acb0b32962549cd0767287" + }, + { + "path": "public/assets/editorial/photo-rapid-response-960.webp", + "bytes": 50484, + "sha256": "fd3d510e414acfe393bba7701b72a1044ee981118f935525dac156b0fcdfc118" + }, + { + "path": "public/assets/editorial/photo-remote-desktop-1536.webp", + "bytes": 125836, + "sha256": "b4910beeab10f408769583bc5c34236f01033501f4e61668ea4325eaf67b98b1" + }, + { + "path": "public/assets/editorial/photo-remote-desktop-480.webp", + "bytes": 25384, + "sha256": "0c5af5f3de76925baa278621034b8e42b579ca22bf2414fbb3c7e445ec673d58" + }, + { + "path": "public/assets/editorial/photo-remote-desktop-960.webp", + "bytes": 67260, + "sha256": "9bfd4d3f09b5c1eca32b320e327ee3d48ce9b7c8d5a9f52c28be904a4d4a6f09" + }, + { + "path": "public/assets/editorial/photo-remote-sites-1536.webp", + "bytes": 148902, + "sha256": "99525507fbf854b006cfa9b6476e823c9a698adaf7ef0666ed2ffe2ce6083561" + }, + { + "path": "public/assets/editorial/photo-remote-sites-480.webp", + "bytes": 27656, + "sha256": "ba70cf8d6d098a1bc0362234b9f6f86e6df2bacb89deebd450fc1835efb7310d" + }, + { + "path": "public/assets/editorial/photo-remote-sites-960.webp", + "bytes": 77360, + "sha256": "320cb55f93f660868cdee995f27bc5527032673a4364f33384c37e5d0f858ad0" + }, + { + "path": "public/assets/editorial/photo-servers-hosting-1536.webp", + "bytes": 104664, + "sha256": "3254a91191a697189584349949532fb26491f7d9dc6a6f5342c1b383ca244c48" + }, + { + "path": "public/assets/editorial/photo-servers-hosting-480.webp", + "bytes": 21842, + "sha256": "d5dd4e0a5cbaba2f61ce470e18f2a9d0bb4afbac342a1030890f68130f992167" + }, + { + "path": "public/assets/editorial/photo-servers-hosting-960.webp", + "bytes": 57140, + "sha256": "ea3b8d269d79b972c368e44821b4cb110e0fa733673371afbef9c08e557efac3" + }, + { + "path": "public/assets/editorial/photo-video-surveillance-1536.webp", + "bytes": 167560, + "sha256": "4e11868832b747e58160573c9dc706cc520fbc238146f7e8ed9bb7963cd689e7" + }, + { + "path": "public/assets/editorial/photo-video-surveillance-480.webp", + "bytes": 38650, + "sha256": "8946f34d23b613cde2148eca92ff1819d0c7ea251d253e11d81800eee595c175" + }, + { + "path": "public/assets/editorial/photo-video-surveillance-960.webp", + "bytes": 98416, + "sha256": "95ef7d78485dc5ca357084509a7d92e4b09147d0a990ab4c3e7d0c18454605eb" + }, + { + "path": "public/assets/editorial/rapid-response-1536.webp", + "bytes": 93146, + "sha256": "3d77da7db2c5cb1395af7a992dfecf71d971c8bcf9be77e7a1ee5aeadc8bac68" + }, + { + "path": "public/assets/editorial/rapid-response-480.webp", + "bytes": 17016, + "sha256": "a912b29439c306b92730491fdc7cf2e66f77815f627c384cde6962d575b962a5" + }, + { + "path": "public/assets/editorial/rapid-response-960.webp", + "bytes": 48660, + "sha256": "3f4ea0e0dcfba5f7acf93054388571da7fdc418e29dbbf5c0971c3e0b7b2e774" + }, + { + "path": "public/assets/editorial/remote-desktop-1536.webp", + "bytes": 100842, + "sha256": "3579fa08efb75a5b499e26af49082823962bee6c6f2425dcfa63212d63e358a3" + }, + { + "path": "public/assets/editorial/remote-desktop-480.webp", + "bytes": 18244, + "sha256": "3767188d160a0f6faa12650c78a840134ccf2685729fefc53876a6ee59919da2" + }, + { + "path": "public/assets/editorial/remote-desktop-960.webp", + "bytes": 51374, + "sha256": "97b24a59d5764d28d8fd42c2ac4f4b2bf5ab7c0e8d260088bd7f5fffd620ba1b" + }, + { + "path": "public/assets/editorial/remote-sites-1536.webp", + "bytes": 167892, + "sha256": "01d49ac63c1b96ad85ab4e29ac9477951ccfd879b58670eb3f3c62f8042482f8" + }, + { + "path": "public/assets/editorial/remote-sites-480.webp", + "bytes": 26030, + "sha256": "e16a12315cde12c94ca32f4b39e740a9450870014db7d1e04639c8a997686415" + }, + { + "path": "public/assets/editorial/remote-sites-960.webp", + "bytes": 83688, + "sha256": "5482117e83b6d107ab1bb173a39daad64ad7669982596f9d1269fac6dd3c198d" + }, + { + "path": "public/assets/editorial/servers-hosting-1536.webp", + "bytes": 107668, + "sha256": "ceb3974a6908fbc646de464cf4989339bdcbf3232dd438f8f52116039330c3d3" + }, + { + "path": "public/assets/editorial/servers-hosting-480.webp", + "bytes": 15398, + "sha256": "6bf480b68dae5ea7d7df876e7ea4e4f7458d46f10bb4d057eb7a0b99ca0f84c9" + }, + { + "path": "public/assets/editorial/servers-hosting-960.webp", + "bytes": 49298, + "sha256": "f24c62785bd0576c6401fb2fc3a0de52b6269decc579319069e61bf94ccecc3c" + }, + { + "path": "public/assets/editorial/video-surveillance-1536.webp", + "bytes": 126936, + "sha256": "d4139267e8f2e6e60aab5c48a068c9812b84803203aaf0580eb14db983e05db8" + }, + { + "path": "public/assets/editorial/video-surveillance-480.webp", + "bytes": 19212, + "sha256": "e18153c2572624843d4dcebc2cbdb19d081badcd44c6e48bac80f2ac16717391" + }, + { + "path": "public/assets/editorial/video-surveillance-960.webp", + "bytes": 60030, + "sha256": "76189da0303bc5903d71c7bab4512991495c6a4308244867952a51defe1b648e" + }, + { + "path": "public/img/construction.png", + "bytes": 2133417, + "sha256": "67f4fbdbf6205e2e4ca88763611fa3cbb09eaa44c8c8acb86a37671a4e1cf156" + }, + { + "path": "public/img/farms.png", + "bytes": 2438466, + "sha256": "5e746da7bd97bee937df66f378f7d49bf6556e6c563260d124ea4db4cdd6acbc" + }, + { + "path": "public/img/mountains.png", + "bytes": 2557280, + "sha256": "fa9cec37ab1984a65767748137a8226ce3f2e67c794be492d5e321d126b5faf1" + }, + { + "path": "public/img/office.png", + "bytes": 1980826, + "sha256": "f651c474f671699dfd28692cb1571bc73512f3ff1feee7056e9892d84184695b" + }, + { + "path": "public/img/resorts.png", + "bytes": 2456335, + "sha256": "75e8fedc30c7405118d4d7e271d9bde128322bcd1f328d370f7c57828c8b5cbc" + }, + { + "path": "public/img/restaurant.png", + "bytes": 2383609, + "sha256": "1571dc890a4d31cfaa8acf371b230aaab535fb724edd1e4ece7a1062a222e34a" + }, + { + "path": "public/img/servers.png", + "bytes": 1939634, + "sha256": "04a22a151c2232d35666917bb411cd76217e2b4fbd58d4c141050dfc42b42820" + }, + { + "path": "public/index.html", + "bytes": 139215, + "sha256": "21a4778fafdfa32bfc04cff091d86238fa2850367892b20f54e67365c8cb9415" + }, + { + "path": "public/industries/agriculture/index.html", + "bytes": 24022, + "sha256": "a1e9061f459850d1cc174dc5d2a91bd24bb37ec996b52945bbf74708919ad1f8" + }, + { + "path": "public/industries/construction/index.html", + "bytes": 24380, + "sha256": "5254858843d8983610cf427ccee9454bda09506ffda3b48e055c4ad1a8b683b4" + }, + { + "path": "public/industries/horeca/index.html", + "bytes": 24262, + "sha256": "649c384afb830dbf0f029a73277255889c842726b6c97833751f600fcda14b97" + }, + { + "path": "public/industries/index.html", + "bytes": 9423, + "sha256": "798fa4c5e684009bbe7fa343df9be04d5d8ea9ee5a955202a88aaa50c09d93c5" + }, + { + "path": "public/robots.txt", + "bytes": 72, + "sha256": "834ca37137ed86bbedd14e1c0f4c4dccf4c980f7120026535afa23e2fd85f026" + }, + { + "path": "public/services/automation/index.html", + "bytes": 24037, + "sha256": "eb19a4bb909343a18d5c9bd50efa29c87bf64d572bd7fa44332f04f27a327ea1" + }, + { + "path": "public/services/index.html", + "bytes": 14463, + "sha256": "5394bf16adeb0956cfccda6cc0eebb0191d7e5bee019eaf60cae3e62331aaa07" + }, + { + "path": "public/services/monitoring-security/index.html", + "bytes": 24309, + "sha256": "5dd49adb752f620fb8a2a6fa4794e0241a4a5fa3d7501608c75660034a3cfeb8" + }, + { + "path": "public/services/networks-vpn/index.html", + "bytes": 23743, + "sha256": "0f819963e0079909924c86d4b1f91c7762dc873d5a8f949959e925eb41cb8283" + }, + { + "path": "public/services/remote-desktop/index.html", + "bytes": 24471, + "sha256": "c1a5ab392107aedeec87d4d5c0a35df6275c4894f0e624656a6b4ab0f93c7b0e" + }, + { + "path": "public/services/servers-hosting/index.html", + "bytes": 24375, + "sha256": "7c607febeb25d06b95e340972733eea5cf64f60629e93be1641a5d745162f747" + }, + { + "path": "public/services/video-surveillance/index.html", + "bytes": 24835, + "sha256": "0c5c3fcf9163cbd1a56266687712f4ce9e039a2ea54a54e03aa583904231d3e5" + }, + { + "path": "public/sitemap.xml", + "bytes": 1142, + "sha256": "fb915319f2248c6b062bbd08b7adeabeabb9f55a4e7a574769bc560aa9f02484" + } + ], + "raw_matches_in_artwork": { + "imagegen-raw/exec-02d51137-9275-4107-aab0-b3aec51a1dad.png": [ + "artwork/video-surveillance.png" + ], + "imagegen-raw/exec-1b28dbd9-1b57-45e2-b54f-c383d56d6060.png": [ + "artwork/photos-selected/horeca.png" + ], + "imagegen-raw/exec-1e275585-1588-432a-bc1e-fd15c7b85927.png": [ + "artwork/photos/video-surveillance.png" + ], + "imagegen-raw/exec-1ee5178f-425c-418b-a035-f0ee471c9785.png": [ + "artwork/photos-selected/it-subscription.png", + "artwork/photos/it-subscription.png" + ], + "imagegen-raw/exec-39369184-d328-4ad5-9f41-eddfeb94508f.png": [ + "artwork/photos-selected/remote-desktop.png" + ], + "imagegen-raw/exec-4b3155ff-9827-4ae2-a0ec-5a75d8e53a58.png": [ + "artwork/photos-selected/servers-hosting.png" + ], + "imagegen-raw/exec-5f0f5101-6c0b-448b-b0a1-71ba1a0824d1.png": [ + "artwork/photos-selected/rapid-response.png", + "artwork/photos/rapid-response.png" + ], + "imagegen-raw/exec-61eacaed-d2f3-4955-9727-0050b3833f5c.png": [ + "artwork/rapid-response.png" + ], + "imagegen-raw/exec-62f4909d-76c8-4a92-b8de-b8a52886fda4.png": [ + "artwork/automation.png" + ], + "imagegen-raw/exec-6b233f08-5a14-47bc-a0ff-f5764ee81358.png": [ + "artwork/construction.png" + ], + "imagegen-raw/exec-6ebb0e96-dbdb-42fc-b961-deac1bcc47e4.png": [ + "artwork/monitoring-security.png" + ], + "imagegen-raw/exec-77c5b007-4c9a-4c06-a2ba-998165ba31af.png": [ + "artwork/photos-selected/agriculture.png", + "artwork/photos/agriculture.png" + ], + "imagegen-raw/exec-8a0cd1c3-cee8-4730-94da-efe1284423e3.png": [ + "artwork/photos/remote-desktop.png" + ], + "imagegen-raw/exec-8f67ef1d-5fb4-4fd6-9173-be51861b4f49.png": [ + "artwork/photos-selected/construction.png", + "artwork/photos/construction.png" + ], + "imagegen-raw/exec-93d89369-e112-40c8-b145-0bb9a6aebd5b.png": [ + "artwork/servers-hosting.png" + ], + "imagegen-raw/exec-9c6feef1-82fd-4c82-841e-7dfdd1eda43d.png": [ + "artwork/photos-selected/automation.png" + ], + "imagegen-raw/exec-9eae21ab-8e29-4bde-a7a0-16ff60198e85.png": [ + "artwork/photos-selected/remote-sites.png", + "artwork/photos/remote-sites.png" + ], + "imagegen-raw/exec-a4670691-b05c-4508-90d6-be9b0e364550.png": [ + "artwork/photos/horeca.png" + ], + "imagegen-raw/exec-a7186d04-ce0a-4b37-b693-a6e11a8d446e.png": [ + "artwork/remote-sites.png" + ], + "imagegen-raw/exec-a831e3ef-b8b0-438b-b3b4-41cd1c986465.png": [ + "artwork/photos-selected/networks-vpn.png" + ], + "imagegen-raw/exec-afb4de23-8a8f-4bb9-b7c9-b4340eac4634.png": [ + "artwork/photos/servers-hosting.png" + ], + "imagegen-raw/exec-b37ae9f3-1290-47d8-8422-535881431064.png": [ + "artwork/photos-selected/video-surveillance.png" + ], + "imagegen-raw/exec-b6ffe55d-e553-40d2-a091-9def97ab9945.png": [ + "artwork/remote-desktop.png" + ], + "imagegen-raw/exec-cd106f52-885c-43b2-885a-03f9c7e93dae.png": [ + "artwork/networks-vpn.png" + ], + "imagegen-raw/exec-d3faf4a3-0cc1-4829-801c-ce9ddfc20067.png": [ + "artwork/it-subscription.png" + ], + "imagegen-raw/exec-e0a9d62c-84c6-47b5-98e6-7ce83011c1f9.png": [ + "artwork/photos-selected/monitoring-security.png" + ], + "imagegen-raw/exec-e6458072-925a-4eb2-840a-1c4977c979b1.png": [ + "artwork/photos/automation.png" + ], + "imagegen-raw/exec-e9c22a40-e210-4f73-becc-3fc54312fe35.png": [ + "artwork/photos/networks-vpn.png" + ], + "imagegen-raw/exec-f42c374b-ac2e-460f-9c2e-cbe43405f8a9.png": [ + "artwork/photos/monitoring-security.png" + ], + "imagegen-raw/exec-f7a9557c-4473-4560-82d8-3fdba4a25eba.png": [ + "artwork/agriculture.png" + ], + "imagegen-raw/exec-fbbb25e2-d453-4003-b933-13105e209940.png": [ + "artwork/horeca.png" + ] + } +} diff --git a/assets/motion.css b/assets/motion.css new file mode 100644 index 0000000..dc50362 --- /dev/null +++ b/assets/motion.css @@ -0,0 +1,13 @@ +.motion-visual{position:relative;display:block;aspect-ratio:3/2;overflow:hidden;isolation:isolate} +.motion-visual>img{display:block;width:100%;height:100%;aspect-ratio:3/2;object-fit:cover} +.motion-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .45s ease;z-index:1} +.motion-visual.is-active .motion-overlay{opacity:1} +.motion-path{fill:none;stroke:#67e8f9;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:2 17;opacity:.72;animation:motion-trace 6s linear infinite;animation-play-state:paused} +.motion-packet{fill:#f0fdff;stroke:#22d3ee;stroke-width:2;filter:drop-shadow(0 0 7px #22d3ee)} +.motion-packet-late{fill:#a5f3fc;opacity:.8} +.motion-light{fill:#67e8f9;stroke:#e0faff;stroke-width:2;filter:drop-shadow(0 0 9px #22d3ee);animation:motion-led 2.4s ease-in-out infinite;animation-play-state:paused} +.motion-light:nth-of-type(2n){animation-delay:.8s} +.motion-visual.is-active .motion-path,.motion-visual.is-active .motion-light{animation-play-state:running} +@keyframes motion-trace{to{stroke-dashoffset:-76}} +@keyframes motion-led{0%,100%{opacity:.38}50%{opacity:1}} +@media(prefers-reduced-motion:reduce){.motion-overlay{display:none!important}.motion-path,.motion-light{animation:none!important}} diff --git a/assets/motion.js b/assets/motion.js new file mode 100644 index 0000000..c4b3080 --- /dev/null +++ b/assets/motion.js @@ -0,0 +1,25 @@ +/* Keep decorative equipment traffic paused when off screen or reduced motion is requested. */ +(() => { + const scenes = [...document.querySelectorAll('.motion-overlay')]; + if (!scenes.length) return; + const reduced = window.matchMedia('(prefers-reduced-motion: reduce)'); + const update = (svg, visible) => { + svg.dataset.visible = visible ? '1' : '0'; + const active = visible && !reduced.matches; + svg.parentElement.classList.toggle('is-active', active); + if (active) svg.unpauseAnimations(); + else svg.pauseAnimations(); + }; + scenes.forEach(svg => update(svg, false)); + if ('IntersectionObserver' in window) { + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => update(entry.target, entry.isIntersecting)); + }, {rootMargin: '80px 0px', threshold: 0.01}); + scenes.forEach(svg => observer.observe(svg)); + } else { + scenes.forEach(svg => update(svg, true)); + } + const refresh = () => scenes.forEach(svg => update(svg, svg.dataset.visible === '1')); + if (reduced.addEventListener) reduced.addEventListener('change', refresh); + else reduced.addListener(refresh); +})(); diff --git a/build.py b/build.py index bc661a5..6c518f7 100644 --- a/build.py +++ b/build.py @@ -12,6 +12,7 @@ BY_ID={p['slug']:p for p in PAGES} PRIVACY=json.loads((ROOT/'content/privacy-notes.json').read_text(encoding='utf-8')) PHOTO_ALT=json.loads((ROOT/'content/photo-alt.json').read_text(encoding='utf-8')) FLOWS=json.loads((ROOT/'content/flow-scenes.json').read_text(encoding='utf-8')) +IMAGE_MOTION=json.loads((ROOT/'content/image-motion.json').read_text(encoding='utf-8')) CARD_COPY=json.loads((ROOT/'content/card-copy.json').read_text(encoding='utf-8')) GROUPS={'Подход':('approach','Как мы работаем','Поддержка с понятной ответственностью'),'Услуги':('services','IT-услуги для бизнеса','От рабочего места до инфраструктуры'),'Отрасли':('industries','IT-решения для отраслей','Учитываем, как работает ваш бизнес')} HUB_DESCRIPTIONS={ @@ -44,16 +45,24 @@ def image(p,lazy=True,small=False): def photo_image(p): slug=p['slug'] return image(p,lazy=False).replace(f'/{slug}-',f'/photo-{slug}-').replace(esc(p['alt']),esc(PHOTO_ALT[slug])).replace('(max-width: 1248px) 100vw, 1200px','(max-width: 600px) calc(100vw - 32px), (max-width: 1000px) calc(100vw - 48px), 520px') +def motion_image(p,small=True): + scene=IMAGE_MOTION[p['slug']] + paths=[] + for route in scene['routes']: + d=esc(route) + paths.append(f'') + lights=''.join(f'' for x,y in scene['lights']) + return f'
{image(p,small=small)}
' def head(title,description,canonical,img,graph): data=json.dumps({'@context':'https://schema.org','@graph':graph},ensure_ascii=False).replace('<','\\u003c') - return f'''{esc(title)} | servaki.online''' + return f'''{esc(title)} | servaki.online''' NAV='''''' FOOT='''''' ORG={'@type':'Organization','@id':BASE+'/#organization','name':'servaki.online','url':BASE+'/','telephone':'+79620151414','sameAs':['https://t.me/servaki_online'],'areaServed':['Юг России','Ставропольский край','Кавказские Минеральные Воды']} def crumbs(items): return '' def related_card(p): - return f'{image(p,small=True)}

{esc(p["card"])}

{esc(p["label"])}

Подробнее
' + return f'{motion_image(p)}

{esc(p["card"])}

{esc(p["label"])}

Подробнее
' def flow_diagram(p): scene=FLOWS[p['slug']] devices=[] @@ -88,13 +97,13 @@ def home(original): block=before+after # Industry illustrations move below their descriptions, consistent with all cards. block=re.sub(r'
.*?
','',block,flags=re.S) - link=f'{image(p,small=True)}Подробнее: {esc(p["card"])} ' + link=f'{motion_image(p)}Подробнее: {esc(p["card"])} ' block=block.replace('',link+'') result=result[:match.start()]+block+result[match.end():] # Scope supplementary styles to homepage components; article reset must not overwrite live home. css='''''' css=css.replace('.card-landing span{display:block;', '.card-landing span{display:block;min-height:67px;') - result=result.replace('',css+'') + result=result.replace('',''+css+'') result=re.sub(r'.*?','IT-поддержка бизнеса на КМВ и Юге России — servaki.online',result,count=1,flags=re.S) result=re.sub(r'(Как мы работаем | servaki.online
Поддержка с понятной ответственностью

Как мы работаем

Как servaki.online принимает обращения, поддерживает удалённые объекты и выстраивает абонентское IT-обслуживание бизнеса на КМВ и Юге России.

\ No newline at end of file +Как мы работаем | servaki.online
Поддержка с понятной ответственностью

Как мы работаем

Как servaki.online принимает обращения, поддерживает удалённые объекты и выстраивает абонентское IT-обслуживание бизнеса на КМВ и Юге России.

\ No newline at end of file diff --git a/public/approach/it-subscription/index.html b/public/approach/it-subscription/index.html index 2c1b4e9..ac81722 100644 --- a/public/approach/it-subscription/index.html +++ b/public/approach/it-subscription/index.html @@ -1 +1 @@ -Абонентское IT-обслуживание бизнеса: состав и условия | servaki.online
Подход / Понятный объём. Понятная ответственность.

Абонентское IT-обслуживание бизнеса: состав и условия

Подписка помогает планировать IT-расходы и закрепить ответственность за поддержку. Сначала описываем вашу инфраструктуру и нужный уровень обслуживания, затем согласуем состав работ.

Команда servaki.online · · 3 мин чтения

Владельцы семейного бизнеса и специалист обсуждают IT-поддержку в спокойной обстановке
Понятный объём. Понятная ответственность. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДСостав обслуживания согласован до старта
02 / НАШ ПОДХОДЕдиная картина сети, серверов и рабочих мест
03 / НАШ ПОДХОДДополнительные работы оцениваются заранее

Что стоит за ежемесячной оплатой

Абонентское обслуживание — это согласованный набор задач: помощь сотрудникам, сопровождение оборудования, профилактика и отчётность. Фиксированная стоимость имеет смысл только вместе с понятными границами. До старта определяем количество рабочих мест, перечень серверов и объектов, часы поддержки и приоритет критичных сервисов.

ПРИНЦИП РАБОТЫКак работает сопровождениеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Рабочее место01
Поддержка02
Отчёт03

Как выбрать подходящий уровень

На главной опубликованы тарифы «Старт», «Бизнес» и «Премиум». Сопоставлять их лучше с задачами, а не только с числом компьютеров. Три рабочих места с критичной учётной системой могут требовать больше внимания, чем десять обычных офисных ПК. Несколько филиалов, камеры и резервные серверы учитываем при обсуждении состава обслуживания.

Сильная сторона: видим связи между системами

В нашей практике сети, серверы, видеонаблюдение и контроллеры работают совместно. Неисправность питания или одного маршрутизатора может проявиться сразу в нескольких сервисах. Поэтому при подключении описываем зависимости и общие точки отказа. Это даёт основу для профилактики и осмысленного плана развития.

Что нужно согласовать отдельно

Закупка оборудования, лицензии, монтаж, перенос сервисов и крупные изменения могут выходить за рамки регулярной поддержки. Такие задачи предварительно оцениваем. Порядок выездов, аварийные обращения вне рабочего времени и ограничения тарифа отражаем в договорённостях, чтобы у обеих сторон было одинаковое понимание услуги.

Как начинается обслуживание

Собираем перечень устройств, проверяем доступы и резервные копии, фиксируем известные проблемы. Приоритет отдаём рискам остановки бизнеса. Затем согласуем канал обращений и форму отчёта. По итогам сопровождения показываем выполненные работы и рекомендации, которые можно включить в следующий бюджет.

Вопросы и ответы

Какая цена будет у нашей компании?

Ориентиры опубликованы на главной в разделе тарифов. Итог зависит от состава оборудования, числа объектов, часов поддержки и необходимых выездов.

Можно ли начать с небольшого объёма?

Да. Можно согласовать поддержку выбранных рабочих мест или сервисов и затем расширить состав обслуживания.

Лицензии и оборудование включены?

Это нужно проверить в предложении и договоре. Не следует считать закупки и сторонние подписки включёнными по умолчанию.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Абонентское IT-обслуживание бизнеса: состав и условия | servaki.online
Подход / Понятный объём. Понятная ответственность.

Абонентское IT-обслуживание бизнеса: состав и условия

Подписка помогает планировать IT-расходы и закрепить ответственность за поддержку. Сначала описываем вашу инфраструктуру и нужный уровень обслуживания, затем согласуем состав работ.

Команда servaki.online · · 3 мин чтения

Владельцы семейного бизнеса и специалист обсуждают IT-поддержку в спокойной обстановке
Понятный объём. Понятная ответственность. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДСостав обслуживания согласован до старта
02 / НАШ ПОДХОДЕдиная картина сети, серверов и рабочих мест
03 / НАШ ПОДХОДДополнительные работы оцениваются заранее

Что стоит за ежемесячной оплатой

Абонентское обслуживание — это согласованный набор задач: помощь сотрудникам, сопровождение оборудования, профилактика и отчётность. Фиксированная стоимость имеет смысл только вместе с понятными границами. До старта определяем количество рабочих мест, перечень серверов и объектов, часы поддержки и приоритет критичных сервисов.

ПРИНЦИП РАБОТЫКак работает сопровождениеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Рабочее место01
Поддержка02
Отчёт03

Как выбрать подходящий уровень

На главной опубликованы тарифы «Старт», «Бизнес» и «Премиум». Сопоставлять их лучше с задачами, а не только с числом компьютеров. Три рабочих места с критичной учётной системой могут требовать больше внимания, чем десять обычных офисных ПК. Несколько филиалов, камеры и резервные серверы учитываем при обсуждении состава обслуживания.

Сильная сторона: видим связи между системами

В нашей практике сети, серверы, видеонаблюдение и контроллеры работают совместно. Неисправность питания или одного маршрутизатора может проявиться сразу в нескольких сервисах. Поэтому при подключении описываем зависимости и общие точки отказа. Это даёт основу для профилактики и осмысленного плана развития.

Что нужно согласовать отдельно

Закупка оборудования, лицензии, монтаж, перенос сервисов и крупные изменения могут выходить за рамки регулярной поддержки. Такие задачи предварительно оцениваем. Порядок выездов, аварийные обращения вне рабочего времени и ограничения тарифа отражаем в договорённостях, чтобы у обеих сторон было одинаковое понимание услуги.

Как начинается обслуживание

Собираем перечень устройств, проверяем доступы и резервные копии, фиксируем известные проблемы. Приоритет отдаём рискам остановки бизнеса. Затем согласуем канал обращений и форму отчёта. По итогам сопровождения показываем выполненные работы и рекомендации, которые можно включить в следующий бюджет.

Вопросы и ответы

Какая цена будет у нашей компании?

Ориентиры опубликованы на главной в разделе тарифов. Итог зависит от состава оборудования, числа объектов, часов поддержки и необходимых выездов.

Можно ли начать с небольшого объёма?

Да. Можно согласовать поддержку выбранных рабочих мест или сервисов и затем расширить состав обслуживания.

Лицензии и оборудование включены?

Это нужно проверить в предложении и договоре. Не следует считать закупки и сторонние подписки включёнными по умолчанию.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/approach/rapid-response/index.html b/public/approach/rapid-response/index.html index 5e3bc55..d2fda41 100644 --- a/public/approach/rapid-response/index.html +++ b/public/approach/rapid-response/index.html @@ -1 +1 @@ -Оперативная IT-поддержка бизнеса: как устроен отклик | servaki.online
Подход / Помощь начинается с понимания задачи

Оперативная IT-поддержка бизнеса: как устроен отклик

Когда остановилась работа, важен понятный следующий шаг. Принимаем обращение, оцениваем влияние сбоя на бизнес и согласуем порядок восстановления. Время отклика закрепляем в выбранном тарифе.

Команда servaki.online · · 3 мин чтения

Специалист помогает владельцу небольшого семейного бизнеса в уютном офисе
Помощь начинается с понимания задачи · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПриоритет по влиянию на работу бизнеса
02 / НАШ ПОДХОДПроверка результата на реальной задаче сотрудника
03 / НАШ ПОДХОДДокументирование изменений и дальнейших действий

Что означает реакция от 15 минут

Это время начала обработки обращения для соответствующего уровня обслуживания, а не обещание устранить любую неисправность за четверть часа. На главной представлены разные условия: у тарифа «Старт» отклик до двух часов, у «Бизнес» — 30 минут, у «Премиум» — 15 минут. Рабочее время поддержки, каналы связи и порядок аварийной эскалации фиксируем при подключении.

ПРИНЦИП РАБОТЫОт обращения до проверки результатаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Заявка01
Диагностика02
Проверка03

Сначала восстанавливаем работу

В заявке полезно указать, что перестало работать, когда начался сбой и скольких сотрудников он затронул. Остановка связи на объекте и настройка нового принтера требуют разного приоритета. Проверяем доступность, последние изменения и сообщения об ошибках. Затем предлагаем действие: восстановить соединение, вернуть рабочую конфигурацию, переключить резерв или подготовить выезд.

Наш опыт: проверка всей цепочки

В работе с распределёнными объектами мы сталкиваемся с ситуациями, когда роутер доступен, а нужный сервис не открывается. Поэтому проверяем не только индикатор подключения, но и прохождение данных, DNS и доступ к целевому приложению. Такой подход помогает отличить проблему провайдера от неисправности локальной сети или самого сервиса.

Результат, который можно проверить

После работ объясняем причину, перечисляем изменения и вместе с сотрудником проверяем исходную задачу: открылся ли документ, печатает ли принтер, доступна ли камера. Если требуется наблюдение, назначаем конкретную проверку. Для повторяющихся сбоев предлагаем план устранения причины, а не бесконечную серию перезапусков.

Когда понадобится человек на месте

Удалённое подключение не заменяет ремонт питания, кабеля или неисправного оборудования. В таких случаях готовим понятное задание для местного сотрудника или выезда: что проверить, какое устройство заменить, какие признаки зафиксировать. Это позволяет использовать время на объекте предметно.

Вопросы и ответы

За 15 минут будет устранён любой сбой?

Нет. Отклик и срок решения — разные показатели. Время восстановления зависит от причины, доступа, оборудования и сторонних сервисов.

Что отправить в первой заявке?

Название объекта, краткое описание проблемы, время её появления и контакт сотрудника на месте. Пароли в обычное сообщение отправлять не нужно.

Работает ли поддержка круглосуточно?

Круглосуточный автоматический мониторинг и дежурство инженера — разные услуги. Часы поддержки и аварийный порядок согласуются отдельно.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Оперативная IT-поддержка бизнеса: как устроен отклик | servaki.online
Подход / Помощь начинается с понимания задачи

Оперативная IT-поддержка бизнеса: как устроен отклик

Когда остановилась работа, важен понятный следующий шаг. Принимаем обращение, оцениваем влияние сбоя на бизнес и согласуем порядок восстановления. Время отклика закрепляем в выбранном тарифе.

Команда servaki.online · · 3 мин чтения

Специалист помогает владельцу небольшого семейного бизнеса в уютном офисе
Помощь начинается с понимания задачи · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПриоритет по влиянию на работу бизнеса
02 / НАШ ПОДХОДПроверка результата на реальной задаче сотрудника
03 / НАШ ПОДХОДДокументирование изменений и дальнейших действий

Что означает реакция от 15 минут

Это время начала обработки обращения для соответствующего уровня обслуживания, а не обещание устранить любую неисправность за четверть часа. На главной представлены разные условия: у тарифа «Старт» отклик до двух часов, у «Бизнес» — 30 минут, у «Премиум» — 15 минут. Рабочее время поддержки, каналы связи и порядок аварийной эскалации фиксируем при подключении.

ПРИНЦИП РАБОТЫОт обращения до проверки результатаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Заявка01
Диагностика02
Проверка03

Сначала восстанавливаем работу

В заявке полезно указать, что перестало работать, когда начался сбой и скольких сотрудников он затронул. Остановка связи на объекте и настройка нового принтера требуют разного приоритета. Проверяем доступность, последние изменения и сообщения об ошибках. Затем предлагаем действие: восстановить соединение, вернуть рабочую конфигурацию, переключить резерв или подготовить выезд.

Наш опыт: проверка всей цепочки

В работе с распределёнными объектами мы сталкиваемся с ситуациями, когда роутер доступен, а нужный сервис не открывается. Поэтому проверяем не только индикатор подключения, но и прохождение данных, DNS и доступ к целевому приложению. Такой подход помогает отличить проблему провайдера от неисправности локальной сети или самого сервиса.

Результат, который можно проверить

После работ объясняем причину, перечисляем изменения и вместе с сотрудником проверяем исходную задачу: открылся ли документ, печатает ли принтер, доступна ли камера. Если требуется наблюдение, назначаем конкретную проверку. Для повторяющихся сбоев предлагаем план устранения причины, а не бесконечную серию перезапусков.

Когда понадобится человек на месте

Удалённое подключение не заменяет ремонт питания, кабеля или неисправного оборудования. В таких случаях готовим понятное задание для местного сотрудника или выезда: что проверить, какое устройство заменить, какие признаки зафиксировать. Это позволяет использовать время на объекте предметно.

Вопросы и ответы

За 15 минут будет устранён любой сбой?

Нет. Отклик и срок решения — разные показатели. Время восстановления зависит от причины, доступа, оборудования и сторонних сервисов.

Что отправить в первой заявке?

Название объекта, краткое описание проблемы, время её появления и контакт сотрудника на месте. Пароли в обычное сообщение отправлять не нужно.

Работает ли поддержка круглосуточно?

Круглосуточный автоматический мониторинг и дежурство инженера — разные услуги. Часы поддержки и аварийный порядок согласуются отдельно.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/approach/remote-sites/index.html b/public/approach/remote-sites/index.html index dc146d6..63dad6c 100644 --- a/public/approach/remote-sites/index.html +++ b/public/approach/remote-sites/index.html @@ -1 +1 @@ -IT-поддержка удалённых объектов: фермы, склады и базы | servaki.online
Подход / Расстояние учтено в архитектуре

IT-поддержка удалённых объектов: фермы, склады и базы

Между офисом и объектом могут быть десятки километров и горный перевал. Строим поддержку вокруг доступности связи, удалённого управления и понятных действий для человека на месте.

Команда servaki.online · · 3 мин чтения

Инженер обсуждает связь удалённой фермы с её владельцами за столом
Расстояние учтено в архитектуре · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт диагностики радиомостов и удалённых площадок
02 / НАШ ПОДХОДКонтроль реального обмена данными
03 / НАШ ПОДХОДПлан действий при потере связи и питания

Почему удалённой точке нужен свой подход

За пределами города на работу IT влияют питание, радиомосты, качество мобильной связи и ограниченная возможность быстро заменить оборудование. Обычная схема офисной поддержки здесь недостаточна. Начинаем с карты зависимостей: откуда приходит интернет, что запитано от одного блока, где заканчивается ответственность провайдера и кто может помочь на площадке.

ПРИНЦИП РАБОТЫСвязь с удалённой площадкойУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Объект01
Канал связи02
Инженер03

Соединяем объект с офисом

Настраиваем защищённый доступ к нужным ресурсам: учётной системе, камерам, контроллеру или рабочему месту. Разделяем служебные устройства и гостевые подключения. Для резервного канала проверяем реальное переключение и возвращение на основной, чтобы запасное соединение существовало не только в настройках.

Практика: весовая и удалённая ремонтная зона

В нашей практике есть диагностика связи между весовой и ремонтной зоной через радиомост. Для поиска причины наблюдали доступность устройств по обе стороны моста и время работы маршрутизатора. Так можно отделить перезагрузку оборудования от потери связи на конкретном участке и подготовить адресную проверку питания или радиолинии.

Наблюдаем за полезной работой

Сам факт подключения VPN не доказывает, что сотрудник откроет приложение. Проверяем обмен данными, доступность нужного сервиса и изменения после переключения канала. Для камер отдельно проверяем живое видео и архив; для контроллеров — свежесть измерений. Порог и получателей уведомлений выбираем под задачу объекта.

Что получит ответственный за площадку

Фиксируем состав оборудования, назначение каналов, порядок перезапуска и контакты для эскалации. Готовим короткую инструкцию для типовых ситуаций. Если восстановление требует физического вмешательства, человек на месте получает последовательность действий, а не просьбу наугад отключить всё питание.

Вопросы и ответы

Можно ли подключить объект с мобильным интернетом?

Часто да. Сначала оцениваем покрытие, ограничения оператора и входящий доступ. Конкретную схему выбираем после проверки связи на площадке.

Нужен ли постоянный специалист на месте?

Для повседневной поддержки обычно достаточно ответственного сотрудника. Монтаж, замена оборудования и физические неисправности требуют присутствия человека.

Можно ли сохранить имеющийся роутер?

Да, если он поддерживает нужные функции и работает стабильно. Замены предлагаем по результатам обследования.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +IT-поддержка удалённых объектов: фермы, склады и базы | servaki.online
Подход / Расстояние учтено в архитектуре

IT-поддержка удалённых объектов: фермы, склады и базы

Между офисом и объектом могут быть десятки километров и горный перевал. Строим поддержку вокруг доступности связи, удалённого управления и понятных действий для человека на месте.

Команда servaki.online · · 3 мин чтения

Инженер обсуждает связь удалённой фермы с её владельцами за столом
Расстояние учтено в архитектуре · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт диагностики радиомостов и удалённых площадок
02 / НАШ ПОДХОДКонтроль реального обмена данными
03 / НАШ ПОДХОДПлан действий при потере связи и питания

Почему удалённой точке нужен свой подход

За пределами города на работу IT влияют питание, радиомосты, качество мобильной связи и ограниченная возможность быстро заменить оборудование. Обычная схема офисной поддержки здесь недостаточна. Начинаем с карты зависимостей: откуда приходит интернет, что запитано от одного блока, где заканчивается ответственность провайдера и кто может помочь на площадке.

ПРИНЦИП РАБОТЫСвязь с удалённой площадкойУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Объект01
Канал связи02
Инженер03

Соединяем объект с офисом

Настраиваем защищённый доступ к нужным ресурсам: учётной системе, камерам, контроллеру или рабочему месту. Разделяем служебные устройства и гостевые подключения. Для резервного канала проверяем реальное переключение и возвращение на основной, чтобы запасное соединение существовало не только в настройках.

Практика: весовая и удалённая ремонтная зона

В нашей практике есть диагностика связи между весовой и ремонтной зоной через радиомост. Для поиска причины наблюдали доступность устройств по обе стороны моста и время работы маршрутизатора. Так можно отделить перезагрузку оборудования от потери связи на конкретном участке и подготовить адресную проверку питания или радиолинии.

Наблюдаем за полезной работой

Сам факт подключения VPN не доказывает, что сотрудник откроет приложение. Проверяем обмен данными, доступность нужного сервиса и изменения после переключения канала. Для камер отдельно проверяем живое видео и архив; для контроллеров — свежесть измерений. Порог и получателей уведомлений выбираем под задачу объекта.

Что получит ответственный за площадку

Фиксируем состав оборудования, назначение каналов, порядок перезапуска и контакты для эскалации. Готовим короткую инструкцию для типовых ситуаций. Если восстановление требует физического вмешательства, человек на месте получает последовательность действий, а не просьбу наугад отключить всё питание.

Вопросы и ответы

Можно ли подключить объект с мобильным интернетом?

Часто да. Сначала оцениваем покрытие, ограничения оператора и входящий доступ. Конкретную схему выбираем после проверки связи на площадке.

Нужен ли постоянный специалист на месте?

Для повседневной поддержки обычно достаточно ответственного сотрудника. Монтаж, замена оборудования и физические неисправности требуют присутствия человека.

Можно ли сохранить имеющийся роутер?

Да, если он поддерживает нужные функции и работает стабильно. Замены предлагаем по результатам обследования.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/assets/editorial/motion.css b/public/assets/editorial/motion.css new file mode 100644 index 0000000..dc50362 --- /dev/null +++ b/public/assets/editorial/motion.css @@ -0,0 +1,13 @@ +.motion-visual{position:relative;display:block;aspect-ratio:3/2;overflow:hidden;isolation:isolate} +.motion-visual>img{display:block;width:100%;height:100%;aspect-ratio:3/2;object-fit:cover} +.motion-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .45s ease;z-index:1} +.motion-visual.is-active .motion-overlay{opacity:1} +.motion-path{fill:none;stroke:#67e8f9;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:2 17;opacity:.72;animation:motion-trace 6s linear infinite;animation-play-state:paused} +.motion-packet{fill:#f0fdff;stroke:#22d3ee;stroke-width:2;filter:drop-shadow(0 0 7px #22d3ee)} +.motion-packet-late{fill:#a5f3fc;opacity:.8} +.motion-light{fill:#67e8f9;stroke:#e0faff;stroke-width:2;filter:drop-shadow(0 0 9px #22d3ee);animation:motion-led 2.4s ease-in-out infinite;animation-play-state:paused} +.motion-light:nth-of-type(2n){animation-delay:.8s} +.motion-visual.is-active .motion-path,.motion-visual.is-active .motion-light{animation-play-state:running} +@keyframes motion-trace{to{stroke-dashoffset:-76}} +@keyframes motion-led{0%,100%{opacity:.38}50%{opacity:1}} +@media(prefers-reduced-motion:reduce){.motion-overlay{display:none!important}.motion-path,.motion-light{animation:none!important}} diff --git a/public/assets/editorial/motion.js b/public/assets/editorial/motion.js new file mode 100644 index 0000000..c4b3080 --- /dev/null +++ b/public/assets/editorial/motion.js @@ -0,0 +1,25 @@ +/* Keep decorative equipment traffic paused when off screen or reduced motion is requested. */ +(() => { + const scenes = [...document.querySelectorAll('.motion-overlay')]; + if (!scenes.length) return; + const reduced = window.matchMedia('(prefers-reduced-motion: reduce)'); + const update = (svg, visible) => { + svg.dataset.visible = visible ? '1' : '0'; + const active = visible && !reduced.matches; + svg.parentElement.classList.toggle('is-active', active); + if (active) svg.unpauseAnimations(); + else svg.pauseAnimations(); + }; + scenes.forEach(svg => update(svg, false)); + if ('IntersectionObserver' in window) { + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => update(entry.target, entry.isIntersecting)); + }, {rootMargin: '80px 0px', threshold: 0.01}); + scenes.forEach(svg => observer.observe(svg)); + } else { + scenes.forEach(svg => update(svg, true)); + } + const refresh = () => scenes.forEach(svg => update(svg, svg.dataset.visible === '1')); + if (reduced.addEventListener) reduced.addEventListener('change', refresh); + else reduced.addListener(refresh); +})(); diff --git a/public/index.html b/public/index.html index 0a596bd..6cec928 100644 --- a/public/index.html +++ b/public/index.html @@ -758,7 +758,7 @@ - + @@ -860,17 +860,17 @@

Реакция от 15 минут

При сбое связи, компьютера или сервиса принимаем заявку, оцениваем влияние на работу и начинаем диагностику. Отклик от 15 минут зависит от тарифа; срок устранения определяем после выяснения причины.

- Рабочее место IT-поддержки и световая шкала времени в тёмно-синей палитреПодробнее: Реакция от 15 минут +
Рабочее место IT-поддержки и световая шкала времени в тёмно-синей палитре
Подробнее: Реакция от 15 минут

Работаем с удалёнными точками

Связываем фермы, весовые, склады и горные объекты с офисом. Проверяем канал, питание и доступ к нужным системам, чтобы удалённая площадка оставалась управляемой.

- Ферма, склад и горная база связаны голубыми линиями сети в кавказской долинеПодробнее: Работаем с удалёнными точками
+
Ферма, склад и горная база связаны голубыми линиями сети в кавказской долине
Подробнее: Работаем с удалёнными точками

Доступные подписки

Обслуживание рабочих мест и инфраструктуры по понятному ежемесячному плану: состав работ, ответственные и время отклика согласованы заранее. Помогаем не копить сбои до остановки работы.

- Компьютер, сервер и роутер на упорядоченных модульных платформахПодробнее: Доступные подписки
+
Компьютер, сервер и роутер на упорядоченных модульных платформах
Подробнее: Доступные подписки
@@ -890,39 +890,39 @@

Удалённый рабочий стол

Помогаем сотруднику с компьютером, программой или принтером через согласованный сеанс. Сначала уточняем задачу, затем проверяем результат вместе с пользователем без лишнего доступа к данным.

- Офисный компьютер и компактный принтер с защищённым каналом удалённой помощиПодробнее: Удалённый рабочий стол +
Офисный компьютер и компактный принтер с защищённым каналом удалённой помощи
Подробнее: Удалённый рабочий стол

Сети и VPN

Строим связь между офисом, складом и удалённым объектом через защищённые соединения. Настраиваем маршруты и права доступа, проверяем прохождение трафика до рабочих сервисов.

WireGuardZeroTierKeenetic
- Маршрутизатор и сетевой коммутатор соединяют несколько офисных миниатюр световыми линиямиПодробнее: Сети и VPN
+
Маршрутизатор и сетевой коммутатор соединяют несколько офисных миниатюр световыми линиями
Подробнее: Сети и VPN

Мониторинг и безопасность

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

- Панель наблюдения за серверами, сигналы доступности и защищённое резервное хранилищеПодробнее: Мониторинг и безопасность
+
Панель наблюдения за серверами, сигналы доступности и защищённое резервное хранилище
Подробнее: Мониторинг и безопасность

Видеонаблюдение

Подбираем камеры, запись и удалённый просмотр под задачи объекта. Учитываем зоны обзора, питание, хранение архива и права доступа, чтобы система помогала в работе.

- IP-камера над складской площадкой и видеорегистратор в тёмной технологической композицииПодробнее: Видеонаблюдение
+
IP-камера над складской площадкой и видеорегистратор в тёмной технологической композиции
Подробнее: Видеонаблюдение

Серверы и хостинг

Размещаем и сопровождаем серверы для рабочих приложений, чатов и внутренних сервисов. Контролируем доступы, обновления и резервные копии, согласуем перенос до начала работ.

ProxmoxDockerCRM · 1С
- Компактная серверная стойка с синим и бирюзовым светом и орбитальной линией резервированияПодробнее: Серверы и хостинг
+
Компактная серверная стойка с синим и бирюзовым светом и орбитальной линией резервирования
Подробнее: Серверы и хостинг

Автоматизация

Соединяем датчики, учётные системы и уведомления в понятный рабочий процесс. Боты сообщают о событиях и собирают данные; управляющие команды доступны согласованным сотрудникам.

- Промышленный контроллер, датчик и телефон соединены световыми потоками событийПодробнее: Автоматизация
+
Промышленный контроллер, датчик и телефон соединены световыми потоками событий
Подробнее: Автоматизация
@@ -943,21 +943,21 @@

HoReCa

Для гостиниц и кафе проектируем разделение гостевого Wi-Fi и рабочих систем, помогаем с кассами и служебными сервисами. Доступ к данным гостей определяется правилами заведения.

- Уютный ресторан при горном отеле со стойкой администратора и деликатными линиями Wi-FiПодробнее: HoReCa +
Уютный ресторан при горном отеле со стойкой администратора и деликатными линиями Wi-Fi
Подробнее: HoReCa

Агросектор

На фермах и складах связываем датчики, весовые, камеры и удалённые площадки. Проверяем связь и питание, чтобы ответственные получали нужные показатели и понимали причину сбоя.

- Ферма у гор, весовая площадка и зерновое хранилище с деликатной визуализацией сети датчиковПодробнее: Агросектор
+
Ферма у гор, весовая площадка и зерновое хранилище с деликатной визуализацией сети датчиков
Подробнее: Агросектор

Строительство

Организуем временные сети, рабочие места и камеры на стройплощадке. Учитываем перенос оборудования по этапам работ, питание, схему доступа и передачу настроек.

- Строительная площадка с краном, модульным офисом и камерой на фоне гор в ночной палитреПодробнее: Строительство
+
Строительная площадка с краном, модульным офисом и камерой на фоне гор в ночной палитре
Подробнее: Строительство
diff --git a/public/industries/agriculture/index.html b/public/industries/agriculture/index.html index 492c46c..76e496d 100644 --- a/public/industries/agriculture/index.html +++ b/public/industries/agriculture/index.html @@ -1 +1 @@ -IT для ферм и агробизнеса: связь, весовые и мониторинг | servaki.online
Отрасли / Объекты далеко. Информация рядом.

IT для ферм и агробизнеса: связь, весовые и мониторинг

На ферме IT выходит за стены офиса: весовая, склад, ремонтная зона, камеры и датчики могут находиться на разных площадках. Помогаем связать их и видеть состояние важных систем.

Команда servaki.online · · 3 мин чтения

Семья фермеров и специалист обсуждают датчики и работу хозяйства
Объекты далеко. Информация рядом. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика весовых и связи между площадками
02 / НАШ ПОДХОДСочетание сетей, камер и контроллеров
03 / НАШ ПОДХОДДиагностика с учётом питания и выездов

Связь между площадками

Проверяем доступные каналы, расстояния и зависимость оборудования от питания. Для офисной части, весовой и камер могут понадобиться разные требования к трафику. Подбираем схему удалённого доступа и резервирования с учётом существующего оборудования. Радиолинию и мобильный интернет оцениваем по измерениям на месте.

ПРИНЦИП РАБОТЫПоказания с удалённого объектаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Датчик01
Связь02
Ответственный03

Весовая и рабочие данные

Разделяем доступность сети, работу компьютера и поведение специализированной весовой программы. Уточняем интерфейсы оборудования и ответственность поставщика. Настраиваем согласованный доступ к рабочему месту, контроль связи и резервирование данных, если это входит в задачу. До интеграции с учётной системой проверяем формат обмена.

Опыт на распределённых хозяйственных объектах

В нашей практике есть диагностика связи весовой с удалённой ремонтной зоной и работа с видеонаблюдением на удалённых площадках. Наблюдение за доступностью оборудования и временем его работы позволяет точнее искать причину: перезапуск, пропадание питания или обрыв участка сети. Такой подход особенно полезен там, где каждый выезд занимает время.

Показания и уведомления

Работаем с контроллерами Wiren Board и передачей данных по MQTT. Можно организовать наблюдение за совместимыми измерителями, питанием и состоянием оборудования. Для каждого сигнала согласуем порог, период проверки и получателя. Управление исполнительными устройствами рассматриваем отдельно от мониторинга, с учётом локальных защит и условий эксплуатации.

Результат для ответственного

Стремимся сделать состояние площадки понятным без изучения десятков интерфейсов: какой объект на связи, откуда давно не поступали данные, что проверить первым. Документируем состав системы и действия при типовых отказах. Автоматизация внедряется поэтапно, начиная с самого полезного и проверяемого сценария.

Вопросы и ответы

Можно ли получать показания датчиков на телефон?

Да, если датчики и контроллер поддерживают доступный интерфейс. Согласуем состав данных, периодичность и способ уведомлений.

Подключите ли существующую весовую к учёту?

Сначала проверим оборудование, программу и доступный формат обмена. Интеграция зависит от совместимости и документации поставщика.

Что делать, если на площадке нестабильный интернет?

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

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +IT для ферм и агробизнеса: связь, весовые и мониторинг | servaki.online
Отрасли / Объекты далеко. Информация рядом.

IT для ферм и агробизнеса: связь, весовые и мониторинг

На ферме IT выходит за стены офиса: весовая, склад, ремонтная зона, камеры и датчики могут находиться на разных площадках. Помогаем связать их и видеть состояние важных систем.

Команда servaki.online · · 3 мин чтения

Семья фермеров и специалист обсуждают датчики и работу хозяйства
Объекты далеко. Информация рядом. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика весовых и связи между площадками
02 / НАШ ПОДХОДСочетание сетей, камер и контроллеров
03 / НАШ ПОДХОДДиагностика с учётом питания и выездов

Связь между площадками

Проверяем доступные каналы, расстояния и зависимость оборудования от питания. Для офисной части, весовой и камер могут понадобиться разные требования к трафику. Подбираем схему удалённого доступа и резервирования с учётом существующего оборудования. Радиолинию и мобильный интернет оцениваем по измерениям на месте.

ПРИНЦИП РАБОТЫПоказания с удалённого объектаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Датчик01
Связь02
Ответственный03

Весовая и рабочие данные

Разделяем доступность сети, работу компьютера и поведение специализированной весовой программы. Уточняем интерфейсы оборудования и ответственность поставщика. Настраиваем согласованный доступ к рабочему месту, контроль связи и резервирование данных, если это входит в задачу. До интеграции с учётной системой проверяем формат обмена.

Опыт на распределённых хозяйственных объектах

В нашей практике есть диагностика связи весовой с удалённой ремонтной зоной и работа с видеонаблюдением на удалённых площадках. Наблюдение за доступностью оборудования и временем его работы позволяет точнее искать причину: перезапуск, пропадание питания или обрыв участка сети. Такой подход особенно полезен там, где каждый выезд занимает время.

Показания и уведомления

Работаем с контроллерами Wiren Board и передачей данных по MQTT. Можно организовать наблюдение за совместимыми измерителями, питанием и состоянием оборудования. Для каждого сигнала согласуем порог, период проверки и получателя. Управление исполнительными устройствами рассматриваем отдельно от мониторинга, с учётом локальных защит и условий эксплуатации.

Результат для ответственного

Стремимся сделать состояние площадки понятным без изучения десятков интерфейсов: какой объект на связи, откуда давно не поступали данные, что проверить первым. Документируем состав системы и действия при типовых отказах. Автоматизация внедряется поэтапно, начиная с самого полезного и проверяемого сценария.

Вопросы и ответы

Можно ли получать показания датчиков на телефон?

Да, если датчики и контроллер поддерживают доступный интерфейс. Согласуем состав данных, периодичность и способ уведомлений.

Подключите ли существующую весовую к учёту?

Сначала проверим оборудование, программу и доступный формат обмена. Интеграция зависит от совместимости и документации поставщика.

Что делать, если на площадке нестабильный интернет?

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

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/industries/construction/index.html b/public/industries/construction/index.html index b62e0e2..3984b85 100644 --- a/public/industries/construction/index.html +++ b/public/industries/construction/index.html @@ -1 +1 @@ -IT для стройплощадок: временные сети и видеонаблюдение | servaki.online
Отрасли / Инфраструктура движется вместе с объектом

IT для стройплощадок: временные сети и видеонаблюдение

Стройплощадка меняется по мере работ. Планируем связь и видеонаблюдение так, чтобы оборудование можно было обслуживать, переносить и расширять без потери понимания системы.

Команда servaki.online · · 3 мин чтения

Руководитель стройплощадки и специалист обсуждают оборудование в рабочем офисе
Инфраструктура движется вместе с объектом · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт работы с планами камер и трасс
02 / НАШ ПОДХОДУчёт временного характера инфраструктуры
03 / НАШ ПОДХОДДокументирование изменений и передачи объекта

Интернет и рабочие места на объекте

Организуем сеть для штаба строительства, сотрудников и согласованных рабочих систем. Выбор подключения зависит от доступных операторов, расположения площадки и срока эксплуатации. Проверяем питание, размещение оборудования и защищённый доступ к офисным ресурсам. Для временного решения также нужны документация и ответственный за обслуживание.

ПРИНЦИП РАБОТЫСистема на строительной площадкеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Камера01
Сеть объекта02
Штаб03

Камеры под этап строительства

Определяем нужные зоны: въезд, склад, периметр или ход работ. При изменении застройки прежний ракурс может стать бесполезным, поэтому предусматриваем пересмотр размещения. Учитываем кабельные трассы, питание, условия среды и сохранение архива. Удалённый просмотр проверяем отдельно от локальной записи.

Практика работы со схемами

В опыте команды есть работа с планами камер, кабельных трасс и систем доступа для строительного объекта. Наглядная модель помогает обсуждать обзор и расположение устройств, но не заменяет проверенную исполнительную документацию. Если исходные привязки отсутствуют, фиксируем это явно и уточняем их до монтажного решения.

Изменения без потери управляемости

Перенос бытовок, смена подрядчиков и добавление оборудования меняют сеть. После согласованных работ актуализируем схему и резервные конфигурации. Проверяем, что новые подключения не нарушили существующие камеры и рабочие места. Временные доступы выдаём под задачу и пересматриваем по завершении работ.

Передача и дальнейшее сопровождение

Составляем перечень устройств, назначение соединений и порядок восстановления после отключения питания. При передаче объекта важно передать не только оборудование, но и актуальные настройки, права и документацию. Заранее согласуем, что остаётся в постоянной эксплуатации, а что демонтируется или переносится на следующую площадку.

Вопросы и ответы

Можно ли начать с мобильного интернета?

Да, если покрытие и нагрузка позволяют. Качество и возможность резерва оцениваем на площадке.

Можно ли переносить камеры по мере строительства?

Да, но после переноса нужно заново проверить обзор, питание, соединение и запись. План размещения стоит актуализировать.

Заменяет ли 3D-схема монтажный проект?

Нет. Наглядная схема помогает согласованию; точные привязки и монтажные решения требуют проверенных исходных данных и документации.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +IT для стройплощадок: временные сети и видеонаблюдение | servaki.online
Отрасли / Инфраструктура движется вместе с объектом

IT для стройплощадок: временные сети и видеонаблюдение

Стройплощадка меняется по мере работ. Планируем связь и видеонаблюдение так, чтобы оборудование можно было обслуживать, переносить и расширять без потери понимания системы.

Команда servaki.online · · 3 мин чтения

Руководитель стройплощадки и специалист обсуждают оборудование в рабочем офисе
Инфраструктура движется вместе с объектом · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт работы с планами камер и трасс
02 / НАШ ПОДХОДУчёт временного характера инфраструктуры
03 / НАШ ПОДХОДДокументирование изменений и передачи объекта

Интернет и рабочие места на объекте

Организуем сеть для штаба строительства, сотрудников и согласованных рабочих систем. Выбор подключения зависит от доступных операторов, расположения площадки и срока эксплуатации. Проверяем питание, размещение оборудования и защищённый доступ к офисным ресурсам. Для временного решения также нужны документация и ответственный за обслуживание.

ПРИНЦИП РАБОТЫСистема на строительной площадкеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Камера01
Сеть объекта02
Штаб03

Камеры под этап строительства

Определяем нужные зоны: въезд, склад, периметр или ход работ. При изменении застройки прежний ракурс может стать бесполезным, поэтому предусматриваем пересмотр размещения. Учитываем кабельные трассы, питание, условия среды и сохранение архива. Удалённый просмотр проверяем отдельно от локальной записи.

Практика работы со схемами

В опыте команды есть работа с планами камер, кабельных трасс и систем доступа для строительного объекта. Наглядная модель помогает обсуждать обзор и расположение устройств, но не заменяет проверенную исполнительную документацию. Если исходные привязки отсутствуют, фиксируем это явно и уточняем их до монтажного решения.

Изменения без потери управляемости

Перенос бытовок, смена подрядчиков и добавление оборудования меняют сеть. После согласованных работ актуализируем схему и резервные конфигурации. Проверяем, что новые подключения не нарушили существующие камеры и рабочие места. Временные доступы выдаём под задачу и пересматриваем по завершении работ.

Передача и дальнейшее сопровождение

Составляем перечень устройств, назначение соединений и порядок восстановления после отключения питания. При передаче объекта важно передать не только оборудование, но и актуальные настройки, права и документацию. Заранее согласуем, что остаётся в постоянной эксплуатации, а что демонтируется или переносится на следующую площадку.

Вопросы и ответы

Можно ли начать с мобильного интернета?

Да, если покрытие и нагрузка позволяют. Качество и возможность резерва оцениваем на площадке.

Можно ли переносить камеры по мере строительства?

Да, но после переноса нужно заново проверить обзор, питание, соединение и запись. План размещения стоит актуализировать.

Заменяет ли 3D-схема монтажный проект?

Нет. Наглядная схема помогает согласованию; точные привязки и монтажные решения требуют проверенных исходных данных и документации.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/industries/horeca/index.html b/public/industries/horeca/index.html index 8870506..1569e70 100644 --- a/public/industries/horeca/index.html +++ b/public/industries/horeca/index.html @@ -1 +1 @@ -IT-поддержка гостиниц, кафе и ресторанов на КМВ | servaki.online
Отрасли / Технологии поддерживают сервис

IT-поддержка гостиниц, кафе и ресторанов на КМВ

Гость должен пользоваться связью, а сотрудники — спокойно работать с заказами и бронированиями. Собираем IT-инфраструктуру заведения вокруг этих повседневных задач.

Команда servaki.online · · 3 мин чтения

Владелец семейного отеля и инженер проверяют связь в уютном ресторане
Технологии поддерживают сервис · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДРазделение гостевого и рабочего доступа
02 / НАШ ПОДХОДДиагностика общих причин сбоев
03 / НАШ ПОДХОДРаботы с учётом режима заведения

Разделяем гостевую и служебную сеть

Посетителям нужен удобный Wi-Fi, персоналу — стабильный доступ к рабочим системам. Предусматриваем разделение сегментов и ограничения доступа между ними. При обследовании учитываем планировку, перекрытия и места высокой нагрузки. Размещение точек доступа выбираем по условиям объекта, а качество связи проверяем в нужных зонах.

ПРИНЦИП РАБОТЫСвязь в гостевом доме или кафеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Гостевая сеть01
Разделение02
Рабочий сервис03

Касса, бронирование и рабочее место

Проверяем сетевую часть подключения кассовых устройств, принтеров, компьютеров администратора и внешних сервисов. Поддержку самого прикладного ПО и фискального оборудования согласуем с их поставщиками. Это помогает быстро определить, кто решает конкретную проблему, вместо пересылки заявки между несколькими подрядчиками.

Как наш инженерный опыт помогает заведению

Опыт команды в сетях, удалённых объектах, серверных сервисах и видеонаблюдении применим к гостиницам и ресторанам: здесь также важно видеть общие зависимости. Если пропало питание коммутатора, одновременно могут исчезнуть Wi-Fi, камеры и рабочие подключения. Начинаем диагностику с картины целиком, затем проверяем отдельные устройства.

Обновления с учётом гостей и смен

Согласуем работы на время минимальной нагрузки и предупреждаем, какие операции будут недоступны. Перед изменением сохраняем настройки и определяем порядок возврата. Для сезонных объектов полезно проверить оборудование и доступы до открытия, а после перестановок — заново оценить покрытие Wi-Fi и зоны обзора камер.

Что обсуждаем перед подключением

Количество зон и рабочих мест, часы работы, текущих поставщиков ПО, необходимость резерва интернета и удалённого просмотра камер. Интеграции с сервисами доставки или бронирования оцениваем по доступным интерфейсам. По результатам формируем понятный состав поддержки и правила обращения для персонала.

Вопросы и ответы

Можно ли улучшить Wi-Fi без полной замены сети?

Возможно: сначала проверяем размещение точек, настройки, кабели и нагрузку. Замена нужна только там, где оборудование или схема ограничивают результат.

Поддерживаете ли кассовое ПО?

Согласуем перечень систем и границы работ. Настройку сети отделяем от задач, требующих участия поставщика кассового или фискального оборудования.

Работаете ли с сезонными базами отдыха?

Такой объект можно включить в сопровождение. Состав подготовки к сезону и условия поддержки согласуются по его оборудованию и режиму работы.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +IT-поддержка гостиниц, кафе и ресторанов на КМВ | servaki.online
Отрасли / Технологии поддерживают сервис

IT-поддержка гостиниц, кафе и ресторанов на КМВ

Гость должен пользоваться связью, а сотрудники — спокойно работать с заказами и бронированиями. Собираем IT-инфраструктуру заведения вокруг этих повседневных задач.

Команда servaki.online · · 3 мин чтения

Владелец семейного отеля и инженер проверяют связь в уютном ресторане
Технологии поддерживают сервис · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДРазделение гостевого и рабочего доступа
02 / НАШ ПОДХОДДиагностика общих причин сбоев
03 / НАШ ПОДХОДРаботы с учётом режима заведения

Разделяем гостевую и служебную сеть

Посетителям нужен удобный Wi-Fi, персоналу — стабильный доступ к рабочим системам. Предусматриваем разделение сегментов и ограничения доступа между ними. При обследовании учитываем планировку, перекрытия и места высокой нагрузки. Размещение точек доступа выбираем по условиям объекта, а качество связи проверяем в нужных зонах.

ПРИНЦИП РАБОТЫСвязь в гостевом доме или кафеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Гостевая сеть01
Разделение02
Рабочий сервис03

Касса, бронирование и рабочее место

Проверяем сетевую часть подключения кассовых устройств, принтеров, компьютеров администратора и внешних сервисов. Поддержку самого прикладного ПО и фискального оборудования согласуем с их поставщиками. Это помогает быстро определить, кто решает конкретную проблему, вместо пересылки заявки между несколькими подрядчиками.

Как наш инженерный опыт помогает заведению

Опыт команды в сетях, удалённых объектах, серверных сервисах и видеонаблюдении применим к гостиницам и ресторанам: здесь также важно видеть общие зависимости. Если пропало питание коммутатора, одновременно могут исчезнуть Wi-Fi, камеры и рабочие подключения. Начинаем диагностику с картины целиком, затем проверяем отдельные устройства.

Обновления с учётом гостей и смен

Согласуем работы на время минимальной нагрузки и предупреждаем, какие операции будут недоступны. Перед изменением сохраняем настройки и определяем порядок возврата. Для сезонных объектов полезно проверить оборудование и доступы до открытия, а после перестановок — заново оценить покрытие Wi-Fi и зоны обзора камер.

Что обсуждаем перед подключением

Количество зон и рабочих мест, часы работы, текущих поставщиков ПО, необходимость резерва интернета и удалённого просмотра камер. Интеграции с сервисами доставки или бронирования оцениваем по доступным интерфейсам. По результатам формируем понятный состав поддержки и правила обращения для персонала.

Вопросы и ответы

Можно ли улучшить Wi-Fi без полной замены сети?

Возможно: сначала проверяем размещение точек, настройки, кабели и нагрузку. Замена нужна только там, где оборудование или схема ограничивают результат.

Поддерживаете ли кассовое ПО?

Согласуем перечень систем и границы работ. Настройку сети отделяем от задач, требующих участия поставщика кассового или фискального оборудования.

Работаете ли с сезонными базами отдыха?

Такой объект можно включить в сопровождение. Состав подготовки к сезону и условия поддержки согласуются по его оборудованию и режиму работы.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/industries/index.html b/public/industries/index.html index cb794cb..df9246c 100644 --- a/public/industries/index.html +++ b/public/industries/index.html @@ -1 +1 @@ -IT-решения для отраслей | servaki.online
Учитываем, как работает ваш бизнес

IT-решения для отраслей

IT-поддержка гостиниц и кафе, сельского хозяйства и строительных объектов: связь, рабочие системы, камеры и удалённый контроль на Юге России.

\ No newline at end of file +IT-решения для отраслей | servaki.online
Учитываем, как работает ваш бизнес

IT-решения для отраслей

IT-поддержка гостиниц и кафе, сельского хозяйства и строительных объектов: связь, рабочие системы, камеры и удалённый контроль на Юге России.

\ No newline at end of file diff --git a/public/services/automation/index.html b/public/services/automation/index.html index 6502d7c..f272fd0 100644 --- a/public/services/automation/index.html +++ b/public/services/automation/index.html @@ -1 +1 @@ -Автоматизация бизнеса: Telegram-боты, интеграции и контроллеры | servaki.online
Услуги / Меньше ручных повторений

Автоматизация бизнеса: Telegram-боты, интеграции и контроллеры

Связываем источники данных и рабочие действия: получить показание, отправить уведомление, собрать отчёт или выполнить согласованную команду. Начинаем с одного полезного сценария.

Команда servaki.online · · 3 мин чтения

Специалист и руководитель хозяйства вместе осматривают датчик и телефон
Меньше ручных повторений · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Wiren Board, MQTT и Telegram
02 / НАШ ПОДХОДПроверка сценария от источника до получателя
03 / НАШ ПОДХОДРазделение наблюдения и управляющих команд

Сначала описываем рабочий процесс

Разбираем, кто сейчас выполняет операцию, откуда берёт данные и кому передаёт результат. Выбираем измеримый сценарий: ежедневная сводка, уведомление об отклонении, сбор заявки или изменение статуса. Уточняем, что делать при недоступности источника, повторном событии и ошибке отправки.

ПРИНЦИП РАБОТЫОт прибора до нужного действияУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Прибор01
Контроллер02
Уведомление03

Боты и интеграции

Создаём Telegram-ботов и связки между сервисами, когда у источников есть подходящий интерфейс. Интеграция с кассой, CRM или учётной системой требует проверки API, версии и прав доступа. Не обещаем совместимость со всем оборудованием: сначала подтверждаем, какие данные и действия реально доступны.

Наш опыт: контроллеры и событийные сообщения

В практике команды есть работа с Wiren Board, MQTT, энергетическими показателями и Telegram-уведомлениями. Измерение напряжения или мощности само по себе мало полезно владельцу; нужно добавить объект, время, понятный порог и объяснение события. Поэтому проектируем сообщение вокруг решения, которое сможет принять получатель.

Команды требуют отдельной защиты

Просмотр показаний и управление реле имеют разный уровень ответственности. Разделяем роли пользователей и разрешённые действия, предусматриваем подтверждение для чувствительных команд. Учитываем ограничения оборудования и локальные защитные механизмы. Автоматизация не должна обходить штатные блокировки и правила эксплуатации объекта.

Проверяем весь сценарий

Тестируем получение данных, обработку события, отправку и фактическое получение сообщения. Для отчётов проверяем свежесть данных и поведение при пропусках. Фиксируем зависимости от внешних сервисов и порядок восстановления. Развивать автоматизацию проще поэтапно: сначала надёжный сценарий, затем дополнительные источники и роли.

Вопросы и ответы

Можно ли автоматизировать отчёт из нашей системы?

Сначала проверим доступный API, экспорт и права. Если данные можно получать устойчиво, предложим способ формирования и доставки отчёта.

Можно ли управлять оборудованием из Telegram?

Для совместимого оборудования — да, после согласования прав, подтверждений и защитных ограничений. Критичные блокировки должны оставаться на объекте.

Что будет при недоступности Telegram?

Это учитывается в проектировании: журнал событий, повторная доставка или резервный канал выбираются под важность сценария.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Автоматизация бизнеса: Telegram-боты, интеграции и контроллеры | servaki.online
Услуги / Меньше ручных повторений

Автоматизация бизнеса: Telegram-боты, интеграции и контроллеры

Связываем источники данных и рабочие действия: получить показание, отправить уведомление, собрать отчёт или выполнить согласованную команду. Начинаем с одного полезного сценария.

Команда servaki.online · · 3 мин чтения

Специалист и руководитель хозяйства вместе осматривают датчик и телефон
Меньше ручных повторений · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Wiren Board, MQTT и Telegram
02 / НАШ ПОДХОДПроверка сценария от источника до получателя
03 / НАШ ПОДХОДРазделение наблюдения и управляющих команд

Сначала описываем рабочий процесс

Разбираем, кто сейчас выполняет операцию, откуда берёт данные и кому передаёт результат. Выбираем измеримый сценарий: ежедневная сводка, уведомление об отклонении, сбор заявки или изменение статуса. Уточняем, что делать при недоступности источника, повторном событии и ошибке отправки.

ПРИНЦИП РАБОТЫОт прибора до нужного действияУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Прибор01
Контроллер02
Уведомление03

Боты и интеграции

Создаём Telegram-ботов и связки между сервисами, когда у источников есть подходящий интерфейс. Интеграция с кассой, CRM или учётной системой требует проверки API, версии и прав доступа. Не обещаем совместимость со всем оборудованием: сначала подтверждаем, какие данные и действия реально доступны.

Наш опыт: контроллеры и событийные сообщения

В практике команды есть работа с Wiren Board, MQTT, энергетическими показателями и Telegram-уведомлениями. Измерение напряжения или мощности само по себе мало полезно владельцу; нужно добавить объект, время, понятный порог и объяснение события. Поэтому проектируем сообщение вокруг решения, которое сможет принять получатель.

Команды требуют отдельной защиты

Просмотр показаний и управление реле имеют разный уровень ответственности. Разделяем роли пользователей и разрешённые действия, предусматриваем подтверждение для чувствительных команд. Учитываем ограничения оборудования и локальные защитные механизмы. Автоматизация не должна обходить штатные блокировки и правила эксплуатации объекта.

Проверяем весь сценарий

Тестируем получение данных, обработку события, отправку и фактическое получение сообщения. Для отчётов проверяем свежесть данных и поведение при пропусках. Фиксируем зависимости от внешних сервисов и порядок восстановления. Развивать автоматизацию проще поэтапно: сначала надёжный сценарий, затем дополнительные источники и роли.

Вопросы и ответы

Можно ли автоматизировать отчёт из нашей системы?

Сначала проверим доступный API, экспорт и права. Если данные можно получать устойчиво, предложим способ формирования и доставки отчёта.

Можно ли управлять оборудованием из Telegram?

Для совместимого оборудования — да, после согласования прав, подтверждений и защитных ограничений. Критичные блокировки должны оставаться на объекте.

Что будет при недоступности Telegram?

Это учитывается в проектировании: журнал событий, повторная доставка или резервный канал выбираются под важность сценария.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/services/index.html b/public/services/index.html index 88a3677..7239ef2 100644 --- a/public/services/index.html +++ b/public/services/index.html @@ -1 +1 @@ -IT-услуги для бизнеса | servaki.online
От рабочего места до инфраструктуры

IT-услуги для бизнеса

Удалённая помощь, сети и VPN, мониторинг, видеонаблюдение, серверы и автоматизация для бизнеса на КМВ и Юге России. Состав работ и порядок поддержки.

\ No newline at end of file +IT-услуги для бизнеса | servaki.online
От рабочего места до инфраструктуры

IT-услуги для бизнеса

Удалённая помощь, сети и VPN, мониторинг, видеонаблюдение, серверы и автоматизация для бизнеса на КМВ и Юге России. Состав работ и порядок поддержки.

\ No newline at end of file diff --git a/public/services/monitoring-security/index.html b/public/services/monitoring-security/index.html index d5077a4..15925f7 100644 --- a/public/services/monitoring-security/index.html +++ b/public/services/monitoring-security/index.html @@ -1 +1 @@ -Мониторинг IT-инфраструктуры и резервных копий бизнеса | servaki.online
Услуги / Знать о проблеме и понимать действие

Мониторинг IT-инфраструктуры и резервных копий бизнеса

Настраиваем наблюдение за тем, от чего зависит работа бизнеса. Полезное уведомление должно отвечать на три вопроса: что произошло, где искать причину и кому действовать.

Команда servaki.online · · 3 мин чтения

Специалист и владелец бизнеса обсуждают наблюдение за системами и резервные копии
Знать о проблеме и понимать действие · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДКонтроль полезного сервиса, а не только адреса
02 / НАШ ПОДХОДПроверка доставки уведомлений
03 / НАШ ПОДХОДРезервирование с планом восстановления

Что включаем в контроль

Выбираем показатели под ваши сервисы: доступность сайта или приложения, состояние канала, свободное место, свежесть резервной копии и поступление данных от оборудования. Проверка одного сетевого адреса не заменяет проверку пользовательской операции. Для важных систем определяем, какой именно результат означает исправную работу.

ПРИНЦИП РАБОТЫОт показателя до уведомленияУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Показатель01
Мониторинг02
Уведомление03

Уведомления без постоянного шума

Согласуем пороги, повторные проверки и получателей. Кратковременный сетевой сбой и длительная недоступность требуют разных действий. Уведомление дополняем названием объекта, наблюдаемым симптомом и следующей проверкой. Telegram может быть одним из каналов доставки; его работоспособность также нужно проверять.

Сильная сторона: проверяем причину и восстановление

В нашей практике мониторинг используется при поиске обрывов связи на удалённых площадках, наблюдении за серверами и сборе данных контроллеров. Сопоставляем доступность устройств и сервисов, чтобы локализовать участок отказа. После изменения проверяем исходный симптом; после настройки оповещений проводим согласованный пробный сценарий.

Резервная копия должна восстанавливаться

Само наличие файла ещё не доказывает пригодность резервной копии. Определяем, какие данные сохранять, как долго их хранить и где разместить копии. Согласуем допустимую потерю последних изменений и время восстановления. Для выбранных систем проводим пробное восстановление в отдельном месте, не затрагивая рабочие данные.

Безопасность как регулярная работа

Проверяем внешние точки входа, права учётных записей и актуальность обновлений. Изменения планируем с резервной копией и возможностью отката. Мониторинг не гарантирует отсутствие инцидентов: он помогает обнаруживать отклонения и действовать по согласованному порядку. Круглосуточный сбор сигналов и круглосуточное дежурство инженера оговариваются отдельно.

Вопросы и ответы

Что означает мониторинг 24/7?

Автоматические проверки выполняются круглосуточно. Время реакции инженера, дежурство и эскалация определяются условиями обслуживания.

Можно ли получать уведомления в Telegram?

Да, если согласованы бот, получатели и правила доставки. После подключения проверяем отправку и получение тестового уведомления.

Резервные копии исключают потерю данных?

Нет. Результат зависит от периодичности, хранения и пригодности копий. Поэтому заранее определяем допустимые потери и проверяем восстановление.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Мониторинг IT-инфраструктуры и резервных копий бизнеса | servaki.online
Услуги / Знать о проблеме и понимать действие

Мониторинг IT-инфраструктуры и резервных копий бизнеса

Настраиваем наблюдение за тем, от чего зависит работа бизнеса. Полезное уведомление должно отвечать на три вопроса: что произошло, где искать причину и кому действовать.

Команда servaki.online · · 3 мин чтения

Специалист и владелец бизнеса обсуждают наблюдение за системами и резервные копии
Знать о проблеме и понимать действие · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДКонтроль полезного сервиса, а не только адреса
02 / НАШ ПОДХОДПроверка доставки уведомлений
03 / НАШ ПОДХОДРезервирование с планом восстановления

Что включаем в контроль

Выбираем показатели под ваши сервисы: доступность сайта или приложения, состояние канала, свободное место, свежесть резервной копии и поступление данных от оборудования. Проверка одного сетевого адреса не заменяет проверку пользовательской операции. Для важных систем определяем, какой именно результат означает исправную работу.

ПРИНЦИП РАБОТЫОт показателя до уведомленияУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Показатель01
Мониторинг02
Уведомление03

Уведомления без постоянного шума

Согласуем пороги, повторные проверки и получателей. Кратковременный сетевой сбой и длительная недоступность требуют разных действий. Уведомление дополняем названием объекта, наблюдаемым симптомом и следующей проверкой. Telegram может быть одним из каналов доставки; его работоспособность также нужно проверять.

Сильная сторона: проверяем причину и восстановление

В нашей практике мониторинг используется при поиске обрывов связи на удалённых площадках, наблюдении за серверами и сборе данных контроллеров. Сопоставляем доступность устройств и сервисов, чтобы локализовать участок отказа. После изменения проверяем исходный симптом; после настройки оповещений проводим согласованный пробный сценарий.

Резервная копия должна восстанавливаться

Само наличие файла ещё не доказывает пригодность резервной копии. Определяем, какие данные сохранять, как долго их хранить и где разместить копии. Согласуем допустимую потерю последних изменений и время восстановления. Для выбранных систем проводим пробное восстановление в отдельном месте, не затрагивая рабочие данные.

Безопасность как регулярная работа

Проверяем внешние точки входа, права учётных записей и актуальность обновлений. Изменения планируем с резервной копией и возможностью отката. Мониторинг не гарантирует отсутствие инцидентов: он помогает обнаруживать отклонения и действовать по согласованному порядку. Круглосуточный сбор сигналов и круглосуточное дежурство инженера оговариваются отдельно.

Вопросы и ответы

Что означает мониторинг 24/7?

Автоматические проверки выполняются круглосуточно. Время реакции инженера, дежурство и эскалация определяются условиями обслуживания.

Можно ли получать уведомления в Telegram?

Да, если согласованы бот, получатели и правила доставки. После подключения проверяем отправку и получение тестового уведомления.

Резервные копии исключают потерю данных?

Нет. Результат зависит от периодичности, хранения и пригодности копий. Поэтому заранее определяем допустимые потери и проверяем восстановление.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/services/networks-vpn/index.html b/public/services/networks-vpn/index.html index 0d97274..83f5326 100644 --- a/public/services/networks-vpn/index.html +++ b/public/services/networks-vpn/index.html @@ -1 +1 @@ -Сети и VPN для бизнеса: офисы, склады и удалённые точки | servaki.online
Услуги / Одна команда. Несколько площадок.

Сети и VPN для бизнеса: офисы, склады и удалённые точки

Связываем офисы, склады и удалённые объекты так, чтобы сотрудники получали доступ к нужным ресурсам, а управление сетью оставалось понятным и контролируемым.

Команда servaki.online · · 3 мин чтения

Инженер обсуждает офисную сеть с командой семейного склада
Одна команда. Несколько площадок. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Keenetic, MikroTik и распределённых VPN
02 / НАШ ПОДХОДПроверка прямого и обратного маршрута
03 / НАШ ПОДХОДУчёт общих зависимостей резервных каналов

Начинаем с задач доступа

Уточняем, кому и к чему нужна связь: сотрудникам — к файлам и приложениям, ответственному — к камерам, инженеру — к оборудованию. Проверяем адресацию, ограничения провайдеров и существующие маршруты. Это помогает заранее обнаружить пересекающиеся подсети и избежать ситуации, когда подключение VPN лишает объект обычного интернета.

ПРИНЦИП РАБОТЫКак проходит трафик между площадкамиУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Роутер объекта01
Защищённый канал02
Ресурс компании03

Подбираем схему под площадку

Работаем с маршрутизаторами Keenetic и MikroTik, туннелями WireGuard и решениями на базе ZeroTier. Выбор зависит от оборудования, числа точек и требований к доступу. Разделяем служебный и гостевой трафик, задаём необходимые правила доступа и предусматриваем способ восстановления управления после изменения конфигурации.

Наш опыт: соединение проверяется трафиком

В распределённых сетях встречается ситуация: туннель показывает активное состояние, но полезные данные не проходят. В нашей практике такие случаи разбираются по маршрутам в обе стороны, счётчикам обмена и доступности целевого сервиса. Отдельно проверяем DNS и сохранение настроек. Это позволяет искать причину точнее, чем по одному зелёному индикатору.

Резервирование без ложной уверенности

Два подключения не всегда означают два независимых канала: они могут зависеть от одного питания, линии или промежуточного узла. Фиксируем общие зависимости и проверяем поведение при отказе. Согласуем, какие сервисы должны пережить переключение и допустимо ли краткое прерывание работы.

Что передаём после настройки

Описываем назначение сегментов и соединений, сохраняем резервную конфигурацию и порядок отката. Проверяем доступ с рабочих мест и удалённых площадок. При сопровождении наблюдаем за нужными каналами и сервисами; новые правила вводим с учётом уже работающих устройств.

Вопросы и ответы

Для чего бизнесу VPN?

Для защищённого соединения площадок и доступа к корпоративным ресурсам. Состав доступных систем и права пользователей задаются отдельно.

Можно ли объединить офис и склад у разных провайдеров?

Да, если связь и оборудование позволяют построить выбранную схему. Проверяем ограничения, адресацию и качество канала.

VPN сам обеспечивает резервный интернет?

Нет. Для резерва нужен дополнительный рабочий канал и настроенное переключение. VPN решает задачу связи поверх доступного соединения.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Сети и VPN для бизнеса: офисы, склады и удалённые точки | servaki.online
Услуги / Одна команда. Несколько площадок.

Сети и VPN для бизнеса: офисы, склады и удалённые точки

Связываем офисы, склады и удалённые объекты так, чтобы сотрудники получали доступ к нужным ресурсам, а управление сетью оставалось понятным и контролируемым.

Команда servaki.online · · 3 мин чтения

Инженер обсуждает офисную сеть с командой семейного склада
Одна команда. Несколько площадок. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Keenetic, MikroTik и распределённых VPN
02 / НАШ ПОДХОДПроверка прямого и обратного маршрута
03 / НАШ ПОДХОДУчёт общих зависимостей резервных каналов

Начинаем с задач доступа

Уточняем, кому и к чему нужна связь: сотрудникам — к файлам и приложениям, ответственному — к камерам, инженеру — к оборудованию. Проверяем адресацию, ограничения провайдеров и существующие маршруты. Это помогает заранее обнаружить пересекающиеся подсети и избежать ситуации, когда подключение VPN лишает объект обычного интернета.

ПРИНЦИП РАБОТЫКак проходит трафик между площадкамиУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Роутер объекта01
Защищённый канал02
Ресурс компании03

Подбираем схему под площадку

Работаем с маршрутизаторами Keenetic и MikroTik, туннелями WireGuard и решениями на базе ZeroTier. Выбор зависит от оборудования, числа точек и требований к доступу. Разделяем служебный и гостевой трафик, задаём необходимые правила доступа и предусматриваем способ восстановления управления после изменения конфигурации.

Наш опыт: соединение проверяется трафиком

В распределённых сетях встречается ситуация: туннель показывает активное состояние, но полезные данные не проходят. В нашей практике такие случаи разбираются по маршрутам в обе стороны, счётчикам обмена и доступности целевого сервиса. Отдельно проверяем DNS и сохранение настроек. Это позволяет искать причину точнее, чем по одному зелёному индикатору.

Резервирование без ложной уверенности

Два подключения не всегда означают два независимых канала: они могут зависеть от одного питания, линии или промежуточного узла. Фиксируем общие зависимости и проверяем поведение при отказе. Согласуем, какие сервисы должны пережить переключение и допустимо ли краткое прерывание работы.

Что передаём после настройки

Описываем назначение сегментов и соединений, сохраняем резервную конфигурацию и порядок отката. Проверяем доступ с рабочих мест и удалённых площадок. При сопровождении наблюдаем за нужными каналами и сервисами; новые правила вводим с учётом уже работающих устройств.

Вопросы и ответы

Для чего бизнесу VPN?

Для защищённого соединения площадок и доступа к корпоративным ресурсам. Состав доступных систем и права пользователей задаются отдельно.

Можно ли объединить офис и склад у разных провайдеров?

Да, если связь и оборудование позволяют построить выбранную схему. Проверяем ограничения, адресацию и качество канала.

VPN сам обеспечивает резервный интернет?

Нет. Для резерва нужен дополнительный рабочий канал и настроенное переключение. VPN решает задачу связи поверх доступного соединения.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/services/remote-desktop/index.html b/public/services/remote-desktop/index.html index 02cabc0..97ec186 100644 --- a/public/services/remote-desktop/index.html +++ b/public/services/remote-desktop/index.html @@ -1 +1 @@ -Удалённая компьютерная помощь для бизнеса на КМВ | servaki.online
Услуги / Рабочее место снова работает

Удалённая компьютерная помощь для бизнеса на КМВ

Помогаем сотруднику вернуться к работе: разобраться с программой, восстановить доступ, настроить принтер или подготовить рабочее место. Подключение и объём действий согласуем заранее.

Команда servaki.online · · 3 мин чтения

Специалист объясняет работу компьютера владелице небольшого магазина
Рабочее место снова работает · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДДиагностика от приложения до сети и сервера
02 / НАШ ПОДХОДСогласованные действия с рабочими данными
03 / НАШ ПОДХОДПроверка результата вместе с сотрудником

Какие задачи решаем удалённо

Диагностируем ошибки операционной системы и приложений, настраиваем сетевые принтеры, доступ к общим папкам и рабочим сервисам. Помогаем подключить новое рабочее место к существующей инфраструктуре. Перед изменениями уточняем, какие данные и программы критичны для сотрудника и что уже предпринималось для решения проблемы.

ПРИНЦИП РАБОТЫПомощь с рабочего местаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Компьютер01
Согласованный сеанс02
Специалист03

Как проходит сеанс помощи

Сотрудник описывает симптом и подтверждает подключение. Проверяем состояние компьютера, сообщения об ошибках, сетевые настройки и доступность зависимых сервисов. При необходимости согласуем перезапуск или временное закрытие программы. Завершаем сеанс проверкой конкретной операции, которая не работала, и кратким объяснением результата.

Наш подход: компьютер — часть инфраструктуры

Ошибка на экране не всегда возникает на самом ПК. Приложение может зависеть от VPN, файлового сервера или службы авторизации. Опыт сопровождения сетей и серверов помогает проверять цепочку целиком. Это особенно важно для удалённых сотрудников и объектов, где рабочее место выходит в корпоративные ресурсы через несколько участков связи.

Безопасность доступа

Выбираем согласованный инструмент удалённой помощи и определяем, кто вправе подключаться. Постоянный доступ настраиваем только при необходимости, с ограничением прав. Учётные записи закрепляем за ответственными, а доступ уволенных сотрудников отзываем. Перед действиями, способными затронуть данные, проверяем наличие подходящей резервной копии.

Границы удалённой помощи

Неисправный накопитель, повреждённый кабель и механическая поломка принтера требуют работ на месте. Если диагностика указывает на аппаратную причину, объясняем, что именно нужно проверить или заменить. Для специфического прикладного ПО при необходимости подключаем его поставщика: сетевую доступность и работу самой программы важно разделять.

Вопросы и ответы

Можно ли помочь сотруднику вне офиса?

Да, если есть рабочий интернет и возможность согласованного удалённого подключения. Доступ к корпоративным ресурсам проверяем отдельно.

Нужно ли сообщать пароль от всех сервисов?

Нет. Согласуем только необходимый доступ и подходящий способ его предоставления. Лишние права для диагностики не нужны.

Настраиваете ли сетевые принтеры?

Да: проверяем сетевое подключение, очередь печати и драйвер. Механический ремонт и расходные материалы относятся к отдельным работам.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Удалённая компьютерная помощь для бизнеса на КМВ | servaki.online
Услуги / Рабочее место снова работает

Удалённая компьютерная помощь для бизнеса на КМВ

Помогаем сотруднику вернуться к работе: разобраться с программой, восстановить доступ, настроить принтер или подготовить рабочее место. Подключение и объём действий согласуем заранее.

Команда servaki.online · · 3 мин чтения

Специалист объясняет работу компьютера владелице небольшого магазина
Рабочее место снова работает · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДДиагностика от приложения до сети и сервера
02 / НАШ ПОДХОДСогласованные действия с рабочими данными
03 / НАШ ПОДХОДПроверка результата вместе с сотрудником

Какие задачи решаем удалённо

Диагностируем ошибки операционной системы и приложений, настраиваем сетевые принтеры, доступ к общим папкам и рабочим сервисам. Помогаем подключить новое рабочее место к существующей инфраструктуре. Перед изменениями уточняем, какие данные и программы критичны для сотрудника и что уже предпринималось для решения проблемы.

ПРИНЦИП РАБОТЫПомощь с рабочего местаУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Компьютер01
Согласованный сеанс02
Специалист03

Как проходит сеанс помощи

Сотрудник описывает симптом и подтверждает подключение. Проверяем состояние компьютера, сообщения об ошибках, сетевые настройки и доступность зависимых сервисов. При необходимости согласуем перезапуск или временное закрытие программы. Завершаем сеанс проверкой конкретной операции, которая не работала, и кратким объяснением результата.

Наш подход: компьютер — часть инфраструктуры

Ошибка на экране не всегда возникает на самом ПК. Приложение может зависеть от VPN, файлового сервера или службы авторизации. Опыт сопровождения сетей и серверов помогает проверять цепочку целиком. Это особенно важно для удалённых сотрудников и объектов, где рабочее место выходит в корпоративные ресурсы через несколько участков связи.

Безопасность доступа

Выбираем согласованный инструмент удалённой помощи и определяем, кто вправе подключаться. Постоянный доступ настраиваем только при необходимости, с ограничением прав. Учётные записи закрепляем за ответственными, а доступ уволенных сотрудников отзываем. Перед действиями, способными затронуть данные, проверяем наличие подходящей резервной копии.

Границы удалённой помощи

Неисправный накопитель, повреждённый кабель и механическая поломка принтера требуют работ на месте. Если диагностика указывает на аппаратную причину, объясняем, что именно нужно проверить или заменить. Для специфического прикладного ПО при необходимости подключаем его поставщика: сетевую доступность и работу самой программы важно разделять.

Вопросы и ответы

Можно ли помочь сотруднику вне офиса?

Да, если есть рабочий интернет и возможность согласованного удалённого подключения. Доступ к корпоративным ресурсам проверяем отдельно.

Нужно ли сообщать пароль от всех сервисов?

Нет. Согласуем только необходимый доступ и подходящий способ его предоставления. Лишние права для диагностики не нужны.

Настраиваете ли сетевые принтеры?

Да: проверяем сетевое подключение, очередь печати и драйвер. Механический ремонт и расходные материалы относятся к отдельным работам.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/services/servers-hosting/index.html b/public/services/servers-hosting/index.html index ce9eac3..9347bda 100644 --- a/public/services/servers-hosting/index.html +++ b/public/services/servers-hosting/index.html @@ -1 +1 @@ -Серверы и хостинг для бизнеса: Proxmox, Docker и сопровождение | servaki.online
Услуги / Основа для ежедневной работы

Серверы и хостинг для бизнеса: Proxmox, Docker и сопровождение

Размещаем рабочие сервисы там, где ими удобно управлять и восстанавливать их после сбоя. Выбор между локальным сервером и хостингом начинаем с требований к данным и доступности.

Команда servaki.online · · 3 мин чтения

Инженер проверяет серверное оборудование вместе с владельцем бизнеса
Основа для ежедневной работы · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Proxmox, Docker и серверных приложений
02 / НАШ ПОДХОДУчёт данных и зависимостей при переносе
03 / НАШ ПОДХОДОбновления с проверкой и планом отката

От задачи бизнеса к размещению

Уточняем состав приложений, пользователей и данных: сайт, CRM, файловое хранилище, внутренняя система или другое рабочее ПО. Проверяем требования поставщиков и лицензирования. Оцениваем ресурсы, зависимость от интернета и возможный простой. Это помогает подобрать размещение без лишней сложности и без недооценки нагрузки.

ПРИНЦИП РАБОТЫРабота и восстановление сервераУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Сервер01
Резервная копия02
Восстановление03

Виртуализация и контейнеры

Используем Proxmox для разделения серверных задач на виртуальные машины и контейнеры, Docker — для подходящих приложений. Разделение упрощает обслуживание, но само по себе не создаёт отказоустойчивость. Планируем хранение данных, доступ к управлению, обновления и резервное копирование каждого значимого компонента.

Практический опыт сопровождения

В нашей инфраструктурной практике есть виртуальные машины, контейнерные приложения, базы данных и веб-сервисы. Поэтому рассматриваем не только запуск программы, но и её зависимости: домен, сертификат, база, хранилище, почта и фоновые задачи. При переносе важно проверить пользовательский сценарий и сохранность данных, а не только состояние процесса.

Обновления с возможностью вернуться назад

Перед изменением определяем состав резервной копии и порядок отката. Для важных обновлений используем отдельную проверку или тестовый контур, если он предусмотрен. После работ проверяем ключевые функции приложения и журналы ошибок. Документируем версии и особенности конфигурации, которые понадобятся при следующем обслуживании.

Что входит в понятное сопровождение

Фиксируем ответственных за хостинг, приложение, лицензии и резервные копии. Настраиваем контроль ресурсов и важных сроков, включая сертификаты при включении этой задачи в обслуживание. Отдельно согласуем перенос данных, администрирование прикладной системы и доработку её кода: это разные виды работ.

Вопросы и ответы

Что лучше: сервер в офисе или хостинг?

Зависит от приложений, связи, требований к данным и допустимого простоя. Сначала сравниваем эти условия и стоимость сопровождения.

Делаете ли перенос существующего сервиса?

Да, после обследования и согласования окна работ. План включает копирование данных, проверку, переключение и возможность отката.

Нужны ли копии, если есть виртуализация?

Да. Виртуализация не заменяет независимые резервные копии. Снимок на том же хранилище не защищает от его отказа.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Серверы и хостинг для бизнеса: Proxmox, Docker и сопровождение | servaki.online
Услуги / Основа для ежедневной работы

Серверы и хостинг для бизнеса: Proxmox, Docker и сопровождение

Размещаем рабочие сервисы там, где ими удобно управлять и восстанавливать их после сбоя. Выбор между локальным сервером и хостингом начинаем с требований к данным и доступности.

Команда servaki.online · · 3 мин чтения

Инженер проверяет серверное оборудование вместе с владельцем бизнеса
Основа для ежедневной работы · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДПрактика Proxmox, Docker и серверных приложений
02 / НАШ ПОДХОДУчёт данных и зависимостей при переносе
03 / НАШ ПОДХОДОбновления с проверкой и планом отката

От задачи бизнеса к размещению

Уточняем состав приложений, пользователей и данных: сайт, CRM, файловое хранилище, внутренняя система или другое рабочее ПО. Проверяем требования поставщиков и лицензирования. Оцениваем ресурсы, зависимость от интернета и возможный простой. Это помогает подобрать размещение без лишней сложности и без недооценки нагрузки.

ПРИНЦИП РАБОТЫРабота и восстановление сервераУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Сервер01
Резервная копия02
Восстановление03

Виртуализация и контейнеры

Используем Proxmox для разделения серверных задач на виртуальные машины и контейнеры, Docker — для подходящих приложений. Разделение упрощает обслуживание, но само по себе не создаёт отказоустойчивость. Планируем хранение данных, доступ к управлению, обновления и резервное копирование каждого значимого компонента.

Практический опыт сопровождения

В нашей инфраструктурной практике есть виртуальные машины, контейнерные приложения, базы данных и веб-сервисы. Поэтому рассматриваем не только запуск программы, но и её зависимости: домен, сертификат, база, хранилище, почта и фоновые задачи. При переносе важно проверить пользовательский сценарий и сохранность данных, а не только состояние процесса.

Обновления с возможностью вернуться назад

Перед изменением определяем состав резервной копии и порядок отката. Для важных обновлений используем отдельную проверку или тестовый контур, если он предусмотрен. После работ проверяем ключевые функции приложения и журналы ошибок. Документируем версии и особенности конфигурации, которые понадобятся при следующем обслуживании.

Что входит в понятное сопровождение

Фиксируем ответственных за хостинг, приложение, лицензии и резервные копии. Настраиваем контроль ресурсов и важных сроков, включая сертификаты при включении этой задачи в обслуживание. Отдельно согласуем перенос данных, администрирование прикладной системы и доработку её кода: это разные виды работ.

Вопросы и ответы

Что лучше: сервер в офисе или хостинг?

Зависит от приложений, связи, требований к данным и допустимого простоя. Сначала сравниваем эти условия и стоимость сопровождения.

Делаете ли перенос существующего сервиса?

Да, после обследования и согласования окна работ. План включает копирование данных, проверку, переключение и возможность отката.

Нужны ли копии, если есть виртуализация?

Да. Виртуализация не заменяет независимые резервные копии. Снимок на том же хранилище не защищает от его отказа.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/public/services/video-surveillance/index.html b/public/services/video-surveillance/index.html index 86fbb62..232b267 100644 --- a/public/services/video-surveillance/index.html +++ b/public/services/video-surveillance/index.html @@ -1 +1 @@ -Видеонаблюдение для бизнеса: камеры, архив и удалённый доступ | servaki.online
Услуги / Нужный ракурс. Доступная запись.

Видеонаблюдение для бизнеса: камеры, архив и удалённый доступ

Помогаем видеть нужную зону и находить запись нужного события. Рассматриваем видеонаблюдение как единую систему: обзор, освещение, сеть, питание, регистратор и доступ ответственных.

Команда servaki.online · · 3 мин чтения

Инженер и владельцы гостевого дома оценивают обзор наружной камеры
Нужный ракурс. Доступная запись. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт с сетевой частью и удалёнными регистраторами
02 / НАШ ПОДХОДПроверка архива вместе с живым изображением
03 / НАШ ПОДХОДНаглядное обсуждение ракурсов и трасс

Начинаем с того, что нужно увидеть

Для въезда, кассовой зоны и общего обзора территории нужны разные ракурсы. Уточняем задачу каждой камеры, расстояние до объекта наблюдения и условия освещения. При проектировании учитываем высоту установки, препятствия, кабельные трассы и возможность обслуживания. Количество камер само по себе не определяет качество системы.

ПРИНЦИП РАБОТЫКак работает видеонаблюдениеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Камера01
Локальная запись02
Просмотр03

Сеть и питание — часть видеонаблюдения

Пропадание изображения может быть связано с камерой, PoE-коммутатором, радиомостом или перегрузкой канала. Проверяем цепочку целиком. Для удалённых площадок отдельно оцениваем пропускную способность и доступ к локальному архиву, чтобы просмотр через интернет не мешал основной работе объекта.

Наш опыт: от трасс до удалённой диагностики

В практике команды есть работа со схемами камер и кабельных трасс на строительных объектах, а также диагностика регистраторов и связи между удалёнными площадками. Используем планы и наглядные схемы для обсуждения зон обзора. Условную визуализацию всегда отделяем от точной монтажной документации и проверяем привязки по исходным материалам.

Архив проверяем отдельно от живого видео

Открывающаяся камера ещё не означает, что запись сохраняется. Проверяем дату и время, режим записи, состояние накопителей и поиск фрагмента. Срок хранения зависит от числа камер, разрешения, интенсивности записи и ёмкости дисков. Рассчитываем его под задачу и подтверждаем на выбранной конфигурации.

Доступ для владельца и ответственных

Разделяем права просмотра и администрирования, согласуем устройства для удалённого доступа. После настройки проверяем соединение из нужной сети и просмотр архива. Изменения паролей и состава пользователей учитываем в сопровождении. Для расширения системы заранее оцениваем запас по портам, питанию и хранилищу.

Вопросы и ответы

Можно ли оставить существующие камеры?

Да, если совместимость, состояние и качество изображения подходят задаче. Сначала обследуем систему и выявляем ограничения.

Будет ли запись при пропадании интернета?

При локальном регистраторе запись может продолжаться, если питание и локальная сеть исправны. Это нужно проверить на конкретной системе.

Можно ли смотреть камеры с телефона?

Да, для совместимого оборудования настраиваем согласованный способ доступа и права. Работу проверяем через сеть, которой пользуется ответственный.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file +Видеонаблюдение для бизнеса: камеры, архив и удалённый доступ | servaki.online
Услуги / Нужный ракурс. Доступная запись.

Видеонаблюдение для бизнеса: камеры, архив и удалённый доступ

Помогаем видеть нужную зону и находить запись нужного события. Рассматриваем видеонаблюдение как единую систему: обзор, освещение, сеть, питание, регистратор и доступ ответственных.

Команда servaki.online · · 3 мин чтения

Инженер и владельцы гостевого дома оценивают обзор наружной камеры
Нужный ракурс. Доступная запись. · Изображение создано ИИ, без данных и фотографий клиентов
01 / НАШ ПОДХОДОпыт с сетевой частью и удалёнными регистраторами
02 / НАШ ПОДХОДПроверка архива вместе с живым изображением
03 / НАШ ПОДХОДНаглядное обсуждение ракурсов и трасс

Начинаем с того, что нужно увидеть

Для въезда, кассовой зоны и общего обзора территории нужны разные ракурсы. Уточняем задачу каждой камеры, расстояние до объекта наблюдения и условия освещения. При проектировании учитываем высоту установки, препятствия, кабельные трассы и возможность обслуживания. Количество камер само по себе не определяет качество системы.

ПРИНЦИП РАБОТЫКак работает видеонаблюдениеУсловная схема движения сигнала, без реальных данных и настроек клиентов.
Камера01
Локальная запись02
Просмотр03

Сеть и питание — часть видеонаблюдения

Пропадание изображения может быть связано с камерой, PoE-коммутатором, радиомостом или перегрузкой канала. Проверяем цепочку целиком. Для удалённых площадок отдельно оцениваем пропускную способность и доступ к локальному архиву, чтобы просмотр через интернет не мешал основной работе объекта.

Наш опыт: от трасс до удалённой диагностики

В практике команды есть работа со схемами камер и кабельных трасс на строительных объектах, а также диагностика регистраторов и связи между удалёнными площадками. Используем планы и наглядные схемы для обсуждения зон обзора. Условную визуализацию всегда отделяем от точной монтажной документации и проверяем привязки по исходным материалам.

Архив проверяем отдельно от живого видео

Открывающаяся камера ещё не означает, что запись сохраняется. Проверяем дату и время, режим записи, состояние накопителей и поиск фрагмента. Срок хранения зависит от числа камер, разрешения, интенсивности записи и ёмкости дисков. Рассчитываем его под задачу и подтверждаем на выбранной конфигурации.

Доступ для владельца и ответственных

Разделяем права просмотра и администрирования, согласуем устройства для удалённого доступа. После настройки проверяем соединение из нужной сети и просмотр архива. Изменения паролей и состава пользователей учитываем в сопровождении. Для расширения системы заранее оцениваем запас по портам, питанию и хранилищу.

Вопросы и ответы

Можно ли оставить существующие камеры?

Да, если совместимость, состояние и качество изображения подходят задаче. Сначала обследуем систему и выявляем ограничения.

Будет ли запись при пропадании интернета?

При локальном регистраторе запись может продолжаться, если питание и локальная сеть исправны. Это нужно проверить на конкретной системе.

Можно ли смотреть камеры с телефона?

Да, для совместимого оборудования настраиваем согласованный способ доступа и права. Работу проверяем через сеть, которой пользуется ответственный.

Следующий шаг

Расскажите, что должно работать

Укажите ваш объект, существующее оборудование и задачу. Разберём исходные условия, уточним необходимые доступы и предложим порядок работ. Стоимость и сроки согласуем до начала.

\ No newline at end of file diff --git a/verify.py b/verify.py index 994a184..03b3271 100644 --- a/verify.py +++ b/verify.py @@ -18,6 +18,7 @@ class Page(HTMLParser): if tag=='title':self.in_title=True if tag=='a' and a.get('href'):self.links.append(a['href']) if tag=='link' and a.get('rel')=='stylesheet':self.links.append(a['href']) + if tag=='script' and a.get('src'):self.links.append(a['src']) if tag=='link' and a.get('rel')=='canonical':self.canonical=a['href'] if tag=='meta' and a.get('name')=='description':self.description=a.get('content','') if tag=='img' and a.get('src'): @@ -57,12 +58,17 @@ def check(text,rel): def main(): files=sorted(PUBLIC.rglob('*.html'));titles=[];descriptions=[];checks=[] scenes=json.loads((ROOT/'content/flow-scenes.json').read_text(encoding='utf-8')) + image_motion=json.loads((ROOT/'content/image-motion.json').read_text(encoding='utf-8')) pages=json.loads((ROOT/'content/pages.json').read_text(encoding='utf-8')) card_copy=json.loads((ROOT/'content/card-copy.json').read_text(encoding='utf-8')) assert set(scenes)=={p['slug'] for p in pages},'missing or extra equipment scene' + assert set(image_motion)==set(scenes),'missing or extra animated illustration' assert set(card_copy)==set(scenes),'missing or extra homepage card description' css=(PUBLIC/'assets/editorial/editorial.css').read_text(encoding='utf-8') + motion_css=(PUBLIC/'assets/editorial/motion.css').read_text(encoding='utf-8') assert '@media(prefers-reduced-motion:reduce){.flow-link span{animation:none' in css,'missing static motion alternative' + assert '@media(prefers-reduced-motion:reduce)' in motion_css and '.motion-overlay{display:none' in motion_css,'motion reduction must stop illustration animation' + assert (PUBLIC/'assets/editorial/motion.js').stat().st_size<2000,'animation controller too large' opener=build_opener(ProxyHandler({})) for file in files: rel=file.relative_to(PUBLIC).as_posix();text=file.read_text(encoding='utf-8');p=check(text,rel) @@ -73,6 +79,7 @@ def main(): assert scenes[slug]['title'] in text,(rel,'wrong diagram') photo=next((im for im in p.images if im['src'].startswith('/assets/editorial/photo-')),None) assert photo and '520px' in photo.get('sizes',''),(rel,'responsive article photograph') + assert text.count('class="motion-visual"')==3,(rel,'animated related illustrations') titles.append(p.title);descriptions.append(p.description) route='/'+('' if rel=='index.html' else rel.removesuffix('index.html')) served=opener.open('http://127.0.0.1:5186'+route,timeout=10) @@ -81,6 +88,9 @@ def main(): assert len(set(titles))==len(titles),'duplicate titles' assert len(set(descriptions))==len(descriptions),'duplicate descriptions' home=(PUBLIC/'index.html').read_text(encoding='utf-8') + assert home.count('class="motion-visual"')==12,'animated homepage illustrations' + for group,expected in [('approach',3),('services',6),('industries',3)]: + assert (PUBLIC/group/'index.html').read_text(encoding='utf-8').count('class="motion-visual"')==expected,(group,'animated catalogue illustrations') for slug,description in card_copy.items(): assert description in home,(slug,'homepage card description not visible') home_schema=Page(home).ld[0]['@graph'] @@ -100,7 +110,14 @@ def main(): assert len(locations)==16 and len(set(locations))==16,'sitemap pages' small_photos=list((PUBLIC/'assets/editorial').glob('photo-*-480.webp')) assert len(small_photos)==len(pages) and max(p.stat().st_size for p in small_photos)<50000,'oversized mobile photograph' - report={'html_pages':len(files),'article_pages':12,'animated_equipment_scenes':len(scenes),'max_mobile_photo_bytes':max(p.stat().st_size for p in small_photos),'animation_css_bytes':len(css.encode('utf-8')),'unique_titles':True,'unique_descriptions':True,'tariff_prices':expected_prices,'links_and_fragments':'pass','negative_control':negative,'sitemap_urls':len(locations),'checks':checks} + illustration_budgets={480:50000,960:130000,1536:250000} + illustration_max_bytes={} + for width,budget in illustration_budgets.items(): + variants=[PUBLIC/'assets/editorial'/f'{p["slug"]}-{width}.webp' for p in pages] + assert all(item.is_file() for item in variants),(width,'missing illustration size') + illustration_max_bytes[width]=max(item.stat().st_size for item in variants) + assert illustration_max_bytes[width]