fix(km): bind published enum compatibly
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 2s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m14s
CD Pipeline / build-and-deploy (push) Failing after 8m1s
CD Pipeline / post-deploy-checks (push) Has been skipped
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 2s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m14s
CD Pipeline / build-and-deploy (push) Failing after 8m1s
CD Pipeline / post-deploy-checks (push) Has been skipped
This commit is contained in:
@@ -163,6 +163,12 @@ def _knowledge_enum_db_label(value):
|
||||
return value
|
||||
|
||||
|
||||
def _knowledge_enum_db_value(value):
|
||||
if isinstance(value, EntryStatus) and value is EntryStatus.PUBLISHED:
|
||||
return sa_text("'published'::entrystatus")
|
||||
return _knowledge_enum_db_label(value)
|
||||
|
||||
|
||||
def _enum_member(value, enum_cls):
|
||||
if value is None:
|
||||
return _ENUM_FALLBACKS.get(enum_cls)
|
||||
@@ -301,7 +307,7 @@ class KnowledgeDBRepository:
|
||||
"category": data.category,
|
||||
"tags": data.tags,
|
||||
"source": _knowledge_enum_db_label(data.source),
|
||||
"status": _knowledge_enum_db_label(data.status),
|
||||
"status": _knowledge_enum_db_value(data.status),
|
||||
"related_incident_id": data.related_incident_id,
|
||||
"related_playbook_id": data.related_playbook_id,
|
||||
"related_approval_id": data.related_approval_id,
|
||||
@@ -323,7 +329,7 @@ class KnowledgeDBRepository:
|
||||
"title": data.title,
|
||||
"content": data.content,
|
||||
"tags": data.tags,
|
||||
"status": _knowledge_enum_db_label(data.status),
|
||||
"status": _knowledge_enum_db_value(data.status),
|
||||
"related_approval_id": data.related_approval_id,
|
||||
},
|
||||
)
|
||||
@@ -354,7 +360,7 @@ class KnowledgeDBRepository:
|
||||
tags=data.tags,
|
||||
source=_knowledge_enum_db_label(data.source),
|
||||
# 2026-04-04 ogt: Phase 25 P1 — 支援指定 status(ANTI_PATTERN 直接 PUBLISHED)
|
||||
status=_knowledge_enum_db_label(data.status),
|
||||
status=_knowledge_enum_db_value(data.status),
|
||||
related_incident_id=data.related_incident_id,
|
||||
related_playbook_id=data.related_playbook_id,
|
||||
related_approval_id=data.related_approval_id,
|
||||
@@ -366,6 +372,7 @@ class KnowledgeDBRepository:
|
||||
)
|
||||
self.db.add(record)
|
||||
await self.db.flush()
|
||||
await self.db.refresh(record)
|
||||
logger.info("knowledge_entry_created", entry_id=record.id, title=record.title)
|
||||
return self._to_model(record)
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ from src.repositories.knowledge_repository import (
|
||||
KnowledgeDBRepository,
|
||||
_enum_text,
|
||||
_knowledge_enum_db_label,
|
||||
_knowledge_enum_db_value,
|
||||
)
|
||||
|
||||
|
||||
@@ -273,3 +274,6 @@ def test_knowledge_enum_db_labels_match_deployed_postgresql_contract() -> None:
|
||||
assert _knowledge_enum_db_label(EntrySource.HUMAN) == "HUMAN"
|
||||
assert _knowledge_enum_db_label(EntryStatus.DRAFT) == "DRAFT"
|
||||
assert _knowledge_enum_db_label(EntryStatus.PUBLISHED) == "published"
|
||||
assert str(_knowledge_enum_db_value(EntryStatus.PUBLISHED)) == (
|
||||
"'published'::entrystatus"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user