РЕЖИМ
0 правок 👁 Архів
📝 Word-перегляд 🏠 Дашборд

Доопрацювання BAS ERP — Штрихкодування виробничого циклу

ТОВ «Укртрубоізол» × ТОВ «СофтІнформ»
28
Функц. вимог
3
Гілки інтеграції
5
Ролей
8
Відкритих питань

0Огляд

Мета. Запровадити повний штрихкодний облік руху листа стальної сировини від моменту запуску у виробництво до випуску готового виробу. Облік ведеться через мобільний додаток (Android) на виробничих дільницях та через типовий BAS-клієнт на планшеті у ОТК.

Принцип. Дві критичні точки контролю — вхід (1-й виробничий етап, «Фрезерування») і вихід (ОТК). Між ними — легка реєстрація проходження ШК через дільниці без створення документів. На основі цих даних формується звіт для нарахування ЗП. Можливість при рекламації від клієнта швидко знайти, з якого листа і від якого постачальника зроблений конкретний виріб, забезпечується типовим механізмом BAS — окремих звітів для цього у проекті НЕ робимо.

Ідентифікація. Один пристрій можуть використовувати різні робітники протягом зміни на різних етапах — персональна аутентифікація НЕ потрібна. Пристрій ідентифікується за Device ID, у BAS веде довідник «Пристрої сканування» з людським іменем.

Етап у BAS = Вид робочого центру. Адміністратор активує потрібні Види робочих центрів. У мобільний додаток передаються тільки активні. Прив'язка ШК-події до зміни визначається автоматично за часом сканування і графіком підрозділу.

1Ролі користувачів

👷

Робітник 1-го етапу

Точка ВХОДУ · Фрезерування
Завдання: Запустити лист у виробництво. Сканування → автоматично «Передача матеріалів до комори».
Пристрій: Android, мобільний додаток
👷

Робітник проміжного етапу

Плазмовий різ / Зварювання / інші
Завдання: Зафіксувати факт проходження листа через дільницю. Один скан → один запис у журнал.
Пристрій: Android, мобільний додаток
🔍

Працівник ОТК

Точка ВИХОДУ
Завдання: Прив'язати готовий виріб до 2-х листів-сировини через сканування у документі «Виробнича операція».
Пристрій: Планшет з BAS-клієнтом + USB-сканер
📊

Майстер / контролер

Моніторинг виробництва
Завдання: Бачити стан робіт по дільницях, виявляти зависання, формувати звіт ЗП.
Пристрій: BAS ERP web/desktop
⚙️

Адміністратор

Налаштування системи
Завдання: ведення довідника «Пристрої сканування» (Device ID → людське імʼя), активація етапів, графіки змін підрозділів, налаштування HTTP-сервісу.
Пристрій: BAS ERP web/desktop

2Архітектура

2.1. Загальна схема

flowchart LR subgraph Production["Виробничі дільниці"] W1[Робітник 1-го етапу
Фрезерування] W2[Робітник проміжного
етапу] end subgraph OTK["Відділ ОТК"] OW[Працівник ОТК] end subgraph Mobile["Mobile Android"] APP[Kotlin + CameraX + ML Kit
SQLite буфер] end subgraph Tablet["ОТК планшет"] BC[BAS Client + USB сканер] end subgraph BAS["BAS ERP сервер"] HTTP[HTTP сервіс
MobileScanner] D1[Документ
«Передача матеріалів
до комори»] R1[Регістр
«Журнал
проходження ШК»] D2[Документ
«Виробнича
операція»] REP[Звіти:
ЗП, Трасування] end W1 -.використовує.-> APP W2 -.використовує.-> APP OW --> BC APP -- 1-й етап --> HTTP APP -- проміжний --> HTTP HTTP -- автозаповнення --> D1 HTTP -- запис події --> R1 BC -- скан у формі --> D2 D1 --> REP R1 --> REP D2 --> REP style W1 fill:#d1fae5 style W2 fill:#dbeafe style OW fill:#ede9fe style D1 fill:#fef3c7 style D2 fill:#ede9fe style R1 fill:#dbeafe
Рис. 1. Загальна архітектура — три гілки інтеграції з BAS ERP

2.2. Технологічний стек

Мобільний додаток (Android)
Kotlin · Jetpack Compose · CameraX · Google ML Kit (Barcode Scanning) · SQLite (буфер) · Retrofit (HTTP-клієнт)
Серверна частина
BAS ERP HTTP-сервіс «MobileScanner» · JSON через HTTPS · TLS 1.2+ · Автентифікація: токен сесії або basic-auth з користувача BAS
ОТК-планшет
Типовий BAS-клієнт (web або desktop) · USB-сканер у HID-режимі

3Сценарії використання

3.1. Точка ВХОДУ — сканування на 1-му етапі

sequenceDiagram actor W as Робітник participant A as Mobile App participant H as HTTP-сервіс BAS participant B as BAS ERP W->>A: Обирає Етап = Фрезерування A->>H: GET /GetAllowedSheets (з Device ID) H->>B: Запит ШК з «Приймання листа»
(оприбутковані + неоприбутковані) B-->>H: Список ШК у Прийманні H-->>A: 200 OK [ШК...] W->>A: Сканує ШК листа A->>A: Перевірка у списку «Приймання листа» alt ШК у Прийманні A->>A: Автозапис у буфер A-->>W: Показ характеристик листа Note over A: Записи у буфері можна
редагувати / видаляти
до синхронізації W->>A: Тисне "Синхронізувати" A->>H: POST /RegisterEntryScan {sheets + Device ID} H->>B: Створити/доповнити «Передача матеріалів до комори» B-->>H: 200 OK + doc_id H-->>A: 200 OK A->>A: Записи → read-only (архів) else ШК НЕ у Прийманні A-->>W: Поле підсвічується ЧЕРВОНИМ.
Кнопка «Оновити дані» end
Рис. 2. Послідовність — точка ВХОДУ (1-й виробничий етап)

3.2. Проміжний етап — реєстрація проходження

sequenceDiagram actor W as Робітник participant A as Mobile App participant H as HTTP-сервіс BAS participant B as BAS ERP W->>A: Етап = Плазмовий різ W->>A: Сканує ШК листа A->>A: Автозапис: ШК + етап + час Note over A: Без характеристик —
лише факт проходження W->>A: "Синхронізувати" A->>H: POST /RegisterTransitScan {events} H->>B: Записати у регістр «Журнал проходження ШК» B->>B: Авто-прив'язка до зміни через графік B-->>H: 200 OK H-->>A: 200 OK A->>A: Події → read-only (архів)
Рис. 3. Послідовність — проміжний етап (легка реєстрація)

3.3. Точка ВИХОДУ — ОТК у виробничій операції

sequenceDiagram actor OW as Працівник ОТК participant T as Планшет з BAS participant B as BAS ERP OW->>T: Відкриває документ «Виробнича операція» OW->>T: Тисне "Сканувати листи" Note over T: USB-сканер у HID-режимі OW->>T: Скан ШК листа №1 T->>B: Знайти лист за ШК B-->>T: Номенклатура + характеристики T->>T: Додати у «Використані листи» OW->>T: Скан ШК листа №2 T->>T: Додати лист №2 OW->>T: Проведення документа T->>B: Зберегти і провести B->>B: Звіряння серій листа з
вкладкою «Забезпечення» етапу alt Серії співпадають B->>B: Готовий виріб ↔ 2 листи
(стандартним функціоналом BAS) else Не співпадають B-->>T: Помилка/попередження:
лист не у Забезпеченні етапу end
Рис. 4. Послідовність — точка ВИХОДУ (ОТК)

4Ескізи екранів мобільного додатку

Грубі ескізи для розуміння інтерфейсу. Фінальний дизайн — на стадії розробки.

Укртрубоізол ШК Цех №1 — Сканер А Оберіть етап: ✓ Фрезерування точка входу · активний Плазмовий різ Зварювання Зварювання Шліфування заблоковано адміном → Продовжити
1. Вибір етапу
Без авторизації користувача. Активні етапи з BAS.
Робітник Іваненко В. (П-12) ПОТОЧНИЙ ЕТАП Фрезерування точка входу 📷 Сканувати ШК У буфері 3 Відправл. 17 ↻ Синхронізувати
2. Головний
Етап, скан, буфер
← Сканер Наведіть камеру на штрихкод Скасувати
3. Сканер
Камера + ML Kit
← Назад ШК зчитано ШК 5901234123457 Номенклатура Лист 1420×6000×12 Розмір / марка 12 мм · сталь 09Г2С ✓ Автозапис у буфер без додаткових кнопок 📷 Сканувати наступний
4. Інформація про лист (1-й етап)
Автозапис; без постачальника

5Функціональні вимоги

5.1. Серверна частина BAS (F-SRV)

1HTTP-сервіс «MobileScanner»основа
Методи: GetAllowedSheets, GetActiveStages, RegisterEntryScan, RegisterTransitScan
2Інтеграція з документом «Передача матеріалів до комори»основа
Структура НЕ модифікується. Лише автозаповнення табличної частини за ШК (номенклатура, кількість)
3Регістр «Журнал проходження ШК»основа
Реквізити: ШК, етап, підрозділ, дата/час, виконавець, зміна (auto)
4Доопрацювання документа «Виробнича операція»основа
У поле «використані листи» додається можливість заповнення через сканування ШК для ОТК
5Автопривʼязка ШК-події до зміни і підрозділуоснова
На основі графіка роботи зміни робітника, виконуючого сканування
6Звіт «Виконання операцій для ЗП»звіт
На основі журналу проходження ШК. Групування: робітник / зміна / етап / підрозділ
7Звіт «Трасування виробу»звіт
Від готового виробу → до листів-сировини → до постачальника / партії
8Журнал подій сканування (audit log)допоміжне
Обмеження редагування після успішної синхронізації

5.2. Мобільний клієнт Android (F-MOB)

1Device ID замість PIN
При першому запуску — отримати Android Device ID, зберегти локально, надсилати у кожному запиті. Без персональної авторизації
2Вибір/перемикання етапу зі списку АКТИВНИХ
Список активних етапів отримується з BAS (GetActiveStages). Заблоковані адміном — відображаються сірим
3Оновлення дозволених ШК (точка ВХОДУ)
На етапі Фрезерування — кнопка «Оновити дані» отримує з BAS список ШК з «Приймання листа» (оприбутковані + неоприбутковані)
4Сканер через камеру
Google ML Kit Barcode Scanning + Jetpack CameraX
5Перевірка ШК у Прийманні
Якщо ШК не в списку Приймання — поле сканування підсвічується ЧЕРВОНИМ. Запис у буфер не відбувається
6Автозапис у буфер після успішного скану
SQLite, до 100 записів. Без окремої кнопки «зберегти» — швидкість роботи робітника
7Синхронізація з BAS
За кнопкою або auto-інтервалом (коли є мережа)
8Read-only після синхронізації, редагування до
Записи у буфері (ще не синхронізовані) — редагуються/видаляються. Після успішної синхронізації стають архівом (read-only)
9Ручне додавання ШК
На випадок пошкодженого штрихкоду на листі
10Історія у розрізі ЕТАПІВ
Поточна зміна + останні 14 днів. Старіше — авто-очищення. Опційно кнопка «Очистити архів»
11Налаштування
Перемикання етапу, адреса HTTP, тест з'єднання, інформація про пристрій (Device ID, імʼя з BAS)

5.3. ОТК у BAS (F-OTK)

1Кнопка «Сканувати ШК» у документі «Виробнича операція»
Поруч із табличною частиною «Використані листи»
2Сумісність з USB-сканером (HID)
Введення без додаткових кліків
3Автозаповнення номенклатури за ШК
З довідника BAS
4Звіряння з вкладкою «Забезпечення»
При збереженні «Виробничої операції» — серії листа звіряються з вкладкою «Забезпечення» етапу. Лист не у Забезпеченні → попередження/помилка

5.4. Адміністратор (F-ADM)

1Активація/блокування Видів робочих центрів (Етапів)
У мобільний передаються тільки активні. Заблоковані відображаються сірим у списку етапів
2Графіки роботи підрозділів
Графік або зміни — впливає на привʼязку ШК-події до зміни
3Довідник «Пристрої сканування»
Device ID → людське імʼя («Цех №1 — Сканер А»). Адмін присвоює імʼя при першій появі нового Device ID
4Журнал сканувань з фільтрами
За датою / зміною / підрозділом / пристроєм / етапом / ШК
5Налаштування адреси HTTP-сервісу
Для тиражування у мобільні додатки

6Звіт «Виконання операцій» (приклад для аналізу та ЗП)

Звіт «Виконання операцій робітниками» — основа для нарахування ЗП і аналізу продуктивності. Доступний майстру, обліковцю, фінансовому директору.

Параметри: період (з/по). Структура: Дата (якщо період > 1 день) → Етап (Вид робочого центру) → Зміни (якщо підрозділ працює по змінам) → ШК. Підрозділ — опціональне групування для етапів.

ДатаЕтапЗмінаПідрозділПристрійЧасШК листа
22.05.2026ФрезеруванняЗміна-1Цех №1Цех №1 — Сканер А08:325901234123457
22.05.2026ФрезеруванняЗміна-1Цех №1Цех №1 — Сканер А08:485901234123458
22.05.2026Плазмовий різЗміна-1Цех №2Цех №2 — Сканер Б09:155901234123457
22.05.2026ЗварюванняЗміна-1Цех №2Цех №2 — Сканер Б11:425901234123457
22.05.2026Плазмовий різЗміна-2Цех №2Цех №2 — Сканер Б14:085901234123458

Додатково — Audit log (повний журнал подій сканування у BAS, для розслідування інцидентів).

7Нефункціональні вимоги

КатегоріяВимога
ПродуктивністьСкан → підтвердження ≤ 2 с (з мережею)
ПродуктивністьСинхронізація 50 ШК ≤ 5 с
НадійністьOffline-режим — буфер до 100 ШК без втрати
УнікальністьШК листа унікальний у системі (є у залишках / уже у виробництві)
Read-onlyПісля синхронізації ШК недоступний для редагування у додатку
СумісністьAndroid 9.0+
БезпекаHTTPS TLS 1.2+, Basic Auth з обмеженим BAS-користувачем; Device ID валідується через довідник «Пристрої сканування»
UI/UXКнопки ≥ 60×60 dp, контрастна палітра, звук+вібрація на скан
ЛокалізаціяУкраїнська мова інтерфейсу
ПідтримкаУсі події у журналі подій BAS

8Приймальні критерії

  • Точка ВХОДУ: робітник сканує ШК → у BAS формується «Передача матеріалів до комори» з автозаповненою номенклатурою
  • Проміжні: скан ШК → запис у журнал → видно у звіті з auto-прив'язкою до зміни
  • ОТК: у «Виробнича операція» «використані листи» через сканування ШК
  • Звіт «Трасування»: готовий виріб → 2 листи → постачальник
  • Offline: телефон у режимі польоту → 10 сканувань → синхронізація → 10 у BAS, ШК read-only
  • Перевірка валідності: спроба ШК поза залишками → помилка, запису не відбувається
  • Зміна етапу: робітник обирає інший етап → подальші скани як проходження через новий етап
  • Документація: користувача (робітник, ОТК, адмін)

9Ризики

IDРизикСерйозністьЗменшення
R1Слабкий Wi-Fi у цехахВисокаOffline-режим (передбачено архітектурно)
R2Старі/брудні ШК не зчитуютьсяСередняОпція ручного введення
R3Несумісність формату ШК з ML KitНизькаПеревірка на стадії розробки; запас — ZXing
R4Опір робітниківВисокаПростий UX, тренінг, поетапне впровадження
R5Невідповідність API різних редакцій BASНизькаУточнити редакцію перед розробкою
R6Дублювання скануваньНизькаДедуплікація в буфері + перевірка на сервері

10Відкриті питання (потребують уточнення)

Q1. Точна редакція BAS ERP у Замовника (2.1 або 2.5)
Q2. Формат і структура ШК на листах (Code 128 / EAN / QR; вміст коду)
Q3. Покриття Wi-Fi у цехах
Q4. Документ «Передача матеріалів до комори» — автопроведення чи чернетка для ручного проведення
Q5. Графіки змін у BAS — актуальні чи потрібно імпортувати/створити
Q6. Повний перелік виробничих етапів
Q7. Дублювання сканувань — політика блокування
Q8. Кодування готового виробу для рекламації — алгоритм (якщо стандартного механізму BAS недостатньо)

11Глосарій

BAS ERP
Інформаційна система Business Automation Software ERP
Лист
Стальний лист — основна одиниця обліку сировини
Точка входу
1-й виробничий етап (Фрезерування). Створюється «Передача матеріалів до комори»
Проміжний етап
Дільниця між точкою входу і ОТК. Лише фіксація проходження
Точка виходу
ОТК — присвоює партію/серію готовому виробу, прив'язує до 2-х листів
Передача матеріалів до комори
Типовий документ BAS — рух матеріалів зі складу у виробництво
Виробнича операція
Типовий документ BAS — фіксує виробничий процес. Доопрацьовується для ОТК
Журнал проходження ШК
Регістр відомостей BAS — записи усіх сканувань на проміжних етапах
Read-only ШК
Стан ШК після синхронізації — недоступний для редагування
ШК
Штрихкод
ОТК
Відділ технічного контролю
API
Application Programming Interface — програмний інтерфейс
HTTP-сервіс
Точка інтеграції BAS ERP з зовнішніми системами через HTTP
ML Kit
Google ML Kit Barcode Scanning для Android
CameraX
Google Jetpack CameraX — фреймворк для камери
HID-режим
USB-сканер у режимі клавіатури
Трасування
Готовий виріб → листи-сировина → постачальник

12Об'єкти у BAS — огляд

Доопрацювання у вигляді розширення конфігурації (.cfe). Типова не модифікується.

Тип об'єктаНазваПризначення
Регістр відомостейЖурналПроходженняШКЗапис кожної події сканування на проміжному етапі. Основа для звіту ЗП
ДовідникПристроїСкануванняПерелік дозволених мобільних пристроїв з людськими іменами
HTTP-сервісМобільнийСканер4 операції для інтеграції з мобільним
Загальний модульМобільнийСканерAPIБізнес-логіка обробки запитів
ОбробкаНалаштуванняЕтапівМобільногоАдмін активує які Види РЦ є етапами
ЗвітВиконанняОпераційДляЗПНа основі регістра з групуваннями

Доопрацювання типових об'єктів: документ «Виробнича операція» — обробник ПередЗаписом для звіряння з вкладкою «Забезпечення».

13Регістр «ЖурналПроходженняШК»

Зберігає кожну подію сканування на проміжних виробничих етапах.

РеквізитКатегоріяТипОпис
Період(стандартний)ДатаЧас сканування з мобільного. Не округлюється
ШКВимірюванняРядок (50)Штрихкод листа. Унікальний
ЕтапВимірюванняВидРобочогоЦентруНа якій дільниці зафіксовано
ПідрозділРесурсСтруктураПідприємстваПідрозділ із реквізиту Виду РЦ (auto)
ПристрійРесурсПристроїСкануванняЯкий пристрій передав подію
ЗмінаРесурсРядок (50)Назва зміни — auto за часом і графіком підрозділу
КоментарПомилкиРесурсРядок (250)Якщо подія записана з валідаційною помилкою

Періодичність: у межах секунди (щоб не агрегувати події у межах одного запису).

Хто пише: тільки модуль «МобільнийСканерAPI» при обробці RegisterTransitScan. Ручне редагування — тільки адмін.

14Довідник «ПристроїСканування»

РеквізитТипОпис
КодРядок (64)Унікальний ID пристрою (Android ANDROID_ID)
НазваРядок (150)Людське ім'я: «Цех №1 — Сканер А»
АктивнийБулевоЯкщо false — пристрій блокується
ДатаПершогоВходуДатаAuto при першому запиті
ДатаОстанньоїАктивностіДатаAuto при кожному запиті
КоментарРядок (500)Вільне поле адміна

Auto-додавання нових пристроїв

При першому запиті від невідомого Code:

  1. Створюється елемент з Активний = false
  2. Назва = «НОВИЙ: <Code> (підтвердити адміну)»
  3. HTTP-сервіс повертає 403 з повідомленням
  4. Мобільний показує «Зверніться до адміна, ID: ...»
  5. Адмін заходить, перейменовує і ставить Активний = true

15Налаштування Етапів (= Видів робочих центрів)

«Етап мобільного» = «Вид робочого центру» у BAS (типовий обʼєкт). Адмін активує які саме ВРЦ доступні мобільному.

Обробка «НалаштуванняЕтапівМобільного»:

  • Таблична частина: Вид робочого центру · Активний у мобільному (галочка) · Точка входу (тільки одна може бути true) · Підрозділ (auto, read-only)
  • Кнопка «Перевірити налаштування» валідує: є хоча б 1 точка входу, всі активні мають підрозділ
  • Зміни зберігаються у регістр «АктивніЕтапиМобільного»

Як використовується: метод GetActiveStages повертає лише ті ВРЦ де Активний = true. Якщо адмін відключає етап — мобільний через ~1 хв (TTL кешу) перестає його показувати.

16Документ «Передача матеріалів до комори»

Типовий BAS-документ. Структура НЕ змінюється. HTTP-сервіс програмно створює і заповнює.

Що заповнює HTTP-сервіс

ПолеЗвідки
ДатаПоточний час сервера
ОрганізаціяЗ налаштувань HTTP-сервісу
СкладВідправникЗ «Приймання листа» де знайдено ШК
СкладОдержувачПідрозділ точки входу
Коментар«Створено автоматично з мобільного: <Назва пристрою>»
Таблична частинаОдин рядок на кожен ШК з номенклатурою з «Приймання»

Підтягування номенклатури

  1. За ШК шукаємо документ «Приймання листа»
  2. Беремо: Номенклатура, Характеристика, Серія (= ШК)
  3. Кількість = 1, ціна — пусто

Проведення: за замовч. НЕ проводимо — зберігаємо як чернетку для перевірки обліковцем. Якщо у налаштуваннях «Авто-проводити» — провести в момент створення.

17Документ «Виробнича операція» — звіряння через Забезпечення

Типовий BAS-документ. Доопрацювання — обробник ПередЗаписом + кнопка «Сканувати ШК» на формі.

Що додаємо у форму

  • На вкладці «Використані листи» — кнопка «Сканувати ШК»
  • Сканований ШК → додається рядок з auto-заповненням Номенклатури/Серії

Логіка звіряння при збереженні

  1. Беремо ШК з таблиці «Використані листи»
  2. Беремо ШК з вкладки «Забезпечення» етапу
  3. Перевіряємо що кожен «Використаний» є у «Забезпеченні»
  4. Якщо ні — попередження: «Лист <ШК> не у Забезпеченні етапу, продовжити? Так/Ні»
  5. У «Жорсткому» режимі (налаштування) — замість попередження видаємо помилку, документ не записується
  6. За замовч. — «Попередження» (не блокувати, але повідомити)

18HTTP-сервіс «МобільнийСканер» — структура

4 операції. JSON через POST або GET. Авторизація — Basic Auth з користувачем «МобільнийСканерAPI».

Загальні правила обробки

  1. Кожен запит містить device_id
  2. Сервіс шукає пристрій у «ПристроїСканування» за Code
  3. Не знайдено — auto-додає як новий, повертає 403
  4. Знайдено, але Активний=false — 403 з повідомленням
  5. ОК — оновлюємо «ДатаОстанньоїАктивності», обробляємо
  6. Лог запиту у регламентний журнал BAS

Формат помилок: JSON з error_code (константа), message (українською), details (об'єкт).

Приклади запитів і відповідей (4 методи)

GET /MobileScanner/GetAllowedSheets?device_id={id}
Повертає список ШК листів, які є у залишках і ще НЕ передавалися у виробництво.
Відповідь 200
{
  "sheets": [
    { "code": "5901234123457", "nomenklatura": "Лист 1420×6000×12",
      "supplier": "ТОВ Метінвест", "in_stock": true },
    { "code": "5901234123458", "nomenklatura": "Лист 1220×6000×10",
      "supplier": "ТОВ Метінвест", "in_stock": true }
  ],
  "as_of": "2026-05-22T10:15:00Z"
}
GET /MobileScanner/GetActiveStages?device_id={id}
Список активних етапів виробництва (Видів робочих центрів) для відображення у мобільному.
Відповідь 200
{
  "stages": [
    { "code": "FREZ", "name": "Фрезерування", "is_entry_point": true },
    { "code": "PLAZMA", "name": "Плазмовий різ", "is_entry_point": false },
    { "code": "WELD", "name": "Зварювання", "is_entry_point": false }
  ]
}
POST /MobileScanner/RegisterEntryScan
Сканування на 1-му етапі. Створює (або доповнює) документ «Передача матеріалів до комори».
Запит
{
  "device_id": "abc123def456",
  "stage": "FREZ",
  "sheets": ["5901234123457", "5901234123458"],
  "timestamps": ["2026-05-22T10:32:14Z", "2026-05-22T10:33:02Z"]
}
Відповідь 200
{
  "ok": true,
  "document_id": "ПМК-2026-05-22-00018",
  "accepted_sheets": 2,
  "rejected": []
}
POST /MobileScanner/RegisterTransitScan
Сканування на проміжному етапі. Запис у регістр «Журнал проходження ШК».
Запит
{
  "device_id": "abc123def456",
  "stage": "PLAZMA",
  "events": [
    { "sheet": "5901234123457", "ts": "2026-05-22T14:05:23Z" },
    { "sheet": "5901234123458", "ts": "2026-05-22T14:08:11Z" }
  ]
}
Відповідь 200
{
  "ok": true,
  "registered": 2,
  "shift_resolved": "Зміна-2 (14:00-22:00)"
}

19Звіт «Виконання операцій для ЗП»

Параметри

ПараметрТипОпис
Період з / поДатаОбов'язковий. За замовч. — поточний місяць
Підрозділ (фільтр)СписокОпційно
Етап (фільтр)Список ВРЦОпційно
Пристрій (фільтр)СписокОпційно

Структура виводу

  • Якщо період > 1 дня → перше групування за Датою
  • Друге — Етап
  • Якщо підрозділ зі змінами — третє за Зміною
  • У рядках — ШК, час, ім'я пристрою
  • Колонка-підсумок «Кількість листів» по групах

Експорт: стандартні Excel / PDF.

20Алгоритм: сканування на точці ВХОДУ

Послідовність при обробці RegisterEntryScan:

  1. Перевірити device_id. Якщо не пройшло — 403
  2. Перевірити що stage відповідає ВРЦ з Точка входу = true. Якщо ні — 400
  3. Перевірити що sheets не порожній. Інакше — 400
  4. Для кожного ШК:
    • Знайти документ «Приймання листа»
    • Не знайдено → rejected з причиною «not_in_receiving»
    • ШК уже у регістрі за 24 год → rejected з «already_in_production» + інформація з якого пристрою/коли
    • Інакше → accepted
  5. Якщо accepted порожній — 409 з переліком rejected
  6. Створити документ «Передача матеріалів до комори»: один документ на всі accepted ШК, заповнення з «Приймання»
  7. Записати документ (без проведення, якщо «Авто-проведення» вимкнено)
  8. Повернути 200 з document_id і списками accepted/rejected

Транзакційність: кроки 5-7 — в одній транзакції BAS. Якщо запис впав — нічого не зберігається, повертаємо 500.

21Алгоритм: сканування на проміжному етапі

Обробка RegisterTransitScan:

  1. Перевірити device_id
  2. Перевірити stage — активний ВРЦ? Інакше — 404
  3. Перевірити events: не порожній, кожна подія має sheet + ts
  4. Для кожної події:
    • Перевірити чи ШК існує у системі (у «Прийманні листа»). Не існує → rejected
    • Визначити зміну за часом і графіком підрозділу етапу (див. §23)
    • Створити запис у «ЖурналПроходженняШК»
  5. Повернути 200 з registered і rejected

Дедуплікація: дублювання одного ШК на одному етапі в межах 60 секунд — один запис. Другий ігноруємо, мобільному не повідомляємо помилку.

22Алгоритм: ОТК + звіряння з Забезпеченням

Виконується у BAS-формі документа «Виробнича операція», без мобільного.

  1. ОТК відкриває документ → вкладка «Використані листи»
  2. Натискає «Сканувати ШК» → відкривається допоміжна форма з полем введення (приймає Enter — стандарт USB-сканера у HID-режимі)
  3. На кожен сканований ШК:
    • Шукаємо лист у системі
    • Знайдено → додаємо рядок у таблицю з номенклатурою/серією
    • Не знайдено → повідомлення «Лист не знайдено»
  4. «Закрити» — закриває форму сканування
  5. ОТК натискає «Провести і закрити»
  6. Обробник ПередЗаписом робить звіряння з Забезпеченням (див. §17)
  7. Якщо все ОК — документ проводиться, готовий виріб має зв'язок до листів
  8. Якщо є невідповідність — попередження (або помилка у «Жорсткому» режимі)

23Прив'язка події до зміни — алгоритм

Як автоматично визначається «Зміна» при запису у регістр:

  1. З Етапу події → отримуємо Підрозділ (реквізит ВРЦ)
  2. З Підрозділу → Графік роботи (типовий реквізит)
  3. Тип графіку:
    • «Без змін» → у «Зміна» записуємо «—»
    • «Зі змінами» → для часу події знаходимо зміну з інтервалом що включає цей час. Записуємо назву
  4. Якщо подія потрапляє у пересмінку → записуємо попередню зміну + коментар: «Пересмінка (наступна Зміна-3)»
  5. Графік не налаштований → «Зміна не визначена», подія потрапляє у звіт як аномалія

24Поведінка мобільного додатку (бізнес-вимоги)

Це НЕ архітектура. Описуємо що робить додаток, без подробиць як закодовано. Розробник вирішить технічну реалізацію.

При першому запуску

  • Додаток отримує і зберігає свій ідентифікатор (Android ANDROID_ID)
  • Першим екраном — налаштування адреси HTTP-сервісу + тест зʼєднання
  • При першому з'єднанні — пристрій авто-додається у BAS у статусі «потребує підтвердження»
  • До підтвердження адміном — додаток показує «Зверніться до адміна» і не дає сканувати

При повторних запусках

  • Підтверджений пристрій → показується останній етап і кнопка «Сканувати»
  • Якщо є несинхронізовані сканування — індикатор «N не синхронізовано»

При втраті мережі

  • Нові сканування зберігаються локально зі статусом «не синхронізовано»
  • UI показує що мережі нема, але дозволяє продовжувати сканувати
  • Список дозволених ШК — використовується останній відомий

При відновленні мережі

  • Авто-синхронізація накопичених сканувань (без участі робітника)
  • Після синхронізації — сканування → read-only
  • Якщо BAS повернув валідаційну помилку — статус «відхилено» з причиною українською

Переключення етапу

  • Робітник у налаштуваннях обирає інший етап з активних
  • Незавершені сканування з попереднього — не втрачаються, синхронізуються як були
  • Нові сканування пишуться у новий етап

25Межові випадки

СитуаціяПоведінка
Камера не зчитує ШК (брудний/пошкоджений)Кнопка «Ввести вручну» — поле для введення цифр
Робітник відсканував той самий ШК двічі поспіль1-й етап: показати «вже у буфері». Проміжний: ігнорувати (дедуплікація на сервері)
BAS повернув 5xxСканування залишаються у буфері. Спроби з інтервалом 1, 2, 4, 8, 16 хв
Адмін заблокував етап під час роботиПри наступній синхронізації або через 1 хв (TTL) — етап зникає. Незавершені синхронізуються, нові недоступні
Адмін заблокував пристрій403 на наступному запиті. «Пристрій заблоковано адміном», сканування недоступне
ШК належить листу, який видалили з BAS404 на синхронізації. «Відхилено: лист видалено з системи»
Час на пристрої не синхронізований з серверомBAS використовує СВІЙ час для регістра. Час з мобільного — тільки для логу
Робітник закрив додаток в момент скануванняСканування у буфері зберігається. При наступному відкритті — продовжується синхронізація

26Тестові сценарії

Описи українською для перевірки реалізації. Формат: ситуація — дії — очікуваний результат.

1. Перше використання нового пристрою

Ситуація: новий планшет, адмін не додав у BAS. Дії: робітник встановлює додаток, налаштовує адресу HTTP. Очікується: у BAS з'явився новий пристрій (Активний=false). Додаток показує «Не активований, ID: ...». Сканування недоступне.

2. Підтвердження пристрою адміном

Дії: адмін перейменовує («Цех №1 — Сканер А»), ставить Активний=true. Очікується: робітник перезапускає (або чекає 1 хв) — пристрій працює, доступний вибір етапу.

3. Успішне сканування на точці ВХОДУ

Дії: робітник на Фрезеруванні сканує ШК «5901234123457» (валідний). Синхронізує. Очікується: у BAS створений документ «Передача матеріалів до комори» у чернетках з 1 рядком (Лист 1420×6000×12). У мобільному ШК → «синхронізовано».

4. ШК не знайдено у Прийманні

Дії: сканує «9999999999999» (нема у Прийманні). Очікується: поле червоне, «Лист не знайдено у Прийманні». У буфер НЕ додається.

5. Конфлікт — лист уже у виробництві

Ситуація: робітник №1 о 09:00 відсканував ШК і синхронізував. Робітник №2 о 09:15 теж сканує цей ШК. Очікується: BAS повертає 409. ШК → «відхилено» з причиною «Лист уже у виробництві, пристрій Цех №1 — Сканер А о 09:00».

6. Робота без мережі і подальша синхронізація

Дії: у цеху без Wi-Fi робітник сканує 10 ШК. Виходить у зону з Wi-Fi. Очікується: авто-синхронізація. У BAS у регістрі 10 записів зі зміною за часом і графіком підрозділу.

7. Дублювання сканування на проміжному етапі

Дії: ШК о 14:00 і 14:00:30 (помилково). Очікується: у регістрі — один запис (другий через дедуплікацію). Мобільний показує обидва успішні скани.

8. Звіряння у ОТК — успіх

Ситуація: у Забезпеченні листи «5901234123457» і «5901234123458». Дії: ОТК сканує обидва, проводить документ. Очікується: документ проводиться, готовий виріб має зв'язок з 2 листами.

9. Звіряння у ОТК — невідповідність

Ситуація: у Забезпеченні «5901234123457». ОТК сканує «9999999999999». Очікується (Попередження): «Лист 9999999999999 не у Забезпеченні, продовжити?». Жорстко: документ не проводиться.

10. Звіт за період

Дії: запустити звіт за період 01.05–31.05. Очікується: групування Дата → Етап → Зміна → ШК. У підсумках — кількість листів. Фільтри за підрозділом і пристроєм.

11. Адмін відключає етап під час роботи

Дії: адмін знімає галочку «Активний у мобільному» для одного етапу. Очікується: робітник може закінчити поточне сканування і синхронізувати. Через 1 хв — етап зникає зі списку.

12. Запит з неактивованого пристрою

Ситуація: хтось викачав APK і налаштував з'єднання. Очікується: BAS отримує запит з невідомим device_id, auto-додає у довідник зі статусом «потребує підтвердження», повертає 403.

27Що НЕ входить у проект

  • Інтерфейс друку етикеток зі ШК для нових листів — типовий механізм BAS
  • Звіт «Трасування виробу» (виріб → листи-сировина → постачальник) — типовий BAS
  • Звіт «Незавершені листи» — типовий BAS
  • iOS-додаток — тільки Android
  • Push-нотифікації робітнику — не передбачено у першій черзі
  • Інтеграція з Google Play Store — внутрішнє розповсюдження APK
  • Технологічний стек мобільного (Android API level, фреймворки, бібліотеки) — окремий артефакт «Engineering choices», оновлюється перед стартом розробки

📝 Активні правки (0)

👁 Архів оброблених коментарів (0)