Диагностика писем: журнал из разрешенных полей
Тело письма, адрес и тестовый токен остаются во входе и не попадают в диагностический результат.
Задача и принятое решение
При ошибке парсинга удобно сериализовать весь объект письма. Вместе с причиной в журнал тогда уйдут адрес, содержание и заголовок авторизации.
Я собираю диагностическое событие по разрешенному списку, а не удаляю известные секреты из произвольного объекта. Сохраняются проверенный ID, код ошибки и признак повторяемости. Свободный текст исключения не копируется.
Все письма и токены в наборе искусственные. Проверяется преобразование события, не доступ к почтовому серверу.
Проверить решение
Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.
| requestId | code | retryable |
|---|---|---|
| REQ-01 | parse_error | false |
| REQ-02 | timeout | true |
| REQ-03 | schema_error | false |
| invalid-id | unclassified_error | false |
Новые поля входа не включаются автоматически. Для анализа содержимого нужен отдельный разрешенный просмотр, которого здесь нет.
Исходный набор
Авторский контрольный набор; не клиентские документы и не результаты внешней модели.
Изменить входные строки
Посмотреть исходные строки
| requestId | code | retryable | subject | body | token | errorText | |
|---|---|---|---|---|---|---|---|
| REQ-01 | parse_error | false | author1@example.invalid | Смета | Прошу проверить состав заказа из трех коробок. | TEST-SECRET-A | Ошибка: тело письма недопустимо |
| REQ-02 | timeout | true | author2@example.invalid | Срок | Когда будет готов макет упаковки? | TEST-SECRET-B | Соединение не завершилось |
| REQ-03 | schema_error | false | author3@example.invalid | Вложение | В приложении новая версия таблицы цен. | TEST-SECRET-C | Не хватает поля quantity |
| bad id with body | unknown-sensitive-text | false | author4@example.invalid | Личное | Текст не должен появиться в общем журнале. | TEST-SECRET-D | Секрет в описании ошибки |
Что получилось
Четыре события сведены к requestId, code, retryable. Ни адреса, ни тела, ни один TEST-SECRET не вошли в результат. Неизвестный код заменен unclassified_error, а повтор разрешен только для timeout.
Выполненная проверка
| Проверка | Результат |
|---|---|
| Весь выход не содержит адресов, тела или TEST-SECRET | Пройдена |
| Неизвестный код и непроверенный ID заменены безопасными значениями | Пройдена |
| Новое вложенное поле с секретом не расширяет журнал | Пройдена |
Нужно отдельно контролировать логи библиотек и инфраструктуры. Эта функция не очищает уже записанные журналы.
Скачать материалы и повторить проверку
source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css
Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.