Техническое задание (ТЗ) 0. Цель проекта Создать CRM‑систему с авторизацией по Telegram и разграничением прав, учитывающую финансовые операции по банковским счетам нескольких компаний, контроль криптоплатежей и полнофункциональный модуль задач с управлением прогрессом. 1. Термины и определения • CRM — система управления взаимоотношениями с клиентами. • RBAC — ролевое управление доступом (Role‑Based Access Control). • Компания — юридическое лицо заказчика, имеющее банковские счета и/или криптокошельки. • Контрагент — клиент или поставщик. • Выписка — выгрузка операций по банковскому счету. • Криптоплатеж — входящая/исходящая транзакция в сети блокчейн или на бирже. • Курс — справочник курсов покупки/продажи для конвертации и учета PnL. 2. Роли и права (RBAC) 2.1. Базовые роли • Администратор — управление пользователями, ролями, настройками, интеграциями, аудитом. • Финансовый менеджер — загрузка выписок, категоризация, сверка, отчеты. • Бухгалтер — контроль учета, правила распределения, экспорт для бухгалтерии. • Менеджер продаж — работа с клиентами/сделками, задачи, доступ к своим данным. • Руководитель — сводные отчеты, дашборды, утверждение платежей. • Крипто-оператор — кошельки, биржи, переводы, контроль курсов. • Наблюдатель — только чтение по назначенным разделам. 2.2. Матрица доступа (пример) Раздел Админ Фин.мен Бух Менеджер Руководитель Крипто-оператор Наблюдатель Пользователи/Роли R/W — — — R — — Компании/Счета R/W R R R(свои клиенты) R R R Банковские выписки R/W R/W R/W — R — R Категории/Правила R/W R/W R/W — R R R Криптокошельки/Биржи R/W R R — R R/W R Курсы/PNL R/W R/W R/W — R R/W R Задачи R/W R/W R/W R/W(свои) R/W R/W R Отчеты/Дашборды R/W R/W R/W R(свои) R/W R/W R Аудит/Логи R/W R R — R R R 3. Аутентификация и безопасность • Вход через Telegram: Telegram Login Widget + Bot для подтверждения. Связка аккаунта пользователя с Telegram ID. • Подтверждение входа (2FA через TG): при новом устройстве/IP отправлять код/кнопку подтверждения в Telegram‑бот. • Разграничение доступов: RBAC на уровне разделов, компаний и записей (row‑level security по компании и «свои/чужие клиенты»). • Пароли (опционально): возможность резервной e‑mail/пароль авторизации (вне MVP — по решению). • SSO‑сессии: JWT с ротацией refresh‑токенов, срок жизни настраиваемый. • Шифрование: TLS 1.2+, шифрование чувствительных данных на уровне БД (кошельки, токены API). • Аудит: журнал аутентификаций, изменений справочников и финансовых операций. 4. Компании и справочники • Многокомпанейность: пользователь может иметь доступ к 1..N компаниям. • Справочники: контрагенты, категории платежей (до 3 уровней), проекты, статьи доходов/расходов, валюты, курсы, сотрудники. • Настройки компании: валюты учета, налоговые параметры, банковские счета, кошельки/биржи. 5. Банковские выписки (несколько компаний) 5.1. Источники данных • API банков (если доступны; подключение по токенам/ключам). • Импорт файлов: CSV/Excel, MT940, ISO20022 (pain/camt), выгрузки банков. 5.2. Обработка • Нормализация операций: дата, сумма, валюта, назначение, контрагент, счет, категория, ссылка на документ. • Мультивалюта и курсы ЦБ/биржевые — для пересчета в валюту учета. • Правила автоклассификации: по маскам текста, IBAN/BIC, ИНН/КПП, суммам, корр.счетам, тегам; приоритеты правил; симуляция перед применением. • Ручная категоризация + массовые операции. • Привязка к клиентам/поставщикам: сопоставление с контрагентом и проектом. • Сверка: дедупликация, поиск «висячих» платежей, акты сверки по периоду. • Подгруппы платежей: назначение подкатегорий (например, «эквайринг», «налоги», «зарплата» и т.п.). 5.3. Отчеты • ДДС (движение денежных средств) по компаниям/счетам/категориям/проектам. • Топ‑клиенты/поставщики, периодические платежи, прогноз кассовых разрывов. • Экспорт в Excel/CSV/1C/ERP (форматы оговариваются). 6. Криптоплатежи 6.1. Источники • Подключение кошельков (адреса) по сетям: BTC, ETH/ EVM, TRON (USDT TRC‑20), и др. — отслеживание входящих/исходящих транзакций. • Подключение к биржам через API (ключ/секрет) для спотовых операций. 6.2. Учет и контроль • Синхронизация транзакций (hash, time, amount, fee, token, from/to, tx status). • Назначение владельца/пользователя операции (распределение по пользователям). • Разделение по компаниям и кошелькам. • Курсы покупки/продажи: хранение «своего» курса сделки (order/tx price) и справочного курса (для отчетности), фиксирование PnL. • Конвертация в валюту учета, учет комиссий сети/биржи. • Маркеры риска (whitelist/blacklist адресов), комментарии и вложения по транзакциям. 6.3. Отчеты • Остатки по токенам/фиату на дату. • Движение по кошелькам/биржам, PnL по периодам и пользователям. • Регистр покупок/продаж по установленным курсам. 7. Модуль задач • Карточка задачи: заголовок, описание (Markdown), исполнитель, постановщик, соисполнители, приоритет, сроки (start/due), статусы (Backlog → In Progress → In Review → Done/Cancelled), теги, связь с клиентом/платежом/транзакцией/проектом. • Процесс/ход выполнения: чек‑листы, подзадачи, вложения, комментарии, лог изменений. • Виджеты представлений: Канбан, список, календарь, Гантт (MVP — Канбан/список, остальное — фаза 2). • Контроль исполнения: SLA по типу задач, уведомления (TG‑бот, e‑mail), эскалации руководителю при просрочке. • Шаблоны: автосоздание задач по событиям (например, «поступил платеж без категории» → задача финансовому менеджеру). • Поиск и фильтры: по статусу, исполнителю, срокам, компании, привязке к операциям. 8. Пользовательские сценарии (User Stories) 1. Как финансовый менеджер, я импортирую выписку по двум компаниям, система автоматически размечает 80% операций по правилам, остальным создает задачи на разбор. 2. Как крипто-оператор, я подключаю биржу и кошельки, вижу ленту транзакций с курсами сделки и распределяю по пользователям. 3. Как руководитель, я открываю дашборд ДДС и PnL по компаниям за месяц и утверждаю крупные исходящие платежи. 4. Как менеджер, я получаю в Telegram уведомление о новой задаче, комментирую и отмечаю чек‑лист. 9. Интерфейсы и UX (MVP) • Дашборд: карточки «ДДС за 30 дней», «Остатки по счетам/кошелькам», «Просроченные задачи», «Неразмеченные платежи». • Финансы → Банки: список компаний → счета → операции; панель массовой категоризации; конструктор правил; загрузка файлов/API‑подключения. • Финансы → Крипто: кошельки/биржи → лента транзакций → распределение по пользователям; курсы и PnL. • Контрагенты: каталог клиентов/поставщиков, привязка к операциям и задачам. • Задачи: Канбан/список, карточка задачи, фильтры, SLA‑индикаторы. • Администрирование: пользователи, роли, компании, интеграции, аудит. 10. Интеграции и уведомления • Telegram‑бот: вход/подтверждение, пуш‑уведомления о задачах/событиях, быстрые действия (кнопки «Принять», «В работу», «Готово»). • Банковские API / Импорт файлов. • Биржи/блокчейны через публичные API/провайдеров (детализация на этапе проектирования). • E‑mail уведомления (по роли и событию), Webhooks (вне MVP — опция). 11. Данные и модель (основные сущности) • User(id, tg_id, email?, name, status) • Role(id, name), UserRole(user_id, role_id), Permission(id, code), RolePermission(role_id, perm_id) • Company(id, name, currency, settings) • BankAccount(id, company_id, bank, iban/number, currency) • BankStatement(id, account_id, period_from, period_to, source) • BankTransaction(id, statement_id, date, amount, currency, balance?, description, counterparty_id?, category_id?, project_id?, rule_id?, status) • Counterparty(id, type, name, inn/kpp?, accounts[]) • Category(id, parent_id?, name, type: income/expense/transfer) • Rule(id, company_id, pattern, fields_to_set, priority, enabled) • Wallet(id, company_id, network, address, label) • ExchangeAccount(id, company_id, exchange, api_key_hash, enabled) • CryptoTransaction(id, source, tx_hash/order_id, datetime, asset, qty, price, fee, side, wallet_id?/exchange_id?, user_id?, counterparty_addr?, status, category_id?) • Rate(id, date_time, asset/base, price, source, type: trade/ref) • Task(id, title, desc, status, priority, creator_id, assignee_id, company_id, due_at, related_type, related_id) • TaskComment(id, task_id, author_id, text, created_at) • Attachment(id, owner_type, owner_id, file_path, mime, uploaded_by) • AuditLog(id, actor_id, action, entity, entity_id, before, after, ip, created_at) 12. API (черновой контракт) Аутентификация • POST /auth/tg/start → nonce + deeplink в бота. • POST /auth/tg/verify → проверка подписи Telegram, выдача JWT. • POST /auth/refresh. Банки • POST /companies/{id}/bank-accounts/{accId}/statements:import (file/API) • GET /bank-transactions?filters… • POST /bank-transactions/{id}:categorize • POST /rules / PUT /rules/{id} Крипто • POST /wallets / GET /wallets/{id}/tx • POST /exchanges / GET /exchanges/{id}/orders • POST /crypto-tx/{id}:assign-user • POST /rates (фикс курсов сделок) Задачи • GET /tasks / POST /tasks • PATCH /tasks/{id} (статус, сроки, ответственный) • POST /tasks/{id}/comments Прочее • GET /reports/cashflow • GET /reports/crypto/pnl • GET /audit 13. Бизнес‑правила • Категории платежей взаимно‑исключающие, одна основная + до 2 подкатегорий. • Каждая транзакция принадлежит ровно одной компании. • Курсы сделок в крипто фиксируются неизменяемо; пересчет отчетов — по справочным курсам на конец дня. • Правила автоклассификации исполняются сверху вниз по приоритету, логика — «первое совпадение». • SLA задачи: «Высокий» — 1 рабочий день, «Средний» — 3, «Низкий» — 5; просрочка → эскалация. 14. Нефункциональные требования • Производительность: 95‑й перцентиль ответа API ≤ 500 мс при 200 RPS (MVP цели). Импорт 10k операций ≤ 60 сек. • Доступность: 99.5% (MVP), журнал инцидентов. • Масштабируемость: горизонтальное масштабирование API и очередей обработки. • Безопасность: OWASP ASVS L2, защита от CSRF/XSS/SQLi, ограничение попыток входа, IP allowlist для админки. • Конфиденциальность: GDPR/локальные требования, маскирование персональных данных в логах. • Бэкапы: полные дневные + журналы WAL; RPO ≤ 15 мин, RTO ≤ 2 ч. • Логи и мониторинг: централизованный сбор (ELK/Cloud), алерты. 15. Технологический стек (рекомендация, можно изменить) • Backend: Node.js (NestJS) или Python (FastAPI); RBAC, очереди (RabbitMQ/Redis), планировщик (Celery/BullMQ). • DB: PostgreSQL (row‑level security), Timescale/вьюхи для отчетов. • Frontend: React + TypeScript, UI библиотека (MUI/Ant), Kanban (dnd‑kit/React Beautiful DnD). • Интеграции: Telegram Bot API, банковские/биржевые API через коннекторы. • Развертывание: Docker/K8s, GitOps, environments: Dev/Staging/Prod. 16. Импорт/миграция • Шаблоны CSV/Excel; сопоставление колонок; предпросмотр и валидация. • История загрузок, повторная обработка, отчет об ошибках. 17. Тестирование и приемка 17.1. Критерии приемки (MVP) • Авторизация через Telegram + подтверждение нового устройства. • Создание компаний, банковских счетов; импорт выписки CSV → ≥80% автокатегоризации по настроенным правилам. • Отчеты ДДС по компании и счету за период. • Подключение хотя бы 1 сети кошельков и 1 биржи; загрузка и отображение транзакций; фиксация курса сделки; PnL отчет за период. • Модуль задач: создание/назначение, Канбан, комментарии, SLA уведомления в Telegram. • RBAC: пользователь не видит данные чужих компаний и задач, если не назначен доступ. • Аудит ключевых действий в журнале. 17.2. Тесты • Unit/Integration/E2E; тестовые наборы для правил классификации и импорта. 18. План релизов (оценочно) • Этап 1 (MVP, 6–8 недель): аутентификация TG, компании/счета, импорт CSV, правила, базовые отчеты ДДС, кошельки одной сети, задачи (Канбан), уведомления TG. • Этап 2: API банков/биржи, многосети, PnL расширенный, Гантт/календарь, вебхуки, экспорты 1С/ERP. • Этап 3: риск‑метрики крипто, прогноз cash‑flow, approval‑воркфлоу платежей, мобильное приложение. 19. Риски и допущения • Доступность банковских API может требовать аккредитации/договоров; на MVP — приоритет файлового импорта. • Ограничения по лимитам бирж/провайдеров; хранение ключей — в Secret Manager. • Регуляторные требования к хранению персональных/платежных данных — уточнить юристами. 20. Out of Scope (MVP) • Полный бухгалтерский учет (двойная запись, налоговые декларации). • Автоматические платежи из системы. • Мобильные приложения (только адаптивная веб‑версия). 21. Приложения • Образцы CSV/MT940 полей (будут добавлены при проектировании). • Примеры шаблонов задач (онбординг платежей, сверки, разбор «неузнанных» операций).