Комендант — российский MDM/UEM
On-prem платформа управления Android/ТСД/Linux без Google-сервисов: 152-ФЗ, lost-mode за 6 секунд, 1С auto-wipe, freemium до 25 устройств.
Задача клиента
8 операционных Centers с per-tab help
M22.1-M22.12: 50+ страниц → 8 функциональных центров
Fleet / Compliance / Apps / Security / Admin / Access / Help / Analytics. Каждый Center с табами и deep-link через ?tab=X query-параметром. Контекстная справка (SectionHelpAuto) автоматически подгружает per-tab help из HELP_MAP на 130+ записей. Единый error-stack: extractApiError + Toast Provider + showError-helper по всему UI, дружелюбные сообщения вместо raw JSON, специальная обработка 428 MFA required с CTA «Настроить MFA».
AI-стек на GigaChat-2-Max с RAG
Российский LLM + self-hosted embedding и reranker
7 AI-endpoints (askai, copilot, policy_gen, script_gen, compliance_explain, explain_alert, suggest_policies) на GigaChat-2-Max от Сбера через OAuth2 с Russian Trusted Root CA. Единственный LLM-провайдер — для соответствия 152-ФЗ данные не покидают РФ-инфраструктуру. Hybrid retrieval RAG: pgvector ANN (cosine) + BM25 ts_vector(russian) через websearch_to_tsquery + RRF k=60 + cross-encoder BAAI/bge-reranker-v2-m3 на self-hosted GPU через WireGuard. Anthropic Contextual Retrieval с per-chunk префиксами.
Command Pipeline через MQTT (de-Google)
24 типа команд, EMQX 5.10, без FCM
Свой EMQX-брокер вместо Firebase Cloud Messaging. JWT-auth через HTTP-hook /api/v1/mqtt/auth + /api/v1/mqtt/acl с топиком tenant/<tid>/device/<did>/cmd. Persistent MQTT с cleanStart=false + sessionExpiry=3600 — команды доходят после reboot устройства. Watchdog MqttReconnectWorker (PeriodicWorkRequest 15min + exponential backoff) на DPC против Samsung OneUI battery-optimization.
152-ФЗ HMAC-цепочка audit-log + ZTNA
Append-only журнал, Sealed PDF, авто-РКН 24/72ч
Append-only audit_log с HMAC-SHA256 цепочкой (prev_hash → chain_hash). Tampering детектируется на verify-step — обрыв цепочки с указанием первого изменённого ID. Sealed snapshot: подписанный PDF за период + HMAC через tenants.audit_chain_secret + upload в MinIO. Внешняя верификация через CLI VerifyAuditChain. compliance_rules DSL с DSL (ВСЕ/ЛЮБОЕ/НЕ/Field/Op/Value, операторы eq/lt/like/in/regex), 4 триггера (heartbeat, attestation, inventory, schedule). Инциденты ПДн с триггером schedule_rkn_notifications AFTER INSERT — авто 24/72-ч уведомления РКН. ZTNA: 7 типов auto-remediation playbook'ов, threat feeds BDU FSTEC / NVD CVE / CISA KEV.
DPC: 4 платформы на одной Go-кодобазе
Android + Linux + Аврора production, Windows beta
Linux DPC: Go-агент CGO_ENABLED=0, single-binary 7.2 MB amd64 / 6.7 MB arm64, поддержка Astra/Alt/РедОС/Ubuntu/Debian/RHEL/Rocky/Alma. Аврора DPC: cross-build на armv7hl 6.9 MB через GOOS=linux GOARCH=arm GOARM=7, RPM-spec для OMP, verified на rootfs 5.2.0.180 Khabarovsk через chroot + qemu-arm-static. Windows DPC: functional port из linux-dpc, E2E на реальной Windows 11 Pro Корпоративной через production EMQX TLS — komendant-dpc.exe 7.3 MB. Android DPC: Kotlin Jetpack Compose с MQTT через paho.mqtt.golang/HiveMQ-клиент, kiosk-mode + launcher replacement verified, WP-enroll на Nubia NX711J Android 13.
Аналитика и dashboards (M22.1-M22.15)
12 отчётов, 10 chart types, drag-and-drop editor
12 встроенных отчётов (устройства / compliance / security / операции / интеграции / приложения) с форматами CSV/PDF/JSON. Saved-queries через querybuilder DSL: JSON-структура (from / select с агрегатами / where / group_by / order_by / limit) с whitelist 10 таблиц, без JOIN. Кастомизируемые user-dashboards с edit-mode: drag-and-drop, chart-type selector, размеры S/M/L/XL, theme presets, cols 2/3/4, density compact/cozy/spacious, per-widget days override. 10 chart_type реализованы в SVG zero-deps.
Парк устройств Fleet Center
Heartbeat от Android DPC через MQTT EMQX, persistent session. Поддержка ТСД (Urovo, Atol, Zebra) и обычных смартфонов без GMS.
Устройства · 124 всего
| Модель | IMEI | Пользователь | Статус | Батарея | Политика | Heartbeat |
|---|---|---|---|---|---|---|
| Urovo DT50 | 35 8240 12 678901 | Складская 04 | online | 78% | WH Kiosk | 12 сек назад |
| Atol Smart.Lite | 35 8240 12 678845 | Курьер NN-12 | online | 42% | Courier | 1 мин назад |
| Samsung XCover6 | 35 8240 12 678311 | Мерч. Иванов И. | online | 91% | Field MX | 3 мин назад |
| Honor X8a | 35 8240 12 678257 | Водитель MSK-7 | offline | 12% | Driver | 1 ч 18 мин |
| Zebra TC22 | 35 8240 12 678194 | ПВЗ Перово | online | 64% | Pickup | 8 сек назад |
| Nubia NX711J | 35 8240 12 678021 | Касса Лефортово | lost mode | 0% | POS Kiosk | 9 ч 47 мин |
Отправка команды на группу устройств
24 типа MQTT-команд через свой EMQX-брокер (без FCM). Доставка persistent: команда доходит после reboot. Деструктивные действия (wipe, factory_reset) требуют maker-checker dual-approval.
Compliance Center: оценка фреймворка
Compliance Pack 152-ФЗ basic. Правила DSL (ALL/ANY/NOT, операторы eq/lt/like/in/regex) проверяют heartbeat, attestation, inventory. HMAC-цепочка audit-log детектирует tampering.
Multi-Provider AI Routing
7 endpoints × 4 типа провайдеров
Архитектура
Go API (Fiber v3)
systemd komendant-api :8101, 162 handler-файла
PostgreSQL 17 + pgvector 0.8.2
148 таблиц, RLS FORCE на чувствительных + tsvector(russian)
EMQX 5.10
MQTT-брокер, TLS 8883, JWT-auth-hook, cleanStart=false sessionExpiry=3600
MinIO
APK, OSM-tiles в pmtiles, VPN-профили, бэкапы, RA recordings + HMAC manifest
Redis 7
Login lockout, JWT-revoke list, AI cache с PII-санитизацией, GigaChat cross-project lock
Next.js 16.2.3 admin
PM2 cluster :3040, 142 page.tsx, ToastProvider + ErrorBanner stack
coturn
self-hosted WebRTC TURN, HMAC-SHA1 creds, без Google STUN/TURN fallback
Observability
Prometheus + Grafana + Loki + Tempo + Promtail + OTel + Alertmanager