fix(events): bound provider prefix recent query
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 3m48s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped

This commit is contained in:
ogt
2026-07-09 23:15:41 +08:00
parent cad76bf835
commit 7e17f85fe8
2 changed files with 42 additions and 17 deletions

View File

@@ -7310,6 +7310,23 @@ async def get_run_detail(
# Channel Events
# =============================================================================
def _exclusive_text_prefix_upper_bound(prefix: str) -> str:
if not prefix:
return ""
last = ord(prefix[-1])
if last >= 0x10FFFF:
return ""
return f"{prefix[:-1]}{chr(last + 1)}"
def _provider_event_id_prefix_bounds(provider_prefix: str) -> tuple[str, str]:
prefix = provider_prefix.strip().lower()
if prefix and ":" not in prefix:
prefix = f"{prefix}:"
return prefix, _exclusive_text_prefix_upper_bound(prefix)
async def list_recent_channel_events(
*,
project_id: str | None,
@@ -7332,23 +7349,17 @@ async def list_recent_channel_events(
if channel_type is not None:
stmt = stmt.where(AwoooPConversationEvent.channel_type == channel_type)
if recent_provider_prefix is not None:
if ":" in recent_provider_prefix:
prefix_lower, prefix_upper = _provider_event_id_prefix_bounds(
recent_provider_prefix
)
if prefix_lower:
stmt = stmt.where(
AwoooPConversationEvent.provider_event_id.like(
f"{provider_prefix.strip()}%"
)
AwoooPConversationEvent.provider_event_id >= prefix_lower
)
else:
stmt = stmt.where(
text(
"LOWER(COALESCE("
"NULLIF(source_envelope->>'provider', ''), "
"NULLIF(split_part(provider_event_id, ':', 1), ''), "
"channel_type"
")) = :recent_provider_prefix"
if prefix_upper:
stmt = stmt.where(
AwoooPConversationEvent.provider_event_id < prefix_upper
)
)
stmt = stmt.params(recent_provider_prefix=recent_provider_prefix)
stmt = stmt.order_by(
AwoooPConversationEvent.received_at.desc(),
AwoooPConversationEvent.event_id.desc(),

View File

@@ -1,5 +1,7 @@
from pathlib import Path
from src.services.platform_operator_service import _provider_event_id_prefix_bounds
ROOT = Path(__file__).resolve().parents[1]
MIGRATION = "awooop_conversation_event_hot_path_indexes_2026-07-01.sql"
ROLLBACK = "awooop_conversation_event_hot_path_indexes_2026-07-01_down.sql"
@@ -57,9 +59,9 @@ def test_provider_recent_indexes_match_live_hot_queries() -> None:
assert "COALESCE(NULLIF(source_envelope->>'provider', '')" in coverage_source
assert "ORDER BY received_at DESC" in coverage_source
assert "LOWER(COALESCE(NULLIF(source_envelope->>'provider', '')" in operator_source
assert "recent_provider_prefix" in operator_source
assert "NULLIF(split_part(provider_event_id, ':', 1), '')" in operator_source
assert "_provider_event_id_prefix_bounds" in operator_source
assert "provider_event_id >= prefix_lower" in operator_source
assert "provider_event_id < prefix_upper" in operator_source
assert "idx_awooop_conv_event_project_provider_recent" in sql
assert "idx_awooop_conv_event_project_provider_lower_recent" in sql
@@ -69,6 +71,18 @@ def test_provider_recent_indexes_match_live_hot_queries() -> None:
assert "event_id DESC" in sql
def test_recent_provider_prefix_uses_btree_range_bounds() -> None:
assert _provider_event_id_prefix_bounds("alertmanager") == (
"alertmanager:",
"alertmanager;",
)
assert _provider_event_id_prefix_bounds("alertmanager:received") == (
"alertmanager:received",
"alertmanager:receivee",
)
assert _provider_event_id_prefix_bounds(" SignOz ") == ("signoz:", "signoz;")
def test_truth_chain_source_lookup_indexes_match_or_terms() -> None:
sql = _migration_sql()
truth_chain_source = _read("src/services/awooop_truth_chain_service.py")