fix(): fixed bugs with cache invalidation, notifications and guardrails
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user