72 lines
2.7 KiB
Python
72 lines
2.7 KiB
Python
import pytest
|
|
|
|
from review_agent.models import Conversation, FileSummaryBatch, FileSummaryItem
|
|
from review_agent.regulatory_review.services.completeness_check import run_completeness_check
|
|
from review_agent.regulatory_review.services.rule_loader import load_rule_file
|
|
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
def test_completeness_check_matches_existing_files_and_reports_missing(django_user_model):
|
|
user = django_user_model.objects.create_user(username="owner", password="pass")
|
|
conversation = Conversation.objects.create(user=user, title="会话")
|
|
batch = FileSummaryBatch.objects.create(
|
|
conversation=conversation,
|
|
user=user,
|
|
batch_no="FS-CHECK",
|
|
status=FileSummaryBatch.Status.SUCCESS,
|
|
)
|
|
FileSummaryItem.objects.create(
|
|
batch=batch,
|
|
file_index=1,
|
|
file_name="产品技术要求.docx",
|
|
file_type="docx",
|
|
relative_path="产品技术要求.docx",
|
|
storage_path="x/product.docx",
|
|
)
|
|
FileSummaryItem.objects.create(
|
|
batch=batch,
|
|
file_index=2,
|
|
file_name="说明书.docx",
|
|
file_type="docx",
|
|
relative_path="说明书.docx",
|
|
storage_path="x/ifu.docx",
|
|
)
|
|
|
|
findings = run_completeness_check(batch, load_rule_file())
|
|
|
|
titles = [finding.title for finding in findings]
|
|
assert "缺少注册检验报告" in titles
|
|
assert "缺少产品技术要求" not in titles
|
|
missing = next(finding for finding in findings if finding.rule_code == "registration_test_report")
|
|
assert missing.severity == "blocking"
|
|
assert missing.category == "completeness"
|
|
|
|
|
|
def test_completeness_check_matches_attachment4_directory_names(django_user_model):
|
|
user = django_user_model.objects.create_user(username="owner", password="pass")
|
|
conversation = Conversation.objects.create(user=user, title="会话")
|
|
batch = FileSummaryBatch.objects.create(
|
|
conversation=conversation,
|
|
user=user,
|
|
batch_no="FS-A4",
|
|
status=FileSummaryBatch.Status.SUCCESS,
|
|
)
|
|
FileSummaryItem.objects.create(
|
|
batch=batch,
|
|
file_index=1,
|
|
directory_level="1. 监管信息 / 1.2 申请表",
|
|
file_name="注册申请表.pdf",
|
|
file_type="pdf",
|
|
relative_path="1.监管信息/1.2申请表/注册申请表.pdf",
|
|
storage_path="x/app.pdf",
|
|
)
|
|
|
|
findings = run_completeness_check(batch, load_rule_file())
|
|
|
|
assert not any(finding.rule_code == "attachment4_1_2_application_form" for finding in findings)
|
|
missing_qms = next(finding for finding in findings if finding.rule_code == "attachment4_6_quality_system")
|
|
assert missing_qms.severity == "high"
|
|
assert missing_qms.evidence["searched_fields"] == ["file_name", "relative_path", "directory_level"]
|