Банкомат съел деньгу :)

Не знаю, вопрос ли это вообще с моей стороны, или просто так - констатация факта.
Подъехал к банкомату, хотел положить деньги на счет. Вставил карточку, потыкал кнопочки. Банкомат открыл окошко для денег и написал, что не больше 25 купюр можно вставить. У меня было больше банкнот и я начас отслюнивать 25. Заняло какое-то время. На экране банкомата появился вопрос - вам нужно больше времени? Да/нет. Я засунул деньги в окошко и нажал “нет”. Окошко закрылось, начался пересчет денег, а на экране появилась надпись - “транзакция отменена”. Через несколько секунд пересчет закончился, банкомат сказал “всего хорошего” и “не забудьте забрать карту”. Всё :slight_smile: Я слегка удивился, но сделал вторую транзакцию по складыванию денег на счет (из оставшихся купюр). В этот раз все прошло как надо. Но денег из первой транзакции на счету так и не оказалось. Дозвонился до отдела обслуживания клиентов. Сказали, что в течении 10 рабочих дней деньги должны появиться на счету. Ждем :slight_smile:
По идее дебет с кредитом в банкомате не должен сойтись на ту сумму, что он сожрал.
Что самое смешное - я даже не уверен на 100% сколько денег было в первой куче :slight_smile: Только количество купюр. Я не считал изначально сколько буду ставить. Просто по типу - поставлю то, что есть в этой пачке (whatever it is).

Заходит однажды тестировщик в бар.
Забегает в бар.
Пролезает в бар.
Танцуя, проникает в бар.
Крадется в бар.
Врывается в бар.
Прыгает в бар
Заезжает на тракторе в бар

и заказывает:

Кружку пива,
2 кружки пива,
0 кружек пива,
999999999 кружек пива,
Ящерицу в стакане,
–1 кружку пива,
qwertyuip кружек пива.

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

2 симпатии

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

Такого развития ситуации предполагать никто не мог :rofl:

Вот-вот, я как раз себя тестировщиком почувствовал. Нашел реальный баг :slight_smile: Вероятно момент, когда я засунул деньги совпал с таймаутом транзакции. По идее банкомат должен был понять, что в него засунули деньги и открыть окошко обратно, но тут что-то пошло не так.

Обычно банкоматный софт после первой сбойной транзакции закрывает прием до снятия ошибки. Таким образом сумма в reject кассете будет соответствовать той что клиент пытался внести.

Банкомат работает не совсем так. Нажав на кнопку “Нет” вы запустили процесс завершения сеанса клиента, и не важно, вставили вы деньги в купюроприемник или нет.

2 симпатии

Я не спорю, но вариант, а давайте откроем банкомат, посмотрим сколько там в reject кассете и вернем все это мне - не прокатит.

Ну назвать хотя бы примерную сумму все же придется.

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

2 симпатии

АТМ не оперирует такими понятиями. Все банкоматы в мире работают по схожим алгоритмам, и если вы видите вопрос о том что вам нужно больше времени для работы, логично нажать “Да”, тем самым вы скажете аппарату, что вы все еще в процессе работы и, например не ушли от него, по каким то своим причинам.

1 симпатия

Вот как раз поэтому вопрос должен был быть - вы хотите завершить транзакцию?

Я вопрос банкомата понимаю однозначно:
Да - продолжаю с тобой работу.
Нет - закончил, выплёвывай мою карточку!
Кстати, если онлайн в банке сидишь дольше обычного тоже самое спрашивают. Ей, чел, ты не забыл выйти?

Вопрос - “Do you need more time?” во время операции по засовыванию денег. Причем тут закончить или не закончить работу?
Если же они имели ввиду закончить или не закончить работу, то вместо “yes” or “no” нужно было писать “yes, please keep me logged in” или “no, cancel the transaction”.
Вот что происходит в онлайн банке - вопрос другой, ответы другие и все ОДНОЗНАЧНО понятно. Других версий быть не может.

И мой ответ “Нет, мне не нужно больше времени”, потому как деньги уже положил “деньгоприемник”.

1 симпатия

Это ты человеческой логикой оперируешь. А бездушной железяке это недоступно, по крайней мере пока. Софтина тупо видит, что эный промежуток времени никакой движухи нет и предлагает закрыть сессию независимо от того пытаешься ли ты вспомнить пинкод, считаешь купюры или просто загляделся на проходящую мимо девчонку )))
И в онлайн банке тот же алгоритм: мышка не шевелится, клавиатура молчит и окно всплывает - закругляемся или ещё нет? Откуда им знать, что ты в данный момент на калькуляторе проверяешь транзакции за месяц )))

Что там называть? Засунуто 25 купюр, максимальная купюра $100 - значит засунул $2500. А дальше банк пусть сам разбирается :grin:

Ничем не обоснованное обобщение.

За весь мир не скажу, но у того же Чейза, например, в разных отделениях все еще есть разные банкоматы по разному взаимодествующие с клиентом → алгоритмы разные

Так бездушной железяке это недоступно, потому как интерфейс/логику идиот писал и не предусмотрел, что другой идиот не так воспримет вопрос этой железяки, как его задумал первый идиот.

1 симпатия

Не нужно просить длинных в стиле DeepState сообщений банкомата как просит НЕТРЕЗВ :slight_smile: :slight_smile: :slight_smile: Люди не так читают! Вот это “no, cancel the transaction” все равно будет прочитано как “no”. Сделайте кто здесь разработчик эксперимент напишите принципиально разные сообщения но оба начинающиеся с “no” (ну или с “yes”) и удивитесь как люди их будут понимать.

У меня пример с сайтов где подаешься на вакансию. Один из любимых вопросов “Are you open to relocation?” и ответ предполагается “Yes”, “No” и еще очень редко “N/A”. Я очень долго пытался понять что ответить потому что я подаюсь на вакансию до которой от моего дома идти минут 20 пешком. Куда relocation ребята вы че? И вот здесь я сначала предполагал что по хорошему нужно ответить “Not applicable” потому что для этой работы и моего места проживания вопрос релокации не релевантен. Но такого варианта обычно нет. Что же выбирать? Дальше можно подумать что в принципе логично ответить “No” исходя из логической цепочки “работа в зип коде X и соискатель в зип коде X или соискатель в зип-коде X а работа в зип коде Z но между ними расстояние миль 7”. И я так мысля могу выбрать “No” указывая им “ребята, сейчас вопрос нерелевантен вообще, мы рядом, но вообще если Вы куда-то переедете то я не согласен буду релоцироваться”.

Так вот моя логическая ошибка предполагать что они так мыслят. Скорее всего при комбинации разработчика / кадровика / постановщика / тестера (если все они участвовали еще) кто-то думал хуже меня (к сожалению я знаю что умнее среднего) поэтому рассчитывать на банальное системное мышление было бы смешно. И я стараюсь отвечать самым безопасным образом то-есть жму на “Yes” подразумевая что я конечно же open to relocation потому что это на самом деле меня вообще ни к чему не обязывает но и точно не отсеивает каким-то идиотским фильтром. Ведь сложно представить что система отсеет именно тех кто ответил что готов к релокации.

Вот так же и здесь нужно не ожидать о системы какой-то умной логики. Вопрос “Do you need more time?” это уже вопрос где есть безопасный вариант ответа и потенциально опасный. Ответ “yes” говорит только одно “времени еще мне дайте” а ответ “no” можно трактовать как “все я готов, сча положу деньги” так и как “я передумал ничего ложить не буду”.

Вторая ошибка нажать любую кнопку и сразу вкладывать деньги. Или вкладывать деньги а потом нажимать кнопку. Я на таком с разными системами уже обжигался. Безопасная последовательность обычно должна быть такая:

  • ответил на вопрос системы ничего больше не делая потому что система сейчас может быть сконцентрирована на твоем ответе и попытка подсунуть ей две переменные (деньги и нажатие на кнопку) может запутать систему
  • подождал пока система обработала твой ответ (это критично)
  • выполнил следующее действие дождавшись результатов обработки ответа.

ТС реально поступил против логики системы, попал на баг и теперь придется немного помучаться но почти уверен все вернут.

1 симпатия

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

Для меня любое обращение куда-либо мучение :wink: