fix(km): tolerate legacy knowledge rows
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m14s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
ogt
2026-07-09 17:43:29 +08:00
parent a4dd24b6e0
commit f50acd45db
2 changed files with 93 additions and 30 deletions

View File

@@ -65,6 +65,33 @@ def test_knowledge_read_model_accepts_lowercase_enum_values() -> None:
assert entry.status == EntryStatus.PUBLISHED
def test_knowledge_read_model_falls_back_for_unknown_legacy_enum_values() -> None:
repo = KnowledgeDBRepository(db=object()) # type: ignore[arg-type]
entry = repo._to_model(
_record(
entry_type="analysis_note",
source="system_import",
status="needs_ai_review",
)
)
assert entry.entry_type == EntryType.BEST_PRACTICE
assert entry.source == EntrySource.AI_EXTRACTED
assert entry.status == EntryStatus.REVIEW
def test_knowledge_read_model_normalizes_legacy_tag_shapes_and_null_counts() -> None:
repo = KnowledgeDBRepository(db=object()) # type: ignore[arg-type]
json_tag_entry = repo._to_model(_record(tags='["telegram", " ai_loop "]', view_count=None))
scalar_tag_entry = repo._to_model(_record(tags="telegram"))
assert json_tag_entry.tags == ["telegram", "ai_loop"]
assert json_tag_entry.view_count == 0
assert scalar_tag_entry.tags == ["telegram"]
def test_knowledge_read_model_defaults_null_or_blank_category() -> None:
repo = KnowledgeDBRepository(db=object()) # type: ignore[arg-type]