Как упорядочить данные в базе сайта, у которого пять личных кабинетов: кейс наука.рф
Наука.рф — это не только просветительский ресурс, а еще и рабочее пространство. На сайте собраны все проекты, очные и виртуальные встречи, фестивали и мероприятия, которые проходят в регионах нашей страны в течение Десятилетия. Весь этот контент генерирует огромное количество людей из разных уголков России. Они постоянно обновляют информацию на наука.рф.
Кто пользуется личными кабинетами на сайте
С административной панелью взаимодействуют пять типов пользователей:
- Представители регионов по вопросам реализации Десятилетия науки и технологий.
- Кураторы инициатив Десятилетия.
- Координационный комитет.
- Оператор Десятилетия.
- Участники мероприятий и инициативные граждане.
Изначально на стадии MVP мы внедрили такую же систему личных кабинетов, как на сайте годнауки.рф. Однако сразу было очевидно, что это временное решение. Порталу Десятилетия нужна была более сложная административная панель, так как за контент отвечают не три штатных редактора сайта из одного отдела, а сотни человек со всех регионов России.
Все эти люди — не профессиональные айтишники. Они — простые сотрудники госорганизаций. Обычно такой человек пользуется 2-3 узкоспециализированными программами. Админка «Битрикса» для него — технология на грани фантастики, на изучение которой не хочется тратить много времени. Поэтому мы решили разработать для них кастомную систему личных кабинетов с разными правами доступа, где сразу учтены все нужны функции.
Мы вывели формулу для разработки интерфейса личного кабинета: простота + интуитивность + минимум функций по делу
Как мы организовали первую версию рабочего пространства
Мы начали с того, что создали пять ролей и настроили права для каждой. Какая система у нас получилась:
Мы кастомизировали админпанель так, чтобы предоставить всем типам нужные функциональные инструменты. Для каждой группы в личном кабинете создали свои вкладки без лишних деталей, чтобы человек легко ориентировался в интерфейсе.
В этой матрице у многих есть те или иные права для манипуляций с данными сайта. Например, регионы, кураторы инициатив и оператор могут добавлять и редактировать инициативы, проекты и планы мероприятий.
Мы учли все функции, которые нужны для управления контентом, однако не придали значения тому, что наполнением сайта со временем будут заниматься непрофессиональные контент-менеджеры. И что их число вырастет с нескольких человек до нескольких сотен. А когда так происходит, где-то страдает одна база данных.
Как спустя два года и сотни новых пользователей мы усовершенствовали рабочее пространство
В рамках Десятилетия в городах нашей страны проходят научпоп-проекты и мероприятия: фестивали, конкурсы, лекции, мастер-классы, экскурсии, выставки. Их предлагают региональные кураторы инициативы в личном кабинете. Для публикации мероприятия на сайте наука.рф пользователю нужно либо заполнить форму вручную, либо загрузить готовый файл, чтобы данные «встали» в анкету автоматически.
В первом варианте формы когда пользователь заполнял ее, название организатора мероприятия автоматически подгружалось в фильтр на страницу с инициативами.
Здесь мы столкнулись с проблемой — часто люди просто копировали рабочие эксели и загружали их в личный кабинет одним файлом без редактирования. Из-за этого наименования организаторов выводились некорректно. Например, просто ООО вместо ООО «Научный», загадочные названия вроде «"Государственный». Плюс многие организаторы дублировались.
Все дубли и некорректные названия попадали в базу данных сайта — она росла в геометрической прогрессии. При этом информация об организаторах автоматом подгружалась в фильтр на странице инициатив и в один момент пользоваться им стало просто невозможно.
По сути, мы столкнулись с тем, что изначально рабочее пространство создавалось под узкую группу профессиональных контент-менеджеров. Это был узкий b2c-продукт. Но со временем Наука.рф выросла до федерального масштаба, в итоге в ней принимают участие люди, для которых это рабочее пространство неудобно.
Изменения назревали сами собой.
Решение
Мы решили, что самый простой способ быстро идентифицировать организатора — искать его по ИНН. Он уникальный, а это значит, что дубли не пройдут.
Сначала разработчик написал парсер, чтобы собрать список всех ИНН организаторов из нашей базы. Если индекса не было, значения автоматом удалялись. Так мы быстро отсеяли всякие ООО, ААА и другие непонятные слова.
Затем разобрались с дублями. Из нескольких одинаковых названий выбирали те, которые были созданы раньше, остальные удаляли и привязывали все мероприятия к одному организатору. Для очистки базы разработчик написал скрипт, который автоматически убрал все ненужные данные.
Защитили базу данных и подключили DaData
Мы изменили механику добавления организаторов мероприятий, чтобы сохранить порядок в базе данных. Теперь пользователь просто вводит цифры ИНН в поле.
Когда куратор вводит ИНН организатора, автоматически появляется подсказка с его правильным наименованием. Сначала запрос поступает в базу данных сайта, если такой организатор уже есть, информация подгружается из нее. Если нет — сайт посылает запрос в сторонний сервис DaData и получает ответ оттуда.
Получился простой путь: ввел ИНН, кликнул по подсказке с названием организации и заполнил поле.
Упростили импорт данных из админки
Мы облегчили управление контентом из административной панели. Например, чтобы разом опубликовать на сайт 50 экскурсий, не нужно долго настраивать импорт данных, который заложен в коробочной версии Bitrix.
Разработчик написал 5 кастомных парсеров: для мероприятий, экскурсий, туров, вузов и специальностей. Пользователь прикрепляет таблицу из «Экселя», нажимает на кнопку и контент автоматически подгружается на сайт. Для аудитории, которая привыкла работать с .XLS таблицами — это плюс сто к лояльности.
Этот кейс напомнил нам одну важную вещь: всегда смотреть на интерфейс глазами «непрограммиста». То, что разработчику кажется очевидным, для обычных пользователей может быть абракадаброй. А наша команда всегда за юзер-френдовый интерфейс независимо от аудитории.
Мы всегда за то, чтобы поддерживать проекты и продукты в живом состоянии, когда они реально полезны пользователям, а не существуют по инерции. Этот кейс — как раз про такую историю поддержки: сделали проект, запустили, прошло два года — и вот он уже разросся до федерального масштаба. Изменения не заставили себя ждать.
С проектом работаем до сих пор, думаем, это не последнее значительное изменение.
Где нас найти
Да, тут будет ссылка на наш телеграм-канал :) Вот она.
Публикуем там вакансии, анонсы и просто интересный контент на подумать и поразмышлять.