Конечная точка бесплатной модели вернула действительный и неправильный числовой формат JSON Во вторник утром произошел сбой в книге возмещения. Проверка схемы пройдена. Конечная точка модели вернула чистый JSON. Каждое поле имело правильный тип. Баланс счета...
Конечная точка бесплатной модели вернула действительный и неправильный числовой формат JSON
Во вторник утром произошел сбой в книге возмещения. Проверка схемы пройдена. Конечная точка модели вернула чистый JSON. Каждое поле имело правильный тип. Баланс счета все еще отклонялся на 37 центов.
Этот разрыв возник не из-за отсутствия поля. Оно произошло от числа, которое было синтаксически допустимым и семантически неправильным. Служба C++ доверяла системе типов JSON. Вместо этого ему следовало доверять десятичному контракту.
Дело
Инженер владел небольшим конвейером консультационных услуг. Он попросил конечную точку бесплатной модели классифицировать записи о возмещении и вернуть предложенную сумму. Вывод никогда не разрешался публиковать непосредственно в реестре. Это создало очередь на проверку. Служба проверила ответ с помощью стандартной схемы JSON. Он проверил, что сумма присутствует и является числовой. Затем он преобразует значение в двойное значение и добавляет его к общему количеству за день.
Ошибка всплыла только во время сверки в конце месяца. Ежедневные итоги были близкими. Они не были точными. Один ответ содержал 12,399999999999. Другой содержал 12.40. Схема приняла оба. Регистр не смог.
Конечная точка не была отключена. Время не истекло. Он не возвращал пустое тело.