Перейти к основному содержимому

Словарик

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

Аварийный ключ — механический ключ в замке ячейки. Открывает дверцу, даже когда нет питания и связи. Каждое открытие ключом надо записывать: иначе система поднимет тревогу «дверь открылась без команды».

Гнездо (канал) — место на плате замков, куда подключён один замок. Всего их 27, пронумерованы прямо на плате: CH01 … CH27. Номер гнезда и номер ячейки на дверце — разные вещи, связывает их карта ячеек.

Датчик двери — маленький выключатель в замке. Дверца закрыта — нажат, открыта — отпущен. Единственный источник знания о том, что происходит с дверцей.

Выбранный шкаф — тот, про который сейчас говорит экран. Живёт в адресе страницы (?postamat=…), поэтому ссылку можно переслать коллеге, и у него откроется тот же шкаф. С 6 сентября выбор переезжает с вами по меню на разделы, которые про один шкаф: «Ячейки», «Аренды и коды», «Уведомления», «Журнал», «Объезд», «Привязка каналов», «Настройки». ⛔ Прежде он терялся на каждом переходе, и экран без параметра молча брал первый шкаф из списка — дежурный, выбравший шкаф Б, читал журнал шкафа А. ⚠️ Разделы про весь парк («Обновления», «Пользователи», «Данные и приватность», «Доставка уведомлений», «SMS (имитация)») параметр не получают намеренно: они и так про все шкафы, а залипший в закладке ?postamat=… уверял бы, что вы смотрите один. ⚠️ Сам выбор стоит в адресе, поэтому перезагрузка страницы его не теряет; шапка помнит его отдельно, и после перезагрузки он возвращается сам, даже на разделах, где шкафа в адресе нет вовсе. ⛔ Здесь стояло «эта память живёт только до перезагрузки» — устарело 6 сентября. ✅ С 7 сентября память именная и живёт в браузере: шкаф возвращается и в новом окне, и на следующий день — но только тому же вошедшему. ⛔ Здесь же стояло «шапка помнит его отдельно — в хранилище вкладки… Не переживает он новой вкладки: там ещё ничего не выбирали, и раздел откроется на первом шкафу по порядку» — с 7 сентября неверно, новая вкладка открывается на вашем шкафу. Сменщиков за одним ноутбуком разводит теперь не срок жизни вкладки, а имя вошедшего: вход другого человека стирает память целиком (и шкаф, и парковый счёт тревог) и поднимает его собственную. Выход из панели стирает запись вошедшего вместе с парковым счётом тревог. ⚠️ Цена названа прямо: запись лежит в профиле браузера этой машины и попадает в его резервную копию; внутри — два внутренних номера (ваш и шкафа) и больше ничего. 🔴 Ссылка на шкаф, которого больше нет (отозвали и забыли, а закладка осталась) — тупик: адрес главнее всего, и все семь разделов отвечают «не найдено», а перезагрузка не помогает, она сохраняет и адрес. Панель это узнаёт: вместо названия — красная метка «шкафа из ссылки нет в парке», а рядом кнопка «Открыть «имя»» (когда шкаф в парке один) или список «выберите шкаф». Без этой кнопки выхода бы не было: при одном шкафе выпадающего списка на экране нет вовсе, нажимать не на что.

Первый шкаф — тот, который экран берёт, когда явного выбора нет. С 6 сентября порядок списка задан: сначала работающие, потом ожидающие регистрации, потом отозванные; внутри — по названию латышской сверкой (Ā рядом с A, а не после Z); при совпадении названий — по внутреннему номеру. ⛔ Прежде порядка не было задано вовсе: обычно он совпадал с порядком заведения, но это было совпадение, а не обещание, и «первый шкаф» мог смениться сам по себе. 🔴 Порядок здесь — поведение, а не оформление: именно он решает, чей журнал, чью карту и чьи настройки увидит человек, не выбравший шкаф руками.

Журнал — записи о том, что происходило: какую ячейку открывали, когда, по какому поводу. Нужен не только для истории: без него нельзя отличить «дверь открыта, потому что мы её открыли» от «дверь открыта, а команды не было». Фильтруется по дверце — ⚠️ выбор привязан к шкафу и снимается при переходе на соседний, иначе пустой журнал читался бы как «ничего не происходило». ⚠️ Пока едет журнал нового шкафа, экран пишет «Ждём журнал шкафа «имя»» и строки прежнего убирает, а кнопка выгрузки в это время не работает. ⛔ Прежде в эти доли секунды на экране стояло имя нового шкафа и строки прежнего — и выгрузка ушла бы файлом с именем одного шкафа и событиями другого, а файл переживает и экран, и разговор.

Имитация SMS — режим для показа, в котором код клиенту уходит «сообщением» в ящик внутри системы, а панель показывает этот ящик отдельным экраном. 🔴 Наружу не уходит ничего: настоящего шлюза у системы нет. Это единственное место, где код виден человеку из панели, поэтому режим требует отдельного права, каждое чтение пишется в журнал обращений к персональным данным, а выключение режима стирает ящик. На боевом шкафу включать нельзя. 🔴 Ящик — про весь парк, но с 7 сентября каждая строка называет шкаф: «шкаф „Название“», а у сообщений, легших в ящик раньше, — честное «отправлено до того, как ящик стал запоминать шкаф» (связать их со шкафом задним числом не по чему). ⛔ Здесь стояло, что у старых сообщений написано «шкаф не назван: сообщение старше этой пометки». Слова на экране изменились 7 сентября, и не для красоты: у владельца одного шкафа эта подпись стоит у ВСЕГО прежнего ящика, сверху донизу, а «не назван» читается как поломка — на экране, где лежат открытые коды доступа. Теперь подпись говорит про возраст строки, а не про недостачу: коды целы, неизвестно только, с какого шкафа ушло сообщение. ⛔ До этого дня сам экран отправлял искать шкаф по номеру аренды в «Арендах и кодах» — лишний круг, а при двух шкафах ещё и опасный: номер аренды у разных шкафов повторяется. Разбор — сверка вслепую.

Экран писем (/mail/) — приёмник, в который сегодня уходит вся почта сервера: письма формируются, наружу не идут и лежат здесь. Ссылка «открыть ящик» стоит на экране «Доставка тревог». 🔴 Внутри писем лежат коды доступа клиентов целиком — тот же класс данных, что в «SMS (имитации)», — поэтому с 7 сентября вход сюда закрыт тем же правом sms.outbox.read, то есть только администратору. ⚠️ Вход тот же, что в панель, но одного входа мало, и путать эти две вещи дорого: дежурный, вошедший в панель, по прямому адресу /mail/ получает страницу «Экран писем закрыт: в письмах лежат коды доступа клиентов» — это не поломка входа, и повторный вход её не лечит. ⛔ До 7 сентября сюда пускали любую живую сессию: раздела «Доставка тревог» у дежурного не было, а письма со всеми кодами открывались по прямой ссылке.

Вывод из оборота — пометка человека на дверце: «эту не предлагать». Система перестаёт назначать её новым арендам и перестаёт из-за неё тревожиться, а выведенная дверца не открывается ни клиентом по коду, ни обычной командой «Открыть удалённо» — кнопка гаснет, и сервер отвечает «сначала верните её в оборот». 🔴 Решение человека сильнее показаний датчика, и вернуть дверцу в оборот тоже может только человек — а именно администратор, см. две строки ниже. ⚠️ Одно исключение, и его надо знать: мастер привязки выведенную дверцу открывать умеет — иначе обряд на новом шкафу был бы невозможен, ведь черновая карта заводится именно выведенной (apps/api/src/panel/postamats.service.ts, шаг обряда: право device.enroll). ⚠️ И вывести, и вернуть может только администратор — это право cells.edit, у роли operator его нет (packages/contracts/src/panel.ts, таблица прав ролей).

Импульс — короткое действие замка: язычок втягивается примерно на треть секунды, и всё. Дальше дверца ничем не держится, а закрывает её человек рукой.

Команда в очереди — то, что происходит, когда вы нажали «открыть» в панели. Постамат забирает команды сам, на очередном сеансе связи — обычно раз в минуту; пока он их не забрал, ничего не открылось. Настоящее подтверждение — событие в журнале. ⚠️ У команды есть срок годности: открытие ячейки и перезапуск киоска живут по пятнадцать минут, шаг мастера привязки — пять. Шкаф, вернувшийся на связь позже, команду уже не получит: она не «ждёт вечно», а протухает. Значит команду офлайновому шкафу надо повторить, когда он вернётся.

«У шкафа» — столбец в таблице кодов (карточка аренды на «Арендах и кодах»), отвечающий на вопрос «уже вести клиента к дверце или ещё рано». Появился 7 сентября; до него панель не отвечала на него ничем, и оператор считал минуты по часам на стене. Подписей пять: «код у шкафа» — шкаф сам подтвердил, что дочитал список кодов вместе с этим (дальше связь ему не нужна, коды он проверяет сам); «должен быть у шкафа» — шкаф приходил уже после выпуска, но подтверждения ещё нет, оно приходит следующим кругом; «ещё едет» — после выпуска шкаф не приходил ни разу, панель называет такт этого шкафа и примерный остаток; «шкаф молчит» — ждать бесполезно, пока связь не вернётся; «неизвестно» — сказать нечем, настройки шкафа не получены, и это факт про панель, а не про шкаф. 🔴 Пустая клетка — не «всё хорошо»: у отозванного и просроченного кода стоит прочерк, потому что вопрос к ним другой. ⚠️ Столбец сам обновляется первые десять минут после выпуска; дальше вопрос «доехал ли» — это уже не про такт связи, а про поломку, и отвечает на него тревога «шкаф офлайн». Подробно — код клиента и блокировка.

Объезд — экран панели, на котором несколько выбранных дверец открываются подряд, а второй фактор спрашивается не на каждую дверцу, а на пачку. Взамен: список ячеек фиксируется до начала и на ходу не пополняется («заодно ещё вон ту» — это уже новый объезд), сам объезд живёт 20 минут (apps/panel/src/lib/cells/round.ts, ROUND_TTL_MS), дверцы открываются по одной с паузой около восьми секунд — но не больше семи за один визит шкафа, см. абзац про потолок ниже, — и остановить его можно на любом шаге. ⚠️ Через ~45 секунд объезд сам встаёт на паузу и просит свежий код: код аутентификатора живёт минуту, а объезд идёт дольше. Аварийное опустошение шкафа делается именно этим экраном.

🔴 Здесь не было сказано про потолок, и из-за него объезд выглядит оборвавшимся. За один визит шкафа сервер отдаёт ему не больше семи открытий (packages/lock-protocol/src/pacing.ts, LOCK_OPEN_MAX_PER_PICKUP = 7; применяется в apps/api/src/device/commands.service.ts). Шкаф приходит за командами примерно раз в минуту (apps/kiosk/src/runtime/SyncService.ts, SYNC_INTERVAL_MS), поэтому дверцы открываются пачками до семи в минуту, а не ровно одна каждые восемь секунд по всему списку. Остаток не теряется: невыданные команды остаются в очереди и уезжают следующим визитом — весь шкаф на 27 ячеек проходится примерно за четыре минуты. ⚠️ Практический вывод для человека у открытого шкафа: пауза после седьмой дверцы — это норма, а не сбой. Не запускайте второй объезд «вместо зависшего»: список первого уже зафиксирован и живёт 20 минут, второй просто добавит к очереди ещё команд, и дверцы начнут открываться там, где вас уже нет. ⛔ Прежняя запись «режим для планового обхода: что забрать, что пополнить, что закрыть» устарела — точнее, такого списка дел в панели нет вовсе. Экран не ведёт задания по объекту, он только открывает дверцы.

🔴 Объезд принадлежит одному шкафу, и переключение шкафа его обрывает (с 6 сентября). Продолжить прерванный нельзя — начинается новый, с новым кодом подтверждения. На экране остаётся красная строка, которая не гаснет сама, и в ней сказано главное: сколько команд успело уйти. Текста два разных, а не один с числом, и разница не словесная: один говорит, что столько-то дверец откроется и закрывать их надо рукой, — и посылает человека к шкафу; второй говорит, что уйти не успела ни одна и идти незачем. Перепутать их значит либо оставить открытые дверцы на улице, либо съездить впустую. ⚠️ Про законченный объезд панель пишет спокойное «объезд закрыт» и слова «прервано» не употребляет: его закончил сам человек.

Опознание — обязательное поле каждого удалённого открытия: по чему вы поняли, кто перед вами (packages/contracts/src/panel-ops.ts, cellOpenRequestSchema). Это не «причина текстом» и не только про звонок клиента: способ выбирается из списка из шести даже тогда, когда звонка не было вовсе (техник у шкафа, курьер, заклинившая дверца). ⚠️ Окно открывается на способе «назвал последние две цифры кода», и на нём кнопка «открыть» серая, пока цифры не сойдутся, — при открытии не по звонку смените способ, а не выдумывайте цифры. Подробно — опознание звонящего.

Одноразовый код (второй фактор) — шестизначный код из приложения-аутентификатора, который панель просит на каждое удалённое открытие. Вход был утром, а открывают ячейку сейчас — это разные события.

Подсказка кода — последние две цифры кода клиента, хранящиеся в системе для разговора по телефону. Оператору они не показываются никогда: см. Опознание звонящего.

Карта ячеек — список «какая дверца к какому гнезду подключена». Задаётся человеком через мастер привязки; автоматически её получить невозможно. См. Карта ячеек.

Киоск — программа на планшете постамата, та самая, которую видит клиент. Она же разговаривает с платой замков.

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

Надзиратель (сторожевой таймер) — микросхема внутри платы, которая перезагружает шкаф, если программа перестала подавать признаки жизни. Срок — около пяти минут. См. Почему шкаф перезагружается сам.

Панель — веб-интерфейс оператора: «Ячейки», «Аренды и коды», «Уведомления», «Журнал», «Объезд», «Настройки», «Обновления», «Данные и приватность». Часть разделов видна только администратору: «Привязка каналов», «Доставка уведомлений», «Пользователи», «SMS (имитация)» — кому какой раздел положен, решают права, и лишнего в меню просто не будет. ⚠️ «Лишнего в меню не будет» — это про меню, а не про адреса. Раздел, на который прав нет, открывается по прямой ссылке (из закладки, из письма коллеги) и отвечает «Раздел недоступен: у роли „оператор“ нет права …». Поэтому советы вида «откройте „Доставку тревог“» дежурному выполнить нечем — их надо читать как «попросите администратора». Сюда же относится экран писем /mail/: он не раздел панели вовсе, и заслон у него свой — см. запись «Экран писем» выше. ⚠️ «Данные и приватность» есть и у оператора, и это сделано нарочно: вопрос «где мои данные и что вы про меня храните» человек задаёт ночью, а ночью трубку снимает дежурный. Ответ там уже написан — не сочиняйте его сами. ⚠️ Разделы делятся на два сорта, и по ним по-разному ходит выбор шкафа. Про один шкаф: «Ячейки», «Аренды и коды», «Уведомления», «Журнал», «Объезд», «Привязка каналов», «Настройки» — они несут выбранный шкаф в адресе и передают его друг другу. Про весь парк: «Обновления», «Пользователи», «Данные и приватность», «Доставка уведомлений», «SMS (имитация)». 🔴 Значок с числом у «Тревог» — парковый: он считает неразобранные уведомления по всем шкафам, а таблица на экране «Уведомления» — только по выбранному. Числа сходиться не обязаны, и расхождение как раз и означает «горит ещё где-то». ⛔ Прежде значок считал выбранный шкаф, и тревога соседнего была не видна вовсе. 🔴 «Доставка уведомлений» — единственный раздел, где шкаф выбирается не в шапке, а в самой строке: у каждого получателя своё поле «Каких шкафов» — «весь парк» или один шкаф. ⛔ Здесь стояло «там нельзя развести получателей по шкафам вовсе»: правда до 7 сентября, сейчас — нет. Умолчание осталось прежним, «весь парк», и адреса, заведённые раньше, парковыми и остались. 🔴 У канала «Push в браузер» шкаф выбирается так же, а вместо адреса — человек панели: полоска уходит во все браузеры выбранного человека и ни в один, если он нигде не нажимал «Подписаться». ⛔ Здесь стояло «у него поле заперто на «весь парк» — приходит она всем подписанным браузерам по тревогам всех шкафов»: правда до 7 сентября, сейчас — нет. ⚠️ Строки, заведённые раньше, по-прежнему уходят всем подписанным браузерам и правки не требуют. Разбор — тревоги, раздел «У каждого адреса доставки свой шкаф».

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

Обновление по воздуху — новая версия программы киоска, которая доезжает до шкафа сама, без выезда и без провода. Раздел панели — «Обновления». По воздуху едет только программа (её «начинка»); всё, что меняет саму сборку приложения, по-прежнему означает поездку. ✅ Проверено на живом шкафу 6 сентября, дважды.

Откат обновления — кнопка в разделе «Обновления», возвращающая шкаф на версию, вшитую в само приложение. ✅ Проверено на живом железе в ночь на 7 сентября, и у него две оговорки, без которых кнопка выглядит сломанной: 🔴 откат применяется со ВТОРОГО перезапуска киоска. Первый только забирает распоряжение. Нажали один раз, посмотрели на экран шкафа и решили, что не сработало, — самая частая ошибка здесь; перезапустите киоск ещё раз (или дождитесь второго перезапуска) и смотрите после него. 🔴 вернуться на прежнее обновление простым назначением НЕЛЬЗЯ. Шкаф откажется, и в отчёте будет стоять updateRejectedBySelectionPolicy: он принимает только версию новее запущенной, а откат считается самой свежей. Это не поломка шкафа и не ваша ошибка — нужен перевыпуск той же версии разработчиком, и делается он за минуту. ⚠️ На показе откат демонстрировать не стоит: он занимает два круга связи, то есть около двух минут тишины перед гостем.

Терминал — постамат с точки зрения системы: то, что зарегистрировано, имеет свой токен и может быть отозвано, если плату унесли. 🔴 У терминала три состояния, и в выборе шкафа они названы словами (с 6 сентября): «· ожидает регистрации — планшет о нём ещё не знает» (запись в панели есть, устройство о ней не знает), «· зарегистрирован, но сейчас не на связи» (работал, сейчас молчит) и «· отозван — доступ платы прекращён» (связи не будет и завтра, пока шкаф не вернут в строй и не зарегистрируют заново). У исправного шкафа не пишется ничего. ⛔ Прежде все три выглядели одинаково — «· не на связи», — и это стоило выезда: человек ехал чинить связь у шкафа, которому доступ прекращён навсегда.

Плата замков — плата внутри шкафа, к которой подключены все замки и с которой разговаривает планшет. У неё 27 гнёзд.

Подтверждение (команда принята) — ответ платы «команду получил и проверил». Не означает, что дверца открылась: это знает только датчик.

Постамат — весь шкаф целиком: корпус, ячейки, замки, плата и планшет.

Ячейка — дверца с замком, то, что видит клиент. У неё есть номер снаружи; какому гнезду она соответствует, знает только карта ячеек.