SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
24 KiB
Дейл (Deal) — Инструкция пользователя
Версия: 1.3 (этапы 0–12) Дата: 2026-09-10 Назначение: как работать с продуктом — от регистрации до ежедневного использования. Описывает итоговое состояние; dev-особенности помечены отдельно.
1. Регистрация по приглашению
«Дейл» — сервис с доступом по приглашениям: рабочее пространство (тенант) и пользователей заводит оператор (администратор сервиса); самостоятельной регистрации нет.
- Оператор создаёт приглашение на вашу почту — в новое пространство или в уже существующее.
- Откройте присланную ссылку приглашения — откроется страница «Активация приглашения». Введите email (обязательно тот же, на который приглашение), имя пространства (необязательно) и пароль (минимум 8 символов).
- Нажмите «Активировать аккаунт». Приглашение «на новое пространство» при активации создаёт ваше рабочее пространство — данные изолированы от других клиентов. Приглашение «в существующее» добавляет вас пользователем в него.
- После активации вход — email + пароль (система сразу не входит — это отдельный шаг).
Особенности:
- приглашение действует 72 часа; истекло — оператор пришлёт новое;
- email должен быть свободен: «Этот email уже зарегистрирован» → обратитесь к оператору;
- пароль — минимум 8 символов; код в ссылке можно открыть только целиком (без кода страница сообщит, что ссылка неполная);
- забыли пароль — самостоятельного восстановления нет, обратитесь к оператору;
- вход приостановленного пространства невозможен («Учётная запись приостановлена») — вопросы к оператору.
Dev-окружение (разработка/показ): регистрация не нужна — bootstrap-пространство
Defaultс входомadmin/admin. Демо-ручки/кнопки (POST /api/demo/*, флагDEAL_DEMO) удалены — новые карточки создаются вручную; в обычной (прод) сборке — штатный контур оператор → инвайт.
2. Вход в систему
- Вход — email + пароль, созданные при активации приглашения (раздел 1).
- В dev-окружении —
admin/admin(без приглашения). - Выход/смена пароля завершают текущую сессию.
Все данные (каналы, карточки, настройки) принадлежат только вашему пространству и не видны другим клиентам. Оператор видит только служебное: список пространств и их статусы, аудит входов/выходов и действий (включая действия пользователей), расход ИИ-бюджета; к содержимому ваших данных и настроек доступа у оператора нет.
3. Первый запуск: подключение Telegram
Приложение Telegram работает через api_id и api_hash. Их задаёт оператор сервиса глобально (раздел «Telegram» в оператор-консоли) — тенант ключи не вводит. Запущенные сервисы (полный стек) поднимает оператор. В dev-окружении без стека раздел показывает неподключённый статус.
- Убедитесь, что оператор задал ключи приложения (без них подключение недоступно).
- Перейдите в раздел «Настройки → Telegram» и нажмите «Добавить аккаунт».
- Отсканируйте QR-код (или введите телефон + код подтверждения).
- Дождитесь статуса «Telegram подключён». Сессия сохраняется — повторный вход не нужен.
После подключения система загрузит список ваших каналов и групп. Ключи приложения хранятся зашифрованно на стороне сервиса.
4. Каналы и источники
Раздел «Каналы» — список диалогов вашего аккаунта и управление мониторингом.
- Включить мониторинг у нужного канала/группы — система начнёт читать новые сообщения.
- «Перечитать» — догнать последние ~10 сообщений всех включённых источников (например, после подключения).
- Включить все — включить мониторинг всех каналов разом.
- Новые чаты, которые вы добавили в Telegram, появятся в списке автоматически. Если включена настройка «новый чат → мониторинг», они начнут читаться сами.
- Удалённые/покинутые чаты исчезают из списка.
- Прочитанные системой сообщения помечаются прочитанными и в вашем Telegram.
Поиск новых каналов (Discovery)
Во вкладке «Каналы → Поиск» можно найти новые источники по вашей теме:
- Нажмите «Новая задача», опишите, что ищете (например: «каналы с вакансиями для C#-разработчика»).
- Нажмите «Сгенерировать ключи» — ИИ предложит поисковые слова (можно отредактировать).
- Задайте параметры: минимум подписчиков, язык, план вступлений, авто-вступление.
- Запустите задачу. Система найдёт каналы/группы, в которых вы не состоите, и оценит их (участники, язык, содержание — «подходит X из N»).
- В списке кандидатов выберите действие:
- «Вступить и мониторить» — система вступит и начнёт читать;
- «Отклонить» — источник уйдёт в чёрный список и больше не будет предлагаться.
- Закрытые группы/каналы помечаются — в них система вступить не может, решение за вами.
- Авто-вступление: если включено, система вступает сама с паузами и в рамках суточного лимита (настройки квот — в этом же разделе). Общий лимит делится между задачами.
5. Дашборд (карточки)
«Дашборд» — канбан с колонками. Карточка здесь и на экране «Выбранные» — одна и та же сущность: сняв её с дашборда «В работу», вы не создаёте копию, а переносите карточку в стадии.
- Неразобранное — сообщения, которые не подошли ни под одну колонку.
- Ваши колонки — например, «WPF», «Фриланс», «Резюме» — куда система складывает подходящие карточки.
- Архив и Корзина — служебные.
Карточка
На карточке: тип заявки (вакансия/заказ), время, заголовок, структурированная суть (компания → формат → о задаче → требования → условия), стек, бюджет (в валюте и в пересчёте), контакт и быстрые действия. Свежие карточки — сверху.
Действия с карточкой:
- «Взять в работу» — перенести карточку на экран «Выбранные» (в стадию «Запланировано»); это тот же объект, а не копия;
- клик по карточке — подробный просмотр (справа);
- комментарий — иконка сообщения;
- в корзину — иконка корзины;
- перетащить в другую колонку — система запомнит (ML обучится) и в следующий раз похожие заявки положит туда же;
- контакт — скопировать или открыть диалог;
- «Открыть исходник» — перейти к оригинальному сообщению в Telegram.
В подробном просмотре доступны: полная структура заявки, исходное сообщение (под спойлером), комментарии, история, действия.
Колонки
- Создать колонку — задайте имя, описание и фильтры (ключевые слова, стек, уровень, бюджет, локация и т.д.). Все фильтры опциональны и могут сочетаться.
- Отрицательные фильтры — что НЕ должно попадать в колонку (например, без английского языка).
- ИИ может предлагать колонки по вашим карточкам — вы решаете: принять, переименовать или удалить.
- В карточке видно, по каким критериям она попала в колонку.
- Колонки можно сворачивать в виджет-счётчик, двигать, менять ширину, разворачивать на весь экран.
Архив и корзина
- В архив карточки уходят автоматически, если лежат дольше установленного срока (настройка 1–30 дней). Архив очищается через 90 дней.
- В корзину попадают удалённые карточки; очищается раз в 7 дней.
- Из архива/корзины карточку можно вернуть на канбан, пока её не очистили.
- Полная ручная очистка архива/корзины — кнопка в шапке колонки (безвозвратно).
6. «Выбранные» (работа с заявками)
Экран «Выбранные» — канбан для тех же карточек, которые вы взяли в работу (не копии):
- Возьмите карточку с дашборда кнопкой «Взять в работу» — система перенесёт её в стадию «Запланировано» (или создайте вручную — будет пометка «создано локально»).
- Ведите её по стадиям: Запланировано → Отклик → Согласование → В работе → Проверка → Готово (или «Отложено»).
- Перетаскивайте карточки между стадиями; наполняйте модули карточки (сумма, стек, контакты, ссылки, ТЗ, файлы, комментарии).
В карточке «Выбранных» доступно:
- комментарии и история движения (статус, дата, время — под спойлером);
- изменение суммы, стека, контактов;
- прикрепление ссылок и текста ТЗ;
- прикрепление файлов (изображения, документы и др. — тип определяется автоматически); на карточке видны значки количества файлов и ссылок.
Особенности:
- карточки «Выбранных» не попадают в архив/корзину дашборда; свои состояния — «Отклонено» и «Выполнено»;
- «Отложено»: при переносе система спросит, через какой срок напомнить и в какое время (можно выбрать дату в календаре). Если напоминания выключены в настройках — окно не появится.
7. Обработка (очередь и отсев)
Раздел «Обработка» — что происходит с сообщениями до карточек.
- Очередь — сырые сообщения, ждущие обработки. Обычно быстро пустеет.
- Отсев — что система отклонила и почему:
- «правила» — стоп-фраза (указана), резюме, тип заявки, нет суммы;
- «ML» / «ИИ» — модель или ИИ посчитали сообщение спамом/не вашим;
- «система» — устарело или повтор (карточка уже есть).
- У записи: кнопка «Открыть исходник» (в Telegram) и исходное сообщение с форматированием.
- Поиск по отсеву — полный текст.
- «Вернуть в обработку»: если система ошиблась — верните сообщение, и оно создаст карточку. Причины отсева для него будут проигнорированы, а система обучится на вашем решении.
- Отсев очищается автоматически раз в 3 дня (можно очистить вручную).
8. Настройки
Настройки → Telegram: подключение аккаунта, авто-мониторинг новых чатов.
Настройки → ИИ:
- провайдер и модель (можно выбрать один, включая локальные OpenAI-совместимые);
- ключ API (хранится зашифрованно);
- промпты: базовый (не меняется) + свой промпт; библиотека готовых промптов по сферам с поиском и категориями; сохранённые свои промпты («Мои промпты»);
- вкл/выкл ИИ и ИИ-фильтр. Если ML уже уверенно обрабатывает поток — система подскажет, что ИИ можно отключить.
Настройки → ML: включение, обучение на ваших действиях, проверка модели на сообщении/канале, сброс обучения, показатели самооценки.
Настройки → Обработка: стоп-фразы, минимальная длина, блокировка резюме, тип заявок, ключевые слова вашей сферы. Глобальные исключения — ключевые слова/технологии, локации, тип (вакансия/фриланс/объявление) и диапазон бюджета: такие сообщения отсекаются сразу, ещě до ML и ИИ (токены не расходуются). Отдельно — «не создавать карточку без суммы» (для вакансий и заказов отдельно).
Настройки → Валюта и курсы: валюта отображения, конвертация при получении, пересчёт старых карточек при смене валюты.
Настройки → Хранение: срок до архива (1–30 дней), очистка архива и корзины.
Настройки → Уведомления: общие напоминания и уведомления (в т.ч. об отложенных).
Настройки → Внешний вид: тема оформления — «Тёмная» (по умолчанию), «Светлая» или «Системная». Переключается мгновенно и запоминается.
9. ИИ-бюджет и уведомления
Обработка сообщений использует ИИ (классификация, ИИ-фильтр, генерация ключевых слов). У каждого пространства — ИИ-бюджет (обычно месячный, в токенах), который устанавливает оператор.
- При расходе 80% бюджета приходит уведомление «ИИ-бюджет израсходован на 80%».
- При исчерпании — уведомление «ИИ-бюджет исчерпан — обработка в локальном режиме»: система автоматически переходит на локальную обработку (правила/ML без ИИ); приём и разбор сообщений не останавливается, но глубина разбора снижается.
- Увеличить бюджет/сменить период может только оператор; после смены предупреждения сбрасываются.
- При приостановке пространства вход и ИИ-обработка недоступны — обратитесь к оператору.
- Системные уведомления (архив/очистки, подключение Telegram, бюджет) приходят значком-колокольчиком в интерфейсе.
10. Советы
- Начните с подключения аккаунта → включите 2–3 канала → нажмите «Перечитать».
- Создайте колонки под ваши типичные заказы и задайте им фильтры.
- Переносите карточки руками — система учится и скоро начнёт раскладывать сама.
- Заглядывайте в «Отсев»: если там ваши реальные заказы — верните их, система исправится.
- Проверяйте вкладку «ИИ»: когда ML станет уверенной, можно отключить ИИ и сэкономить токены.
11. Для оператора сервиса (консоль)
Этот раздел — для администратора сервиса «Дейл». Обычным пользователям он не нужен.
Оператор управляет сервисом из отдельной консоли: она открывается по адресу основного приложения
с добавлением #/operator (например, https://<адрес-сервиса>/#/operator). Консоль — отдельный
вход со своими учётными данными (логин/пароль выдаёт владелец сервиса).
Разделы консоли:
- Тенанты — список рабочих пространств с числом пользователей и статусом. Здесь можно создать пространство (при необходимости сразу с владельцем — ему выдаётся одноразовый пароль), приостановить и возобновить доступ, а также войти от имени пользователя пространства (impersonation) — удобно для поддержки; завершается обычным выходом.
- Приглашения — создание приглашения на email (в новое или существующее пространство), отзыв и копирование ссылки активации, которую вы передаёте клиенту.
- Лимиты ИИ — сводка расхода ИИ-бюджета по пространствам; можно изменить месячный/дневной бюджет и период. После смены предупреждения о расходе сбрасываются.
- Аудит — лента действий (входы, выходы, приглашения, действия пользователей, изменения по пространствам и лимитам) с фильтрами по типу события, актору, пространству и периоду; есть пагинация.
- Аналитика — обзор за период (число пространств, расход токенов, входы/выходы/неудачные входы), расход токенов с группировкой по дням/пространствам/провайдерам/моделям и лента действий.
- Состояние системы — доступность ядра, базы данных и сервисов (Telegram, ИИ, ML).
Dev-окружение: вход в консоль —
operator/operator. В обычной (прод) сборке учётные данные оператора задаются владельцем сервиса при развёртывании.
12. Язык интерфейса
Интерфейс «Дейла» — на русском. Все тексты (кнопки, подписи, подсказки, пустые состояния, уведомления, экраны оператора и страница активации) хранятся в словарях-ресурсах, а не в самих экранах. Переключателя языка нет — интерфейс всегда на русском.