Обновление 1.26.8.3 → 1.26.8.4
Примечания к релизу: 1.26.8.4
Значимые изменения, которые следует учитывать системному администратору:
- Обновляется один образ Docker на машине сервера —
ai-server-inference - Остальные образы машины сервера, образы целевых машин и дистрибутивы
Api.MachineInfo-linux.zipиAgent-linux.zipобновлять не требуется: функциональных изменений в них нет - Изменён формат конвейеров пакетной обработки: правила обработки полей задаются только у шага постобработки, в условии
hasFieldвместоhasTextиспользуетсяvalueState, списокorстал альтернативой собственным проверкам условия
Конвейеры пакетной обработки нужно поправить вручную. При сохранении конвейера неизвестные поля игнорируются, поэтому старый конвейер сохранится без ошибки, но правила, оставшиеся на шагах Умного OCR и NLP, применяться не будут, а условия начнут срабатывать иначе. Что именно поправить — в разделе «Конвейеры пакетной обработки» ниже.
Машина сервера
1. Обновите образ
Через архив:
sudo apt update && sudo apt install 7z
names="ai-server-inference"
for name in $names; do
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z"
7z x $name.tar.7z
docker load -i $name.tar
rm $name.tar.7z $name.tar
doneЕсли есть доступ к nexus.primo-rpa.ru:8005:
names="ai-server-inference"
for name in $names; do
docker pull nexus.primo-rpa.ru:8005/primo-rpa/$name
docker tag nexus.primo-rpa.ru:8005/primo-rpa/$name primo-rpa/$name
docker rmi nexus.primo-rpa.ru:8005/primo-rpa/$name
done2. Перезапустите компоненты
docker compose -f /app/Primo.AI/Api/docker-compose.yaml down && \
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -dУбедитесь, что Центр управления доступен по HTTPS (порт 44392).
Целевые машины
Обновление целевых машин не требуется: в образах ai-server-idp-gpu, ai-server-idp-cpu, ai-server-nlp, ai-server-ollama и в файлах агента функциональных изменений в этом релизе нет.
Конвейеры пакетной обработки
Три изменения в формате конвейера требуют ручной правки. Проверять результат удобно на тестовом пакете: ошибок при сохранении конвейера не будет ни до, ни после правки.
Правила обработки полей — у шага постобработки
Правила postProcessing, validations, cellPostProcessing, cellValidations, removeHeaderRows, removeRows, removeColumns и jsonFieldExtractors больше не задаются в блоке recognition шагов Умного OCR и NLP. Их нужно перенести в блок rules отдельного шага с компонентом PostProcessing, поставив его следующим за исходным шагом.
Было:
{
"id": "ocr-rec",
"routingKey": "ocr-rec-struct-c3d4",
"meta": { "component": "SmartOCR", "smartOcrType": "Recognition" },
"recognition": {
"overrideFields": ["INN"],
"postProcessing": [ ... ],
"removeHeaderRows": [ ... ]
}
}Стало:
{
"id": "ocr-rec",
"routingKey": "ocr-rec-struct-c3d4",
"meta": { "component": "SmartOCR", "smartOcrType": "Recognition" },
"recognition": {
"overrideFields": ["INN"]
},
"nextSteps": [
{
"id": "ocr-rec-rules",
"meta": { "component": "PostProcessing" },
"rules": {
"postProcessing": [ ... ],
"removeHeaderRows": [ ... ]
}
}
]
}Шаг постобработки не обращается к агенту: routingKey, nlp, classify и recognition у него указывать нельзя, а блок rules обязателен и не должен быть пустым.
В блоке recognition шага агента остаются overrideFields, overrideClassIfEmpty и fieldsConfidenceThreshold. Настройки classify.postProcessing и classesConfidenceThreshold тоже остаются на месте.
Условие наличия поля — valueState вместо hasText
В условии hasField параметр hasText больше не читается. Вместо него — valueState с тремя значениями:
| Значение | Когда условие выполнено |
|---|---|
Filled | у поля есть непустой текст либо непустая таблица |
Empty | поле распознано, но ни текста, ни ячеек в нём нет |
Any | достаточно самого поля, значение любое |
Было:
{ "hasField": { "fieldKey": "INN", "hasText": true } }Стало:
{ "hasField": { "fieldKey": "INN", "valueState": "Filled" } }Filled — значение по умолчанию, оно же совпадает с прежним поведением hasText: true. Условиям с hasText: false соответствует valueState: "Any".
Список or — альтернатива, а не дополнение
Список or раньше проверялся вместе с остальными условиями по И. Теперь условие выполнено, если выполнены его собственные проверки либо хотя бы одно условие из or.
Чтобы сохранить прежнее поведение — «собственные проверки И одна из альтернатив» — вложите список or в and:
{
"complexCondition": {
"hasField": { "fieldKey": "INN", "valueState": "Filled" },
"and": [
{
"or": [
{ "hasField": { "fieldKey": "KPP", "valueState": "Filled" } },
{ "hasField": { "fieldKey": "OGRN", "valueState": "Filled" } }
]
}
]
}
}Условие, в котором кроме or ничего нет, решается только списком альтернатив.
Что дальше
После завершения обновления выполните проверку работоспособности системы.