Назначение: Требования. Продукт: ShariX Open.
Для кого: Разработчик · Интегратор · Рецензент и приёмщик · Владелец сервиса · Нейросеть.
Темы: Заказы → Назначение · Сервис → Настройка · API → Контракты.
Навигация: Доменная модель → Подбор исполнителя.
Состояние: ориентир будущей разработки, редакция для обсуждения. Подбор в текущей реализации не считается полностью корректным или завершённым. Наличие фильтров, приоритетов и раундов не подтверждает выполнение всех требований этой страницы. Документ не меняет работающий алгоритм.
Сервис должен найти предложение исполнителя, соответствующее обязательным условиям конкретного заказа и доступное к требуемому времени. Среди допустимых предложений учитываются согласованные предпочтения и приоритеты. Найденный кандидат, отправленное приглашение, согласие человека и подтверждённое назначение — разные результаты.
Ресурс и труд не заменяют друг друга: наличие автомобиля не подтверждает готовность водителя; свободное время человека не подтверждает пригодность инструмента. Сначала определяется, что именно требуется для исполнения, затем способ проверки этих условий.
Срез исходников от 31.10.2026:
dbsynce/lib/order_matching.py отбирает активные предложения услуги, ограничивает компанию при соответствующем заказе, исключает обнаруженные конфликты, вызывает проверки пригодности и доступности.provider_matching_priority. Дубли предложений одного XMPP JID устраняются перед ограничением партии.services/provider_availability.py различает online, offline и gap; ожидание gap связано с отметкой обновления доступности. В коде есть разные ветви планового и ASAP-заказа.Этот набор не является доказательством корректного полного подбора: необходимо отдельно подтвердить полноту ограничений, смысл предпочтений, актуальность сведений, резервирование и конкурентные ответы. Географическое расстояние само по себе не подтверждает достижимое время прибытия. Получение партии не резервирует кандидатов. Стабильная сортировка не доказывает справедливость правила или согласие участника.
| Вопрос | Что необходимо определить |
|---|---|
| Предмет выбора | Предложение исполнителя, связанный ресурс, компания и область услуги; отличать Provider от учётной записи человека. |
| Жёсткие ограничения | Требования заказа, полномочия, совместимость ресурса, место, временное окно и отсутствие недопустимых пересечений. У каждого ограничения — источник данных и проверка. |
| Предпочтение клиента | Это обязательный выбор конкретного человека или пожелание среди допустимых кандидатов? Можно ли предлагать альтернативу и какое согласие требуется? |
| Готовность | Когда получены сведения, до какого момента им можно доверять и какое подтверждение нужно при назначении? Неизвестное не считать свободным. |
| Время | Плановое/срочное обращение, длительность, подготовка, дорога, часовой пояс, интервалы занятости и запас. Не смешивать оценку прибытия с фактом готовности. |
| Ранжирование | Какие критерии действуют после обязательных проверок, кто устанавливает их приоритет и как объяснить результат без раскрытия чужих персональных данных? |
| Резервирование | Что именно и на какой срок удерживается; кто снимает резерв; что происходит при двух одновременных согласиях и истечении времени ответа? |
| Отказ и отсутствие ответа | Сроки, продолжение поиска, исчерпание кандидатов, передача ответственному и информация клиенту. |
Это целевая последовательность требований. Она не утверждает, что в системе уже существует единый механизм резервов, долговечный журнал попыток или проверка маршрута.
Изменение адреса, времени, ресурса или существенного требования может сделать прежний результат подбора неприменимым. До разработки определить, какие изменения требуют пересчёта и нового согласия, что остаётся закреплённым и кто разрешает спорный случай. Подтверждение по старой редакции нельзя без проверки принять за согласие с новой.
Если нужен внешний источник ранжирования, использовать явный публичный контракт: применимость, версия, срок ответа, причины недоступности и допустимость локального продолжения. Внутренние алгоритмы закрытых модулей не входят в эту публичную страницу. Ни недоступность источника, ни пустой ответ не должны молча расширять условия заказа.
Для дальнейшего проектирования требуется определить:
Это перечень требуемых сведений, а не объявление существующих полей API. В журналах не хранить лишние контакты, секреты и переписку; доступ к причинам и подробностям ограничивать ролью.
Проверять данные, алгоритм и реальные взаимодействия отдельно. Для общих модулей соблюдать процесс разработки, передачу изменений ответственным и конкурентные операции. Алгоритм обработчика должен оставаться согласованным с канонической Blockly-моделью и сгенерированным Python.
Нельзя объявлять задачу завершённой по наличию функции matching или зелёному тесту одного фильтра. Передать матрицу требований и подтверждений, состав изменённых контрактов, проверки конфликтов/ожиданий и точные ограничения. Неподтверждённые части назвать явно. Эта страница задаёт ориентир дальнейшей разработки, а не разрешение самостоятельно внедрить его.