Отзывы пользователей о Splync
Примерно через полтора месяца после выпуска Splync v1.5 — обновления, которое наконец-то позволило задавать индивидуальные коэффициенты распределения по проекту и категории — поступила новая волна отзывов. Обновление v1.5 требовало значительных изменений на стороне сервера, поэтому тогда я считал, что детализация была «достаточно хорошей» для большинства случаев. Но несколько новых пользователей задали простой, но вполне закономерный вопрос: «Можем ли мы задавать индивидуальные коэффициенты распределения для каждого расхода?» В их проекте поездки были моменты, когда только двум участникам нужно было разделить определенные расходы, а в другие моменты все трое хотели что-то разделить. В Splync v1.8, к сожалению, ответ был нет. Я объяснил, что они могут создать дополнительные категории с индивидуальными коэффициентами, адаптированными для этих конкретных случаев — обходной путь, но не истинное решение.
Фрактальный лес оказался ошеломляющим
Было немного ошеломляюще вспомнить, сколько работы было вложено в v1.5. Сначала мне пришлось позволить проектам иметь свои собственные коэффициенты. Затем категории тоже нуждались в индивидуальных коэффициентах. В тот момент я думал, что охватил все дерево — собрал каждый плод с каждой ветви. Но работа над коэффициентами для каждого расхода была иной. Казалось, что каждый раз, когда я срывал плод, на этом месте вырастало новое дерево. Не бесконечный фрактальный лес, а четкая двухэтажная структура: один слой порождает следующий. В логике v1.5 сначала расход наследовал коэффициенты проекта. Если у его категории были индивидуальные коэффициенты, они переписывали значения проекта. Добавляя коэффициенты для каждого расхода, я пытался наложить еще одно переписывание. Структура стала лестницей из переписок — технически правильно, но ментально запутанно. Трудно было оправдать создание еще одного слоя логики-заплатки.
Изменения парадигмы в Splync v1.9
Прорыв произошел, когда я перевернул структуру с ног на голову. Вместо подхода «проект → категория → расход» и переписывания каждого слоя следующим, почему бы не подумать в обратном направлении? Доля для расхода → доля для категории → доля для проекта. Этот порядок отражает, как могут думать реальные люди: если у конкретного расхода есть свои правила, они должны просто следовать им. Если нет, схема категории имеет смысл. Если и это не сработает, используют значения по умолчанию проекта. Больше никакой лестницы из переписок — только четкая иерархия приоритетов. Как только я увидел структуру таким образом, туман псевдо-фрактального леса мгновенно рассеялся. Путь реализации стал очевидным: «Каждый расход проверяется на наличие индивидуальных коэффициентов. Если есть — используйте их. Если нет — проверьте коэффициенты категории. Если нет — используйте значения проекта по умолчанию.»
Прогулка под небом
Новая логика показалась простой, предсказуемой и математически обоснованной. Для поддержки этой системы приоритетов мы добавили специальную таблицу MariaDB для распределений по расходам, своего рода зеркальное отображение таблицы для распределений по категориям. Таблица деталей расходов также нуждалась в расширении, так же как и таблица деталей категорий в v1.5. Как только стала ясна основная «двухэтажная» конструкция, оставалось только тщательно программировать — как в приложении, так и на сервере. Тем не менее, путь казался рискованным в некоторых местах, как прогулка по темному лесу без карты. Я хотел очистить голову и вышел на улицу. Воздух был резким и чистым. Прогуливаясь по районам, я увидел, как гора Фудзи возвышается вдалеке, кристально-голубая под идеально голубым небом. Она была почти в 100 км, но казалась такой близкой, что её можно было коснуться. Этот момент почувствовался мне напоминанием: даже если я думаю, что иду по лесу, на самом деле я иду под открытым небом.
Что можно сделать с Splync v1.9 — индивидуальное распределение для каждого расхода
Splync v1.9 родился из этого момента ясности. Я вернулся домой, закончил подключение новых конечных точек, подготовил новую серверную логику, организовал связанные интерфейсы, отправил v1.9 в Apple и наконец уснул. Обзор завершился раньше обычного. Когда я проснулся, Splync v1.9 уже был одобрен и автоматически выпущен в App Store. С этой версии распределение становится гораздо более гибким. Если вы путешествуете с Джоном и Кейт, вы можете равномерно разделить основные расходы между вами троими. Но для еды можно переключиться на распределение «25% : 50% : 25%», потому что Джон обычно ест вдвое больше. А если Джон пропустит ужин — скажем, в устрицей ресторане — вы можете установить на это конкретное блюдо распределение «50% : 0% : 50%», чтобы он не платил за то, что не ел. В версии v1.9 Splync теперь поддерживает коэффициенты на уровне проекта, категории и расхода в единообразной логике. Основы стабильны и математически обоснованы. Следующая задача — интерфейс: некоторые другие приложения для распределения предлагают более плавные и стильные способы настройки этих коэффициентов. Теперь у Splync есть мощный backend для поддержки таких улучшений. Мы будем работать над ними по одному.