- Когда проставляется
- При создании идентификатора / PlantUnit — код выделен из пула, этикетка ещё не печаталась.
- Что означает
- Идентификатор занят под конкретное растение, физическая маркировка ещё не начата.
Справка
Гайд по АРМ
Краткое описание итерации 1: список растений, карточка со сменой статуса, dev-стенд столов с drag-and-drop и QR. Ниже — статусная модель: что означает каждый статус и когда он проставляется.
Разделы интерфейса
- Растения
Список PlantUnit с фильтром по статусу. Можно создать новое растение (статус Зарезервирован) и открыть карточку.
- Карточка растения
Identifier, горшок, QR-этикетка, доступные переходы по state machine и история событий. Переходы меняют статус только через API (с записью события).
- Столы
Dev-стенд: растения по столам T-01…T-04, перестановка drag-and-drop, сайдбар с данными и QR (public code) для сканера телефона / ТСД. Перестановка пишет событие «Перестановка на стол», статус при этом не меняется.
Принципы статусной модели
Статус — это производственный этап растения, а не агрономический факт. Полив, подкормка и стрижка в историю пишутся отдельно и статус не меняют.
Смена статуса только через явные команды / события (никогда «тихим» UPDATE поля). В той же транзакции пишется неизменяемое событие в историю.
В API и БД коды статусов остаются английскими (`Reserved`, `Printed`, …). В интерфейсе показываются русские названия; при наведении на бейдж виден технический код.
Основной путь (happy path)
Типичная цепочка от резерва идентификатора до упаковки:
- Зарезервирован
- →Напечатан
- →Нанесён
- →Верифицирован
- →Размещён
- →На выращивании
- →Готов к упаковке
- →Упакован
Все статусы
- Когда проставляется
- После успешной печати QR-этикетки (PrintJob выполнен).
- Что означает
- Этикетка с public code существует, но ещё не подтверждена на горшке.
- Когда проставляется
- После подтверждения нанесения этикетки на горшок (PLC / датчик / оператор).
- Что означает
- Код физически на горшке; качество считывания ещё не подтверждено камерой.
- Когда проставляется
- Камера / сканер подтвердили: код читается и совпадает с ожидаемым.
- Что означает
- Маркировка принята. Растение может участвовать в range-binding стола.
- Когда проставляется
- Камера не смогла прочитать код, код не совпал или этикетка повреждена.
- Что означает
- Нужна перепечатка (возврат к «Напечатан») или физическая отбраковка.
- Когда проставляется
- Оператор / линия фиксирует физическую отбраковку после ошибки верификации.
- Что означает
- Терминальный статус: растение выведено из оборота как брак маркировки.
- Когда проставляется
- После привязки верифицированного растения к столу (TableOccupancy / placement).
- Что означает
- Растение стоит на конкретном столе, выращивание ещё не начато как этап.
- Когда проставляется
- Стол / партия переведена в оборот выращивания (или явный переход с «Размещён»).
- Что означает
- Основной производственный этап. Агрооперации (полив и т.п.) статус не меняют.
- Когда проставляется
- Растение / стол признаны готовыми к отгрузке или упаковке.
- Что означает
- Ожидает упаковки; можно списать при выбытии до упаковки.
- Когда проставляется
- После фиксации упаковки / отгрузки.
- Что означает
- Терминальный успешный статус жизненного цикла в теплице.
- Когда проставляется
- Гибель, брак выращивания, ручное выбытие со статусов «Размещён» / «На выращивании» / «Готов к упаковке».
- Что означает
- Терминальный статус выбытия без упаковки.
Допустимые переходы
Граф итерации 1 (как в API). Кнопки на карточке растения предлагают только эти переходы.
| Из | В | Когда / действие |
|---|---|---|
| Зарезервирован | Напечатан | Печать этикетки |
| Напечатан | Нанесён | Нанесение на горшок |
| Нанесён | Верифицирован | Камера — OK |
| Нанесён | Ошибка верификации | Камера — FAIL |
| Ошибка верификации | Напечатан | Перепечатка |
| Ошибка верификации | Отбракован | Отбраковка |
| Верифицирован | Размещён | Привязка к столу |
| Размещён | На выращивании | Старт выращивания |
| Размещён | Списан | Списание |
| На выращивании | Готов к упаковке | Готовность к упаковке |
| На выращивании | Списан | Списание |
| Готов к упаковке | Упакован | Упаковка |
| Готов к упаковке | Списан | Списание |
Терминальные: Упакован, Отбракован, Списан — исходящих переходов нет.
Стол и статус
Привязка к столу (в т.ч. drag-and-drop на стенде) — отдельная операция. Она меняет table_id и пишет событие, но не обязана менять статус.
По целевой архитектуре размещение на столе обычно следует за Верифицирован → Размещён. На dev-стенде растения в разных статусах можно переставлять для демонстрации UI.