Управление сервисами IVA Terra
IVA Terra включает в себя Основные процессы, каждый из которых выполняет специфические функции.
LAUNCH_SERVICES
Процесс LAUNCH_SERVICES производит инициализацию всех необходимых компонентов системы и структур данных. При этом происходит настройка окружения, включая подключение к базе данных и брокеру сообщений RabbitMQ. Данный процесс обеспечивает корректное функционирование всех остальных процессов в системе.
Процесс LAUNCH_SERVICES инициализирует следующие основные сервисы:
Сервис rabbitmq
Сервис rabbitmq выполняет функции брокера сообщений RabbitMQ, которые необходимы для работы сервисов terra_api и terra_offline_worker_0.
В каталоге ./RABBIT_DATA хранится содержимое каталога /var/lib/rabbitmq/, смонтированное из контейнера.В данном каталоге хранятся очереди и сообщения, что обеспечивает сохранность данных в случае остановки или перезапуска сервиса.
Сервис database
Сервис database выполняет функции СУБД и является критически важным для работы сервисов terra_api, terra_offline_worker_0 и terra_spectacular_back.
В каталоге ./POSTGRES_TERRA_CONTROL монтируется содержимое каталога /var/lib/postgresql/data из контейнера. В данном каталоге хранится структура базы данных, схемы таблиц и данные, заполняющие таблицы. Это обеспечивает целостность и доступность информации, необходимой для функционирования указанных сервисов.
Сервис terra_api
Работа сервиса terra_api инициализируется в следующей последовательности:
-
запуск процесса Gunicorn на порту по умолчанию 9001 по протоколу HTTPS в режиме шести процессов-обработчиков
-
каждый из шести процессов устанавливает соединения с брокером сообщений RabbitMQ. Процесс инициализации продолжается только после успешного создания соединения с RabbitMQ
-
производится обнаружение и загрузка файла, содержащего шаблоны регулярных выражений для обработки содержимого стенограмм
-
если после монтирования каталога из контейнера в файловую систему хоста отсутствует файл
./TERRA_DATA/cleaning_patterns.txt, то в эту директорию будет скопирован шаблон из содержимого контейнера -
если в разделе Прием HTTPS API запросов активирован режим онлайн-обработки (Субтитры доступны: on), то в БД будет создана таблица terra_online_speaker_state для хранения информации о звуковом контенте каждого спикера
-
устанавливаются отдельные соединения с БД для регистрации времени получения каждого аудиофрагмента. В отладочных сообщениях это будет соответствовать содержимому:
2024-10-31 16:17:02,314 - root - INFO - CREATED CommonDBConnector 2024-10-31 16:17:02,315 - root - INFO - CREATED TerraDBConnector 2024-10-31 16:17:02,326 - root - INFO - CREATED CommonDBConnector 2024-10-31 16:17:02,326 - root - INFO - CREATED TerraDBConnector -
проверка необходимых прав на выполнение операций и доступа к каталогам и файлам:
-
проверка каталогов:
-
каталог /var/www/alldata/minutes должен существовать с правами доступа 0777, например:
drwxr-xr-x 2 user user 4096 Aug 12 14:42 minutes -
каталог
/var/www/alldata/rawaudioдолжен существовать с правами доступа 0777, например:drwxr-xr-x 4 user user 4096 Aug 12 14:41 rawaudioПараметры прав доступа:
drwxr-xr-x <link_count> <file_owner> <group_owner> <dir_size> <date> <dir>где:
-
drwxr-xr-x — права доступа и тип файла:
-
d — указывает, что это директория (папка)
-
rwxr-xr-x — права доступа в формате [владелец-группа-остальные]:
-
Владелец: rwx (чтение, запись, выполнение)
-
Группа: r-x (чтение, выполнение)
-
Остальные: r-x (чтение, выполнение)
-
-
-
<link_count> — количество жестких ссылок на директорию
-
<file_owner> — имя владельца файла / директории
-
<group_owner> — имя группы-владельца
-
<dir_size> — размер метаданных директории в байтах
-
<date> — дата и время последнего изменения содержимого директории в формате MMM DD HH:MM
-
<dir> — имя директории (minutes, rawaudio и т. д.)
-
-
-
проверка записи файлов:
-
успешно выполнена запись содержимого в файл
/var/www/alldata/TestBinaryFile.mp4, после чего файл был успешно удален -
успешно выполнена запись содержимого в файл
/var/log/terra/TestBinaryFile.mp4, после чего файл был успешно удален
-
-
создание и удаление каталогов:
-
каталог
/var/www/alldata/rawaudio/AnyNonExistentName/был успешно создан -
успешно выполнена запись содержимого в файл
/var/www/alldata/rawaudio/AnyNonExistentName/TestBinaryFile.mp4, после чего файл был успешно удален -
каталог
/var/www/alldata/rawaudio/AnyNonExistentName/был успешно удален -
успешно выполнена запись содержимого в файл
/var/www/alldata/minutes/TestBinaryFile.mp4, после чего файл был успешно удаленЕсли какая-либо из проверок не будет пройдена успешно, процесс приостановится на минуту. В это время Администратор может вмешаться, обнаружить в сообщениях причину остановки и устранить эту причину.
Затем процесс заново выполнит все необходимые проверки доступности операций
Пока все проверки не будут пройдены, процесс приема HTTPS-запросов на порту API (по умолчанию: 9001) не начнется
-
-
Сервис terra_offline_worker_0
В процессе работы terra_offline_worker_0:
-
создается Python-процесс и устанавливается соединение с брокером сообщений RabbitMQ сервисом rabbitmq
-
при успешном подключении происходит загрузка в видеопамять содержимого файлов нескольких моделей нейросетей
-
после успешной загрузки в отладочных сообщениях отображается информация, аналогичная следующему примеру:
2025-08-12 14:41:38,586 - root - INFO - Trying use /var/www/alldata/licenses/TERRA_2025_07_08_13_35_41.license VerifyWith:/var/www/alldata/terra_public_keys/TERRA_RSA_4096_2024_03_19_16_07_43.key.pub.pem DecryptWith:/var/www/alldata/owner_private_keys/TERRA_CLIENT_RSA_4096_2025_07_08_13_31_11.key.pem 2025-08-12 14:41:38,697 - root - INFO - Найдена лицензия с верифицированной подписью Номер: TERRA-2025-07-08-13-35-41 Владелец: Тест 3090 08.07.2025 Подпись: Первый ключ выпуска Terra-лицензий ПАО "ИВА" Срок действия: от 2025-07-08 до 2025-12-29 2025-08-12 14:41:38,697 - root - INFO - Mins compilation started. Conference ID: 8b439673-dccf-48a4-ac4a-fe7213725f85_1754998883859 Лицензия действует 138 дней 2025-08-12 14:41:38,699 - root - INFO - STATISTICS: ALL(6)=data(4)+silence(2) -
процесс переходит в ожидание получения сообщений из очереди RabbitMQ, определяемой настройкой Очередь для запросов на обработку стенограмм
Сервис terra_online_worker_0
В процессе работы terra_online_worker_0:
-
создается Python-процесс и устанавливается соединение с брокером сообщений RabbitMQ сервисом rabbitmq
-
при успешном подключении происходит загрузка в видеопамять содержимого файла модели транскрибации
-
после успешной загрузки в отладочных сообщениях появляется информация следующего содержания:
2024-10-31 16:17:00,082 - root - INFO - Service started. OnlineAdapter created 2024-10-31 16:17:00,082 - root - INFO - VERSION='v2.0.0.0', CPUONLY=False, self.id=0, self.device='cuda', self.device_id='cuda:0', self.compute_type='float16', self.lang='ru', self.batch_size=8, CPU_THREADS=4, VAD_ON=0.4, VAD_OFF=0.25, self.model_path='/rapi/models/tv2fast' -
процесс переходит в ожидание получения сообщений из очереди RabbitMQ
Сервис terra_adp_client
В процессе работы terra_adp_client:
-
сервис terra_adp_client запускает процесс Gunicorn в режиме одного процесса-обработчика для обработки запросов по HTTP
-
при старте Gunicorn создается объект FastAPI, который связывает URI с функциями обработки запросов и ожидает поступления запросов в цикле событий (event-loop). Дополнительные потоки и объекты создаются только по мере поступления запросов на обработку
Сервис terra_translator_worker
В процессе работы terra_translator_worker:
-
создается Python-процесс и устанавливается соединение с брокером сообщений RabbitMQ сервисом rabbitmq
-
внутри процесса создаются два объекта TranslateAdapter, которые загружают в память файлы предобученных моделей — один для перевода с русского на английский (ru → en), другой — с английского на русский (en → ru)
-
процесс переходит в ожидание получения сообщений из очереди RabbitMQ
Сервис terra_spectacular_back
В процессе работы terra_spectacular_back:
-
при запуске сервиса terra_spectacular_back создаются файлы миграций и применяются миграции к базе данных. Подключение к базе данных осуществляется через URL, указанный в настройке DATABASE_URL
-
запускается Gunicorn на порту 9443 в режиме пяти процессов-обработчиков для выполнения Python-Django-приложения. Также запускается Nginx-сервер на порту 8443 в режиме пяти процессов-обработчиков для поддержки работы со статическим контентом и перенаправления запросов по URI /api/ к процессу Gunicorn. Все запросы принимаются по HTTPS
Сервис terra_spectacular_front
В процессе работы terra_spectacular_front:
-
сервис terra_spectacular_front запускает Nginx-сервер на порту 8443 в режиме пяти процессов-обработчиков запросов. Корневой каталог исполнения установлен на /var/www/terra_cfg_srv, где находятся файлы статического контента — index.html, JS-файлы, CSS-файлы и каталоги со шрифтами и изображениями
-
все запросы по URI /api/ перенаправляются к сервису terra_spectacular_service на порту 8443 для дальнейшей обработки. Запросы принимаются по HTTPS
COLLECT_SOUND
Процесс COLLECT_SOUND обеспечивает сбор, обработку и регистрацию аудиофрагментов для их дальнейшего использования сервисами IVA Terra.
Процесс COLLECT_SOUND реализуется сервисом terra_api:
Сервис terra_api
-
получение запроса (метод API, URL-адрес для API-запросов, параметры и примеры запросов приведены в разделе API для транскрибации мероприятий в режиме онлайн и офлайн)
-
создание каталога и файла метрик. При получении первого аудиофрагмента создается каталог для хранения данных конференции и файл metrics.json, в котором фиксируются метрики обработки
-
проверка уникальности ключа доступа. Сервис terra_api проверяет наличие значения token в списке известных ключей доступа (в случае ошибки в процессе проверки см. Системные ошибки IVA Terra)
-
регистрация аудиофрагмента в БД. Время получения аудиофрагмента регистрируется в таблице конференций:
-
если получен первый аудиофрагмент конференции, то заполняется поле begin. При регистрации первого аудиофрагмента значение token сохраняется в поле access_key
-
при получении последующих аудиофрагментов заполняется поле finished
-
-
обновление файла метрик metrics.json. Параметры файла metrics.json:
Параметр Назначение status_active
временная метка регистрации аудиофрагмента (в форматах: float и string)
client_name
имя клиента, соответствующее ключу доступа
client_status
код статуса клиента ('a' — активен, 'i' — деактивирован)
client_networks
список подсетей, из которых клиенту разрешено подключение к API.
Фильтрация по данному параметру в текущей версии не используетсяclient_access_key
ключ доступа клиента
api_handler
имя хоста и IP-адрес, соответствующие Docker-контейнеру, в котором выполняется прием аудиофрагментов
conference_id
идентификатор мероприятия (UUID сессии)
conference_db_id
внутренний идентификатор конференции, зарегистрированный в таблице конференций БД (целое число)
license_info
информация о лицензии: срок действия, владелец, статус верификации
participants
соответствие participant_id и participant_name спикеров
rawaudio_path
путь к каталогу хранения исходных аудиоданных
process_duration
длительность обработки конференции в секундах
artifacts
список артефактов: имена спикеров, файлы аудио и текста
text_segments
сегменты распознанного текста с временными метками
-
проверка значений параметров online и offline:
-
если параметры online и offline имеют значение false, то возвращается ошибка со статус-кодом 400 (см. Системные ошибки IVA Terra). Такой запрос считается пустым, так как не запрошена ни онлайн-обработка, ни сохранение аудио для последующей обработки. Для каждого из поддерживаемых кодов языка будет выполнено удаление файла-статуса oфлайн-обработки (файл-статус используется в процессах SOUND_PROCESSING, ADP_PROCESSING)
-
если для параметра offline установлено значение offline=true / offline=<пустое значение>, то будет создан каталог для хранения аудиофрагментов конференции:
-
имя аудиофрагмента формируется из параметров participant_id и timestamp_float, например:
cc26aa17-6cff-48f8-b895-58f742245894_20240206_10_49_42_634340.wav -
если параметры participant_id и timestamp_float не указаны, то имя формируется из содержимого audiofile.filename
-
для каждого .wav-файла создается файл .wav.name.txt, содержащий значение параметра participant_name
-
-
если для параметра online установлено значение online=false / online=<пустое значение> или в разделе Прием HTTPS API запросов отключен режим online-обработки (Субтитры доступны: false), то клиенту возвращается ответ со статус-кодом 200 в формате JSON, содержащий пустой список
-
если для параметра online установлено значение true:
-
ожидается ответ от сервиса обработки субтитров в течение времени, определяемого настройкой Таймаут ожидания ответа от сервиса субтитров
-
в случае возникновения ошибки при обработке запроса, в том числе возникновение события таймаута, клиенту будет возвращено сообщение о произошедшей ошибке (см. Системные ошибки IVA Terra)
-
из содержимого фразы с помощью регулярных выражений удаляются текстовые сегменты, шаблоны которых указаны построчно в файле cleaning_patterns.txt. Путь к файлу задается в разделе Общие настройки параметром Путь к файлу шаблонов исключаемых фраз (по умолчанию /var/www/alldata/cleaning_patterns.txt)
-
-
-
возврат результата. Если обработка прошла успешно, клиенту возвращается ответ со статус-кодом 200 в формате JSON с результатами обработки, включая извлеченный текст и другие параметры (параметры и примеры ответов приведены в разделе API для транскрибации мероприятий в режиме онлайн и офлайн)
SOUND_PROCESSING
Процесс SOUND_PROCESSING обеспечивает обработку звука и формирование стенограммы на основе данных, сформированных процессом COLLECT_SOUND. Данный процесс производит анализ аудиоданных с использованием нейросетевых моделей для транскрибации речи в текст.
Процесс SOUND_PROCESSING реализуется в следующих сервисах:
Сервис terra_api
-
получение запроса:
-
метод API: GET
-
URL-адрес для API-запросов:
https://<TERRA_IP>:<API_PORT>/minutes/где:
<TERRA_IP> — IP-адрес или доменное имя сервера IVA Terra
<API_PORT> — порт для доступа к API (по умолчанию 9001)
Параметры запросов:
Имя Тип Обязательность Значение по умолчанию Описание conference_id
UUID
да
−
идентификатор мероприятия (UUID сессии)
lang
string
да
−
код требуемого языка текста стенограммы (ru, en)
disable_adp
boolean
нет
false
параметр отключения постобработки стенограммы ADP-сервисами
name
string
нет
−
наименование места проведения конференции (будет использовано для обработки в ADP-сервисах и для удобства поиска в web-панели администрирования)
token
string
да
ivcs
ключ доступа
Пример запроса:
https://<TERRA_IP>:<API_PORT>/minutes/{conference_id}?lang=&disable_adp=false&token=ivcs&name=
-
-
проверка идентификатора конференции и ключа доступа:
-
если conference_id отсутствует в таблице конференций БД, то возвращается ответ со статус-кодом 404 (см. Системные ошибки IVA Terra)
-
если значения параметров token / conference_id пустые или значение token, переданное в запросе, не совпадает со значением token, сохраненным в БД (и файле metrics.json) при получении первого аудиофрагмента конференции, то возвращается ответ со статус-кодом 403 (см. Системные ошибки IVA Terra)
-
-
валидация параметров:
-
если параметр conference_id не соответствует регулярному выражению ^[&=_a-zA-Zф0-9-]+$ или параметр lang не соответствует ^\w*$, то возвращается ответ со статус-кодом 400 (см. Системные ошибки IVA Terra)
-
проверка наличия значения lang в списке поддерживаемых языков. Если значение lang отсутствует в списке, то присваивается значение из настройки Код используемого языка
-
проверка наличия аудиофайлов и стенограммы. Если в каталоге конференции (./TERRA_DATA/rawaudio/conference_id) отсутствуют файлы .wav и итоговая стенограмма (./TERRA_DATA/minutes/minutes_{conference_id}_{lang}.xml), то при наличии файла-статуса (./TERRA_DATA/minutes/minutes_{conference_id}_{lang}.xml.status) будет выполнено его удаление, а клиенту будет возвращен ответ со статус-кодом 404 (см. Системные ошибки IVA Terra)
-
-
обработка стенограммы. Файл-статус содержит список состояний процесса формирования стенограммы и соответствующие временные метки, фиксирующие моменты, когда каждое состояние было назначено:
-
если в файле-статусе отсутствует состояние running (т. е. процесс обработки данных не запускался), то выполняется набор операций:
-
для конференции conference_id в БД устанавливается status=1 и обновляется значение для поля description (значением из name, если значение name не пустое)
-
в файле метрик metrics.json сохраняются ключ status_finished со значениями для отслеживания статуса обработки аудиофрагмента или стенограммы конференции
-
в файле-статусе записывается состояние running и текущая временная метка
-
в брокере сообщений объявляется очередь с именем Очередь для запросов на обработку стенограмм с параметром durable=true (необработанные сообщения в очереди будут сохранены на жесткий диск)
-
в очередь Очередь для запросов на обработку стенограмм публикуется сообщение с body (conference_id, lang, disable_adp) и с properties.headers (conference_id)
-
клиенту возвращается ответ со статус-кодом 200 и сообщением в формате JSON о том, что задача поставлена в очередь (пример ответа приведен в разделе API для транскрибации мероприятий в режиме онлайн и офлайн)
-
-
если в файле-статусе состояние finish (т. е. офлайн-обработчик завершил преобразование аудиоконтента в текст):
-
проверяется наличие файла стенограммы и при его отсутствии производится удаление файла-статуса, а клиенту возвращается ответ со статус-кодом 404 (см. Системные ошибки IVA Terra)
-
в файле метрик metrics.json сохраняются ключ status_finished со значениями для отслеживания статуса обработки аудиофрагмента или стенограммы конференции
-
для конференции conference_id в БД производится обновление поля status=4 (контент стенограммы возвращен клиенту)
-
расшифровка и отправка клиенту содержимого стенограммы (./TERRA_DATA/minutes/minutes_{conference_id}_{lang}.xml)
-
-
если в файле-статусе состояние running (т. е. процесс обработки данных был начат, но еще не завершен), то клиенту возвращается ответ со статус-кодом 200 и сообщением в формате JSON о том, что процесс формирования протокола все еще продолжается (пример ответа приведен в разделе API для транскрибации мероприятий в режиме онлайн и офлайн)
-
Сервис terra_worker_service
| Завершение обработки означает, что потребитель сообщения из очереди RabbitMQ подтвердил успешную обработку сообщения. В результате это сообщение будет удалено из очереди сообщений, а затем обработчик извлечет из очереди следующее сообщение, при его наличии |
-
из очереди Очередь для запросов на обработку стенограмм брокера сообщений считывается сообщение, содержащее параметры conference_id, lang и disable_adp. Если модели не загружены, то формируется отладочное сообщение 'Model Is Not Loaded!' и обработка прекращается
В таблице конференций БД конференция не изменит свой статус, а останется в статусе в обработке (status=2) -
сравнение кода языка lang из сообщения с установленным в настройках Код используемого языка. Если отсутствует совпадение кодов языков, то формируется сообщение
Requested ({requested_lang}) and Model ({model_lang}) are Different!Язык текста стенограммы формируется в зависимости от кода языка, установленного в настройках terra_worker_service. Однако, некоторые фразы в тексте могут быть на исходном языка спикера -
проверка статуса конференции. Если в файле-статусе состояние finish, то формируется сообщение
Conference processing has finished status, и обработка прекращается -
для конференции conference_id в таблице конференций БД производится обновление поля status=2 (в обработке), а в файле метрик metrics.json в ключе status_progress сохраняется время перехода в статус в обработке
-
выполняется обзор каталога с аудиофрагментами и формируется список аудиофрагментов с сортировкой по времени. Если список пустой, то формируется отладочное сообщение
compile_minutes: Files For Requested Conference {conference_id} Are Absent!. В таком случае для конференции conference_id в таблице конференций БД производится обновление поля status=5 (в ошибке), и обработка прекращается -
если в настройках включен режим Объединять аудиофрагменты по спикеру в разделе Обработчик стенограмм, то аудиофайлы будут объединяться по спикеру (перед преобразованием звука в текст), иначе — в порядке временных меток их формирования
-
преобразование звука в текст:
-
выполняется обработка звука, в результате которой формируются текстовые сегменты и временная разметка их начала и окончания
-
в файл стенограммы сохраняются:
-
список спикеров
-
текстовые сегменты, очищенные от фраз по шаблонам из файла, указанного в параметре Путь к файлу шаблонов исключаемых фраз (по умолчанию:
/var/www/alldata/cleaning_patterns.txt) раздела Общие настройки
-
-
если в настройках обработчика включен режим Объединять аудиофрагменты по спикеру в разделе Обработчик стенограмм, то формируется отдельный аудиофайл, содержащий единый звуковой контент, упорядоченный по времени поступления аудиофрагментов
-
-
очистка временных файлов:
-
выполняется рекурсивная очистка всех каталогов от устаревших файлов в соответствии с настройками хранения:
-
очистка каталогов, содержащих аудиофрагменты (./TERRA_DATA/rawaudio). Из каталогов удаляются файлы с расширениями .wav и .txt, время модификации которых превышает текущий момент времени на более чем установлено в параметре Настройки → Обработчик стенограмм → Количество дней хранения звука (количество дней хранения файлов аудиоконтента)
-
очистка каталогов, содержащих стенограммы (./TERRA_DATA/minutes). Из каталогов удаляются файлы с расширениями .xml и .xml.status, время модификации которых превышает текущий момент времени на более чем установлено в параметре Настройки → Обработчик стенограмм → Количество дней хранения звука (количество дней хранения файлов стенограмм)
-
-
все остальные файлы в этих каталогах остаются нетронутыми, включая файл metrics.json, который содержит результаты обработки
-
если после удаления устаревшего контента в каталогах не останется ни одного файла, сам каталог будет автоматически удален
-
-
завершение обработки:
-
в файле-статуса сохраняется временный статус transcribed, чтобы отметить завершение обработки звука. При этом /minutes/{conference_id} еще не готов вернуть клиенту содержимое стенограммы, так как это произойдет только при наличии статуса finish в списке
-
если включен режим Доступность ADP сервисов в разделе Обработчик стенограмм и установлен параметр disable_adp=false в запросе на обработку, то в ADP-клиент будет отправлен запрос на дополнение текста стенограммы результатами обработки сервисов planner и summary
-
если отключен режим Доступность ADP сервисов в разделе Обработчик стенограмм и установлен параметр disable_adp=true в запросе на обработку, то:
-
содержимое файла-статуса немедленно изменяется: статус transcribed удаляется, а статус finish сохраняется с текущей временной меткой
-
для конференции conference_id в таблице конференций БД производится обновление поля status=3 (обработана), и обработка прекращается
-
в файле метрик metrics.json в ключе status_processed сохраняется время перехода в статус обработана
-
-
-
если во время обработки возникает исключение (например, out of memory), конференции назначается статус в ошибке, формируется отладочное сообщение с критическим уровнем, а брокеру сообщений отправляется подтверждение о завершении обработки сообщения
VIEW_MESSAGES
Процесс VIEW_MESSAGES предоставляет Администраторам системы возможность просмотра отладочных сообщений, которые содержат информацию о статусах выполнения операций, возникших ошибках и других важных событиях в системе.
Процесс VIEW_MESSAGES реализуется сервисом terra_api.
TEXT_TRANSLATING
Процесс TEXT_TRANSLATING позволяет преобразовать текст стенограммы на другие языки с использованием интегрированных моделей перевода.
Процесс TEXT_TRANSLATING реализуется в сервисах terra_api и terra_translator_worker
Сервис terra_api
-
получение запроса (URL-адрес для API-запросов, метод API, параметры, примеры и ответы запросов приведены в разделе API для перевода текста)
-
проверка значений в настройках сервиса перевода и уникальности значения token (в случае ошибок в процессе проверки см. Системные ошибки IVA Terra)
-
подготовка запроса к сервису перевода:
-
оформление содержимого payload для отправки в сервис перевода
-
ожидание ответа в течение времени, определяемого настройкой Таймаут ожидания ответов от сервиса переводов (по умолчанию: 5)
-
обработка исключений (см. Ошибка при таймауте обработки в разделе Системные ошибки IVA Terra)
-
Сервис terra_translator_worker
-
при получении запроса происходит валидация контента запроса (содержимого payload)
-
для каждого элемента в payload выполняется обнаружение языка текста по содержимому ключа content, после чего производится заполнение значения в ключе from_lang:
-
если текст содержит символы русского алфавита, устанавливается from_lang="ru"
-
если текст содержит символы английского алфавита, устанавливается from_lang="en"
-
если ни один из алфавитов не обнаружен, устанавливается from_lang="unknown"
-
-
после получения результата от нейросети переводчика клиенту возвращается ответ со списком исходных словарей с добавленным ключом status, который может принимать значения processed / not_processed
ADP_PROCESSING
После завершения транскрибации стенограммы данные передаются для дальнейшей обработки специализированным сервисам ADP.
| Процесс ADP_PROCESSING является внутренним, запускается исключительно микросервисами IVA Terra и не предназначен для внешнего использования |
Процесс ADP_PROCESSING реализуется в следующих сервисах:
Сервис terra_adp_client
-
условия запуска процесса ADP_PROCESSING:
-
завершение преобразования звука в текст процессом SOUND_PROCESSING
-
файл стенограммы (.xml) успешно сохранен в файловой системе и в файле-статусе обработки стенограммы (.xml.status) сохранено текущее состояние transcribed
-
-
получение GET-запроса от terra_worker_service_N
URL-адрес для API-запросов:
http://terra_adp_client:8080/extend_minutesПараметры запросов:
Имя Тип Обязательность Значение по умолчанию Описание conference_id
UUID
да
−
идентификатор мероприятия (UUID сессии)
lang
string
да
ru
код требуемого языка текста стенограммы (ru, en)
force
boolean
нет
false
параметр принудительной обработки стенограммы ADP-сервисами (даже если обработка стенограммы осуществлялась ранее)
-
проверка файла стенограммы:
-
формируется путь к файлу стенограммы, которую требуется обработать ADP-сервисами:
./TERRA_DATA/minutes/minutes_{conference_id)_{lang}.xml -
если путь к файлу стенограммы уже в очереди на обработку, то клиенту возвращается ответ:
-
код статуса: 200
-
ответ в формате JSON:
'PID=234567, TID=12 ACCEPTED 2024-10-01 12:34 FOR PROCESSING conference_id=776be3d2-c124-4504-a5af-3abe2e9bf6ad_1707202804977, lang=ru, force=true'
-
-
если файл стенограммы отсутствует, возвращается ошибка со статус-кодом 404 (см. Ошибка отсутствия файла стенограммы в разделе Системные ошибки IVA Terra)
-
-
проверка файла-статуса:
-
если файл-статус отсутствует, возвращается ошибка со статус-кодом 404 (см. Системные ошибки IVA Terra)
-
если в файле-статусе статус finish и не установлен параметр принудительной обработки в force=false, то возвращается ошибка со статус-кодом 403 (см. Системные ошибки IVA Terra)
-
если в файл-статусе отсутствует статус finish или в запросе на обработку установлен параметр принудительной обработки в force=true, то процесс обработки стенограммы запускается в отдельном потоке, а клиенту возвращается ответ с сообщением о принятии задачи на обработку:
-
код статуса: 200
-
ответ в формате JSON:
'PID=234567, TID=12 ACCEPTED 2024-10-01 12:34 FOR PROCESSING conference_id=776be3d2-c124-4504-a5af-3abe2e9bf6ad_1707202804977, lang=ru, force=true'
-
-
если в файле-статусе обработки стенограммы еще отсутствует статус finish, то от запроса
https://<TERRA_IP>:<API_PORT>/minutes/{conference_id}возвращается ответ:-
код статуса: 200
-
ответ в формате JSON:
{"status": "running", "message_en": "Task of compiling of minutes is still under way", "message_ru": "Идет процесс формирования протокола", "timestamp" : 152648815645.444855, "timestamp_hr" : "2024-08-15 23:34:56"}
-
-
-
обработка стенограммы:
-
содержимое файла стенограммы расшифровывается и XML-контент преобразуется в списки фраз спикеров
-
если в настройках Идентификатор сервиса Planner в итоговой стенограмме (PLANNER_PARTICIPANT_ID) / Идентификатор сервиса Summary в итоговой стенограмме (SUMMARY_PARTICIPANT_ID) в разделе Клиент ADP-сервиса указано пустое значение, то запросы в сервисы planner / summary не отправляются
-
если в настройках для Идентификатор сервиса Planner в итоговой стенограмме (PLANNER_PARTICIPANT_ID) и Идентификатор сервиса Summary в итоговой стенограмме (SUMMARY_PARTICIPANT_ID) в разделе Клиент ADP-сервиса указаны пустые значения ID, то обработка прекращается с отладочным сообщением
EMPTY PLANNER AND SUMMARY PARTICIPANT_ID, IT WILL DISABLE ADP SERVICES!!! -
списки фраз разбиваются на пакеты, которые по длительности не превышают значение, определяемое настройкой Длительность контента стенограммы в одной посылке к ADP (секунды) в разделе Клиент ADP-сервиса. Рекомендуемое значение для длительности пакета составляет 18000 секунд (5 часов).
Максимальное и рекомендуемое значение настройки Длительность контента стенограммы в одной посылке к ADP (секунды) зависит от версии модуля ADP
-
-
отправка данных в ADP-сервисы: каждая группа данных отправляется в ADP-сервисы через POST-запросы на указанный в настройке Адрес приема запросов адрес (
http://<ADP_HOST>:<ADP_PORT>/api/v1/task), с использованием токена доступа Токен доступа к ADP сервисугде:
<ADP_HOST> — адрес хоста или доменное имя сервера, на котором развернут ADP-сервис
<ADP_PORT> — порт для доступа к API ADP-сервиса (по умолчанию 9002)
-
после отправки всех запросов процесс переходит в состояние ожидания ответов от ADP-сервисов:
-
длительность ожидания ответа от POST-запроса по адресу Адрес приема запросов определяется настройкой Таймаут отправки запроса в ADP (см. раздел Клиент ADP-сервиса)
-
в ответе от ADP-сервиса (planner, summary) содержится UUID-идентификатор запроса, с которым необходимо периодически отправлять запросы на адрес, определяемый настройкой ADP_ANSWER_URL (по умолчанию: http://<ADP_HOST>:<ADP_PORT>/api/v1/result/), для получения результатов обработки по мере их готовности
где:
<ADP_HOST> — адрес хоста или доменное имя сервера, на котором развернут ADP-сервис
<ADP_PORT> — порт для доступа к API ADP-сервиса (по умолчанию 9002)
-
после отправки всех запросов поток обработки переходит в состояние ожидания ответов для каждого сервиса, пока не исчерпается список ожидаемых UUID или не истечет предельный срок ожидания, который вычисляется как Длительность между попытками получить ответ от ADP × Количество попыток получить ответ от ADP секунд. В этом состоянии поток приостанавливается на Длительность между попытками получить ответ от ADP секунд, после чего для каждого ожидаемого ответа отправляется запрос на адрес Адрес приема запросов для получения результата обработки
-
-
результаты от сервиса planner (в XML-формате) и summary (в текстовом формате) объединяются и сохраняются в файле стенограммы:
-
содержимое результатов от сервиса planner объединяется в единый список и сохраняется в стенограмме в теге <minutes>, содержащем вложенный тег: <participant participant_id=PLANNER_PARTICIPANT_ID>
-
результаты от сервиса summary объединяются в единую строку и сохраняются в том же теге <minutes> с вложенным тегом: <participant participant_id=SUMMARY_PARTICIPANT_ID>
-
-
проверка ошибок: если в процессе обработки стенограммы не произошло ошибок (получены хотя бы по одному ответу на запросы для каждого ADP-сервиса), содержимое файла стенограммы обновляется дополнительными тегами <minutes>, содержащими результаты обработки текста стенограммы ADP-сервисами.Эти данные шифруются и сохраняются в прежней локации
-
статус завершения: в файл статуса стенограммы записывается статус finish вне зависимости от того, были ли внесены изменения в содержимое стенограммы или нет.Путь к файлу обработанной стенограммы удаляется из очереди на обработку
VIEW_PROCESSING_RESULTS
Процесс VIEW_PROCESSING_RESULTS производит обработку событий, связанных с файлами транскрибации (см. раздел Транскрибация мероприятий), обеспечивая доступ к сведениям о результатах транскрибации, их экспорт, а также позволяя воспроизводить аудиоконтент и выполнять другие действия с файлами.