Как упорядочить данные в базе сайта, у которого пять личных кабинетов

Привет, Хабр! Меня зовут Миша Шлыков, я менеджер проектов в диджитал-продакшене Далее. Уже два года мы вместе с «Национальными приоритетами» развиваем сайт наука.рф. За это время 30 миллионов человек поучаствовали в проектах Десятилетия науки, а делают его простые люди со всей России. В статье рассказываю о том, как проект добавил +100 к пониманию пользователей с низкой компьютерной грамотностью.

7f1cb16d21c5dc47b786bcf6f47ead5e.png

О проекте

В 2022 году в стране началось Десятилетие науки и технологий. Совместно с АНО «Национальные приоритеты» мы разработали для проекта официальный сайт. Его первая версия появилась практически сразу после старта Десятилетия. Она во многом копировала сайт Года науки и технологий, который тоже разработали мы — в плане дизайна, архитектуры и технической реализации. За два года проект эволюционировал, вырос в десятки раз и приобрел статус федерального.

Сейчас сайт наука.рф выступает в роли коммуникационного хаба для всех событий, которые происходят в течение научной декады. Только за 2022–2023 годы в нашей стране организаторы провели 5600+ мероприятий федерального и регионального уровня. Общее число участников основных проектов Десятилетия превышает 30 000 000 человек. 

Наука.рф — это не только просветительский ресурс, а еще и рабочее пространство. На сайте собраны все проекты, очные и виртуальные встречи, фестивали и мероприятия, которые проходят в регионах нашей страны в течение Десятилетия. Весь этот контент генерирует огромное количество людей из разных уголков России. Они постоянно обновляют информацию на наука.рф.

Кто пользуется личными кабинетами на сайте 

С административной панелью взаимодействуют пять типов пользователей:  

  1. Представители регионов по вопросам реализации Десятилетия науки и технологий. 

  2. Кураторы инициатив Десятилетия. 

  3. Координационный комитет. 

  4. Оператор Десятилетия. 

  5. Участники мероприятий и инициативные граждане.

Изначально на стадии MVP мы внедрили такую же систему систему личных кабинетов, как на сайте годнауки.рф. Однако сразу было очевидно, что это временное решение. Порталу Десятилетия нужна была более сложная административная панель, так как за контент отвечают не три штатных редактора сайта из одного отдела, а сотни человек со всех регионов России. 

Все эти люди — не профессиональные айтишники. Они — простые сотрудники госорганизаций. Обычно такой человек пользуется 2–3 узкоспециализированными программами. Админка «Битрикса» для него — технологий на грани фантастики, на изучение которой не хочется тратить много времени. Поэтому мы решили разработать для них кастомную систему личных кабинетов с разными правами доступа, где сразу учтены все нужны функции. 

Мы вывели формулу для разработки интерфейса личного кабинета: простота + интуитивность + минимум функций по делу 

Как мы организовали первую версию рабочего пространства

Мы начали с того, что создали пять ролей и настроили права для каждой. Какая система у нас получилась:  

692d394853b880e26f4ee2ff7046e391.png

Мы кастомизировали админпанель так, чтобы предоставить всем типам нужные функциональные инструменты. Для каждой группы в личном кабинете создали свои вкладки без лишних деталей, чтобы человек легко ориентировался в интерфейсе. Вот пара примеров того, что видят у себя в ЛК разные роли.

7021546979f21f0afb5526104d491445.png2ddfe6524272a8fd4bae476be9f737a2.png

В этой матрице у многих есть те или иные права для манипуляций с данными сайта. Например, регионы, кураторы инициатив и оператор могут добавлять и редактировать инициативы, проекты и планы мероприятий. 

Мы учли все функции, которые нужны для управления контентом, однако не придали значения тому, что наполнением сайта со временем будут заниматься непрофессиональные контент-менеджеры. И что их число вырастет с нескольких человек до нескольких сотен. А когда так происходит, где-то страдает одна база данных.  

Как спустя два года и сотни новых пользователей мы усовершенствовали рабочее пространство

В рамках Десятилетия в городах нашей страны проходят научпоп-проекты и мероприятия: фестивали, конкурсы, лекции, мастер-классы, экскурсии, выставки. Их предлагают региональные кураторы инициативы в личном кабинете. Для публикации мероприятия на сайте наука.рф пользователю нужно либо заполнить форму вручную, либо загрузить готовый файл, чтобы данные «встали» в анкету автоматически. 

В первом варианте формы когда пользователь заполнял ее, название организатора мероприятия автоматически подгружалось в фильтр на страницу с инициативами. 

cac72cf8785ebe2ed991a85e618a9833.png

Здесь мы столкнулись с проблемой — часто люди просто копировали рабочие эксели и загружали их в личный кабинет одним файлом без редактирования. Из-за этого наименования организаторов выводились некорректно. Например, просто ООО вместо ООО «Научный», загадочные названия вроде «Государственный». Плюс многие организаторы дублировались. 

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

По сути, мы столкнулись с тем, что изначально рабочее пространство создавалось под узкую группу профессиональных контент-менеджеров. Это был узкий b2c-продукт. Но со временем Наука.рф выросла до федерального масштаба, в итоге в ней принимают участие люди, для которых это рабочее пространство неудобно. 

Изменения назревали сами собой. 

Решение

Мы решили, что самый простой способ быстро идентифицировать организатора — искать его по ИНН. Он уникальный, а это значит, что дубли не пройдут. 

Сначала разработчик написал парсер, чтобы собрать список всех ИНН организаторов из нашей базы. Если индекса не было, значения автоматом удалялись. Так мы быстро отсеяли всякие ООО, ААА и другие непонятные слова. 

Затем разобрались с дублями. Из нескольких одинаковых названий выбирали те, которые были созданы раньше, остальные удаляли и привязывали все мероприятия к одному организатору. Для очистки базы разработчик написал скрипт, который автоматически убрал все ненужные данные. 

Защитили базу данных и подключили DaData 

Мы изменили механику добавления организаторов мероприятий, чтобы сохранить порядок в базе данных. Теперь пользователь просто вводит цифры ИНН в поле. 

Когда куратор вводит ИНН организатора, автоматически появляется подсказка с его правильным наименованием. Сначала запрос поступает в базу данных сайта, если такой организатор уже есть, информация подгружается из нее. Если нет — сайт посылает запрос в сторонний сервис DaData и получает ответ оттуда. 

Получился простой путь: ввел ИНН, кликнул по подсказке с названием организации и заполнил поле. 

Упростили импорт данных из админки

Мы облегчили управление контентом из административной панели. Например, чтобы разом опубликовать на сайт 50 экскурсий, не нужно долго настраивать импорт данных, который заложен в коробочной версии Bitrix. 

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

***

Этот кейс напомнил об одной важной вещи: всегда смотреть на интерфейс глазами «непрограммиста». То, что разработчику кажется очевидным, для обычных пользователей может быть абракадаброй.

© Habrahabr.ru