test_seed_knowledge_command.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from datetime import UTC, datetime
  2. from pathlib import Path
  3. from zbt.commands.seed_knowledge import seed_documents
  4. from zbt.domains.knowledge.index import InMemoryKnowledgeIndex
  5. from zbt.domains.knowledge.repository import InMemoryKnowledgeRepository
  6. from zbt.domains.knowledge.service import KnowledgeService
  7. NOW = datetime(2026, 7, 29, 10, tzinfo=UTC)
  8. def test_seed_documents_rebuilds_index_for_published_mysql_snapshot(
  9. tmp_path: Path,
  10. ) -> None:
  11. source_name = "测试保险条款.md"
  12. (tmp_path / source_name).write_text(
  13. "疾病医疗责任的等待期为30天。",
  14. encoding="utf-8",
  15. )
  16. repository = InMemoryKnowledgeRepository()
  17. original_service = KnowledgeService(
  18. repository,
  19. lambda: NOW,
  20. InMemoryKnowledgeIndex(),
  21. )
  22. created = original_service.create_document(
  23. title="测试保险条款",
  24. document_type="INSURANCE_TERMS",
  25. source_name=source_name,
  26. product_code="MED-TEST",
  27. content="疾病医疗责任的等待期为30天。",
  28. created_by="SYSTEM_SEED",
  29. )
  30. document_id = str(created["document_id"])
  31. original_service.index_document(document_id)
  32. original_service.test_search(document_id, "等待期")
  33. original_service.publish_document(document_id)
  34. fresh_index = InMemoryKnowledgeIndex()
  35. restored_service = KnowledgeService(repository, lambda: NOW, fresh_index)
  36. seed_documents(
  37. restored_service,
  38. repository,
  39. tmp_path,
  40. (
  41. {
  42. "file_name": source_name,
  43. "title": "测试保险条款",
  44. "document_type": "INSURANCE_TERMS",
  45. "product_code": "MED-TEST",
  46. },
  47. ),
  48. )
  49. result = restored_service.search("等待期")
  50. assert result["total"] == 1
  51. restored_document = repository.get_document(document_id)
  52. assert restored_document is not None
  53. assert restored_document.status == "PUBLISHED"