vault backup: 2025-09-12 13:16:24
This commit is contained in:
8
.obsidian/app.json
vendored
8
.obsidian/app.json
vendored
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"alwaysUpdateLinks": true,
|
||||
"promptDelete": false
|
||||
"promptDelete": false,
|
||||
"pdfExportSettings": {
|
||||
"pageSize": "Letter",
|
||||
"landscape": false,
|
||||
"margin": "0",
|
||||
"downscalePercent": 100
|
||||
}
|
||||
}
|
||||
459
adssa.md
459
adssa.md
@@ -3,9 +3,11 @@
|
||||
## Функциональные требования
|
||||
|
||||
### FR-001: Поддержка типов лотков
|
||||
|
||||
**Описание**: Система должна поддерживать работу с четырьмя типами лотков (TUB1, TUB2, TUB4, TUB8) с различным количеством активных ячеек.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- TUB1: поддержка 1 активной ячейки с одним SKU
|
||||
- TUB2: поддержка 2 ячеек с различными SKU
|
||||
- TUB4: поддержка 4 активных ячеек
|
||||
@@ -13,9 +15,11 @@
|
||||
- Валидация соответствия типа лотка и номера ячейки
|
||||
|
||||
### FR-002: Контрольное сканирование товаров
|
||||
|
||||
**Описание**: Система должна обеспечивать контрольное сканирование товаров с поддержкой различных типов кодов.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- Поддержка сканирования SGTIN (2D QR-коды)
|
||||
- Поддержка сканирования EAN (1D штрих-коды)
|
||||
- Режим без сканирования для товаров, не требующих контроля
|
||||
@@ -23,9 +27,11 @@
|
||||
- Защита от двойного сканирования (таймер 0.5 сек)
|
||||
|
||||
### FR-003: Световая индикация ячеек
|
||||
|
||||
**Описание**: Система должна обеспечивать точную световую индикацию активных ячеек для каждого типа лотка.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- TUB1: подсветка всех 8 лампочек
|
||||
- TUB2: подсветка 4 лампочек
|
||||
- TUB4: подсветка 2 лампочек
|
||||
@@ -33,18 +39,22 @@
|
||||
- Режим мигания для товаров со специальными маркерами
|
||||
|
||||
### FR-004: Печать этикеток
|
||||
|
||||
**Описание**: Система должна поддерживать печать этикеток через сетевые принтеры.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- Управление сетевыми принтерами через WAMAS-C
|
||||
- Загрузка файлов из директории `/hcom/to_ssi/print/pbl_network_printer/`
|
||||
- Использование файла по умолчанию при недоступности основного
|
||||
- Обработка ошибок печати с соответствующими уведомлениями
|
||||
|
||||
### FR-005: Инвентаризация
|
||||
|
||||
**Описание**: Система должна поддерживать процесс инвентаризации лотков хранения.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- Поячеечная инвентаризация лотков
|
||||
- Отображение наименований SKU (до 42 символов)
|
||||
- Ввод фактического количества через интерфейс станции
|
||||
@@ -52,9 +62,11 @@
|
||||
- Автоматическая отправка результатов в HOST систему
|
||||
|
||||
### FR-006: Обработка маркеров товаров
|
||||
|
||||
**Описание**: Система должна обрабатывать специальные маркеры товаров и отображать соответствующие индикации.
|
||||
|
||||
**Критерии приемки**:
|
||||
|
||||
- Маркер "damaged" → отображение "МЕХ"
|
||||
- Маркер "careful" → отображение "СТЕКЛ"
|
||||
- Маркер "scan" + SGTIN=true → отображение "МАРКИР"
|
||||
@@ -63,26 +75,31 @@
|
||||
## Нефункциональные требования
|
||||
|
||||
### NFR-001: Производительность
|
||||
|
||||
- Время отклика системы на действия оператора: не более 2 секунд
|
||||
- Пропускная способность: обработка до 100 операций в минуту на станцию
|
||||
- Время обработки сканирования: не более 1 секунды
|
||||
|
||||
### NFR-002: Надежность
|
||||
|
||||
- Доступность системы: 99.5% в рабочее время
|
||||
- Устойчивость к сбоям сети между WAMAS и HOST системой
|
||||
- Автоматическое восстановление после кратковременных отключений
|
||||
|
||||
### NFR-003: Безопасность
|
||||
|
||||
- Валидация всех входящих сообщений от HOST системы
|
||||
- Логирование всех операций для аудита
|
||||
- Защита от некорректных данных в XML сообщениях
|
||||
|
||||
### NFR-004: Совместимость
|
||||
|
||||
- Обратная совместимость с существующими процессами WAMAS
|
||||
- Поддержка существующего протокола HOST Communication
|
||||
- Совместимость с текущим аппаратным обеспечением PTL станций
|
||||
|
||||
### NFR-005: Масштабируемость
|
||||
|
||||
- Поддержка до 50 PTL станций одновременно
|
||||
- Возможность добавления новых типов лотков без изменения архитектуры
|
||||
- Горизонтальное масштабирование обработки сообщений
|
||||
@@ -90,18 +107,21 @@
|
||||
## Технические характеристики
|
||||
|
||||
### Аппаратные требования
|
||||
|
||||
- **PTL станции**: Дисплеи, световые индикаторы, кнопки-мультилайты
|
||||
- **Сканеры**: Стационарные сканеры 1D/2D кодов на каждой станции
|
||||
- **Принтеры**: Сетевые принтеры этикеток (один на станцию)
|
||||
- **Сетевая инфраструктура**: Ethernet подключение для всех устройств
|
||||
|
||||
### Программные требования
|
||||
|
||||
- **WAMAS-C**: Центральная система управления складом
|
||||
- **HOST система**: ERP/WMS система верхнего уровня
|
||||
- **База данных**: Таблицы для хранения данных операций и кодов
|
||||
- **Файловая система**: Доступ к сетевым директориям для файлов печати
|
||||
|
||||
### Протоколы и форматы
|
||||
|
||||
- **Обмен данными**: XML сообщения между HOST и WAMAS
|
||||
- **Коды товаров**: SGTIN (2D QR), EAN (1D штрих-код)
|
||||
- **Файлы печати**: PDF формат для этикеток
|
||||
@@ -113,34 +133,97 @@
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
HOST[HOST System<br/>ERP/WMS] WAMAS[WAMAS-C<br/>Controller]
|
||||
PTL1[PTL Station #001] PTL2[PTL Station #002] PTLX[PTL Station #XXX]
|
||||
HOST[HOST System<br/>ERP/WMS]
|
||||
WAMAS[WAMAS-C<br/>Controller]
|
||||
PTL1[PTL Station #001]
|
||||
PTL2[PTL Station #002]
|
||||
PTLX[PTL Station #XXX]
|
||||
|
||||
subgraph Equipment1 ["PTL Station Equipment"]
|
||||
DISP[Display] LIGHTS[Light Indicators] SCAN[Scanner] PRINT[Printer] BTN[Buttons/Multilights]
|
||||
end HOST <==>|XML Messages| WAMAS
|
||||
WAMAS -->|Control Commands| PTL1 WAMAS -->|Control Commands| PTL2 WAMAS -->|Control Commands| PTLX PTL1 --> DISP
|
||||
PTL1 --> LIGHTS PTL1 --> SCAN PTL1 --> PRINT PTL1 --> BTN
|
||||
DISP[Display]
|
||||
LIGHTS[Light Indicators]
|
||||
SCAN[Scanner]
|
||||
PRINT[Printer]
|
||||
BTN[Buttons/Multilights]
|
||||
end
|
||||
|
||||
HOST <==>|XML Messages| WAMAS
|
||||
WAMAS -->|Control Commands| PTL1
|
||||
WAMAS -->|Control Commands| PTL2
|
||||
WAMAS -->|Control Commands| PTLX
|
||||
|
||||
PTL1 --> DISP
|
||||
PTL1 --> LIGHTS
|
||||
PTL1 --> SCAN
|
||||
PTL1 --> PRINT
|
||||
PTL1 --> BTN
|
||||
```
|
||||
|
||||
### Взаимодействие компонентов
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant HOST as HOST System participant WAMAS as WAMAS-C Controller participant PTL as PTL Station Hardware HOST->>WAMAS: disp-add, tub-type, inventory-new-add
|
||||
WAMAS->>PTL: Station Commands PTL->>WAMAS: Hardware Status & Scan Data WAMAS->>HOST: pick-response, print-response, inventory-response Note over HOST,PTL: XML Protocol Communication
|
||||
participant HOST as HOST System
|
||||
participant WAMAS as WAMAS-C Controller
|
||||
participant PTL as PTL Station Hardware
|
||||
|
||||
HOST->>WAMAS: disp-add, tub-type, inventory-new-add
|
||||
WAMAS->>PTL: Station Commands
|
||||
PTL->>WAMAS: Hardware Status & Scan Data
|
||||
WAMAS->>HOST: pick-response, print-response, inventory-response
|
||||
|
||||
Note over HOST,PTL: XML Protocol Communication
|
||||
```
|
||||
|
||||
### База данных
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
RESERVE_LINES_OW { int TRANSFERID PK int order_id int order_line_id string station_id boolean print boolean SGTIN int LEN string marker } TUB_TYPE_OW {
|
||||
int TRANSFERID PK int box_number
|
||||
string tu_type } INVENTORY_OW {
|
||||
int TRANSFERID PK int box_number string tu_type string station_id } PICK_WO {
|
||||
int TRANSFERID PK int picked int pick_status string station_id int tub_number } PICK_CODE_WO {
|
||||
int TRANSFERID PK string item_code } PRINT_WO {
|
||||
int TRANSFERID PK int print_status string station_id int order_id } PICK_WO ||--o{ PICK_CODE_WO : "TRANSFERID"
|
||||
RESERVE_LINES_OW {
|
||||
int TRANSFERID PK
|
||||
int order_id
|
||||
int order_line_id
|
||||
string station_id
|
||||
boolean print
|
||||
boolean SGTIN
|
||||
int LEN
|
||||
string marker
|
||||
}
|
||||
|
||||
TUB_TYPE_OW {
|
||||
int TRANSFERID PK
|
||||
int box_number
|
||||
string tu_type
|
||||
}
|
||||
|
||||
INVENTORY_OW {
|
||||
int TRANSFERID PK
|
||||
int box_number
|
||||
string tu_type
|
||||
string station_id
|
||||
}
|
||||
|
||||
PICK_WO {
|
||||
int TRANSFERID PK
|
||||
int picked
|
||||
int pick_status
|
||||
string station_id
|
||||
int tub_number
|
||||
}
|
||||
|
||||
PICK_CODE_WO {
|
||||
int TRANSFERID PK
|
||||
string item_code
|
||||
}
|
||||
|
||||
PRINT_WO {
|
||||
int TRANSFERID PK
|
||||
int print_status
|
||||
string station_id
|
||||
int order_id
|
||||
}
|
||||
|
||||
PICK_WO ||--o{ PICK_CODE_WO : "TRANSFERID"
|
||||
```
|
||||
|
||||
## Use Cases
|
||||
@@ -149,16 +232,38 @@ erDiagram
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Лоток прибывает на станцию] --> B[Отображение 'МАРКИР' и количества] B --> C[Подсветка ячейки лотка] C --> D[Оператор берет товар] D --> E[Сканирование SGTIN QR-код] E --> F{Длина кода >= LEN?} F -->|Нет| G[Сообщение 'Пересканировать'] G --> E F -->|Да| H{QR читается?} H -->|Нет| I[Сканирование эталонного QR] I --> J[Режим 1.5.3] H -->|Да| K{Двойное сканирование?} K -->|Да| L[Сообщение 'ПОВТОР'] L --> M[Мигание кнопки №2] M --> N[Нажатие кнопки №2] N --> B K -->|Нет| O[Уменьшение счетчика] O --> P{Все единицы отсканированы?} P -->|Нет| D P -->|Да| Q[Отображение 'ПОДТВЕРДИТЬ'] Q --> R[Нажатие кнопки-мультилайт] R --> S[Отправка pick-response с item_code]
|
||||
A[Лоток прибывает на станцию] --> B[Отображение 'МАРКИР' и количества]
|
||||
B --> C[Подсветка ячейки лотка]
|
||||
C --> D[Оператор берет товар]
|
||||
D --> E[Сканирование SGTIN QR-код]
|
||||
E --> F{Длина кода >= LEN?}
|
||||
F -->|Нет| G[Сообщение 'Пересканировать']
|
||||
G --> E
|
||||
F -->|Да| H{QR читается?}
|
||||
H -->|Нет| I[Сканирование эталонного QR]
|
||||
I --> J[Режим 1.5.3]
|
||||
H -->|Да| K{Двойное сканирование?}
|
||||
K -->|Да| L[Сообщение 'ПОВТОР']
|
||||
L --> M[Мигание кнопки №2]
|
||||
M --> N[Нажатие кнопки №2]
|
||||
N --> B
|
||||
K -->|Нет| O[Уменьшение счетчика]
|
||||
O --> P{Все единицы отсканированы?}
|
||||
P -->|Нет| D
|
||||
P -->|Да| Q[Отображение 'ПОДТВЕРДИТЬ']
|
||||
Q --> R[Нажатие кнопки-мультилайт]
|
||||
R --> S[Отправка pick-response с item_code]
|
||||
```
|
||||
|
||||
**Актеры**: Оператор склада, WAMAS-C, HOST система
|
||||
|
||||
**Предусловия**:
|
||||
|
||||
- Лоток хранения находится на станции
|
||||
- Получено задание disp-add с SGTIN=true, marker="scan"
|
||||
|
||||
**Основной поток**:
|
||||
|
||||
1. Система отображает "МАРКИР" и количество на дисплее
|
||||
2. Загорается подсветка нужной ячейки лотка
|
||||
3. Оператор берет единицу товара
|
||||
@@ -171,6 +276,7 @@ flowchart TD
|
||||
10. Система отправляет pick-response с item_code для каждой единицы
|
||||
|
||||
**Альтернативные потоки**:
|
||||
|
||||
- 5а. Код слишком короткий → "Пересканировать"
|
||||
- 5б. QR не читается → сканирование эталонного кода → режим 1.5.3
|
||||
- 4а. Двойное сканирование → "ПОВТОР" → возврат к п.3
|
||||
@@ -179,16 +285,30 @@ flowchart TD
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Лоток прибывает на станцию] --> B[Отображение 'КОНТР' и количества] B --> C[Подсветка ячейки лотка] C --> D[Оператор берет товар] D --> E[Сканирование EAN штрих-код] E --> F{Код читается?} F -->|Нет| G[Сканирование эталонного кода] G --> E F -->|Да| H{Защита от двойного сканирования<br/>0.5 сек} H -->|Блокировка| H H -->|OK| I[Уменьшение счетчика] I --> J{Все единицы отсканированы?} J -->|Нет| D J -->|Да| K[Отправка pick-response с item_code]
|
||||
A[Лоток прибывает на станцию] --> B[Отображение 'КОНТР' и количества]
|
||||
B --> C[Подсветка ячейки лотка]
|
||||
C --> D[Оператор берет товар]
|
||||
D --> E[Сканирование EAN штрих-код]
|
||||
E --> F{Код читается?}
|
||||
F -->|Нет| G[Сканирование эталонного кода]
|
||||
G --> E
|
||||
F -->|Да| H{Защита от двойного сканирования<br/>0.5 сек}
|
||||
H -->|Блокировка| H
|
||||
H -->|OK| I[Уменьшение счетчика]
|
||||
I --> J{Все единицы отсканированы?}
|
||||
J -->|Нет| D
|
||||
J -->|Да| K[Отправка pick-response с item_code]
|
||||
```
|
||||
|
||||
**Актеры**: Оператор склада, WAMAS-C, HOST система
|
||||
|
||||
**Предусловия**:
|
||||
|
||||
- Лоток хранения находится на станции
|
||||
- Получено задание disp-add с SGTIN=false, marker="scan"
|
||||
|
||||
**Основной поток**:
|
||||
|
||||
1. Система отображает "КОНТР" и количество на дисплее
|
||||
2. Загорается подсветка нужной ячейки лотка
|
||||
3. Оператор берет единицу товара
|
||||
@@ -198,6 +318,7 @@ flowchart TD
|
||||
7. Система отправляет pick-response с item_code
|
||||
|
||||
**Альтернативные потоки**:
|
||||
|
||||
- 4а. Код не читается → сканирование эталонного кода
|
||||
- 4б. Защита от двойного сканирования (таймер 0.5 сек)
|
||||
|
||||
@@ -205,12 +326,27 @@ flowchart TD
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Получено задание с print=true] --> B[Отображение 'УПАК' и стрелки к принтеру] B --> C[Подсветка кнопки-мультилайт у принтера] C --> D[Оператор нажимает кнопку принтера] D --> E[Загрузка файла этикетки] E --> F{Файл доступен?} F -->|Нет| G[Использование default_label.pdf] F -->|Да| H[Отправка на принтер] G --> H H --> I{Печать успешна?} I -->|Да| J[print-response status=1] I -->|Нет| K[Сообщение 'ОШИБКА ПЕЧАТИ'] K --> L[Повторное нажатие кнопки] L --> M[print-response status=2] J --> N[Продолжение основного процесса] M --> N
|
||||
A[Получено задание с print=true] --> B[Отображение 'УПАК' и стрелки к принтеру]
|
||||
B --> C[Подсветка кнопки-мультилайт у принтера]
|
||||
C --> D[Оператор нажимает кнопку принтера]
|
||||
D --> E[Загрузка файла этикетки]
|
||||
E --> F{Файл доступен?}
|
||||
F -->|Нет| G[Использование default_label.pdf]
|
||||
F -->|Да| H[Отправка на принтер]
|
||||
G --> H
|
||||
H --> I{Печать успешна?}
|
||||
I -->|Да| J[print-response status=1]
|
||||
I -->|Нет| K[Сообщение 'ОШИБКА ПЕЧАТИ']
|
||||
K --> L[Повторное нажатие кнопки]
|
||||
L --> M[print-response status=2]
|
||||
J --> N[Продолжение основного процесса]
|
||||
M --> N
|
||||
```
|
||||
|
||||
**Актеры**: Оператор склада, WAMAS-C, Принтер, HOST система
|
||||
|
||||
**Предусловия**:
|
||||
|
||||
- Получено задание disp-add с print=true
|
||||
- Принтер подключен и готов
|
||||
|
||||
@@ -218,13 +354,29 @@ flowchart TD
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Получено задание inventory-new-add] --> B[Лоток прибывает на станцию] B --> C[Отображение 'ИНВЕНТАРИЗАЦИЯ'] C --> D[Оператор подтверждает кнопкой №2] D --> E[Подсветка первой ячейки] E --> F[Отображение наименования SKU<br/>до 3 экранов] F --> G[Отображение 'КОЛ-ВО: 0'] G --> H[Оператор вводит количество +/-] H --> I[Подтверждение кнопкой №2] I --> J{Есть еще ячейки?} J -->|Да| K[Переход к следующей ячейке] K --> E J -->|Нет| L[Отправка inventory-response] L --> M[Лоток покидает станцию] style A fill:#e1f5fe
|
||||
style L fill:#c8e6c9 style M fill:#c8e6c9
|
||||
A[Получено задание inventory-new-add] --> B[Лоток прибывает на станцию]
|
||||
B --> C[Отображение 'ИНВЕНТАРИЗАЦИЯ']
|
||||
C --> D[Оператор подтверждает кнопкой №2]
|
||||
D --> E[Подсветка первой ячейки]
|
||||
E --> F[Отображение наименования SKU<br/>до 3 экранов]
|
||||
F --> G[Отображение 'КОЛ-ВО: 0']
|
||||
G --> H[Оператор вводит количество +/-]
|
||||
H --> I[Подтверждение кнопкой №2]
|
||||
I --> J{Есть еще ячейки?}
|
||||
J -->|Да| K[Переход к следующей ячейке]
|
||||
K --> E
|
||||
J -->|Нет| L[Отправка inventory-response]
|
||||
L --> M[Лоток покидает станцию]
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style L fill:#c8e6c9
|
||||
style M fill:#c8e6c9
|
||||
```
|
||||
|
||||
**Актеры**: Оператор склада, WAMAS-C, HOST система
|
||||
|
||||
**Предусловия**:
|
||||
|
||||
- Получено задание inventory-new-add
|
||||
- Лоток прибыл на станцию
|
||||
|
||||
@@ -232,9 +384,17 @@ flowchart TD
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Получено сообщение disp-add] --> B[Получено сообщение tub-type] B --> C[Проверка соответствия tu_type и compartment_id] C --> D{Соответствие корректно?} D -->|Да| E[Обработка задания] D -->|Нет| F[Запись в таблицу со статусом error] G[Правила валидации:<br/>TUB1: compartment_id = 1<br/>TUB2: compartment_id = 1,2<br/>TUB4: compartment_id = 1,2,3,4<br/>TUB8: compartment_id = 1,2,3,4,5,6,7,8]
|
||||
A[Получено сообщение disp-add] --> B[Получено сообщение tub-type]
|
||||
B --> C[Проверка соответствия tu_type и compartment_id]
|
||||
C --> D{Соответствие корректно?}
|
||||
D -->|Да| E[Обработка задания]
|
||||
D -->|Нет| F[Запись в таблицу со статусом error]
|
||||
|
||||
G[Правила валидации:<br/>TUB1: compartment_id = 1<br/>TUB2: compartment_id = 1,2<br/>TUB4: compartment_id = 1,2,3,4<br/>TUB8: compartment_id = 1,2,3,4,5,6,7,8]
|
||||
|
||||
style D fill:#fff3e0
|
||||
style F fill:#ffcdd2 style E fill:#c8e6c9
|
||||
style F fill:#ffcdd2
|
||||
style E fill:#c8e6c9
|
||||
```
|
||||
|
||||
**Актеры**: WAMAS-C, HOST система
|
||||
@@ -249,31 +409,46 @@ flowchart TD
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "HOST System" A[Create Task] end subgraph "XML Message"
|
||||
B[disp-add<br/>TRANSFERID<br/>order_id<br/>print=true/false<br/>SGTIN=true/false<br/>marker=scan/damaged/careful<br/>LEN=минимальная длина] end subgraph "WAMAS Database"
|
||||
C[RESERVE_LINES_OW<br/>Table] end A --> B
|
||||
subgraph "HOST System"
|
||||
A[Create Task]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
B[disp-add<br/>TRANSFERID<br/>order_id<br/>print=true/false<br/>SGTIN=true/false<br/>marker=scan/damaged/careful<br/>LEN=минимальная длина]
|
||||
end
|
||||
|
||||
subgraph "WAMAS Database"
|
||||
C[RESERVE_LINES_OW<br/>Table]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
**Назначение**: Создание задания на сборку товара из лотка хранения
|
||||
**Формат**: XML
|
||||
**Таблица**: RESERVE_LINES_OW
|
||||
**Назначение**: Создание задания на сборку товара из лотка хранения **Формат**: XML **Таблица**: RESERVE_LINES_OW
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<record_type="disp-add" TRANSFERID="12900129" tub_number="110002556">
|
||||
<disp-add-line order_id="1877865"
|
||||
<disp-add-line
|
||||
order_id="1877865"
|
||||
order_line_id="1"
|
||||
station_id="PTL001"
|
||||
geo_code="001.01.01.01"
|
||||
compartment_id="1"
|
||||
ordered="5"
|
||||
host_order_line_id="1863829413" print="true"
|
||||
host_order_line_id="1863829413"
|
||||
print="true"
|
||||
SGTIN="true"
|
||||
LEN="20" marker="scan"> </disp-add-line></disp-add>
|
||||
LEN="20"
|
||||
marker="scan">
|
||||
</disp-add-line>
|
||||
</disp-add>
|
||||
```
|
||||
|
||||
**Ключевые поля**:
|
||||
|
||||
- `TRANSFERID`: Уникальный идентификатор сообщения
|
||||
- `print`: Флаг необходимости печати этикетки (true/false)
|
||||
- `SGTIN`: Наличие SGTIN кодов у товара (true/false)
|
||||
@@ -284,17 +459,26 @@ graph LR
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "HOST System" A[Define Tub Type] end subgraph "XML Message"
|
||||
B[tub-type<br/>TRANSFERID<br/>box_number<br/>tu_type=TUB1/TUB2/TUB4/TUB8] end subgraph "WAMAS Database"
|
||||
C[TUB_TYPE_OW<br/>Table] end A --> B
|
||||
subgraph "HOST System"
|
||||
A[Define Tub Type]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
B[tub-type<br/>TRANSFERID<br/>box_number<br/>tu_type=TUB1/TUB2/TUB4/TUB8]
|
||||
end
|
||||
|
||||
subgraph "WAMAS Database"
|
||||
C[TUB_TYPE_OW<br/>Table]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
**Назначение**: Сообщение о типе лотка для валидации операций
|
||||
**Формат**: XML
|
||||
**Таблица**: TUB_TYPE_OW
|
||||
**Назначение**: Сообщение о типе лотка для валидации операций **Формат**: XML **Таблица**: TUB_TYPE_OW
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<tub-type TRANSFERID="12900130" box_number="110002556" tu_type="TUB4"/>
|
||||
```
|
||||
@@ -303,20 +487,31 @@ graph LR
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "HOST System" A[Create Inventory Task] end subgraph "XML Message"
|
||||
B[inventory-new-add<br/>TRANSFERID<br/>box_number<br/>tu_type<br/>station_id<br/>sku_names] end subgraph "WAMAS Database"
|
||||
C[INVENTORY_OW<br/>Table] end A --> B
|
||||
subgraph "HOST System"
|
||||
A[Create Inventory Task]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
B[inventory-new-add<br/>TRANSFERID<br/>box_number<br/>tu_type<br/>station_id<br/>sku_names]
|
||||
end
|
||||
|
||||
subgraph "WAMAS Database"
|
||||
C[INVENTORY_OW<br/>Table]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
**Назначение**: Создание задания на инвентаризацию лотка
|
||||
**Формат**: XML
|
||||
**Таблица**: INVENTORY_OW
|
||||
**Назначение**: Создание задания на инвентаризацию лотка **Формат**: XML **Таблица**: INVENTORY_OW
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<inventory-new-add TRANSFERID="12900131" box_number="110002556" tu_type="TUB2" station_id="PTL001">
|
||||
<inventory-line compartment_id="1" sku_name="Товар 1"/> <inventory-line compartment_id="2" sku_name="Товар 2"/></inventory-new-add>
|
||||
<inventory-line compartment_id="1" sku_name="Товар 1"/>
|
||||
<inventory-line compartment_id="2" sku_name="Товар 2"/>
|
||||
</inventory-new-add>
|
||||
```
|
||||
|
||||
### Обмен данными WAMAS → HOST
|
||||
@@ -325,45 +520,70 @@ graph LR
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "WAMAS Database" A[PICK_WO<br/>Table] B[PICK_CODE_WO<br/>Table] end subgraph "XML Message"
|
||||
C[pick-response<br/>TRANSFERID<br/>picked quantity<br/>pick_status<br/>item_codes array] end subgraph "HOST System"
|
||||
D[Process Results] end A --> C
|
||||
B --> C C --> D
|
||||
subgraph "WAMAS Database"
|
||||
A[PICK_WO<br/>Table]
|
||||
B[PICK_CODE_WO<br/>Table]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
C[pick-response<br/>TRANSFERID<br/>picked quantity<br/>pick_status<br/>item_codes array]
|
||||
end
|
||||
|
||||
subgraph "HOST System"
|
||||
D[Process Results]
|
||||
end
|
||||
|
||||
A --> C
|
||||
B --> C
|
||||
C --> D
|
||||
```
|
||||
|
||||
**Назначение**: Подтверждение выполнения операции сборки с деталями
|
||||
**Формат**: XML
|
||||
**Таблицы**: PICK_WO, PICK_CODE_WO
|
||||
**Назначение**: Подтверждение выполнения операции сборки с деталями **Формат**: XML **Таблицы**: PICK_WO, PICK_CODE_WO
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<pick-response
|
||||
TRANSFERID="12900141"
|
||||
tote_number="40009681"
|
||||
geo_code="001.01.01.01"
|
||||
customer_code="448359" host_order_id="1280449"
|
||||
customer_code="448359"
|
||||
host_order_id="1280449"
|
||||
station_id="PTL001"
|
||||
tub_number="110002964" pick_status="1"
|
||||
tub_number="110002964"
|
||||
pick_status="1"
|
||||
compartment_id="1"
|
||||
picked="2">
|
||||
<pick-response-line item_code="SGTIN:123456789012345"/> <pick-response-line item_code="SGTIN:123456789012346"/></pick-response>
|
||||
<pick-response-line item_code="SGTIN:123456789012345"/>
|
||||
<pick-response-line item_code="SGTIN:123456789012346"/>
|
||||
</pick-response>
|
||||
```
|
||||
|
||||
#### MSG-102: print-response (Отчет о печати)
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "WAMAS Database" A[PRINT_WO<br/>Table] end subgraph "XML Message"
|
||||
B[print-response<br/>TRANSFERID<br/>print_status=1/2<br/>station_id<br/>order_id] end subgraph "HOST System"
|
||||
C[Update Print Status] end A --> B
|
||||
subgraph "WAMAS Database"
|
||||
A[PRINT_WO<br/>Table]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
B[print-response<br/>TRANSFERID<br/>print_status=1/2<br/>station_id<br/>order_id]
|
||||
end
|
||||
|
||||
subgraph "HOST System"
|
||||
C[Update Print Status]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
**Назначение**: Подтверждение статуса печати этикетки
|
||||
**Формат**: XML
|
||||
**Назначение**: Подтверждение статуса печати этикетки **Формат**: XML
|
||||
**Таблица**: PRINT_WO
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<print-response
|
||||
TRANSFERID="169954915"
|
||||
@@ -373,6 +593,7 @@ graph LR
|
||||
```
|
||||
|
||||
**Статусы печати**:
|
||||
|
||||
- `1`: Печать выполнена успешно
|
||||
- `2`: Ошибка печати
|
||||
|
||||
@@ -380,22 +601,34 @@ graph LR
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "WAMAS Database" A[INVENTORY_WO<br/>Table] end subgraph "XML Message"
|
||||
B[inventory-response<br/>TRANSFERID<br/>box_number<br/>station_id<br/>actual quantities] end subgraph "HOST System"
|
||||
C[Update Inventory] end A --> B
|
||||
subgraph "WAMAS Database"
|
||||
A[INVENTORY_WO<br/>Table]
|
||||
end
|
||||
|
||||
subgraph "XML Message"
|
||||
B[inventory-response<br/>TRANSFERID<br/>box_number<br/>station_id<br/>actual quantities]
|
||||
end
|
||||
|
||||
subgraph "HOST System"
|
||||
C[Update Inventory]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
**Назначение**: Передача результатов инвентаризации лотка
|
||||
**Формат**: XML
|
||||
**Назначение**: Передача результатов инвентаризации лотка **Формат**: XML
|
||||
|
||||
**Структура сообщения**:
|
||||
|
||||
```xml
|
||||
<inventory-response
|
||||
TRANSFERID="12900131"
|
||||
box_number="110002556"
|
||||
station_id="PTL001">
|
||||
<inventory-line compartment_id="1" actual_qty="15"/> <inventory-line compartment_id="2" actual_qty="0"/></inventory-response>
|
||||
<inventory-line compartment_id="1" actual_qty="15"/>
|
||||
<inventory-line compartment_id="2" actual_qty="0"/>
|
||||
</inventory-response>
|
||||
```
|
||||
|
||||
### Процессы интеграции
|
||||
@@ -404,32 +637,98 @@ graph LR
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant HOST as HOST System participant WAMAS as WAMAS-C participant PTL as PTL Station participant OP as Operator HOST->>WAMAS: tub-type (определение типа лотка)
|
||||
WAMAS->>WAMAS: Сохранение типа лотка HOST->>WAMAS: disp-add (задание на сборку) WAMAS->>WAMAS: Валидация tu_type vs compartment_id alt Валидация успешна
|
||||
WAMAS->>PTL: Активация станции PTL->>OP: Отображение задания alt Требуется печать (print=true)
|
||||
PTL->>OP: "УПАК" + подсветка принтера OP->>PTL: Нажатие кнопки принтера PTL->>PTL: Печать этикетки PTL->>WAMAS: Статус печати WAMAS->>HOST: print-response (status=1) end PTL->>OP: Отображение товара + подсветка ячейки
|
||||
OP->>PTL: Сборка товара (с/без сканирования) PTL->>WAMAS: Результат операции WAMAS->>HOST: pick-response (с item_code если было сканирование) else Ошибка валидации
|
||||
WAMAS->>WAMAS: Запись в таблицу со статусом error end
|
||||
participant HOST as HOST System
|
||||
participant WAMAS as WAMAS-C
|
||||
participant PTL as PTL Station
|
||||
participant OP as Operator
|
||||
|
||||
HOST->>WAMAS: tub-type (определение типа лотка)
|
||||
WAMAS->>WAMAS: Сохранение типа лотка
|
||||
HOST->>WAMAS: disp-add (задание на сборку)
|
||||
WAMAS->>WAMAS: Валидация tu_type vs compartment_id
|
||||
|
||||
alt Валидация успешна
|
||||
WAMAS->>PTL: Активация станции
|
||||
PTL->>OP: Отображение задания
|
||||
|
||||
alt Требуется печать (print=true)
|
||||
PTL->>OP: "УПАК" + подсветка принтера
|
||||
OP->>PTL: Нажатие кнопки принтера
|
||||
PTL->>PTL: Печать этикетки
|
||||
PTL->>WAMAS: Статус печати
|
||||
WAMAS->>HOST: print-response (status=1)
|
||||
end
|
||||
|
||||
PTL->>OP: Отображение товара + подсветка ячейки
|
||||
OP->>PTL: Сборка товара (с/без сканирования)
|
||||
PTL->>WAMAS: Результат операции
|
||||
WAMAS->>HOST: pick-response (с item_code если было сканирование)
|
||||
|
||||
else Ошибка валидации
|
||||
WAMAS->>WAMAS: Запись в таблицу со статусом error
|
||||
end
|
||||
```
|
||||
|
||||
#### INT-002: Обработка ошибок
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Получение сообщения] --> B{Валидация OK?} B -->|Нет| C[Запись в таблицу с error] B -->|Да| D[Обработка на PTL] D --> E{Принтер доступен?} E -->|Нет| F[print-response status=2] E -->|Да| G[Печать OK] G --> H[print-response status=1] F --> I[Продолжение без печати] H --> I I --> J{Сканирование OK?} J -->|Ошибка| K[Эталонный код или режим исключения] J -->|OK| L[pick-response с кодами] K --> M[pick-response без кодов] L --> N[Завершение] M --> N
|
||||
style C fill:#ffcccc style F fill:#ffffcc style K fill:#ffffcc
|
||||
A["Получение сообщения"] --> B{"Валидация OK?"}
|
||||
B -->|"Нет"| C["Запись в таблицу с error"]
|
||||
B -->|"Да"| D["Обработка на PTL"]
|
||||
D --> E{"Принтер доступен?"}
|
||||
E -->|"Нет"| F["print-response status=2"]
|
||||
E -->|"Да"| G["Печать OK"]
|
||||
G --> H["print-response status=1"]
|
||||
F --> I["Продолжение без печати"]
|
||||
H --> I
|
||||
I --> J{"Сканирование OK?"}
|
||||
J -->|"Ошибка"| K["Эталонный код или режим исключения"]
|
||||
J -->|"OK"| L["pick-response с кодами"]
|
||||
K --> M["pick-response без кодов"]
|
||||
L --> N["Завершение"]
|
||||
M --> N
|
||||
|
||||
style C fill:#ffcccc
|
||||
style F fill:#ffffcc
|
||||
style K fill:#ffffcc
|
||||
```
|
||||
|
||||
#### INT-003: Мониторинг и логирование
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Входящие события" A[XML Messages] B[Scan Operations] C[Print Events]
|
||||
D[Validation Results] end subgraph "Система логирования"
|
||||
E[Message Logger] F[Operation Logger] G[Error Logger] H[Performance Monitor] end subgraph "Метрики и отчеты"
|
||||
I[Response Time] J[Success Rate] K[Station Load] L[Error Statistics] end A --> E
|
||||
B --> F C --> F
|
||||
D --> G E --> I
|
||||
F --> J F --> K G --> L style G fill:#ffcccc
|
||||
subgraph "Входящие события"
|
||||
A[XML Messages]
|
||||
B[Scan Operations]
|
||||
C[Print Events]
|
||||
D[Validation Results]
|
||||
end
|
||||
|
||||
subgraph "Система логирования"
|
||||
E[Message Logger]
|
||||
F[Operation Logger]
|
||||
G[Error Logger]
|
||||
H[Performance Monitor]
|
||||
end
|
||||
|
||||
subgraph "Метрики и отчеты"
|
||||
I[Response Time]
|
||||
J[Success Rate]
|
||||
K[Station Load]
|
||||
L[Error Statistics]
|
||||
end
|
||||
|
||||
A --> E
|
||||
B --> F
|
||||
C --> F
|
||||
D --> G
|
||||
|
||||
E --> I
|
||||
F --> J
|
||||
F --> K
|
||||
G --> L
|
||||
|
||||
style G fill:#ffcccc
|
||||
style L fill:#ffcccc
|
||||
```
|
||||
Reference in New Issue
Block a user