110 lines
4.3 KiB
Python
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
|