2016-03-25 2 views
-2

Я пытался какое-то время решить проблему планирования приложения, с которым я работал. Эта проблема заключается в следующем ...Алгоритм расписания

Первый раз список получает заселена:

  • будет смотреть на все контакты, которые пользователь сделал «Active» в списке контактов.
  • Для каждого из них следует посмотреть их выбранную контактную частоту (например, x дней, x недель, х месяцев).
  • будет сравнивать их «последнюю дату контакта» с сегодняшней датой. Для любого контакта, где разница между этими датами больше назначенной контактной частоты, лицо является кандидатом, который должен быть добавлен в список Агента.

Порядок, как люди будут появляться в списке Agent должен придерживаться следующих правил:

  • Контактов с длинной щелью между последним контактом выше в списке
  • Контактов отмечен как избранные перейти в верхней части списка
  • пользователи isApp приоритет

из этого списка «кандидатов», алгоритм Шоул d затем также просматривайте историю контактов для каждого. Для контактов со следующей назначенной контактной частотой следуйте этим правилам

  • Каждый x дней - не учитывайте историю. Просто добавьте, когда они просрочены
  • Каждые x недель - если контакт уже в течение последних 3 дней, не показывайте и пропустите в следующий раз, когда они будут готовы связаться.
  • Каждые х месяцев - если контакт уже в течение последних 7 дней, не отображается, и пропустите их в следующий раз, когда они будут связаны.
  • Каждый х год - если вы связались в прошлом месяце, не показывайте и пропустите в следующий раз, когда они будут готовы связаться.
+1

звучит как «какая-то работа для меня». – morels

ответ

3

Создайте массив массивов данных, содержащий все контакты. Добавьте фильтры для контактов, например, «активно». Установите период для контактов для дифференциации в соответствии с пробелами. Создайте категорию по умолчанию и добавьте в нее все контакты, чтобы вы могли выполнять итерацию, чтобы пропускать контакты за последние 7 дней или около того. Когда у вас есть массив по умолчанию, вы всегда можете создать другой список с нужными функциями. В этом случае один и тот же список будет обработан с четырьмя условиями, например, в последних 4 ваших строках. Это решение является общим для любой платформы. После того, как у вас есть код, вы можете применить алгоритмы предварительной сборки. Вы можете использовать http://bunkat.github.io/schedule/, чтобы уточнить свою логику. Надеюсь это поможет. Если нет, вставьте свой код.

+0

Вы поняли последние условия? –

+0

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