Кратко:
Я хочу упростить процесс подбора реальных пользователей в двух ситуациях:
- Тренеров и стажёров[1]
- Хозяев и гостей/испытательных посетителей[2]
Сравнение «многие-ко-многим» между несколькими пользователями с сильно различающимися графиками.
Календарь/события близки к решению, но я не могу найти хороший способ заставить это работать плавно — возможно, я делаю что-то не так. Я подозреваю, что мне придётся написать целый плагин.
Более подробная версия:
Я помогаю управлять сообществом нашего хакерспейса[3]. У нас технически нет штатных сотрудников, только сотни членов с ключами, которые после проверки получают круглосуточный доступ к пространству. Во время испытательного срока новые члены должны находиться под присмотром существующего члена.
Тренеры/Стажёры
Несколько наших классов по работе с инструментами включают сочетание теории и практики. Теорию можно изучать самостоятельно и/или в классе — для этой части у нас есть специальный учебный портал. Для завершения практической части, как правило, требуется соотношение 1:1 (ученик к учителю). Я хочу создать упрощённый способ, чтобы:
- стажёры, ищущие практическую сессию, могли разместить свою доступность
- тренеры, имеющие свободное время, могли разместить свою доступность
Опционально — возможность отслеживания: - первый стажёр имеет приоритет[4], и
- тренер, который меньше всего перегружен, получает первого студента[5]
Календарь/события имеют некоторые функции, которые могли бы сработать, но их недостаточно для широкого размещения доступности (несколько широких интервалов доступности для одного тренера/стажёра и т. д.).
Пример: 8 человек только что прошли теоретическую часть по работе на токарном станке по металлу. Это практическое занятие в формате 1:1, и внезапно 8 человек создают посты «Кто может провести мою практическую работу на токарном станке?». У каждого из них будут разные даты, время, дни и временные рамки, которые им подходят. В результате тренер окажется заваленным множеством переписок в каждом треде: «Вы можете встретиться со мной в четверг?», «Во сколько?», «А как насчёт другого времени?» и так далее… Умножьте это на 8. Повторяйте каждый раз, когда у нас появляется новый класс, и для каждого инструмента — и всё превращается в хаос. Многие наши пользователи не очень хорошо разбираются в интернете, поэтому заставить их правильно использовать выбор даты — задача почти невыполнимая.
Публичные часы и Хозяева
У нас еженедельно проводятся открытые двери в течение 2 часов, но эти 2 часа подходят не всем. Мы часто получаем запросы: «Я в городе только в субботу, кто может встретиться со мной?» или «Я новый член, хочу поработать в комнате с 3D-принтерами, кто может стать хозяином в субботу?"
Сейчас у нас есть физическая коробка в пространстве, которая позволяет членам с ключами нажать кнопку, чтобы через API опубликовать сообщение в чате Discourse: "/@-имя_участника/ выступает в роли хозяина до /x/ часов, напишите ему в личные сообщения, чтобы привлечь внимание!». Это очень срочная ситуация, и трудно найти кого-то, кто согласится проехать через город за полчаса после того, как ему сказали, что пространство «открыто».
Всё усложняется тем, что очень мало вещей в расписании являются фиксированными. Я мог бы попросить тренеров создавать /события/ для каждой сессии, которую они планируют провести, а потенциальные стажёры могли бы «присоединиться» к ним, но событие не позволяет указать гибкие временные окна или ограничения по количеству участников. Часто мы получаем сообщения вроде: «Я могу провести 3 практические сессии в субботу». Чтобы настроить 3 события без точного времени, требуется много кликов.
Я очень признателен за любую помощь и советы, которые люди могут предложить по этой проблеме.
Полностью на основе пересечения случайных графиков ↩︎
Есть ограниченное количество публичных «открытых» часов в неделю, иногда люди пытаются найти хозяина в другое время. ↩︎
Представьте себе абонемент в спортзал, но вместо тренажёров вы получаете доступ к сварочным аппаратам, швейному оборудованию, лазерным резакам и т. д. (плюс всё обучение безопасной работе с этим оборудованием) ↩︎
Тот, кто дольше всех ждал своей практической сессии ↩︎
Иногда тренеров больше, иногда студентов — поэтому обычно возникает избыток одной или другой стороны. ↩︎