Прослойка обращений к серверу
Обзор
Файл frontend-react/src/api/client.ts содержит единственный модуль, через который пользовательский интерфейс общается с серверной частью. Все обращения проходят через экземпляр библиотеки Axios с общими настройками. Модуль экспортирует восемь групп методов, каждая из которых соответствует определённой предметной области.
Базовый адрес определяется переменной окружения VITE_API_URL. В режиме разработки значение пустое --- Vite проксирует запросы на серверную часть. В рабочем окружении nginx выполняет ту же роль.
Общий экземпляр Axios
const api = axios.create({
baseURL: API_URL,
headers: { 'Content-Type': 'application/json' },
withCredentials: true,
})
Все методы групп используют этот экземпляр. Заголовок Content-Type переопределяется на multipart/form-data для методов загрузки файлов.
jobsApi --- задания обработки
Обращается к серверным адресам /api/jobs/.
| Метод |
Серверный адрес |
Назначение |
list(params?) |
GET /api/jobs/ |
Получить список заданий. Необязательные параметры: limit, status |
get(id) |
GET /api/jobs/{id} |
Получить одно задание по идентификатору |
create(file) |
POST /api/jobs/ |
Создать задание, загрузив файл (multipart/form-data) |
checkDuplicate(filename, file_size) |
POST /api/jobs/check-duplicate |
Проверить, нет ли уже задания с таким именем файла и размером |
process(id) |
POST /api/jobs/{id}/process |
Запустить обработку задания |
reprocess(id) |
POST /api/jobs/{id}/reprocess |
Повторно обработать задание |
delete(id) |
DELETE /api/jobs/{id} |
Удалить задание |
export(id) |
формирует ссылку на GET /api/jobs/{id}/export |
Получить ссылку для скачивания результатов |
startQueue() |
POST /api/jobs/queue/start |
Возобновить обработку очереди |
pauseQueue() |
POST /api/jobs/queue/pause |
Приостановить обработку очереди |
clearQueue() |
POST /api/jobs/queue/clear |
Очистить очередь ожидающих заданий |
resetStuck() |
POST /api/jobs/queue/reset-stuck |
Сбросить зависшие задания обратно в очередь |
cancelAll() |
POST /api/jobs/queue/cancel-all |
Отменить все задания в очереди |
cancel(id) |
POST /api/jobs/{id}/cancel |
Отменить конкретное задание |
folderStats() |
GET /api/jobs/folder-stats |
Получить статистику по папкам |
batchOverview() |
GET /api/jobs/batch-overview |
Получить сводку по текущим партиям обработки |
documentsApi --- документы
Обращается к серверным адресам /api/documents/.
| Метод |
Серверный адрес |
Назначение |
list(params?) |
GET /api/documents/ |
Получить список документов. Фильтры: job_id, doc_type, group_id, ungrouped, has_error |
get(id) |
GET /api/documents/{id} |
Получить один документ по идентификатору |
markError(id, comment?) |
PATCH /api/documents/{id}/error |
Отметить документ как ошибочный с необязательным комментарием |
clearError(id) |
PATCH /api/documents/{id}/error |
Снять отметку об ошибке |
viewUrl(id) |
формирует ссылку на GET /api/documents/{id}/view |
Получить ссылку для просмотра в браузере |
downloadUrl(id) |
формирует ссылку на GET /api/documents/{id}/download |
Получить ссылку для скачивания |
previewUrl(id) |
формирует ссылку на GET /api/documents/{id}/preview |
Получить ссылку для предпросмотра изображения |
getDownloadUrl(id) |
GET /api/documents/{id}/download-url |
Получить подписанную ссылку на скачивание (устаревший способ) |
getPreviewUrl(id) |
GET /api/documents/{id}/preview-url |
Получить подписанную ссылку на предпросмотр (устаревший способ) |
getStatsByType(job_id?) |
GET /api/documents/stats/by-type |
Получить статистику по типам документов |
search(params) |
GET /api/documents/search |
Найти документы по тексту. Параметры: q, doc_type, has_error, skip, limit |
searchCount(params) |
GET /api/documents/search/count |
Получить количество результатов поиска |
getRegistries(id) |
GET /api/documents/{id}/registries |
Получить список реестров, в которых встречается документ |
updateFields(id, data) |
PATCH /api/documents/{id}/fields |
Вручную изменить поля документа: данные из содержимого (from_content) или из имени файла (from_filename) |
revertField(id, fieldPath) |
POST /api/documents/{id}/fields/revert |
Отменить ручное изменение поля и вернуть исходное значение |
groupsApi --- группы документов
Обращается к серверным адресам /api/groups/.
| Метод |
Серверный адрес |
Назначение |
list(params?) |
GET /api/groups/ |
Получить список групп. Фильтры: job_id, review_status, skip, limit |
get(id) |
GET /api/groups/{id} |
Получить одну группу |
getStats(job_id?) |
GET /api/groups/stats |
Получить статистику по группам |
confirm(id) |
POST /api/groups/{id}/confirm |
Подтвердить группу |
ungroup(id) |
DELETE /api/groups/{id} |
Разгруппировать --- удалить группу и вернуть документы в несгруппированное состояние |
archiveApi --- файловый архив
Обращается к серверным адресам /api/archive/. Это самая большая группа, охватывающая управление файлами, импорт с Яндекс.Диска и контрактный импорт.
Работа с файлами и папками
| Метод |
Серверный адрес |
Назначение |
getTree(path?) |
GET /api/archive/tree |
Получить дерево файлов и папок |
getTreeChildren(path?, skip?, limit?) |
GET /api/archive/tree/children |
Получить содержимое папки с постраничной загрузкой |
getUnprocessedCount() |
GET /api/archive/unprocessed-count |
Получить количество необработанных файлов |
getStats() |
GET /api/archive/stats |
Получить общую статистику архива |
getFile(id) |
GET /api/archive/file/{id} |
Получить сведения о файле |
createFolder(path) |
POST /api/archive/folder |
Создать новую папку |
uploadFile(file, path) |
POST /api/archive/upload-file |
Загрузить один файл в указанную папку |
uploadZip(file, basePath, onProgress?) |
POST /api/archive/upload-zip |
Загрузить архив и распаковать в указанную папку. Тайм-аут --- 10 минут. Поддерживает отслеживание прогресса загрузки |
uploadZipFromPath(filePath, basePath) |
POST /api/archive/upload-zip-from-path |
Распаковать архив, уже доступный серверу по указанному пути. Тайм-аут --- 1 час |
viewFile(id) |
формирует ссылку на GET /api/archive/file/{id}/view |
Получить ссылку для просмотра файла |
downloadFile(id) |
формирует ссылку на GET /api/archive/file/{id}/download |
Получить ссылку для скачивания файла |
deleteFile(id) |
DELETE /api/archive/file/{id} |
Удалить файл |
deleteFolder(path) |
DELETE /api/archive/folder |
Удалить папку |
downloadFolder(path) |
формирует ссылку на GET /api/archive/download-folder |
Получить ссылку для скачивания папки целиком |
moveItem(sourcePath, targetPath) |
PUT /api/archive/move |
Переместить файл или папку |
Обработка файлов
| Метод |
Серверный адрес |
Назначение |
processFile(id) |
POST /api/archive/process/{id} |
Отправить файл на обработку |
processFolder(path) |
POST /api/archive/process-folder |
Отправить все файлы в папке на обработку |
startFolderProcessing(path, maxConcurrent?) |
POST /api/archive/process-folder/start |
Запустить фоновую обработку папки с ограничением числа одновременных заданий |
getFolderProcessingStatus(processId) |
GET /api/archive/process-folder/status/{processId} |
Получить состояние фоновой обработки папки |
getActiveFolderProcessing() |
GET /api/archive/process-folder/active |
Получить список активных фоновых обработок папок |
Импорт с Яндекс.Диска
| Метод |
Серверный адрес |
Назначение |
browseYandex(publicUrl, path?) |
GET /api/archive/yandex/browse |
Просмотреть содержимое общедоступной ссылки Яндекс.Диска |
importYandex(publicUrl, selectedPaths, basePath?) |
POST /api/archive/import-yandex |
Синхронный импорт выбранных файлов (устаревший способ) |
startYandexImport(publicUrl, selectedPaths, basePath?) |
POST /api/archive/import-yandex/start |
Запустить фоновый импорт через Celery |
getYandexImportStatus(importId) |
GET /api/archive/import-yandex/status/{importId} |
Получить состояние фонового импорта |
getActiveYandexImports() |
GET /api/archive/import-yandex/active |
Получить список активных импортов |
getRecentYandexImports() |
GET /api/archive/import-yandex/recent |
Получить список недавних импортов |
resumeYandexImport(importId) |
POST /api/archive/import-yandex/resume/{importId} |
Возобновить прерванный импорт |
getYandexImportHistory(skip?, limit?, status?) |
GET /api/archive/import-yandex/history |
Получить историю всех импортов с Яндекс.Диска |
Контрактный импорт по именам файлов
| Метод |
Серверный адрес |
Назначение |
previewContractImport(folderPath) |
POST /api/archive/import-contracts/preview |
Предварительный просмотр: какие поля извлекутся из имён файлов |
startContractImport(folderPath) |
POST /api/archive/import-contracts/start |
Запустить контрактный импорт |
getContractImportStatus(importId) |
GET /api/archive/import-contracts/status/{importId} |
Получить состояние контрактного импорта |
getActiveContractImports() |
GET /api/archive/import-contracts/active |
Получить список активных контрактных импортов |
Статусы папок
| Метод |
Серверный адрес |
Назначение |
getFolderStatuses() |
GET /api/archive/folder-statuses |
Получить статусы всех папок |
setFolderStatus(path, status) |
PUT /api/archive/folder-status |
Установить статус папки |
registriesApi --- реестры
Обращается к серверным адресам /api/registries/. Методы организованы по этапам работы мастера настройки реестра.
Общие действия
| Метод |
Серверный адрес |
Назначение |
list(params?) |
GET /api/registries |
Получить список реестров. Фильтры: skip, limit, status |
get(id) |
GET /api/registries/{id} |
Получить один реестр |
upload(file, onProgress?) |
POST /api/registries/upload |
Загрузить файл Excel. Поддерживает отслеживание прогресса загрузки |
delete(id) |
DELETE /api/registries/{id} |
Удалить реестр |
getMatchMethods() |
GET /api/registries/match-methods |
Получить список доступных способов сравнения |
Шаг 1 мастера: выбор листа и разметка
| Метод |
Серверный адрес |
Назначение |
getPreview(id, params) |
GET /api/registries/{id}/preview |
Предварительный просмотр данных листа Excel. Параметры: sheet_name, header_row, data_start_row, fill_down_columns, column_header_row, skip_rows_containing, required_column_index, min_filled_cells, limit |
saveParsing(id, sheetName, config) |
POST /api/registries/{id}/parsing |
Сохранить настройки разметки листа: номер строки заголовка, начало данных, колонки для заполнения пропусков и другие параметры |
Шаг 2 мастера: привязка полей
| Метод |
Серверный адрес |
Назначение |
detectFields(id) |
GET /api/registries/{id}/detect-fields |
Автоматически определить соответствие колонок Excel полям документа |
saveFields(id, fields) |
POST /api/registries/{id}/fields |
Сохранить привязку колонок к полям. Для каждого поля указывается: идентификатор поля, номер колонки, название колонки, участвует ли в поиске, вес, способ сравнения (exact, fuzzy, range) и допуск для диапазона |
Правила сопоставления
| Метод |
Серверный адрес |
Назначение |
getMatchingRules(id) |
GET /api/registries/{id}/rules |
Получить список правил сопоставления |
saveMatchingRules(id, rules, ruleMode?) |
POST /api/registries/{id}/rules |
Сохранить правила. Каждое правило содержит набор полей с весами и способами сравнения, минимальный балл совпадения, признак включения. Параметр rule_mode определяет режим: first_match (первое совпавшее правило) или all_matches (все правила) |
deleteMatchingRule(id, ruleId) |
DELETE /api/registries/{id}/rules/{ruleId} |
Удалить правило |
toggleMatchingRule(id, ruleId) |
PATCH /api/registries/{id}/rules/{ruleId}/toggle |
Включить или выключить правило |
Импорт и поиск
| Метод |
Серверный адрес |
Назначение |
startImport(id, force?) |
POST /api/registries/{id}/import |
Запустить импорт строк реестра в базу данных. Параметр force --- повторный импорт поверх существующих данных |
startSearch(id) |
POST /api/registries/{id}/search |
Запустить поиск совпадений для строк реестра |
getTaskStatus(id) |
GET /api/registries/{id}/status |
Получить состояние текущей фоновой задачи (импорт или поиск) |
Результаты
| Метод |
Серверный адрес |
Назначение |
getRows(id, params?) |
GET /api/registries/{id}/rows |
Получить строки реестра с результатами. Фильтры: status, rule_id, search, score_min, score_max, sort_by, sort_order, column_filters, has_warnings |
getColumnValues(id, params) |
GET /api/registries/{id}/column-values |
Получить уникальные значения колонки для построения фильтра |
getRow(id, rowNumber) |
GET /api/registries/{id}/rows/{rowNumber} |
Получить одну строку реестра |
confirmMatch(id, rowNumber, documentId) |
POST /api/registries/{id}/rows/{rowNumber}/confirm |
Подтвердить совпадение вручную, указав идентификатор документа |
unconfirmMatch(id, rowNumber) |
DELETE /api/registries/{id}/rows/{rowNumber}/confirm |
Отменить ручное подтверждение совпадения |
Выгрузка
| Метод |
Серверный адрес |
Назначение |
startExport(id, includePdfs?) |
POST /api/registries/{id}/export |
Запустить подготовку выгрузки. Параметр include_pdfs --- включить файлы найденных документов |
downloadExportUrl(id) |
формирует ссылку на GET /api/registries/{id}/export/download |
Получить ссылку для скачивания выгрузки |
Устаревший метод
| Метод |
Серверный адрес |
Назначение |
saveSearchConfig(id, config) |
POST /api/registries/{id}/search-config |
Сохранить настройки поиска (заменён правилами сопоставления) |
getSheetData(id, sheetName, params?) |
GET /api/registries/{id}/preview |
Обёртка для совместимости, вызывает тот же адрес, что и getPreview |
registryTemplatesApi --- шаблоны реестров
Обращается к серверным адресам /api/registry-templates/.
| Метод |
Серверный адрес |
Назначение |
list(params?) |
GET /api/registry-templates |
Получить список шаблонов. Фильтры: skip, limit, search |
get(id) |
GET /api/registry-templates/{id} |
Получить один шаблон |
create(data) |
POST /api/registry-templates |
Создать шаблон. Включает настройки разметки, привязку полей, настройки поиска и правила автоматического определения (по имени файла и заголовкам) |
update(id, data) |
PUT /api/registry-templates/{id} |
Обновить шаблон |
delete(id) |
DELETE /api/registry-templates/{id} |
Удалить шаблон |
suggest(params) |
GET /api/registry-templates/suggest |
Подобрать подходящий шаблон по имени файла или заголовкам колонок |
settingsApi --- настройки
Обращается к серверным адресам /api/settings/.
Общие настройки
| Метод |
Серверный адрес |
Назначение |
get() |
GET /api/settings |
Получить текущие настройки |
update(data) |
PATCH /api/settings |
Обновить настройки: режим обработки (sync или batch), модель распознавания, размер партии |
reset() |
POST /api/settings/reset |
Сбросить настройки к значениям по умолчанию |
Поля для поиска
| Метод |
Серверный адрес |
Назначение |
getSearchFields() |
GET /api/settings/search-fields |
Получить список полей, доступных для сопоставления |
createSearchField(data) |
POST /api/settings/search-fields |
Создать поле поиска: идентификатор, название, привязанные поля документа, образцы для определения, вес и способ сравнения по умолчанию |
updateSearchField(id, data) |
PUT /api/settings/search-fields/{id} |
Обновить поле поиска |
deleteSearchField(id) |
DELETE /api/settings/search-fields/{id} |
Удалить поле поиска |
resetSearchFields() |
POST /api/settings/search-fields/reset |
Сбросить поля к значениям по умолчанию |
getDocumentFields() |
GET /api/settings/document-fields |
Получить список всех полей, которые могут быть в документе |
Состояние обработки
| Метод |
Серверный адрес |
Назначение |
getProcessingStatus() |
GET /api/settings/processing-status |
Получить текущее состояние обработки |
togglePauseProcessing() |
POST /api/settings/processing/toggle-pause |
Переключить приостановку обработки |
Месторождения
| Метод |
Серверный адрес |
Назначение |
getOilfields() |
GET /api/settings/oilfields |
Получить список месторождений |
createOilfield(data) |
POST /api/settings/oilfields |
Добавить месторождение: название и необязательные псевдонимы |
updateOilfield(id, data) |
PUT /api/settings/oilfields/{id} |
Обновить месторождение |
deleteOilfield(id) |
DELETE /api/settings/oilfields/{id} |
Удалить месторождение |
resetOilfields() |
POST /api/settings/oilfields/reset |
Сбросить месторождения к значениям по умолчанию |
healthApi --- проверка состояния
| Метод |
Серверный адрес |
Назначение |
check() |
GET /health |
Проверить состояние серверной части |
root() |
GET / |
Корневой адрес серверной части |