Жизненный цикл результата

Модель данных для результатов регистрации в Telegram и повторных проверок

Храните поля ответа о регистрации в Telegram, отличайте завершенные результаты от ошибок API и сохраняйте локальную отметку времени ответа.

Редакция TG ValidatorОпубликовано 21 июля 2026 г.3 мин чтения
Наблюдения за регистрацией в Telegram с отметками времени, связанные со стабильной записью номера телефона
Завершенные результаты и последующие повторные проверки должны оставаться отслеживаемыми независимо друг от друга.

Почему одного логического значения недостаточно

Результат регистрации в Telegram — это наблюдение с отметкой времени, полученное в результате завершенной проверки, а не постоянная истина, привязанная к номеру телефона.

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

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

Отделяйте объект от наблюдений

Используйте одну стабильную внутреннюю запись номера телефона и привязывайте к ней несколько наблюдений проверок. Это позволяет не переписывать историю и упрощает понимание последующих обновлений.

Запись Рекомендуемые поля Назначение
Исходный номер phone_id, source_phone, source_system Сохраняет исходную бизнес-запись
Нормализованный номер phone_id, e164_phone, normalized_at Фиксирует каноническое значение, используемое для проверок
Наблюдение проверки phone_id, service_type, registered, received_at Хранит один синхронный результат

Если нормализация меняется из-за исправления исходного контекста страны, создайте новую каноническую запись или новую ее версию. Не привязывайте молча старый результат Telegram к заново интерпретированному номеру телефона.

Используйте точные задокументированные структуры ответа

Возвращенная структура Значение registered Смысл
code=0, data.registered=true true Завершенная проверка сообщила: зарегистрирован
code=0, data.registered=false false Завершенная проверка сообщила: не зарегистрирован
Ненулевой code API Отсутствует Решения о регистрации нет; это ошибка API, а не результат регистрации

Это различие намеренное. Ненулевой код API означает, что у сервиса нет логического ответа, который можно сохранить. Недопустимые входные данные, отказы из-за ограничения параллельности, недостаточный баланс, техническое обслуживание и внутренние сбои не добавляют новых значений в data.registered.

Храните текущее состояние и последнюю попытку как два представления

Часто полезны два вопроса:

  1. Каково самое свежее завершенное наблюдение за регистрацией?
  2. Что произошло при самой последней попытке запроса?

Они могут указывать на разные строки. Если за завершенным результатом true в момент T1 следует ошибка API в момент T2, самым свежим завершенным наблюдением по-прежнему остается true в T1, а отдельный журнал запросов может зафиксировать HTTP-статус и код API из T2. Это не позволит оператору принять T1 за свежий результат или T2 — за false.

Когда последующий вызов в момент T3 завершается с false, представление текущего завершенного состояния переходит к T3. Записи T1 и T2 остаются доступными для аудита и диагностики.

Определите, когда требуется обновление

TG Validator при вызове предоставляет актуальное синхронное наблюдение, но политику свежести данных определяет интегрирующее приложение. Выберите максимально допустимый возраст результата в зависимости от принимаемого решения и сделайте этот возраст видимым в интерфейсе.

Политика обновления должна определять:

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

Не повторяйте завершенную проверку с registered=false только потому, что результат — false. Повторяйте проверку, когда нужно более новое наблюдение на определенный момент или когда предыдущая попытка не дала решения.

Точный запрос текущего состояния

Текущее состояние регистрации должно выбирать последнее наблюдение, у которого внешний ответ имел code=0, и возвращать его значение registered вместе с локальным received_at. Никогда не возвращайте логическое значение без отметки времени.

Состояние последней попытки должно выбирать самое новое наблюдение с любым статусом. Если оно не завершено, интерфейс может пояснить, что была предпринята более новая проверка, не заменяя последний известный результат регистрации.

Принцип надежного проектирования

Добавляйте наблюдения, сохраняйте их отметки времени и никогда не превращайте операционную неопределенность в значение регистрации в Telegram.

Эта модель в точности соответствует продукту. TG Validator синхронно отвечает на один вопрос о регистрации; он не предоставляет данных об идентификации личности или профиле аккаунта. Клиентское приложение обеспечивает стабильную запись, политику хранения, расписание обновлений и бизнес-решение вокруг каждого наблюдения.

Источники