fix: skip non-UUID pattern signal IDs in evidence persistence
This commit is contained in:
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
import uuid as _uuid
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
from typing import Any
|
from typing import Any
|
||||||
@@ -760,6 +761,15 @@ INSERT INTO trend_evidence (
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _is_valid_uuid(val: str) -> bool:
|
||||||
|
"""Check if a string is a valid UUID (pattern signal IDs are not)."""
|
||||||
|
try:
|
||||||
|
_uuid.UUID(val)
|
||||||
|
return True
|
||||||
|
except (ValueError, AttributeError):
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def persist_trend_evidence(
|
async def persist_trend_evidence(
|
||||||
pool: asyncpg.Pool,
|
pool: asyncpg.Pool,
|
||||||
trend_window_id: str,
|
trend_window_id: str,
|
||||||
@@ -769,12 +779,17 @@ async def persist_trend_evidence(
|
|||||||
"""Insert evidence mapping rows for a trend window. Returns count inserted."""
|
"""Insert evidence mapping rows for a trend window. Returns count inserted."""
|
||||||
rows: list[tuple[str, str, str, float, float, float, float, float, float]] = []
|
rows: list[tuple[str, str, str, float, float, float, float, float, float]] = []
|
||||||
for ev in supporting:
|
for ev in supporting:
|
||||||
|
# Skip non-UUID document IDs (e.g. pattern signal synthetic IDs)
|
||||||
|
if not _is_valid_uuid(ev.document_id):
|
||||||
|
continue
|
||||||
rows.append((
|
rows.append((
|
||||||
trend_window_id, ev.document_id, "supporting",
|
trend_window_id, ev.document_id, "supporting",
|
||||||
ev.rank_score, ev.weight_component, ev.impact_component,
|
ev.rank_score, ev.weight_component, ev.impact_component,
|
||||||
ev.recency_component, ev.confidence_component, ev.sentiment_value,
|
ev.recency_component, ev.confidence_component, ev.sentiment_value,
|
||||||
))
|
))
|
||||||
for ev in opposing:
|
for ev in opposing:
|
||||||
|
if not _is_valid_uuid(ev.document_id):
|
||||||
|
continue
|
||||||
rows.append((
|
rows.append((
|
||||||
trend_window_id, ev.document_id, "opposing",
|
trend_window_id, ev.document_id, "opposing",
|
||||||
ev.rank_score, ev.weight_component, ev.impact_component,
|
ev.rank_score, ev.weight_component, ev.impact_component,
|
||||||
|
|||||||
Reference in New Issue
Block a user