Ростехлизинг · «Чаттерный надзор»
Архитектура, требования к серверу под исходники проектов, и как пользоваться системой.
Что есть сейчас в облаке и куда какие данные идут.
Голос и распознавание фото/PDF — полностью локально, файл никогда не покидает сервер. За пределы уходит только текст: сводка на суммаризацию и (если чат привязан к проекту) копия переписки в YouGile.
| Данные | Где | За пределы сервера? |
|---|---|---|
| Текст переписки | PostgreSQL на сервере | нет, хранится локально |
| Голосовые | whisper.cpp на сервере | нет, файл удаляется сразу после расшифровки |
| Фото / PDF | tesseract + poppler на сервере | нет, файл не покидает сервер |
| Сводки по чатам | формируются YandexGPT | да — только текст, на суммаризацию |
| Задачи, копия переписки по проекту | YouGile | да — текст, внешний сервис |
| Резервные копии БД | локально на сервере, раз в сутки | нет |
Отдельная от бота задача — хранение больших проектных файлов.
Объём исходников на проект — от 100 МБ (ИЖС) до 800–900 ГБ (логистический комплекс, 20 000 м², сложная застройка). Это отдельный контур от переписки в MAX — сейчас такого хранилища нет, ниже — оценка требований.
| Категория | Оценка |
|---|---|
| Мелкий проект | 0.1–5 ГБ |
| Средний проект | 5–100 ГБ |
| Крупный проект | 100–900 ГБ |
| Рабочий объём (активные проекты одновременно) | ≈ 2–4 ТБ |
| С учётом архива и роста на 3–5 лет | 8–16 ТБ полезного объёма |
Оценка от заявленных диапазонов, не точная спецификация — уточняется по факту числа параллельных проектов.
| Параметр | Рекомендация |
|---|---|
| Хранилище | RAID6 / ZFS RAIDZ2 — переживает отказ 2 дисков одновременно |
| Полезный объём | от 8–16 ТБ, с запасом на рост |
| Память | ECC RAM — целостность данных при долгом хранении |
| Сеть | от 1 Гбит/с, лучше 10 Гбит/с — файл 900 ГБ по 1 Гбит идёт часами |
| Резервное копирование | отдельная копия вне этой машины (правило 3-2-1) |
| Диски "в состоянии покоя" | шифрование — данные чувствительные |
Как пользоваться ботом в повседневной работе.
Бот в MAX, добавленный в рабочие чаты. Читает переписку, собирает важное (проблемы, упоминания руководителя, заявки) в сводки для ответственных.
При добавлении в чат бот сразу присылает запрос согласия на обработку персональных данных — кнопки «Я согласен» / «Не согласен». Пока человек не нажал «Я согласен», его сообщения не обрабатываются.
| Команда | Что делает | Кому |
|---|---|---|
| /сводка | сводка по чату сейчас | любой участник |
| /задача <текст> | задача в YouGile | любой участник |
| /проект <название> | привязать чат к проекту | ответственные |
| /несогласные | кто не принял согласие | ответственные |
| /доступ <id> | доступ к /сводка внешнему | ответственные |
| /admin, /admin_add | управление ответственными | главный, личка |
Где что лежит на сервере и как это работает.
node:http)| Путь | Что |
|---|---|
| server.ts | вход: HTTP, вебхук, /health |
| bots/handleUpdate.ts | единая точка входа для апдейтов |
| consent/ | согласие на ПДн |
| digest/ | сводки, дедупликация, алерты |
| admin/roles.ts | роли — источник получателей сводок |
| llm/, voice/, photo/ | YandexGPT, whisper, OCR |
| prisma/schema.prisma | модель данных |
# статус, логи, рестарт
systemctl status maxbot.service --no-pager
journalctl -u maxbot.service -f
systemctl restart maxbot.service
# деплой — вручную, без CI
npm run build && # scp изменённых .js в dist/ на сервере, затем restart
Секреты — в .env на сервере. Вебхук переключается через POST/DELETE https://platform-api2.max.ru/subscriptions токеном бота, без веб-кабинета.