Files
DEMO-AGENT/tests/test_platform_ui.py

149 lines
5.1 KiB
Python

from django.urls import reverse
from django.test import override_settings
from django.contrib import admin
from apps.platform_ui.services import get_platform_demo_context
from apps.platform_ui.models import FeishuNotifyConfig, OwnerMapping, WordTemplateMapping
def test_knowledge_base_page_shows_governance_sections(client):
response = client.get(reverse("platform_ui:knowledge-base"))
content = response.content.decode("utf-8")
assert response.status_code == 200
assert "法规规则包" in content
assert "RAG 文档源" in content
assert "RAG 切片" in content
assert "字段 Schema" in content
assert "责任人映射" in content
assert "飞书通知配置" in content
def test_knowledge_base_page_shows_owner_mapping_fields_and_notify_reasons(client):
response = client.get(reverse("platform_ui:knowledge-base"))
content = response.content.decode("utf-8")
assert response.status_code == 200
assert "owner_role" in content
assert "owner_name" in content
assert "department" in content
assert "chapter_scope" in content
assert "risk_scope" in content
assert "feishu_user_id" in content
assert "feishu_open_id" in content
assert "feishu_name" in content
assert "notify_enabled" in content
assert "task_completed" in content
assert "task_failed" in content
@override_settings(GOVERNANCE_CONFIG_PATH="")
def test_get_platform_demo_context_reads_governance_yaml(tmp_path):
config_path = tmp_path / "governance.yaml"
config_path.write_text(
"""
owner_mappings:
- owner_role: 临床注册负责人
owner_name: 王五
department: 临床事务部
chapter_scope: CH3-CH6
risk_scope: 高风险阻断
feishu_user_id: ou_test_owner
feishu_open_id: on_test_owner
feishu_name: 王五
notify_enabled: 是
feishu_configs:
- config_name: Demo 完成通知
notify_reason: task_completed
channel: 群机器人
message_template: 审核完成摘要 + @处理人
status: 启用
template_mappings:
- template_name: 注册证导出模板
output_type: registration_word_export_report
version: V1.0
placeholder_count: 12
status: 启用
field_mapping_summary: 产品名称 / 注册人 / 适用机型
""".strip(),
encoding="utf-8",
)
with override_settings(GOVERNANCE_CONFIG_PATH=config_path):
context = get_platform_demo_context()
assert context["owner_mappings"][0]["owner_name"] == "王五"
assert context["feishu_configs"][0]["notify_reason"] == "task_completed"
assert context["template_mappings"][0]["template_name"] == "注册证导出模板"
assert context["template_mappings"][0]["field_mapping_summary"] == "产品名称 / 注册人 / 适用机型"
@override_settings(GOVERNANCE_CONFIG_PATH="")
def test_knowledge_base_page_shows_template_mappings_from_governance_config(client, tmp_path):
config_path = tmp_path / "governance.yaml"
config_path.write_text(
"""
template_mappings:
- template_name: 风险摘要导出模板
output_type: registration_word_export_report
version: V2.0
placeholder_count: 8
status: 灰度中
field_mapping_summary: 风险等级 / 产品名称 / 责任人
""".strip(),
encoding="utf-8",
)
with override_settings(GOVERNANCE_CONFIG_PATH=config_path):
response = client.get(reverse("platform_ui:knowledge-base"))
content = response.content.decode("utf-8")
assert response.status_code == 200
assert "Word 模板与字段映射" in content
assert "风险摘要导出模板" in content
assert "风险等级 / 产品名称 / 责任人" in content
def test_get_platform_demo_context_prefers_database_governance_entries(db):
OwnerMapping.objects.create(
owner_role="数据库负责人",
owner_name="周八",
department="注册事务部",
chapter_scope="CH5",
risk_scope="数据库覆盖",
feishu_user_id="ou_db_1",
feishu_open_id="on_db_1",
feishu_name="周八",
notify_enabled=True,
is_active=True,
)
FeishuNotifyConfig.objects.create(
config_name="数据库通知配置",
notify_reason="task_failed",
channel="群机器人",
message_template="异常摘要 + @处理人",
status="启用",
is_active=True,
)
WordTemplateMapping.objects.create(
template_name="数据库模板",
output_type="registration_word_export_report",
version="V3.0",
placeholder_count=16,
status="启用",
field_mapping_summary="产品名称 / 规格 / 风险等级",
is_active=True,
)
context = get_platform_demo_context()
assert context["owner_mappings"][0]["owner_name"] == "周八"
assert context["feishu_configs"][0]["config_name"] == "数据库通知配置"
assert context["template_mappings"][0]["template_name"] == "数据库模板"
def test_governance_models_are_registered_in_admin():
assert OwnerMapping in admin.site._registry
assert FeishuNotifyConfig in admin.site._registry
assert WordTemplateMapping in admin.site._registry