> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Модель пропусков и регистраций

> Хранилище данных Wallet-карт: пропуск (связь с компанией в общей части базы, тип «бонус/заказ», связанный объект, серийный номер, идентификатор типа, токен авторизации, признак аннулирования) и регистрация устройства (идентификатор и push-токен); уникальность, индексы, автогенерация токена.

Полный перечень полей — в [глоссарии](/ru/logic/wallet/model-glossary).

## Что здесь хранится

Модуль ведёт два справочника, которые вместе описывают все выпущенные карты Wallet и устройства, подписанные на их обновления.

* **Пропуск (карта Wallet)** — одна выпущенная карта Apple/Google Wallet, привязанная либо к бонусной карте клиента, либо к заказу аренды.
* **Регистрация устройства** — запись о том, что конкретный телефон/часы подписаны на push-обновления конкретного пропуска.

<Info>
  Оба справочника лежат в общих (глобальных) таблицах, не привязанных к конкретной компании. Поэтому у пропуска есть явная ссылка на компанию-владельца — по ней система понимает, чьей карте принадлежит запись. Это нужно, потому что веб-сервис Wallet и push-рассылка работают вне контекста конкретной компании.
</Info>

## Пропуск (карта Wallet)

### Поля

| Поле                    | Тип          | Назначение                                                                                                     |
| ----------------------- | ------------ | -------------------------------------------------------------------------------------------------------------- |
| Компания                | связь        | Владелец пропуска — компания, которой принадлежит карта. При удалении компании её пропуска удаляются каскадно. |
| Тип пропуска            | перечисление | Бонусная карта или заказ. По умолчанию — бонусная карта. Индексируется.                                        |
| ID связанного объекта   | число        | Идентификатор бонусной карты или заказа, к которому привязан пропуск. Может быть пустым. Индексируется.        |
| Серийный номер          | текст        | Уникальный серийный номер карты в системе Wallet (до 64 символов). Уникален во всей системе, индексируется.    |
| Тип карты               | текст        | Служебное обозначение вида карты, выданное Apple при регистрации.                                              |
| Секретный признак карты | текст        | Секрет, по которому проверяются обращения телефона к этой карте. Создаётся автоматически при выпуске.          |
| Аннулирован             | флаг         | Признак отозванной/недействительной карты. По умолчанию выключен.                                              |
| Обновлён                | дата/время   | Время последнего изменения записи; проставляется автоматически при каждом сохранении.                          |
| Создан                  | дата/время   | Время создания записи; проставляется один раз при создании.                                                    |

### Один пропуск на объект

Комбинация «компания + тип пропуска + связанный объект» должна быть уникальной. То есть для одной бонусной карты (или одного заказа) внутри одной компании существует ровно один пропуск. Повторный выпуск карты для того же объекта не плодит дубли, а обращается к уже существующей записи.

<Note>
  Уникальность считается по трём полям сразу: компания, тип и ID связанного объекта. Одинаковый ID объекта у разных компаний или у разных типов пропуска — это разные, независимые пропуски.
</Note>

### Серийный номер уникален глобально

Серийный номер уникален во всей системе, независимо от компании. Это внешний идентификатор, по которому устройство Apple обращается к карте, поэтому двух пропусков с одинаковым серийным номером быть не может.

### Автоматическая генерация токена авторизации

При создании нового пропуска токен авторизации проставляется автоматически, если его не задали явно. Значение — случайная строка из 16 байт в шестнадцатеричном виде (то есть 32 символа из цифр и букв a–f). По назначению это секрет доступа к карте: устройство предъявляет его при обращении к веб-сервису Wallet, а система сверяет предъявленное значение с сохранённым.

<Warning>
  Токен авторизации — это секрет доступа к карте. Его нельзя показывать в интерфейсах, логах или выгрузках рядом с картой.
</Warning>

### Индексы

Помимо индексов по отдельным полям, у пропуска есть два составных индекса, ускоряющих типовые обращения:

* по «компания + тип + связанный объект» — быстрый поиск пропуска конкретной бонусной карты или заказа;
* по «идентификатор типа пропуска + серийный номер» — по этой паре к карте обращается веб-сервис Apple Wallet.

## Регистрация устройства

Когда пользователь добавляет карту в Apple Wallet, его устройство подписывается на обновления: сообщает системе свой идентификатор и push-токен. Каждая такая подписка — отдельная запись.

| Поле                     | Тип        | Назначение                                                                                                       |
| ------------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------- |
| Пропуск                  | связь      | Карта, на обновления которой подписано устройство. При удалении пропуска все его регистрации удаляются каскадно. |
| Идентификатор устройства | текст      | Идентификатор устройства Apple Wallet (до 64 символов). Индексируется.                                           |
| Push-токен               | текст      | Токен устройства, по которому отправляется push-уведомление об обновлении карты (до 200 символов).               |
| Создана                  | дата/время | Время регистрации устройства; проставляется автоматически.                                                       |

### Одно устройство на пропуск

Комбинация «пропуск + идентификатор устройства» уникальна: одно устройство может быть подписано на конкретную карту только один раз. Повторная регистрация того же устройства на ту же карту не создаёт дубликат.

<Note>
  Одно устройство может быть подписано на много разных карт, и на одну карту могут быть подписаны много устройств. Ограничение действует только на пару «эта карта + это устройство».
</Note>

## Как это используется

Ниже описано назначение хранимых данных (сама модель задаёт только структуру записей).

* **Выпуск карты.** При запросе карты Apple или Google Wallet система находит или создаёт пропуск по тройке «компания + тип + объект». Токен авторизации при создании генерируется сам.
* **Проверка запросов устройства.** Токен авторизации предназначен для того, чтобы веб-сервис Wallet при обращении устройства сверял предъявленное значение с сохранённым в пропуске.
* **Подписка на обновления.** При добавлении карты в Wallet заводится регистрация устройства с его push-токеном.
* **Push-обновления.** По регистрациям пропуска устройствам можно рассылать push-уведомления об изменении карты; время последнего изменения пропуска обновляется автоматически при сохранении.
* **Аннулирование.** Флаг «аннулирован» помечает карту как недействительную, не удаляя саму запись.

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Модель пропусков и регистраций" icon="book" href="/ru/logic/wallet/model-glossary">
    Полный перечень полей пропуска и регистрации устройства с точными определениями.
  </Card>

  <Card title="Карты в Apple Wallet и Google Wallet" icon="wallet" href="/ru/logic/wallet">
    Обзор раздела: какие бывают карты, как их получает клиент и как они обновляются.
  </Card>

  <Card title="Проблемы и логические ошибки" icon="bug" href="/ru/logic/wallet/issues">
    Сводный перечень известных проблем и логических ошибок всего модуля Wallet.
  </Card>

  <Card title="Выдача карты клиенту" icon="credit-card" href="/ru/logic/wallet/issue">
    Ссылки, по которым клиент получает карту для Apple Wallet или Google Wallet.
  </Card>

  <Card title="Оформление карты Apple" icon="apple" href="/ru/logic/wallet/apple-card">
    Что клиент видит на карте: поля, QR-код, фирменные цвета и логотип.
  </Card>

  <Card title="Карта в Google Wallet" icon="google" href="/ru/logic/wallet/google">
    Как формируется карта и ссылка сохранения для Google Wallet.
  </Card>

  <Card title="Как телефон получает свежую карту" icon="mobile-screen" href="/ru/logic/wallet/card-refresh">
    Что происходит между телефоном клиента и системой, когда карта обновляется.
  </Card>

  <Card title="Уведомления об обновлении карты" icon="paper-plane" href="/ru/logic/wallet/card-updates">
    Бесшумные уведомления, которые заставляют телефон перекачать карту.
  </Card>

  <Card title="Что запускает обновление" icon="arrows-rotate" href="/ru/logic/wallet/change-dispatch">
    Какие изменения заказа приводят к обновлению карты у клиента.
  </Card>
</CardGroup>
