Подключение API #2

Closed
opened 2026-06-25 17:59:09 +05:00 by geekiot · 2 comments
Owner

Согласовать контакт между API и Worker:

  1. В каком формате передается результат.
  2. Какие параметры могут быть переданы Worker.
  3. Модель передачи параметров - для каждого файла отдельно или общие для всех переданных файлов.
  4. Как указывать, что требуется конвертация из одного формата в другой (Например, PPTX -> PDF -> OCR Extract).
Согласовать контакт между API и Worker: 1. В каком формате передается результат. 2. Какие параметры могут быть переданы Worker. 3. Модель передачи параметров - для каждого файла отдельно или общие для всех переданных файлов. 4. Как указывать, что требуется конвертация из одного формата в другой (Например, PPTX -> PDF -> OCR Extract).
geekiot added this to the Kanban project 2026-06-25 17:59:09 +05:00
Author
Owner

Также добавить в services/worker/src/pipeline.py код для обработки этого контакта, сохранения результатов.

Также добавить в `services/worker/src/pipeline.py` код для обработки этого контакта, сохранения результатов.
geekiot added reference feat/mvp 2026-06-25 18:04:35 +05:00
geekiot self-assigned this 2026-06-25 18:04:42 +05:00
Author
Owner
  1. Формат результата
    Worker пишет результат в общий том:
    /var/lib/lectio/storage/results/<task_id>/
    API возвращает список файлов через GET /api/v1/status/<task_id>:
{
  "task_id": "a969e1c7-...",
  "status": "SUCCESS",
  "result": [
    {
      "filename": "ef7c1531-..._0.md",
      "path": "/var/lib/lectio/storage/results/a969e1c7-.../ef7c1531-..._0.md"
    }
  ]
}
  • Основной результат - Markdown-файлы (.md).
  • Изображения/вложения сохраняются в поддиректорию .attachments рядом с markdown.
  • GET /status возвращает только файлы в корне results/<task_id>/, вложения отдаются по прямому пути.
  1. Параметры, передаваемые Worker
    Worker получает задачу через Celery с такими kwargs:
{
    "task_id": "<uuid>",
    "file_ids": ["file_id_1", "file_id_2"],
    "configs": {
        "file_id_1": {<FileConfig>},
        "file_id_2": {<FileConfig>}
    }
}

FileConfig - это Pydantic-модель из shared-пакета lectio-config-models.

  1. Модель передачи параметров: per-file
    Конфигурация строго для каждого файла отдельно. Общих параметров для всего батча нет.
    Каждый конфиг - discriminated union по полю media_type:
{
  "files": {
    "<file_id_1>": {
      "media_type": "pdf",
      "ocr": false,
      "ocr_full": true
    },
    "<file_id_2>": {
      "media_type": "video",
      "stt": true,
      "ocr_video": false,
      "use_diarization": true
    }
  }
}
  1. Конвертация форматов
    Конвертация указывается неявно через флаги внутри конфига:
  • PPTX / DOCX с ocr: true или ocr_full: true -> конвертируется в PDF -> затем OCR.
  • PPTX / DOCX с ocr: false / ocr_full: false -> прямое извлечение текста без PDF.
  • Image всегда обрабатывается OCR.
  • Video может включать stt и/или ocr_video.
    Таким образом, PPTX -> PDF -> OCR не требует отдельного параметра; достаточно:
{
  "media_type": "pptx",
  "ocr_full": true
}
1. Формат результата Worker пишет результат в общий том: `/var/lib/lectio/storage/results/<task_id>/` API возвращает список файлов через `GET /api/v1/status/<task_id>`: ``` { "task_id": "a969e1c7-...", "status": "SUCCESS", "result": [ { "filename": "ef7c1531-..._0.md", "path": "/var/lib/lectio/storage/results/a969e1c7-.../ef7c1531-..._0.md" } ] } ``` - Основной результат - Markdown-файлы (.md). - Изображения/вложения сохраняются в поддиректорию .attachments рядом с markdown. - `GET /status` возвращает только файлы в корне `results/<task_id>/`, вложения отдаются по прямому пути. 2. Параметры, передаваемые Worker Worker получает задачу через Celery с такими kwargs: ``` { "task_id": "<uuid>", "file_ids": ["file_id_1", "file_id_2"], "configs": { "file_id_1": {<FileConfig>}, "file_id_2": {<FileConfig>} } } ``` FileConfig - это Pydantic-модель из shared-пакета lectio-config-models. 3. Модель передачи параметров: per-file Конфигурация строго для каждого файла отдельно. Общих параметров для всего батча нет. Каждый конфиг - discriminated union по полю `media_type`: ``` { "files": { "<file_id_1>": { "media_type": "pdf", "ocr": false, "ocr_full": true }, "<file_id_2>": { "media_type": "video", "stt": true, "ocr_video": false, "use_diarization": true } } } ``` 4. Конвертация форматов Конвертация указывается неявно через флаги внутри конфига: - PPTX / DOCX с ocr: true или ocr_full: true -> конвертируется в PDF -> затем OCR. - PPTX / DOCX с ocr: false / ocr_full: false -> прямое извлечение текста без PDF. - Image всегда обрабатывается OCR. - Video может включать stt и/или ocr_video. Таким образом, PPTX -> PDF -> OCR не требует отдельного параметра; достаточно: ``` { "media_type": "pptx", "ocr_full": true } ```
geekiot 2026-07-11 23:25:22 +05:00
  • closed this issue
  • removed the
    question
    label
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
geekiot/lectio#2
No description provided.