fix(): fixed bugs with cache invalidation, notifications and guardrails

This commit is contained in:
ITQ
2026-02-24 13:16:29 +03:00
parent b27254e2fb
commit 7bf3ccee5c
14 changed files with 290 additions and 82 deletions
+15 -10
View File
@@ -117,6 +117,8 @@ def calculate_metric_value(
variant_id: UUID,
start_date: datetime | None = None,
end_date: datetime | None = None,
event_start_date: datetime | None = None,
event_end_date: datetime | None = None,
) -> Decimal | None:
rule = metric.calculation_rule
decision_ids = _exposure_decision_ids(
@@ -129,20 +131,23 @@ def calculate_metric_value(
if not decision_ids:
return None
ev_start = event_start_date or start_date
ev_end = event_end_date or end_date
metric_type = metric.metric_type
if metric_type == MetricType.RATIO:
numerator = _count_events(
decision_ids,
rule["numerator_event"],
start_date,
end_date,
ev_start,
ev_end,
)
denominator = _count_events(
decision_ids,
rule["denominator_event"],
start_date,
end_date,
ev_start,
ev_end,
)
if denominator == 0:
return None
@@ -152,8 +157,8 @@ def calculate_metric_value(
count = _count_events(
decision_ids,
rule["event"],
start_date,
end_date,
ev_start,
ev_end,
)
return Decimal(str(count))
@@ -162,8 +167,8 @@ def calculate_metric_value(
decision_ids,
rule["event"],
rule["property"],
start_date,
end_date,
ev_start,
ev_end,
)
if metric_type == MetricType.PERCENTILE:
@@ -172,8 +177,8 @@ def calculate_metric_value(
rule["event"],
rule["property"],
rule.get("percentile", 95),
start_date,
end_date,
ev_start,
ev_end,
)
return None