Перейти к содержанию

Коллекции 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 Время создания