Звучит как мем про стартап, который пытается быть всем сразу. Я сам так думал примерно до середины разработки. Но в итоге мы это собрали, выкатили в App Store и Google Play, и теперь команды реально ведут в этом проекты. Расскажу, как оно устроено внутри, что было тупо, что неожиданно сработало, и где я до сих пор не уверен, что мы поступили правильно.
Сразу оговорюсь: это не «убийца Jira» и не «убийца Slack». Это попытка убрать одну конкретную боль, на которую я смотрел несколько лет.

Боль, из-за которой всё началось
Возьмите любую небольшую команду. Задачи живут в Jira или Trello. Обсуждение задач идёт в Telegram. Решения принимаются на созвоне в Zoom. Цифры лежат в Google Sheets. Деньги в 1С. А половина важного вообще теряется в переписке, потому что кто-то скинул голосовое, на него ответили реакцией, и через неделю никто не помнит, договорились мы или нет.
Я насчитал у себя пять открытых вкладок только чтобы понять статус одной задачи. Открыл таск, пошёл в чат искать контекст, нашёл ссылку на гуглдок, в гуглдоке ссылка на сообщение, сообщение удалено. Знакомо?
Самое обидное тут не количество инструментов. Обидно, что контекст рвётся на стыках. Задача в одном месте, разговор о ней в другом, а решение по ней в третьем. И на каждом переходе что-то теряется.
Мысль была простая до неприличия: а что если разговор, задача и решение будут жить в одном месте? Не «интеграция Jira со Slack через вебхук», а буквально одно окно. Чат, в котором у проекта есть свои задачи, свои цели и свой бюджет.
Главная идея: чат и есть рабочее место
В обычном режиме ONEMIX это мессенджер со сквозным шифрованием. Чаты, звонки, контакты. Ничего необычного.
Когда включаешь режим «Бизнес» (тумблер в профиле, привязан к аккаунту на сервере), поверх мессенджера разворачивается слой управления. И главная единица в нём это Орбита.
Орбита это групповой чат, который открывается не как переписка, а как рабочее пространство проекта. У него внутри команда, цели, задачи, деньги, риски и встроенный чат для обсуждения. То есть переписка по проекту никуда не уезжает, она просто становится одной из вкладок, а не отдельным приложением.


Вкладок семь, и за каждой стоит реальная сущность, а не картинка для красоты:
-
Обсуждение это тот самый чат проекта.
-
Цели хранят KPI с прогрессом. У цели бывает свой бюджет и фактическое значение, которое подтягивается из 1С.
-
Задачи это канбан из трёх колонок: ожидает, в работе, выполнено.
-
Связи ведут на другие проекты и на привязанные Советы (про них ниже).
-
В Бюджете лежат план, факт и транзакции, которые можно привязать к конкретной задаче.
-
Вызовы собирают риски, проблемы и блокеры с оценкой влияния.
-
Участники показывают команду, у каждого свой OTIF.
Понимаю, выглядит как фичелист. Но дело не в списке: когда сотрудник обсуждает задачу, ставит её и закрывает, он не уходит с одного экрана. Контекст не рвётся.

Кто кому может ставить задачи
Этой штукой я горжусь, и из-за неё же спорил сам с собой неделю.
В обычном таск-трекере иерархия чисто номинальная. Есть поле «исполнитель», и кто угодно может назначить задачу кому угодно. На бумаге у вас структура, на практике джун может повесить задачу техдиру, и система это спокойно проглотит.
Мы сделали режим иерархического чата, где у каждого участника есть ранг: целое число, где 1 это вершина. Ранги расставляются перетаскиванием, прямо пальцем в списке участников. Позиция в списке и есть ранг, цифры на бейджах пересчитываются на лету. Когда кто-то уходит из группы, нумерация автоматически сжимается, чтобы не было дыр.

А дальше правило, которое держит сервер, а не интерфейс. Поставить задачу можно только человеку рангом ниже. Не равному, не выше, только вниз. Если у вас права на это вообще есть. Менять статус чужой задачи тоже нельзя просто так: нужно и право, и ранг выше исполнителя. Сам исполнитель и автор задачи статус меняют всегда, тут без сюрпризов.
Почему на сервере, а не на клиенте? Потому что любая проверка на клиенте это вежливая просьба, а не правило. Перехватил запрос, поправил ранг в теле, и всё. Поэтому решение принимает бэкенд: смотрит ранг создателя, ранг исполнителя, права ранга, и либо пускает, либо отвечает «задачи ставятся только нижестоящим».
Сюда же эскалация. Если исполнитель не тянет, задача жмёт кнопку и уходит на ранг выше. Система пишет всю цепочку: кто, кому, с какого ранга на какой, и в чат падает системное сообщение. То есть эскалация это не «перекинул и забыл», а зафиксированный след.
Я долго сомневался, не слишком ли это жёстко для мессенджера. Люди привыкли, что в чате все равны. Но как только появляется слово «подчинение», мягкие правила перестают работать, их просто обходят. Либо вертикаль есть и она настоящая, либо её нет.
Совет: когда решает не один человек
Был вопрос, который я недооценил на старте. Часть решений в команде не должен принимать один человек. Двигать ли дату релиза, брать ли этого подрядчика, тратить ли вот эти деньги. Обычно это решается на созвоне, а потом половина участников помнит итог по-разному.
Поэтому есть второй тип пространства, Совет. Это группа, где вопрос выносится на голосование с кворумом, а результат архивируется и не теряется.
Механика простая. Создаёшь голосование: вопрос, варианты от двух до шести, процент кворума, срок. Каждый участник голосует один раз, переголосовать можно. Кворум считается как доля проголосовавших. Когда явка добирает до порога, голосование закрывается само, побеждает вариант с большинством.

И вот связка, ради которой всё затевалось. Совет можно привязать к Орбите. И если решение одобрено, оно автоматически превращается в задачу внутри той самой Орбиты, с уже заполненными полями. В чат проекта падает сообщение «из Совета пришла задача». Совет решает, Орбита исполняет. Решение не повисает в воздухе абстрактным «ну мы вроде договорились», оно сразу становится конкретной работой с исполнителем и сроком.
Тут я наступил на грабли. Первая версия предлагала голосовать вообще по любому поводу. И команды быстро устали, потому что 90% задач это рутина, по которой голосовать незачем. Поэтому перед созданием важной задачи мы добавили AI-проверку: модель смотрит на задачу и говорит, это рутина, это стоит обсудить, или это уровень «трогает деньги, стратегию или людей, выноси на голосование». Только в последних случаях предлагается Совет. Иначе задача создаётся как есть.

OTIF, а не «эффективность от балды»
Метрики продуктивности это болото. Очень легко нарисовать сотруднику «эффективность 73%» из воздуха и обидеть человека цифрой, за которой ничего не стоит.
Мы взяли OTIF, On Time In Full. По-человечески: задача закрыта в срок и полностью. Закрыл до дедлайна, OTIF засчитан. Закрыл после, не засчитан, с пометкой «просрочено». Без полутонов и без магии. Эта цифра копится по каждому человеку и по проекту целиком, и она хотя бы означает ровно то, что написано, а не «алгоритм так решил».
Можно спорить, что OTIF слишком грубый. Согласен. Но грубая честная метрика лучше точной выдуманной.
Лира: AI-директор, и тут мне до сих пор не по себе
Это самая спорная часть, и гладкой я её не назову.
Лира это AI-надстройка, которая работает в паре с десктоп-приложением и подключается к ONEMIX через QR-код. Утром она пишет сотруднику план на день, вечером спрашивает, как прошло. Если задача висит больше трёх дней, напоминает. Если продуктивность падает три дня подряд, эскалирует руководителю.

А теперь часть, из-за которой заголовок не врёт. Лира умеет смотреть на то, что происходит на экране сотрудника, и по итогу задачи ставить вердикт: выполнено грамотно, частично, с отвлечениями, не выполнено. За этим стоит Claude.
Я несколько раз останавливался и думал, а не перебор ли это. Есть что-то неуютное в том, что AI весь день смотрит на чужой экран и в конце выносит приговор. С одной стороны, это даёт руководителю объективную картину вместо «мне кажется, он филонит». С другой стороны, это ровно тот инструмент, который легко превратить в цифровой надзор.
Поэтому включается это осознанно, а не по умолчанию, и так правильно. Но называть это однозначно хорошей штукой я не стану. Инструмент мощный и с очевидной тёмной стороной, а куда он повернётся, решает тот, кто его включил.
Кабинет руководителя
Когда проектов становится больше одного, нужен вид сверху. Для этого есть Мостик: все Орбиты сразу, общий OTIF крупной цифрой, блок «требуют внимания» с просрочками и активными голосованиями, сетка карточек проектов.

И отдельный экран «Дерево связей», где видно всю наследственность: проект, его цели, задачи под целями, риски, Советы, бюджет, дочерние проекты. С графиками, для тех, кто любит смотреть на burndown.
Что было сложно и что я понял
Сквозное шифрование и серверная логика задач конфликтуют по духу. Сообщения мы шифруем на клиенте, сервер их не читает. Но задачи, ранги и голоса серверу видеть надо, иначе правила невозможно держать. Пришлось чётко развести, что end-to-end, а что нет, и не делать вид, что всё подряд зашифровано. Врать пользователю про шифрование это худшее, что можно сделать.
Соблазн переписать Jira был огромный. Каждую неделю хотелось добавить ещё поле, ещё статус, ещё тип связи. Я держался за одно правило: если фича не убирает переключение между окнами, её здесь быть не должно. Иначе получился бы очередной комбайн, ради бегства от которого всё и начиналось.
Названия мы переделывали мучительно. Внутри это были ЦУП, ЕЦУП, ЦПР, аббревиатуры из методичек по управлению. Живой человек на это смотрит и ничего не понимает. В итоге пришли к Орбита, Мостик, Совет, Кворум. В коде, кстати, до сих пор лежат старые имена файлов, потому что переименовывать сущности на проде это отдельный вид боли.
AI-гейт на задачах сначала ошибался в обе стороны: то предлагал голосовать по ерунде, то пропускал важное. Это не магия, это модель с промптом, и её надо настраивать на реальных задачах, а не на представлении о том, как люди формулируют задачи. Люди формулируют их коряво.
Стоило ли оно того? Для команд, которые реально живут в чате, да. Контекст перестал рваться, и это чувствуется на третий день, а не в графиках. Для команд, у которых уже выстроен процесс на больших инструментах, скорее нет, и я не буду их переубеждать.
Если дочитали, скину два вопроса, на которые правда хочу услышать ответ. Жёсткая вертикаль прямо в чате это разумно или противоестественно? И AI, который смотрит на экран и ставит оценку, где для вас граница между контролем и слежкой? Накидайте в комментарии, отвечу каждому.
Где попробовать
Попробовать можно сразу, без демо и без переговоров. Скачайте приложение на свой телефон и заведите тестовый чат с коллегой:
-
OneMix в App Store (iOS)
-
OneMix в Google Play (Android)
ссылка на оригинал статьи https://habr.com/ru/articles/1040886/