Повідомлення ZeroMQ
Повідомлення ZMQ
R3el використовує один кадр JSON для кожного запиту й відповіді на визначеному прослуховувачі backend із DR3el.CMDB_NETWORK (типово tcp://127.0.0.1:42221). ZMQMsg визначає оболонку повідомлення, DZMQ — версію протоколу та час очікування, а DMessage — відправника, отримувача, метод і константи відповіді керування. MessageHandler спрямовує запити до відповідних обробників. Назви відправників визначають ролі, а не є обліковими даними автентифікації.
Новий пакет
{
"protocol_version": 1,
"sender": "r3el-control",
"target": "batch",
"method": "new_batch",
"payload": {
"input_directory": "/exports/disk1/archive/film",
"output_directory": "/exports/disk1/archive/media/movies",
"batch_size": 5
}
}
BatchControl надсилає це повідомлення. BatchControlHandler використовує BatchConfiguration для перевірки саме цих параметрів: абсолютні шляхи каталогів і цілий розмір пакета з DR3el.BATCH_SIZES (5, 10, 20, 50 або 100). Сервіс R3el повинен мати змогу читати вхідний каталог на початку обробки. Вихідний каталог зберігається для майбутніх файлових операцій; ідентифікація ще нічого туди не записує.
Відповідь містить відправника r3el, отримувача r3el-control і метод new_batch. Вміст payload може бути таким:
{"status": "accepted"}: пакет заплановано, але ще не завершено.{"status": "busy"}: інший пакет зарезервовано або він працює; новий не додано.{"status": "error", "error": {"code": "invalid_parameters", "message": "..."}}.{"status": "error", "error": {"code": "not_configured"}}: URL моделі відсутній або сервер працює в одноразовому діагностичному режимі.{"status": "error", "error": {"code": "unknown_request"}}: цей маршрут або відправник не підтримується.
BatchProcessor резервує один пакет і планує виконання в циклі застосунку. BatchRunner створює нове з’єднання з базою даних і компоненти ідентифікації. Потік прослуховувача залишається вільним для надсилання інструментальних повідомлень. Після завершення процесор повертається в стан очікування. Очікувані помилки файлової системи, HTTP або підключення до бази даних журналюються й також звільняють процесор; програмні помилки передаються далі.
Передбачається, що робоча область порожня. У цьому інтерфейсі не реалізовано заміну чи очищення; New Batch ніколи мовчки не використовує й не перезаписує збережену робочу область. Такий запит завершується помилкою під час виконання, що потрапляє до журналу сервера. Автоматичних повторів немає: якщо відповідь про прийняття загубилася, це не означає, що пакет не стартував. Журнал подій фіксує результати пакета та елементів.
Надсилання ідентифікації
MCP використовує відправника mcp-identification, отримувача identification і метод submit_identification. payload містить attempt_id і об’єкт submission з title, year та confidence. SubmissionHandler знаходить спробу, якою керує сервер, і повертає ok, rejected або error. Сервер без активної спроби відхиляє подання. Поведінка MCP не змінена.
Некоректні оболонки повідомлень і помилки транспортного обробника повертають звичайну відповідь error із кодами invalid_request та handler_error відповідно.