Share review envelopes with OpenClaw and PPT

This commit is contained in:
OoO
2026-05-24 23:25:51 +08:00
parent 05d6eadf1b
commit c0a06e1798
11 changed files with 241 additions and 36 deletions

View File

@@ -100,7 +100,8 @@ def test_competitor_review_queue_is_canonical_unit_price_handoff():
growth_template = (ROOT / "templates" / "growth_analysis.html").read_text(encoding="utf-8")
assert "def fetch_competitor_review_queue" in source
assert "\"review_queue\": fetch_competitor_review_queue" in source
assert "review_queue = fetch_competitor_review_queue" in source
assert "\"review_queue\": review_queue" in source
assert "\"unit_comparable_count\"" in source
assert "\"rescore_accepted_count\"" in source
assert "manual_review_summary" in source
@@ -219,6 +220,54 @@ def test_rescore_accepted_review_item_has_actionable_decision_envelope():
assert any(evidence["metric"] == "candidate_gap_pct" for evidence in envelope["evidence"])
def test_review_decision_brief_is_shared_by_openclaw_and_ppt():
from services.competitor_intel_repository import (
_format_competitor_review_item,
summarize_review_decision_envelopes,
)
item = _format_competitor_review_item({
"sku": "10922465",
"name": "【Herbacin 德國小甘菊】小甘菊1號護手霜20ml",
"momo_price": 99,
"attempt_status": "rescore_accepted_current",
"candidate_count": 1,
"best_competitor_product_id": "DDAO4C-A79050612",
"best_competitor_product_name": "小甘菊經典護手霜20ml",
"best_competitor_price": 89,
"best_match_score": 0.872,
"match_diagnostic_json": {
"match_type": "exact",
"price_basis": "total_price",
"alert_tier": "identity_review",
},
})
brief = summarize_review_decision_envelopes([item], limit=5)
assert brief["hitl_count"] == 1
assert brief["auto_execute_blocked_count"] == 1
assert brief["severity_counts"]
assert brief["data_quality_counts"] == {"complete": 1}
assert "人工覆核後採用同款" in brief["text"]
assert "HITL" in brief["text"]
assert "DDAO4C-A79050612" in brief["text"]
repo_source = (ROOT / "services" / "competitor_intel_repository.py").read_text(encoding="utf-8")
openclaw_source = (ROOT / "services" / "openclaw_strategist_service.py").read_text(encoding="utf-8")
ppt_source = (ROOT / "services" / "ppt_generator.py").read_text(encoding="utf-8")
bot_source = (ROOT / "routes" / "openclaw_bot_routes.py").read_text(encoding="utf-8")
assert "\"review_decision_brief\": summarize_review_decision_envelopes" in repo_source
assert "summarize_review_decision_envelopes" in openclaw_source
assert "review_decision_text" in openclaw_source
assert "PChome 覆核決策信封HITL不可自動寫正式價差" in openclaw_source
assert "SUM(CASE WHEN attempt_status IN ('unit_comparable'" not in openclaw_source
assert "review_decision_brief" in bot_source
assert "覆核決策信封HITL不可自動寫正式價差" in bot_source
assert "覆核決策信封HITL" in ppt_source
def test_competitor_ppt_prompt_uses_neutral_ewooc_viewpoint():
source = (ROOT / "routes" / "openclaw_bot_routes.py").read_text(encoding="utf-8")