From ff090100cd15d0cbeedafddf98f908188af0637b Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 10 Jul 2026 02:36:41 +0300 Subject: [PATCH] =?UTF-8?q?fix(ai):=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BD=D1=8B=D0=B5=20=D1=81=D1=87=D1=91=D1=82=D1=87=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=20created/updated/unchanged=20=D0=B2=20=D0=BE?= =?UTF-8?q?=D1=82=D1=87=D1=91=D1=82=D0=B5=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _import_one возвращал неверные счётчики: новый документ давал created=1 и updated=1 (лишний updated), а существующий без изменений не учитывался в unchanged. Из-за этого падали test_creates_new_documents_and_publishes и test_reimport_same_content_is_unchanged. Разделены три состояния: новый → created=1; существующий без изменений → unchanged=1; существующий с изменённым контентом → updated=1. Создание версии вынесено в _publish_version. Проверено: 43 теста hub_platform.ai зелёные. --- .../hub_platform/ai/document_import.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/apps/backend/hub_platform/ai/document_import.py b/apps/backend/hub_platform/ai/document_import.py index 7b06772..5c5a548 100644 --- a/apps/backend/hub_platform/ai/document_import.py +++ b/apps/backend/hub_platform/ai/document_import.py @@ -152,9 +152,30 @@ def _import_one( code=doc.code, defaults=defaults, ) + if created: + # Новый документ: первая версия будет создана ниже. + return _publish_version( + document=document, + version_model=version_model, + doc=doc, + author=author, + after_publish=after_publish, + report=ImportReport(created=1), + ) latest = _latest_published(version_model, document) if latest and latest.content == doc.content: - return ImportReport(created=int(created)) + return ImportReport(unchanged=1) + return _publish_version( + document=document, + version_model=version_model, + doc=doc, + author=author, + after_publish=after_publish, + report=ImportReport(updated=1), + ) + + +def _publish_version(*, document, version_model, doc, author, after_publish, report): version = version_model.objects.create( document=document, version=_next_version(version_model, document), @@ -164,4 +185,4 @@ def _import_one( document_service.publish_version(version=version) if after_publish is not None: after_publish(version) - return ImportReport(created=int(created), updated=1) + return report