Денис
|
3 октября 2018 16:16
|
Здравтсвуйте,
Поскольку сервис останавливается при первом подходящем SMS правиле, то на N банковских карт и M категорий, нужно создать N*M правил.
Для примера майлер Thunderbird тоже раскидывает письма по ящикам, но там есть возможность попросить продолжить исполнять последующие правила. Таким образом одним правилом можно задать счет, а вторым категорию, тогда всего понадобится N + M правил.
Для реализации в интерфейсе потребуется все-лишь добавить галку "Продолжить исполнять правила"
|
|
|
Admin
|
3 октября 2018 19:32
|
Срабатывание правила - означает в данном случае ввод операции по этому правилу.
Если сработает несколько правил, то должно быть внесено несколько операций, но этого не должно быть т.к. одна строка - одна операция.
|
|
|
Денис
|
4 октября 2018 09:30
|
Я предлагаю измененить этот алгоритм
сейчас работает так
sms = "..."
for rule in rules:
operation = rule.match(sms):
if operation:
operation.do()
break # остановились на первом правиле
unprocessed_sms(sms)
а можно сделать так
sms = "..."
operation = operation(sms) # создаем болванку, заполняем минимальные данные - сумму и дату
for rule in rules:
if rule.match(sms):
operation.apply(rule) # поля операции меняются согласно правилу
if rule.stop_processing:
break # останавливаемсмя только если правило сработало и пользователь так его настроил
if operation.is_doable(): # проверяем, что все необходимые поля заполнены (тип, категория, источник)
operation.do()
else:
unprocessed_sms(sms)
|
|
|
Денис
|
4 октября 2018 09:32
|
почему-то пробелы в начале строки удаляются в сообщениях :)
сейчас работает так
sms = "..."
for rule in rules:
..operation = rule.match(sms):
..if operation:
....operation.do()
....break # остановились на первом правиле
unprocessed_sms(sms)
а можно сделать так
sms = "..."
operation = operation(sms) # создаем болванку, заполняем минимальные данные - сумму и дату
for rule in rules:
..if rule.match(sms):
....operation.apply(rule) # поля операции меняются согласно правилу
....if rule.stop_processing:
......break # останавливаемсмя только если правило сработало и пользователь так его настроил
if operation.is_doable(): # проверяем, что все необходимые поля заполнены (тип, категория, источник)
..operation.do()
else:
..unprocessed_sms(sms)
|
|
|