Справочная архитектура. Это иллюстративный архитектурный материал и контрольный список объёма работ, а не проверенный клиентский проект или внедрение с измеренными результатами. Технологии, объём интеграции и результаты поставки согласуются для фактического технического задания.
Сценарий и ограничения
Предприятие заменяет отслеживание производства в электронных таблицах. Ключевое требование — двунаправленная прослеживаемость: по серийному номеру готового изделия необходимо перечислить каждую партию материала, использованную для его изготовления, а по дефектной партии материала — перечислить каждую затронутую готовую единицу. Это требование определяет модель данных: его нельзя добавить позже без повторной обработки истории.
Архитектура
Уровни и зоны ответственности
| Уровень | Технология | Зона ответственности |
|---|---|---|
| Офисное веб-приложение | Vue 3 + Element Plus | Выпуск заказов, ведение спецификаций BOM, планирование, проверка качества и отчётность. |
| Клиент для производственного участка | Android-терминал / планшет (Kotlin), с поддержкой автономной работы | Отчётность на каждой станции с управлением посредством сканирования. Предусмотрено использование в перчатках и при плохом Wi-Fi: крупные элементы управления, минимум нажатий, локальная очередь. |
| API | Go + Gin | Проверка отчётности по маршруту, правилам потребления материалов и запросам прослеживаемости. |
| Хранилище | MySQL | Заказы, маршруты, записи отчётности и генеалогия партий. |
| Шлюз устройств | Мост MQTT или OPC UA (необязательно) | Получает количество или измерения от оборудования, если поставщик предоставляет интерфейс, и нормализует их в тех же таблицах отчётности. |
| Отчётность | Задания плановой агрегации | Предварительно вычисляет выход, время цикла и загрузку станций, поскольку эти запросы обрабатывают слишком большой объём истории, чтобы выполнять их в реальном времени при каждой загрузке панели. |
Модель данных
Приведённые ниже таблицы содержат правила, от которых зависит всё остальное. Именно ошибки в них превращают работающий демонстрационный прототип в систему, которую невозможно расширять.
Основные сущности
| Сущность | Ключевые поля, связи и правила |
|---|---|
| item / bom | Многоуровневая спецификация материалов с датами действия и правилами замены. Версии BOM сохраняются, а не перезаписываются, поэтому заказ, созданный в прошлом месяце, по-прежнему разрешается по фактически использованной для него BOM. |
| work_order / routing_step | Заказ и упорядоченный список его операций; каждая операция связана с рабочим центром, нормативным временем и правилами отчётности для этого этапа. |
| production_report | Результат по каждой станции: оператор, время начала и завершения, годное количество, доработка и брак с кодами причин. Это исходные данные для каждого показателя, поэтому правила их проверки важнее панелей мониторинга. |
| material_lot / lot_consumption | Полученные партии и их списание на производственный заказ. lot_consumption — это связь, делающая генеалогию возможной; без неё прослеживаемость превращается в догадки. |
| serial / genealogy | Серийные готовые единицы, связанные с потреблёнными партиями, образуют граф, который отвечает на оба направления прослеживаемости. |
| inspection / defect | Точки контроля, правило выборки, коды дефектов и решение по результату (принять, отправить на доработку, списать); каждый элемент связан с отчётом, в результате которого была произведена единица. |
Ключевые интерфейсы
Конечные точки, содержащие бизнес-правила
| Конечная точка | Назначение и примечания по параллельной работе |
|---|---|
| POST /api/v1/reports | Отчётность станции. Проверяет, что предыдущий этап маршрута завершён, что указанное количество не превышает количество, разрешённое к производству, а потребление материалов находится в пределах допуска BOM. Отклонение некорректных данных на этом этапе обеспечивает достоверность данных отчётности. |
| POST /api/v1/reports/batch | Загрузка автономной очереди с терминалов; записи дедуплицируются по UUID клиента, при этом сохраняется время фиксации. |
| GET /api/v1/trace/forward/{lot} | По заданной партии материала возвращает каждый затронутый серийный номер готового изделия — это запрос, от которого зависит отзыв продукции. |
| GET /api/v1/trace/backward/{serial} | По заданному серийному номеру готового изделия возвращает полную генеалогию партий материалов. |
| POST /api/v1/work-orders/{id}/release | Выпускает заказ, фиксируя снимок версии BOM и маршрута, чтобы последующие изменения нормативно-справочных данных не могли переписать историю. |
Технические решения
- Генеалогия моделируется с самого начала. При добавлении прослеживаемости задним числом исторические данные уже нельзя будет проследить. Если прослеживаемость может стать будущим требованием, связь lot_consumption должна существовать с первого выпуска, даже если отчёты появятся позже.
- BOM и маршрут фиксируются снимком при выпуске заказа. Нормативно-справочные данные постоянно меняются; заказы должны по-прежнему разрешаться по версии, с которой они были выпущены, иначе отклонения себестоимости и потребления теряют смысл.
- Проверка выполняется в конечной точке отчётности, а не на панели. Показатели, рассчитанные по непроверенным данным, дают уверенные, но неверные числа. Отклонить невозможный отчёт при вводе дешевле, чем позже объяснять неверное значение выхода.
- Автономная очередь на терминале. На производстве рядом с металлом и оборудованием есть зоны нестабильного Wi-Fi. Отчётность, которая в этих зонах не работает, просто не будет выполнена, и в наборе данных незаметно появятся пропуски.
- Совместная работа с существующей ERP вместо её замены. Сопоставьте ограниченный интерфейс для заказов и перемещений запасов с миграцией ERP, используя фактические зависимости, затраты и риски; перед выбором подтвердите финансовый процесс.
Гипотетические целевые параметры проектирования
Приведённые ниже показатели являются гипотетическими примерами для планирования ёмкости, а не измеренными результатами клиента, проверенной рекомендацией по расчёту конфигурации или SLA. Установите целевые показатели приёмки для конкретного проекта после определения рабочей нагрузки, устройств, данных, оборудования и зависимостей от сторонних систем; проверьте их посредством пилотного проекта и нагрузочных испытаний до принятия целевого показателя для промышленной эксплуатации.
Целевые показатели ёмкости и производительности
| Показатель | Значение и допущение |
|---|---|
| От сканирования до подтверждения | Гипотетическая цель: локальная обратная связь менее чем за 1 секунду для заданного типа отчёта и устройства. Сохраняйте записи в очереди и различайте локальное подтверждение от принятия сервером; тестируйте задержки и сбои сети. |
| Запрос прослеживаемости | Оба направления возвращают результат за несколько секунд при типичной глубине генеалогии с использованием индексированных связей партий и серийных номеров; глубокие многоуровневые сборки проверяются на ваших реальных данных во время приёмки. |
| Панель отчётности | Данные предоставляются из предварительно вычисленных агрегатов, обновляемых по графику, согласованному с операционной службой, вместо сканирования необработанных отчётов при каждой загрузке страницы. |
| Допустимый период автономной работы | Полная рабочая смена отчётов ставится в локальную очередь и загружается после восстановления соединения; дедупликация выполняется по UUID клиента. |
Что входит в поставку
- Исходный код офисного веб-приложения, серверной части на Go и клиента Android для производственного участка в вашем репозитории
- Схема базы данных с документированными таблицами версий BOM и генеалогии, а также история миграций
- Документация API, включая контракт автономной загрузки и правила проверки отчётности
- Спецификация интерфейса ERP и согласованный формат обмена
- Примечания по развёртыванию, процедура резервного копирования и восстановления, а также примечания по настройке оборудования для этикеток или сканеров
Планирование для вашего бизнеса
Описанные выше модули — отправная точка, а не фиксированный пакет. Обычно мы ограничиваем первый выпуск одним ключевым рабочим процессом и одним административным процессом, а затем расширяем решение, когда реальное использование показывает, где находятся фактическая нагрузка и нестандартные случаи. Отправьте техническое задание с обозначенным объёмом, и мы сопоставим его с этой архитектурой и сообщим, какие части пока не нужны.
