Files
Deal/docs/user-guide/Инструкция-пользователя-Дейл.md
T
Rustam Khalimov 27c7831910
ci / build-test (push) Canceled after 0s
Deal — единая кодовая база
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 зелёные.
2026-09-11 23:56:47 +03:00

272 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Дейл (Deal) — Инструкция пользователя
> Версия: 1.3 (этапы 0–12)
> Дата: 2026-09-10
> Назначение: как работать с продуктом — от регистрации до ежедневного использования.
> Описывает итоговое состояние; dev-особенности помечены отдельно.
---
## 1. Регистрация по приглашению
«Дейл» — сервис с доступом по приглашениям: рабочее пространство (тенант) и пользователей заводит
**оператор** (администратор сервиса); самостоятельной регистрации нет.
1. Оператор создаёт приглашение **на вашу почту** — в новое пространство или в уже существующее.
2. Откройте присланную **ссылку приглашения** — откроется страница «Активация приглашения». Введите
**email** (обязательно тот же, на который приглашение), имя пространства (необязательно) и
**пароль** (минимум 8 символов).
3. Нажмите «Активировать аккаунт». Приглашение «на новое пространство» при активации создаёт ваше
рабочее пространство — данные изолированы от других клиентов. Приглашение «в существующее» добавляет
вас пользователем в него.
4. После активации вход — **email + пароль** (система сразу не входит — это отдельный шаг).
Особенности:
- приглашение действует **72 часа**; истекло — оператор пришлёт новое;
- email должен быть свободен: «Этот email уже зарегистрирован» → обратитесь к оператору;
- пароль — **минимум 8 символов**; код в ссылке можно открыть только целиком (без кода страница
сообщит, что ссылка неполная);
- **забыли пароль** — самостоятельного восстановления нет, обратитесь к оператору;
- вход приостановленного пространства невозможен («Учётная запись приостановлена») — вопросы к оператору.
> **Dev-окружение** (разработка/показ): регистрация не нужна — bootstrap-пространство `Default` с входом
> `admin`/`admin`. Демо-ручки/кнопки (`POST /api/demo/*`, флаг `DEAL_DEMO`) удалены — новые карточки
> создаются вручную; в обычной (прод) сборке — штатный контур оператор → инвайт.
---
## 2. Вход в систему
1. Вход — **email + пароль**, созданные при активации приглашения (раздел 1).
2. В dev-окружении — `admin`/`admin` (без приглашения).
3. Выход/смена пароля завершают текущую сессию.
> Все данные (каналы, карточки, настройки) принадлежат только вашему пространству и не видны другим
> клиентам. Оператор видит только служебное: список пространств и их статусы, аудит входов/выходов и
> действий (включая действия пользователей), расход ИИ-бюджета; к содержимому ваших данных и настроек
> доступа у оператора нет.
---
## 3. Первый запуск: подключение Telegram
Приложение Telegram работает через **api_id и api_hash**. Их задаёт **оператор сервиса** глобально
(раздел «Telegram» в оператор-консоли) — тенант ключи не вводит. Запущенные сервисы (полный стек)
поднимает оператор. В dev-окружении без стека раздел показывает неподключённый статус.
1. Убедитесь, что оператор задал ключи приложения (без них подключение недоступно).
2. Перейдите в раздел **«Настройки → Telegram»** и нажмите **«Добавить аккаунт»**.
3. Отсканируйте **QR-код** (или введите телефон + код подтверждения).
4. Дождитесь статуса «Telegram подключён». Сессия сохраняется — повторный вход не нужен.
После подключения система загрузит список ваших каналов и групп. Ключи приложения хранятся зашифрованно
на стороне сервиса.
---
## 4. Каналы и источники
Раздел **«Каналы»** — список диалогов вашего аккаунта и управление мониторингом.
- **Включить мониторинг** у нужного канала/группы — система начнёт читать новые сообщения.
- **«Перечитать»** — догнать последние ~10 сообщений всех включённых источников (например, после подключения).
- **Включить все** — включить мониторинг всех каналов разом.
- Новые чаты, которые вы добавили в Telegram, появятся в списке автоматически.
Если включена настройка «новый чат → мониторинг», они начнут читаться сами.
- Удалённые/покинутые чаты исчезают из списка.
- Прочитанные системой сообщения помечаются прочитанными и в вашем Telegram.
### Поиск новых каналов (Discovery)
Во вкладке **«Каналы → Поиск»** можно найти новые источники по вашей теме:
1. Нажмите **«Новая задача»**, опишите, что ищете (например: «каналы с вакансиями для C#-разработчика»).
2. Нажмите **«Сгенерировать ключи»** — ИИ предложит поисковые слова (можно отредактировать).
3. Задайте параметры: минимум подписчиков, язык, план вступлений, авто-вступление.
4. Запустите задачу. Система найдёт каналы/группы, в которых вы **не состоите**, и оценит их
(участники, язык, содержание — «подходит X из N»).
5. В списке кандидатов выберите действие:
- **«Вступить и мониторить»** — система вступит и начнёт читать;
- **«Отклонить»** — источник уйдёт в чёрный список и больше не будет предлагаться.
6. Закрытые группы/каналы помечаются — в них система вступить не может, решение за вами.
7. **Авто-вступление**: если включено, система вступает сама с паузами и в рамках
суточного лимита (настройки квот — в этом же разделе). Общий лимит делится между задачами.
---
## 5. Дашборд (карточки)
**«Дашборд»** — канбан с колонками. Карточка здесь и на экране «Выбранные» — **одна и та же
сущность**: сняв её с дашборда «В работу», вы не создаёте копию, а переносите карточку в стадии.
- **Неразобранное** — сообщения, которые не подошли ни под одну колонку.
- **Ваши колонки** — например, «WPF», «Фриланс», «Резюме» — куда система складывает подходящие карточки.
- **Архив** и **Корзина** — служебные.
### Карточка
На карточке: тип заявки (вакансия/заказ), время, заголовок, структурированная суть
(компания → формат → о задаче → требования → условия), стек, бюджет (в валюте и в пересчёте),
контакт и быстрые действия. Свежие карточки — сверху.
Действия с карточкой:
- **«Взять в работу»** — перенести карточку на экран «Выбранные» (в стадию «Запланировано»);
это тот же объект, а не копия;
- **клик по карточке** — подробный просмотр (справа);
- **комментарий** — иконка сообщения;
- **в корзину** — иконка корзины;
- **перетащить** в другую колонку — система запомнит (ML обучится) и в следующий раз
похожие заявки положит туда же;
- **контакт** — скопировать или открыть диалог;
- **«Открыть исходник»** — перейти к оригинальному сообщению в Telegram.
В подробном просмотре доступны: полная структура заявки, исходное сообщение (под спойлером),
комментарии, история, действия.
### Колонки
- **Создать колонку** — задайте имя, описание и фильтры (ключевые слова, стек, уровень,
бюджет, локация и т.д.). Все фильтры опциональны и могут сочетаться.
- **Отрицательные фильтры** — что НЕ должно попадать в колонку (например, без английского языка).
- ИИ может **предлагать колонки** по вашим карточкам — вы решаете: принять, переименовать или удалить.
- В карточке видно, **по каким критериям** она попала в колонку.
- Колонки можно сворачивать в виджет-счётчик, двигать, менять ширину, разворачивать на весь экран.
### Архив и корзина
- В **архив** карточки уходят автоматически, если лежат дольше установленного срока
(настройка 1–30 дней). Архив очищается через 90 дней.
- В **корзину** попадают удалённые карточки; очищается раз в 7 дней.
- Из архива/корзины карточку можно **вернуть** на канбан, пока её не очистили.
- Полная ручная очистка архива/корзины — кнопка в шапке колонки (безвозвратно).
---
## 6. «Выбранные» (работа с заявками)
Экран **«Выбранные»** — канбан для **тех же карточек**, которые вы взяли в работу (не копии):
1. Возьмите карточку с дашборда кнопкой **«Взять в работу»** — система перенесёт её в стадию
«Запланировано» (или создайте вручную — будет пометка «создано локально»).
2. Ведите её по стадиям: *Запланировано → Отклик → Согласование → В работе → Проверка → Готово* (или «Отложено»).
3. Перетаскивайте карточки между стадиями; наполняйте модули карточки (сумма, стек, контакты, ссылки,
ТЗ, файлы, комментарии).
В карточке «Выбранных» доступно:
- комментарии и **история движения** (статус, дата, время — под спойлером);
- изменение суммы, стека, контактов;
- прикрепление **ссылок** и **текста ТЗ**;
- прикрепление **файлов** (изображения, документы и др. — тип определяется автоматически);
на карточке видны значки количества файлов и ссылок.
Особенности:
- карточки «Выбранных» **не попадают** в архив/корзину дашборда; свои состояния — «Отклонено» и «Выполнено»;
- **«Отложено»**: при переносе система спросит, через какой срок напомнить и в какое время
(можно выбрать дату в календаре). Если напоминания выключены в настройках — окно не появится.
---
## 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. Язык интерфейса
Интерфейс «Дейла» — на русском. Все тексты (кнопки, подписи, подсказки, пустые состояния, уведомления,
экраны оператора и страница активации) хранятся в словарях-ресурсах, а не в самих экранах.
Переключателя языка нет — интерфейс всегда на русском.