Skip to Content

Обновление 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 done

2. Перезапустите компоненты

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 ничего нет, решается только списком альтернатив.

Что дальше

После завершения обновления выполните проверку работоспособности системы.

Last updated on