| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """后验 rov_diff / vov_diff 的共享语义与格式化。"""
- from __future__ import annotations
- from decimal import Decimal
- from typing import Any
- # real_rov_7d / real_vov_7d 字段存的是相对全局基线的 diff,不是绝对 ROV/VOV。
- POSTERIOR_EFFECT_ACCEPTABLE_FLOOR = -0.2
- def classify_posterior_effect(avg: Decimal | float | int | None) -> str | None:
- """将 rov_diff / vov_diff 映射为效果档位。"""
- if avg is None:
- return None
- value = float(avg)
- if value > 0:
- return "效果非常好"
- if value >= POSTERIOR_EFFECT_ACCEPTABLE_FLOOR:
- return "可接受"
- return "效果不佳"
- def _format_score(avg: Decimal | float | int | None) -> str:
- if avg is None:
- return "—"
- value = float(avg)
- if value >= 100:
- return f"{value:.0f}"
- if value >= 1:
- return f"{value:.2f}"
- return f"{value:.4f}"
- def format_posterior_value(avg: Decimal | float | int | None) -> str:
- """格式化单条后验 diff 值(无样本数),附带效果档位说明。"""
- if avg is None:
- return "—"
- effect = classify_posterior_effect(avg)
- base = _format_score(avg)
- return f"{base} [{effect}]" if effect else base
- def format_posterior_dim_with_count(
- avg: Decimal | float | int | None,
- count: int | None,
- ) -> str:
- """格式化后验 diff 指标,附带效果档位说明。"""
- sample_count = int(count or 0)
- if sample_count <= 0:
- return "—"
- effect = classify_posterior_effect(avg)
- base = f"{_format_score(avg)}(n={sample_count})"
- return f"{base} [{effect}]" if effect else base
- def format_posterior_pair(
- rov_avg: Any,
- rov_count: int | None,
- vov_avg: Any,
- vov_count: int | None,
- ) -> str:
- """格式化 ROV/VOV diff 对。"""
- rov_text = format_posterior_dim_with_count(rov_avg, rov_count)
- vov_text = format_posterior_dim_with_count(vov_avg, vov_count)
- if rov_text == "—" and vov_text == "—":
- return "后验 diff 暂无样本"
- return f"rov_diff={rov_text} vov_diff={vov_text}"
|