# Сценарии сборщика Методы и структуры находятся в [справочнике](reference.md), группа `picker`. Вход выполняется через `/api/picker/auth/login`, обновление токенов — через `/api/picker/auth/refresh`. Покупательский JWT не предоставляет права сборщика. ## Рабочая сессия 1. После входа прочитайте `/api/picker/auth/me` и `/api/picker/session/active`. Ответ `204` означает отсутствие активной сессии. 2. Получите очередь `/api/picker/orders` и начните выбранный заказ командой `/api/picker/orders/{order_id}/start`. 3. Выполняйте сканирование, подтверждение количества или веса, замену и уточнения через соответствующие команды API. Каждый ответ применяйте как серверный снимок. 4. Завершайте сборку явной командой `/finish` после готовности всех позиций. Состояние `ready_to_finish` ещё не означает `completed`. Активная сессия задаёт магазин товаров и остатков. Не переносите позиции между магазинами на основании локальных настроек. История сборки доступна через `/api/picker/history/`; детали завершённой сессии отражают состав на момент завершения. ## Идемпотентность и конфликты Изменяющие команды требуют `Idempotency-Key` с UUID. Один ключ обозначает одно действие с неизменным телом и сохраняется при timeout, повторе и перезапуске клиента. Ответ операции может включать `session`; используйте её для восстановления экрана. Несовпадение штрихкода может прийти как HTTP `200` со статусом `mismatch`: проверяйте бизнес-результат, а не только HTTP-код. При конфликте занятого заказа обновите очередь и активную сессию. При ошибке готовности завершения покажите незакрытые позиции. Сетевой timeout, `404` или `410` не подтверждает завершение либо отмену действия. ## Отмена `POST /api/picker/orders/{order_id}/cancel` — отдельная команда сборщика с причиной по схеме запроса. Сохраняйте ключ до получения определённого результата и после восстановления связи перечитывайте сессию. Не смешивайте её с покупательской отменой. Если сервер сообщил `order_cancelled`, примените актуальную сессию, обновите очередь и активную сборку. Подтверждение прочтения отмены отправляется через `/api/picker/orders/{order_id}/cancelled/ack`; оно возвращает `204` и не является новой отменой заказа.