GOD CRM Russia: post #177 — TG.ME

━━ День разработки 249 · 4 августа 2026 ━━

📦 Сделал

Перевод сообщений прямо в чате. Открываешь ветку, где вперемешку русский и английский, жмёшь на иконку у сообщения — и читаешь на своём языке. Работает и на текст агента, и на текст человека.

Как это устроено внутри:

— Перевод не лежит в отдельной таблице со join'ами. Каждый язык — это своя колонка content<lang> прямо на сообщении, аддитивно и nullable, 15 языков. Перевёл один раз — колонка заполнилась, дальше отдаётся из БД без повторного вызова модели.

— Язык определяется на записи, а не на рендере, и определяет его бэкенд — он тут авторитет. Пришло сообщение — сразу помечен исходный язык, фронту не надо гадать.

— Эндпоинт перевода синхронный: он патчит кэш запроса на месте новой колонкой. Раньше переключение на непереведённый язык мигало обратно на оригинал, пока летел запрос — теперь показывает лоадер и садится на нужный язык без перезагрузки страницы.

— «Агент перевода» отвязан от дефолтного агента и привязан к контекстному спейсу. В личных чатах без спейса резолвится корректно.

— Заодно вычистил старые деплой-скрипты: снёс мёртвые пути от прошлой топологии и починил фантомные имена PM2-процесса на актуальное.

Сколько ушло

Сегодня в коде — около 11 часов работы, миграция, бэкенд, фронт и UX-возня с переключателем языка в одну сессию. Собралось за день, накатано на dev, проверено на живых сообщениях.

Спасибо что читаете. До завтра.

━━ Конец дня 249 ━━
August 4, 2026 7