Функция не мержит, а заворачивает документы в единый конверт публикации:
одиночный документ идёт тем же путём и даёт files[] из одного элемента.
Потребителю не нужно знать, сколько документов распознал процессор.
Старые имена вводили в заблуждение на самом частом случае.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvCSGmwgL8juhZdXr32qXM
Функция принимает уже прочитанные json-объекты и сама ничего не
открывает — транспорт (локальная ФС, SMB-шара, S3, поток) остаётся
за вызывающим. Локальное чтение переехало в CLI как одного из них.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvCSGmwgL8juhZdXr32qXM
PDF-процессор кладёт по одному json на каждый распознанный документ.
merge_documents() собирает их в {file_id, legal_entity_id, files: [...]},
где files — полное содержимое каждого файла без обработки.
Модуль не зависит от config/S3/NATS: используется и как CLI-скрипт,
и (в дальнейшем) из PollWorker.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvCSGmwgL8juhZdXr32qXM
bd init writes AGENTS.md and .beads/ into the working tree; these are
local agent tooling, not part of the service.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CLAUDE.md, CLAUDE.local.md and .claude/ are local working notes and
should not be tracked in the shared repository.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
FastAPI service that consumes NATS `files.uploaded` events and parses
uploaded documents from MinIO/S3 into legal entity, company group and
RF office schemas.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>