Telegram-акаунтиBusiness APIТаблиця виплатGoogle SheetsЄдина скринькаПрава на поля5 рівнівЗвірка27 колонокМенеджерилише свої поляЧерга виплату бот клієнта
Задача.
Угоди, гаманці й ставки були розкидані по особистих чатах. Коли менеджер ішов, історія йшла разом із ним. Виплати перевіряли вручну по таблиці з десятками колонок, а чутливі поля бачив кожен, хто мав посилання.
Що ми зробили.
- Telegram-чати всередині CRM з багатьох акаунтів: пошук, закріплення, редагування, медіа, пересилання й передача чату колезі.
- Два способи підключити акаунт. За замовчуванням офіційний Business API, бо він не несе ризику бану; вхід через сесію як запасний, із шифруванням на диску.
- Права на рівні полів, п’ять рівнів від "приховано" до "експорт". Приховане поле не потрапить ні в картку, ні в список, ні в пошук, ні у файл експорту.
- Звірка виплат на 27 колонок, яка читає Google Таблицю клієнта за назвами заголовків, тож перестановка колонок нічого не ламає. Результати пишуться назад у таблицю.
- Сповіщення за правилами, наприклад коли в чаті з’являється новий гаманець, і журнал усіх критичних змін.
Рішення, які варто пояснити.
Права на рівні відповіді сервера, а не інтерфейсу
Сховати поле в інтерфейсі недостатньо: сервер просто його не віддає. Це закриває витоки через пошук, експорт та API одразу.
Один постійний клієнт на акаунт
Відкриття чату скоротилося з кількох секунд до приблизно 0.3 с, коли кожен акаунт отримав постійне з’єднання замість перепідключення на кожен запит.
У цифрах.
620+живих перевірок на запущеному сервері перед здачею
0.3 sна відкриття чату замість кількох секунд
16екранів, від чатів до фінансів та аналітики
19правок клієнта закрито за одне коло
Стек
- FastAPI
- SQLAlchemy 2
- PostgreSQL
- React
- TypeScript
- Telegram Business API
- Telethon
- Google Sheets API
- nginx
- systemd
Потрібно щось подібне?
Опишіть свій процес. Скажемо, які частини цієї системи вам підходять і скільки це коштуватиме.
Хочу так самоЄ процес, що з’їдає ваші вечори?