V10.542 拆分可用比價覆蓋率口徑
This commit is contained in:
@@ -705,7 +705,7 @@ def _cached_payload(cache_key: str, producer, ttl_seconds: int = COMPETITOR_INTE
|
||||
|
||||
def fetch_competitor_coverage(engine) -> dict:
|
||||
return _cached_payload(
|
||||
f"coverage:v7:floor={PCHOME_MATCH_SCORE_FLOOR}:manual_reviews=1:rescore=1:review_no_fresh=1",
|
||||
f"coverage:v8:floor={PCHOME_MATCH_SCORE_FLOOR}:manual_reviews=1:rescore=1:review_no_fresh=1:decision_ready=1",
|
||||
lambda: _fetch_competitor_coverage_uncached(engine),
|
||||
)
|
||||
|
||||
@@ -723,8 +723,10 @@ def _fetch_competitor_coverage_uncached(engine) -> dict:
|
||||
"fresh_matches": 0,
|
||||
"stale_matches": 0,
|
||||
"pending": 0,
|
||||
"decision_ready_matches": 0,
|
||||
"match_rate": 0,
|
||||
"fresh_match_rate": 0,
|
||||
"decision_ready_rate": 0,
|
||||
"attempt_status": {},
|
||||
"unit_comparable_count": 0,
|
||||
"rescore_accepted_count": 0,
|
||||
@@ -838,8 +840,10 @@ def _fetch_competitor_coverage_uncached(engine) -> dict:
|
||||
"fresh_matches": fresh,
|
||||
"stale_matches": stale,
|
||||
"pending": pending,
|
||||
"decision_ready_matches": fresh,
|
||||
"match_rate": round(valid / max(active, 1) * 100, 1),
|
||||
"fresh_match_rate": round(fresh / max(valid, 1) * 100, 1),
|
||||
"decision_ready_rate": round(fresh / max(active, 1) * 100, 1),
|
||||
"attempt_status": statuses,
|
||||
"unit_comparable_count": unit_count,
|
||||
"rescore_accepted_count": rescore_accepted_count,
|
||||
|
||||
@@ -607,6 +607,10 @@ def _fetch_competitor_summary() -> Dict[str, Any]:
|
||||
"premium_count": int((row[3] if row else 0) or 0),
|
||||
"match_rate": float(coverage.get("match_rate") or 0),
|
||||
"active_with_price": int(coverage.get("active_with_price") or 0),
|
||||
"decision_ready_matches": int(
|
||||
coverage.get("decision_ready_matches") or coverage.get("fresh_matches") or 0
|
||||
),
|
||||
"decision_ready_rate": float(coverage.get("decision_ready_rate") or 0),
|
||||
"unit_comparable_count": int(coverage.get("unit_comparable_count") or 0),
|
||||
"rescore_accepted_count": int(coverage.get("rescore_accepted_count") or 0),
|
||||
"review_queue_count": int(coverage.get("actionable_review_count") or 0),
|
||||
|
||||
@@ -80,6 +80,14 @@ def _coverage_metadata(coverage: dict, row_count: int) -> dict:
|
||||
"source": "competitor_intel_repository",
|
||||
"matched_count": int(coverage.get("valid_matches") or coverage.get("matched_count") or 0),
|
||||
"coverage_rate": _num(coverage.get("match_rate")),
|
||||
"identity_coverage_rate": _num(coverage.get("match_rate")),
|
||||
"decision_ready_count": int(
|
||||
coverage.get("decision_ready_matches")
|
||||
or coverage.get("fresh_matches")
|
||||
or coverage.get("fresh_match_count")
|
||||
or 0
|
||||
),
|
||||
"decision_ready_rate": _num(coverage.get("decision_ready_rate")),
|
||||
"fresh_match_count": int(coverage.get("fresh_matches") or coverage.get("fresh_match_count") or 0),
|
||||
"fresh_match_rate": _num(coverage.get("fresh_match_rate")),
|
||||
"stale_match_count": int(coverage.get("stale_matches") or coverage.get("stale_match_count") or 0),
|
||||
|
||||
Reference in New Issue
Block a user