Promote Mustela lotion identity anchor

This commit is contained in:
OoO
2026-05-24 17:46:30 +08:00
parent c5db3eb0da
commit 48c5db3b85
5 changed files with 26 additions and 3 deletions

View File

@@ -325,7 +325,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '')
# ==========================================
# 系統版本與路徑
# ==========================================
SYSTEM_VERSION = "V10.439"
SYSTEM_VERSION = "V10.440"
LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log')
public_url = PUBLIC_URL # 用於模板顯示

View File

@@ -2,7 +2,7 @@
> **最後更新**: 2026-05-24 (台北時間)
> **狀態**: 🟢 四 AI Agent 自動化閉環已落地LLM 路由紅線升級為 Ollama-first 三主機級聯Gemini 備援預設關閉
> **適用版本**: V10.439
> **適用版本**: V10.440
---

View File

@@ -13,6 +13,7 @@
## 📅 詳細更新日誌 (考古存檔)
### 2026-05-24PChome 近門檻身份回收第二輪
- **V10.440 Mustela 爽身潤膚乳同款 anchor**: marketplace matcher 新增 `慕之幼爽身潤膚乳` identity anchor並讓標題中插入「加量版」時仍可抽出同一身份詞正式樣本 `【Mustela 慕之恬廊】慕之幼 加量版爽身潤膚乳 500mlX2入` vs `【慕之恬廊】慕之幼爽身潤膚乳(500毫升X2入)` 由 0.741 提升到 0.801,維持 `hard_veto=false`、人工 review 型態,不放寬全域門檻、不寫正式 `competitor_prices`
- **V10.439 外部 BI / 資料協作入口收斂**: `/metabase``/grist` 保持在 momo-pro 內部診斷 bridge不再出現空白頁或錯連其他專案`.env.example` 與 bi profile 的 Grist 預設 URL 改為 `https://mo.wooo.work/grist` / `GRIST_APP_HOME_URL`,測試同步守住 `grist.wooo.work``awoooi` 不再回到 app/template/env/compose 導覽設定。外部工具頁 H1 移除 viewport font scaling改用新版 token 與手機 media query。
- **V10.438 PPT QA 失敗重跑精準化**: `/observability/ppt_audit_history` 的 QA 失敗與 issue triage 卡片會從 PPT 檔名前綴推回原始 `report_type`,不再把所有視覺 QA 失敗硬編成 daily 重跑;單筆「重跑」會以 `force=true` 呼叫補齊 API並在產生前只失效同一 `report_type + parameters` 的 active `ppt_reports` cache避免重新產出仍命中舊簡報。頁面也把 audit lane 的預覽按鈕補上,讓失敗檔案可直接站內回放 PDF/PPTX 預覽。
- **V10.437 業績圖表載入韌性與 QA 升級**: `analysis-chart-theme.js` 的 Chart.js loader 加入 4.5 秒 timeout 與 jsDelivr → unpkg → cdnjs 三來源 fallback若外部 CDN 卡住或失敗,`/daily_sales``/growth_analysis` 會切到既有 HTML snapshot / fallback 圖表,不再留下空白圖表框。`check_sales_charts_runtime.js` 也從「canvas 有墨點」升級為檢查非零 dataset、可見元素、彩色資料筆跡與 canvas ink避免只有座標軸的假通過。

View File

@@ -336,6 +336,7 @@ SEARCH_IDENTITY_ANCHORS = (
"經典旋轉眉筆",
"3d造型眉彩餅補充芯",
"止汗爽身乳液",
"慕之幼爽身潤膚乳",
"精油芬香護手霜",
"持久植物香氛精油",
"口袋雙色修容打亮盤",
@@ -2611,6 +2612,8 @@ def _extract_anchor_phrases(token: str) -> list[str]:
phrases.append("蜂王玫瑰瑰泌霜")
if "瞬效" in cleaned and "b5" in cleaned and "玻尿酸" in cleaned and "精華" in cleaned:
phrases.append("瞬效b5玻尿酸精華")
if "慕之幼" in cleaned and "爽身潤膚乳" in cleaned:
phrases.append("慕之幼爽身潤膚乳")
for anchor in SEARCH_IDENTITY_ANCHORS:
anchor_phrase = _clean_search_phrase(anchor)
if not anchor_phrase or anchor_phrase not in cleaned:

View File

@@ -1759,16 +1759,35 @@ def test_marketplace_matcher_promotes_safe_exact_spec_near_threshold():
"【Mustela 慕之恬廊】慕之幼 爽身潤膚乳500mlX2",
"Mustela慕之恬廊 慕之幼爽身潤膚乳500mlX2",
)
mustela_lotion_2pack_production_title = score_marketplace_match(
"【Mustela 慕之恬廊】慕之幼 加量版爽身潤膚乳 500mlX2入(寶寶 嬰兒乳液 公司貨 台灣獨家總代理)",
"【慕之恬廊】慕之幼爽身潤膚乳(500毫升X2入)",
momo_price=1390,
competitor_price=1210,
)
herbacin_hand_cream = score_marketplace_match(
"【Herbacin 德國小甘菊】小甘菊1號護手霜20ml",
"Herbacin 小甘菊經典護手霜20ml",
)
for diagnostics in (opi, mustela, romand, muji_hand_cream, mustela_lotion_2pack, herbacin_hand_cream):
for diagnostics in (
opi,
mustela,
romand,
muji_hand_cream,
mustela_lotion_2pack,
mustela_lotion_2pack_production_title,
herbacin_hand_cream,
):
assert diagnostics.score >= 0.76
assert diagnostics.hard_veto is False
assert "strong_exact_spec_match" in diagnostics.reasons
assert any(
reason.startswith("shared_identity_anchor")
for reason in mustela_lotion_2pack_production_title.reasons
)
assert muji_brandless_hand_cream.score >= 0.76
assert muji_brandless_hand_cream.hard_veto is False
assert "focused_exact_identity_muji_aroma_hand_cream_brandless" in muji_brandless_hand_cream.reasons