fix(agent): persist no-write learning receipts
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m19s
CD Pipeline / build-and-deploy (push) Successful in 9m4s
CD Pipeline / post-deploy-checks (push) Successful in 2m0s

This commit is contained in:
ogt
2026-07-14 15:18:56 +08:00
parent 623e9aa578
commit e53bbc94e8
4 changed files with 49 additions and 8 deletions

View File

@@ -153,6 +153,16 @@ _ENUM_FALLBACKS = {
}
def _knowledge_enum_db_label(value):
"""Match the mixed-case labels in the deployed PostgreSQL enums."""
if isinstance(value, EntryStatus) and value is EntryStatus.PUBLISHED:
return value.value
if isinstance(value, EntryType | EntrySource | EntryStatus):
return value.name
return value
def _enum_member(value, enum_cls):
if value is None:
return _ENUM_FALLBACKS.get(enum_cls)
@@ -287,11 +297,11 @@ class KnowledgeDBRepository:
values = {
"title": data.title,
"content": data.content,
"entry_type": data.entry_type.value if hasattr(data.entry_type, "value") else data.entry_type,
"entry_type": _knowledge_enum_db_label(data.entry_type),
"category": data.category,
"tags": data.tags,
"source": data.source.value if hasattr(data.source, "value") else data.source,
"status": data.status.value if hasattr(data.status, "value") else data.status,
"source": _knowledge_enum_db_label(data.source),
"status": _knowledge_enum_db_label(data.status),
"related_incident_id": data.related_incident_id,
"related_playbook_id": data.related_playbook_id,
"related_approval_id": data.related_approval_id,
@@ -313,7 +323,7 @@ class KnowledgeDBRepository:
"title": data.title,
"content": data.content,
"tags": data.tags,
"status": data.status.value if hasattr(data.status, "value") else data.status,
"status": _knowledge_enum_db_label(data.status),
"related_approval_id": data.related_approval_id,
},
)
@@ -339,12 +349,12 @@ class KnowledgeDBRepository:
record = KnowledgeEntryRecord(
title=data.title,
content=data.content,
entry_type=data.entry_type,
entry_type=_knowledge_enum_db_label(data.entry_type),
category=data.category,
tags=data.tags,
source=data.source,
source=_knowledge_enum_db_label(data.source),
# 2026-04-04 ogt: Phase 25 P1 — 支援指定 statusANTI_PATTERN 直接 PUBLISHED
status=data.status,
status=_knowledge_enum_db_label(data.status),
related_incident_id=data.related_incident_id,
related_playbook_id=data.related_playbook_id,
related_approval_id=data.related_approval_id,