Files
DEMO-AGENT/tests/test_application_form_fill_models.py

110 lines
4.3 KiB
Python

import pytest
from review_agent.models import (
ApplicationFormFillArtifact,
ApplicationFormFillBatch,
ApplicationFormFillNotificationRecord,
Conversation,
ExportedSummaryFile,
FileSummaryBatch,
Message,
RegulatoryReviewBatch,
)
pytestmark = pytest.mark.django_db
def test_application_form_fill_models_store_batch_artifact_notification_and_exports(django_user_model):
user = django_user_model.objects.create_user(username="owner", password="pass")
conversation = Conversation.objects.create(user=user, title="自动填表")
trigger = Message.objects.create(
conversation=conversation,
role=Message.Role.USER,
content="帮我填注册证",
)
summary_batch = FileSummaryBatch.objects.create(
conversation=conversation,
user=user,
batch_no="FS-AFF-READY",
status=FileSummaryBatch.Status.SUCCESS,
)
regulatory_batch = RegulatoryReviewBatch.objects.create(
conversation=conversation,
user=user,
source_summary_batch=summary_batch,
batch_no="RR-AFF-SOURCE",
condition_json={"confirmed": True, "registration_type": "首次注册"},
)
batch = ApplicationFormFillBatch.objects.create(
conversation=conversation,
user=user,
trigger_message=trigger,
source_summary_batch=summary_batch,
source_regulatory_batch=regulatory_batch,
batch_no="AFF-20260607153000-abcdef",
requested_templates=["registration_certificate"],
selected_templates=["registration_certificate"],
output_types=["word", "excel", "json"],
registration_type="首次注册",
registration_type_source=ApplicationFormFillBatch.RegistrationTypeSource.USER_MESSAGE,
product_name="甲胎蛋白检测试剂盒",
conflict_summary=[{"field_key": "storage_condition"}],
risk_notes=[{"type": "pdf_pending"}],
template_config_version="application_form_templates_v1",
template_config_hash="hash",
work_dir="media/application_form_fill/1/1/AFF-20260607153000-abcdef",
)
artifact = ApplicationFormFillArtifact.objects.create(
batch=batch,
artifact_type=ApplicationFormFillArtifact.ArtifactType.FILLED_TEMPLATE,
file_format=ApplicationFormFillArtifact.FileFormat.DOCX,
name="注册证格式",
file_name="filled.docx",
storage_path="media/application_form_fill/filled.docx",
file_size=123,
content_hash="sha256",
metadata={"template_code": "registration_certificate"},
created_by_node="word_fill",
)
notification = ApplicationFormFillNotificationRecord.objects.create(
batch=batch,
recipient=user,
channel=ApplicationFormFillNotificationRecord.Channel.MOCK,
template_codes=["registration_certificate"],
export_ids=[1],
message_summary="自动填表完成",
send_status=ApplicationFormFillNotificationRecord.SendStatus.FAILED,
retry_count=1,
error_message="mock failed",
)
word_export = ExportedSummaryFile.objects.create(
batch=summary_batch,
workflow_type="application_form_fill",
workflow_batch_id=batch.pk,
export_category="filled_template",
export_type=ExportedSummaryFile.ExportType.WORD,
file_name="filled.docx",
storage_path="media/application_form_fill/filled.docx",
)
pdf_export = ExportedSummaryFile.objects.create(
batch=summary_batch,
workflow_type="application_form_fill",
workflow_batch_id=batch.pk,
export_category="filled_template",
export_type=ExportedSummaryFile.ExportType.PDF,
file_name="filled.pdf",
storage_path="media/application_form_fill/filled.pdf",
)
assert batch.status == ApplicationFormFillBatch.Status.PENDING
assert batch.source_summary_batch == summary_batch
assert batch.source_regulatory_batch == regulatory_batch
assert artifact.content_hash == "sha256"
assert artifact.metadata["template_code"] == "registration_certificate"
assert notification.send_status == ApplicationFormFillNotificationRecord.SendStatus.FAILED
assert notification.retry_count == 1
assert word_export.export_type == ExportedSummaryFile.ExportType.WORD
assert pdf_export.export_type == ExportedSummaryFile.ExportType.PDF