Коллекции MongoDB¶
Серверная часть использует базу данных MongoDB (по умолчанию — smart_doc_matcher). Ниже перечислены все коллекции, их назначение, поля и индексы.
jobs¶
Задания на обработку загруженных файлов. Каждому загруженному PDF-файлу соответствует одна запись.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор задания |
filename |
str | Имя загруженного файла |
file_size |
int | Размер файла в байтах |
file_path |
str | Путь к файлу в хранилище MinIO (формат bucket/object_name) |
status |
str | Текущее состояние: pending (ожидает), processing (обрабатывается), completed (завершено), failed (ошибка) |
progress |
int | Прогресс выполнения от 0 до 100 |
total_pages |
int или null | Общее количество страниц в файле (определяется после открытия) |
processed_pages |
int | Количество обработанных страниц |
documents_found |
int | Количество найденных документов |
groups_created |
int | Количество созданных групп |
from_filename |
object или null | Данные, извлечённые из имени файла при контрактном импорте |
warnings |
список строк или null | Предупреждения, возникшие в ходе обработки |
error |
str или null | Текст ошибки, если обработка завершилась неудачно |
usage |
object или null | Статистика использования: input_tokens, output_tokens, total_tokens, model, requests_count, prompt |
batch_id |
str или null | Идентификатор пакетного запроса Anthropic (при пакетном режиме) |
batch_status |
str или null | Состояние пакетного запроса |
created_at |
datetime | Время создания задания |
started_at |
datetime или null | Время начала обработки |
updated_at |
datetime | Время последнего обновления |
completed_at |
datetime или null | Время завершения обработки |
duration_seconds |
float или null | Длительность обработки в секундах |
Индексы:
status— для фильтрации по состояниюcreated_at— для сортировки по времени создания
documents¶
Распознанные документы. Из одного загруженного файла может быть извлечено несколько документов (например, счёт-фактура на первых двух страницах, акт на третьей).
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор документа |
job_id |
ObjectId | Ссылка на задание, из которого извлечён документ |
doc_title |
str или null | Точный заголовок документа, как он написан в оригинале |
doc_type |
str | Тип документа: счёт-фактура, акт, УПД, договор и другие |
doc_subtype |
object или null | Подтип: цвет бумаги (paper_color), качество скана (quality) |
page_start |
int | Номер первой страницы документа в исходном файле |
page_end |
int | Номер последней страницы |
source |
str или null | Источник документа |
orientation |
str | Ориентация страницы: portrait или landscape |
rotation |
int | Угол поворота содержимого: 0, 90, 180 или 270 градусов |
confidence |
float | Уверенность распознавания от 0 до 1 |
from_content |
object или null | Данные, извлечённые из содержимого (см. ниже) |
from_filename |
object или null | Данные, извлечённые из имени файла (см. ниже) |
from_postprocess |
object или null | Данные из постобработки текста |
normalized |
object или null | Приведённые к единому виду данные для сравнения |
group_id |
ObjectId или null | Ссылка на группу документов |
is_primary |
bool | Является ли документ основным в группе |
sync_error |
bool | Расхождение между данными из содержимого и из имени файла |
sync_error_details |
список строк или null | Описание расхождений |
has_error |
bool | Пользователь отметил ошибку в документе |
error_comment |
str или null | Комментарий к ошибке |
error_marked_at |
datetime или null | Время отметки ошибки |
manual_edits |
object или null | Словарь ручных правок: ключ — имя поля, значение — {original_value, edited_at} |
raw_text |
str или null | Полный текст документа, полученный распознаванием |
file_path |
str или null | Путь к вырезанному PDF в MinIO |
preview_path |
str или null | Путь к изображению для предпросмотра в MinIO |
template_id |
ObjectId или null | Ссылка на шаблон документа |
created_at |
datetime | Время создания записи |
Вложенный объект from_content¶
Данные, извлечённые помощником Claude из содержимого документа.
| Поле | Тип | Описание |
|---|---|---|
number |
str или null | Номер документа |
date |
str или null | Дата документа (формат ДД.ММ.ГГГГ) |
party_1 |
str или null | Первая сторона (продавец, исполнитель) |
party_2 |
str или null | Вторая сторона (покупатель, заказчик) |
contractor |
str или null | Контрагент (вычисляется из party_1 и party_2) |
amount |
float или null | Сумма без НДС |
amount_with_vat |
float или null | Сумма с НДС |
contract |
str или null | Номер договора |
system_number |
str или null | Устаревшее поле — см. system_numbers |
system_numbers |
список строк или null | Рукописные бухгалтерские номера |
handwritten_regions |
список объектов или null | Области с рукописным текстом (координаты в процентах: x, y, width, height, text) |
oilfields |
список строк или null | Названия месторождений, найденные в документе |
project_name |
str или null | Название проекта из шапки документа |
spp_element |
str или null | СПП-элемент (формат U016-XXXXX-X-XXXXX-XXXX) |
gtd_number |
str или null | Номер ГТД для писем |
addition_info |
str или null | Графа «Дополнение» для счёт-фактур |
linked_documents |
список объектов или null | Ссылки на связанные документы: {type, number, date} |
items |
список объектов или null | Позиции из таблицы документа: {name, nomenclature_number, item_id, quantity, price, amount} |
Вложенный объект from_filename¶
Данные, извлечённые из имени файла при контрактном импорте.
| Поле | Тип | Описание |
|---|---|---|
registry_type |
str или null | Тип реестра: D10, D11, R26, R27 и другие |
buh_number |
str или null | Бухгалтерский номер (начинается на 42) |
spp_element |
str или null | СПП-элемент (начинается на Ю-016 или U016) |
contractor |
str или null | Контрагент из имени файла |
contract |
str или null | Номер договора из имени файла |
date |
str или null | Дата документа из имени файла |
act_number |
str или null | Номер акта из имени файла |
Вложенный объект from_postprocess¶
Данные, полученные повторным разбором распознанного текста, когда Claude не нашёл нужные сведения.
| Поле | Тип | Описание |
|---|---|---|
oilfields |
список строк или null | Месторождения, найденные в тексте |
Вложенный объект normalized¶
Приведённые к единому виду значения для сравнения с реестром.
| Поле | Тип | Описание |
|---|---|---|
number |
str или null | Нормализованный номер (только цифры) |
date |
str или null | Нормализованная дата (формат ГГГГ-ММ-ДД) |
contractor |
str или null | Нормализованное название контрагента |
Индексы:
job_id— для фильтрации по заданиюdoc_type— для фильтрации по типу документа(job_id, page_start)— составной, для порядка страниц внутри задания
document_groups¶
Группы документов. Программа объединяет документы, которые относятся к одному пакету (например, счёт-фактура и акт по одной поставке).
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор группы |
job_id |
str | Ссылка на задание, в рамках которого создана группа |
document_ids |
список строк | Идентификаторы документов, входящих в группу |
primary_document_id |
str | Идентификатор основного документа группы |
number |
str или null | Номер основного документа |
date |
str или null | Дата основного документа |
contractor |
str или null | Контрагент основного документа |
amount |
float или null | Сумма основного документа |
document_types |
список строк | Типы документов в группе |
grouping |
object | Сведения о способе группировки (см. ниже) |
review_status |
str | Состояние проверки: pending (ожидает), confirmed (подтверждено), rejected (отклонено) |
confirmed_at |
datetime или null | Время подтверждения |
created_at |
datetime | Время создания группы |
Вложенный объект grouping¶
| Поле | Тип | Описание |
|---|---|---|
method |
str | Способ группировки: auto (автоматически) или manual (вручную) |
confidence |
float | Уверенность в группировке от 0 до 1 |
criteria |
object | Критерии: number_match, date_match, date_approximate, contractor_match, contractor_similarity, same_pdf, pages_nearby, fallback_applied |
templates¶
Шаблоны типов документов. Хранят области интереса для каждого типа (позиции на странице, откуда извлекаются данные).
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор шаблона |
doc_type |
str | Тип документа: счёт-фактура, акт и другие |
doc_subtype |
str или null | Подтип: жёлтая бумага, синяя бумага и другие |
description |
str или null | Описание шаблона |
example_doc_id |
str или null | Идентификатор документа-примера |
fields |
object | Области интереса для каждого поля — словарь вида {имя_поля: {bbox: [x, y, width, height], page: N}} |
count |
int | Количество найденных документов этого типа |
created_at |
datetime | Время создания |
updated_at |
datetime | Время последнего обновления |
Индексы:
doc_type— для фильтрации по типу(doc_type, doc_subtype)— уникальный составной, для однозначного определения шаблона
registries¶
Реестры — загруженные файлы Excel для сверки с документами из архива.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор реестра |
filename |
str | Имя файла на сервере |
original_filename |
str | Исходное имя файла, как его загрузил пользователь |
file_size |
int | Размер файла в байтах |
file_path |
str | Путь к файлу в MinIO |
sheets |
список объектов | Листы Excel: {name, row_count, column_count, headers} |
sheet_name |
str или null | Выбранный лист для обработки |
parsing |
object | Настройки разбора Excel (см. ниже) |
fields |
список объектов | Устаревшее поле — привязки колонок (заменено на matching_rules) |
search_config |
object | Устаревшее поле — настройки поиска (минимальный балл теперь задаётся в правилах) |
matching_rules |
список объектов | Правила сопоставления (см. ниже) |
rule_mode |
str | Режим применения правил: first_match (первое совпадение) или all_matches (все совпадения) |
template_id |
str или null | Ссылка на шаблон реестра |
status |
str | Состояние: draft, configured, importing, searching, exporting, completed, error |
stats |
object | Статистика реестра (см. ниже) |
filtered_rows_data |
список объектов | Данные строк, отфильтрованных при импорте |
current_task_id |
str или null | Идентификатор текущей фоновой задачи |
task_progress |
int | Прогресс текущей задачи от 0 до 100 |
task_error |
str или null | Ошибка текущей задачи |
export_path |
str или null | Путь к файлу выгрузки в MinIO |
created_at |
datetime | Время создания |
updated_at |
datetime или null | Время последнего обновления |
Вложенный объект parsing¶
Настройки разбора файла Excel.
| Поле | Тип | Описание |
|---|---|---|
header_row |
int | Номер строки с заголовками (нумерация с 1) |
data_start_row |
int | Номер первой строки данных (нумерация с 1) |
fill_down_columns |
список int | Индексы колонок для заполнения пропусков сверху вниз (нумерация с 0) |
column_header_row |
object | Переопределение строки заголовка для отдельных колонок |
sum_column_index |
int или null | Индекс колонки суммы (нумерация с 0) |
result_column_index |
int или null | Индекс колонки для записи имён документов |
oilfield_column_index |
int или null | Индекс колонки для записи месторождений |
skip_rows_containing |
список строк | Слова-маркеры строк для пропуска (например, «ИТОГО», «стр.») |
required_column_index |
int или null | Индекс обязательной колонки (строки с пустым значением пропускаются) |
min_filled_cells |
int | Минимальное число заполненных ячеек в строке |
Вложенный объект matching_rules[]¶
Каждое правило сопоставления определяет набор полей и условия поиска.
| Поле | Тип | Описание |
|---|---|---|
id |
str | Уникальный идентификатор правила |
name |
str | Название правила (например, «По системному номеру») |
fields |
список объектов | Поля для поиска (см. RegistryField ниже) |
min_score |
int | Минимальный балл совпадения от 0 до 100 |
enabled |
bool | Правило активно |
sub_rules |
список объектов | Подправила для уточнения результатов (та же структура, что и правило) |
Вложенный объект RegistryField (элемент списка fields)¶
| Поле | Тип | Описание |
|---|---|---|
field_id |
str | Идентификатор глобального поля из настроек (doc_number, doc_date и другие) |
column_index |
int | Индекс колонки в Excel (нумерация с 0) |
column_name |
str | Название колонки из заголовка |
use_for_search |
bool | Использовать для поиска документов |
weight |
int | Вес поля при подсчёте балла от 0 до 100 |
match_method |
str | Способ сравнения: exact (точное), fuzzy (нечёткое), range (диапазонное), contains (подстрока) |
range_tolerance |
float или null | Допуск для диапазонного сравнения (дни для дат, проценты для сумм) |
mode |
str | Режим выбора полей: preset (из настроек) или custom (произвольный набор) |
document_fields |
список строк или null | Для режима custom — пути к полям документа |
custom_label |
str или null | Для режима custom — пользовательское название поля |
Вложенный объект stats¶
| Поле | Тип | Описание |
|---|---|---|
total_rows |
int | Общее число строк реестра |
matched_rows |
int | Найдено совпадений |
unmatched_rows |
int | Совпадений не найдено |
confirmed_rows |
int | Подтверждено вручную |
avg_score |
float | Средний балл совпадения |
score_distribution |
object или null | Распределение по баллам: score_100, score_90_99, score_80_89, score_60_79, score_below_60 |
total_sum |
float или null | Общая сумма строк реестра |
found_sum |
float или null | Сумма найденных строк |
filtered_rows |
int | Количество отфильтрованных строк при импорте |
registry_rows¶
Строки реестра — каждая строка Excel с данными для поиска и результатами сопоставления.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор строки |
registry_id |
str | Ссылка на реестр |
row_number |
int | Порядковый номер строки в файле Excel |
raw_data |
object | Исходные данные — словарь по индексам колонок |
mapped_data |
object | Данные, привязанные к полям поиска (по идентификатору поля) |
normalized |
object | Приведённые к единому виду значения |
matches |
список объектов | Найденные совпадения (см. ниже) |
best_score |
float | Лучший балл совпадения |
status |
str | Состояние строки: pending (не искали), matched (найдено), no_match (не найдено), confirmed (подтверждено) |
has_warnings |
bool | Наличие предупреждений |
Вложенный объект matches[]¶
| Поле | Тип | Описание |
|---|---|---|
document_id |
str | Идентификатор найденного документа |
score |
float | Балл совпадения от 0 до 1 |
field_scores |
object | Баллы по каждому полю |
matched_values |
object | Значения документа, по которым произошло совпадение |
confirmed |
bool | Подтверждено пользователем |
rule_ids |
список строк | Идентификаторы правил, по которым найден документ |
rule_names |
список строк | Названия правил |
warnings |
список объектов | Предупреждения (например, несоответствие сумм) |
source |
str или null | Источник документа (например, filename_import для договоров) |
Индексы:
registry_id— для фильтрации по реестру(registry_id, status)— составной, для подсчёта статистики по состояниям
archive_files¶
Файлы в электронном архиве — оригиналы загруженных документов с их положением в дереве папок.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор записи |
path |
str | Полный путь в дереве архива (например, Электронный архив/2009/Январь/file.pdf) |
filename |
str | Имя файла |
file_size |
int | Размер файла в байтах |
minio_path |
str | Путь к файлу в хранилище MinIO |
status |
str | Состояние обработки: pending, processing, completed, failed |
job_id |
str или null | Ссылка на задание обработки |
created_at |
datetime | Время добавления в архив |
processed_at |
datetime или null | Время завершения обработки |
Индексы:
path— для поиска по путиstatus— для фильтрации по состоянию(path, file_size)— составной, для проверки дубликатов
archive_folders¶
Папки в электронном архиве — хранят структуру дерева каталогов.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор записи |
path |
str | Путь папки |
Индексы:
path— для поиска по пути
folder_processing¶
Фоновая обработка папок — отслеживает состояние массовой обработки файлов из папки архива.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор записи |
process_id |
str | Идентификатор процесса обработки |
folder_path |
str | Путь к обрабатываемой папке |
status |
str | Состояние обработки |
Индексы:
process_id— для поиска по идентификатору процессаstatus— для фильтрации по состояниюfolder_path— для поиска по папке
settings¶
Настройки приложения. Каждая группа настроек хранится как отдельный документ с фиксированным _id.
Документ app_settings¶
Общие настройки приложения.
| Поле | Тип | Описание |
|---|---|---|
_id |
str | Всегда "app_settings" |
processing_mode |
str | Режим обработки: sync (мгновенный) или batch (пакетный, дешевле на 50 %) |
claude_model |
str | Модель Claude для распознавания: claude-haiku-4-5-20251001, claude-sonnet-4-20250514 или claude-opus-4-20250514 |
batch_size |
int | Количество страниц на один запрос к Claude (от 5 до 50, по умолчанию 20) |
batch_worker_paused |
bool | Обработка приостановлена |
Документ search_fields¶
Глобальные поля поиска, используемые при настройке реестров.
| Поле | Тип | Описание |
|---|---|---|
_id |
str | Всегда "search_fields" |
fields |
список объектов | Поля поиска (см. ниже) |
Каждый элемент списка fields:
| Поле | Тип | Описание |
|---|---|---|
id |
str | Уникальный идентификатор (латиница, snake_case) |
label |
str | Отображаемое название |
document_fields |
список строк | Пути к полям документа для поиска (например, from_content.number) |
detect_patterns |
список строк | Образцы для автоопределения в заголовках Excel |
default_weight |
int | Вес по умолчанию от 0 до 100 |
default_method |
str | Способ сравнения по умолчанию: exact, fuzzy или range |
Документ oilfields¶
Словарь месторождений для поиска в текстах документов.
| Поле | Тип | Описание |
|---|---|---|
_id |
str | Всегда "oilfields" |
items |
список объектов | Записи словаря |
Каждый элемент списка items:
| Поле | Тип | Описание |
|---|---|---|
id |
str | Уникальный идентификатор записи |
name |
str | Каноническое название месторождения |
keywords |
список строк | Ключевые слова для поиска в тексте |
yandex_imports¶
Импорт файлов с Яндекс.Диска — запущенные и завершённые загрузки.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор импорта |
status |
str | Состояние: pending, processing, completed, failed |
progress |
int | Прогресс от 0 до 100 |
error |
str или null | Текст ошибки |
created_at |
datetime | Время запуска импорта |
registry_templates¶
Шаблоны реестров — сохранённые настройки разбора и сопоставления для повторного использования.
| Поле | Тип | Описание |
|---|---|---|
_id |
ObjectId | Уникальный идентификатор шаблона |
name |
str | Название шаблона |
parsing |
object | Настройки разбора Excel (аналогично registries.parsing) |
fields |
список объектов | Привязки полей (аналогично registries.fields) |
search_config |
object | Настройки поиска |
auto_detect |
object | Настройки автоопределения: filename_patterns и header_patterns |
usage_count |
int | Сколько раз шаблон был применён |
last_used |
datetime или null | Когда шаблон был применён последний раз |
created_at |
datetime | Время создания |