fix: clarify pchome review candidate copy
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
This commit is contained in:
@@ -402,7 +402,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '')
|
|||||||
# ==========================================
|
# ==========================================
|
||||||
# 系統版本與路徑
|
# 系統版本與路徑
|
||||||
# ==========================================
|
# ==========================================
|
||||||
SYSTEM_VERSION = "V10.715"
|
SYSTEM_VERSION = "V10.716"
|
||||||
LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log')
|
LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log')
|
||||||
public_url = PUBLIC_URL # 用於模板顯示
|
public_url = PUBLIC_URL # 用於模板顯示
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> **最後更新**: 2026-06-26 (台北時間)
|
> **最後更新**: 2026-06-26 (台北時間)
|
||||||
> **狀態**: 🟢 四 AI Agent 自動化閉環已落地;LLM 路由紅線升級為 Ollama-first 三主機級聯;PChome 後台業績匯入韌性已補強;產品定位正名為「PChome 業績成長自動化作戰系統」;外部市場來源正規化層、自動同步、作戰清單與價格參考表優先讀取、CSV 備援預檢、前台操作入口、高可見頁面繁中化守門、比價/作戰 UI 工作台化、跨平台來源治理與商品身份 UI 契約已建立,GCP embedding 熔斷延後處理、110 proxy rescue 與 direct host health skip 已建立
|
> **狀態**: 🟢 四 AI Agent 自動化閉環已落地;LLM 路由紅線升級為 Ollama-first 三主機級聯;PChome 後台業績匯入韌性已補強;產品定位正名為「PChome 業績成長自動化作戰系統」;外部市場來源正規化層、自動同步、作戰清單與價格參考表優先讀取、CSV 備援預檢、前台操作入口、高可見頁面繁中化守門、比價/作戰 UI 工作台化、跨平台來源治理與商品身份 UI 契約已建立,GCP embedding 熔斷延後處理、110 proxy rescue 與 direct host health skip 已建立
|
||||||
> **適用版本**: V10.715
|
> **適用版本**: V10.716
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -800,3 +800,4 @@ POSTGRES_HOST=momo-db
|
|||||||
| 2026-06-26 | 正式容器不得繼承互動式 Google Drive OAuth | V10.713 起 `momo-app`、`momo-scheduler`、`momo-telegram-bot` 的 `GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH` 固定為 `false`,不再允許 `.env` 在主機重啟後把排程帶回瀏覽器 OAuth;人工授權只可用一次性腳本完成,正式匯入缺 token 時必須 fail-closed 並回可處理訊息。 |
|
| 2026-06-26 | 正式容器不得繼承互動式 Google Drive OAuth | V10.713 起 `momo-app`、`momo-scheduler`、`momo-telegram-bot` 的 `GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH` 固定為 `false`,不再允許 `.env` 在主機重啟後把排程帶回瀏覽器 OAuth;人工授權只可用一次性腳本完成,正式匯入缺 token 時必須 fail-closed 並回可處理訊息。 |
|
||||||
| 2026-06-26 | AI 銷售建議商品區塊必須商品身份優先 | V10.714 起 `/ai_recommend` 熱銷商品參考改為商品卡,後端 bestseller API 回傳平台、商品 ID、賣場連結與圖片欄位;前端必須顯示縮圖、平台、商品 ID、價格與開賣場操作,缺圖/缺連結需顯示待補狀態,並把商品 ID / URL 帶入銷售建議上下文。 |
|
| 2026-06-26 | AI 銷售建議商品區塊必須商品身份優先 | V10.714 起 `/ai_recommend` 熱銷商品參考改為商品卡,後端 bestseller API 回傳平台、商品 ID、賣場連結與圖片欄位;前端必須顯示縮圖、平台、商品 ID、價格與開賣場操作,缺圖/缺連結需顯示待補狀態,並把商品 ID / URL 帶入銷售建議上下文。 |
|
||||||
| 2026-06-26 | AI 銷售建議前端不得保留 raw content 路徑 | V10.715 起 `/ai_recommend` 只使用已整理的外部訊號摘要與可用線索;搜尋或商品洞察結果若未整理成結構,前端只顯示可理解的待整理狀態,不再把 raw content 當上下文或 fallback 分支保留。 |
|
| 2026-06-26 | AI 銷售建議前端不得保留 raw content 路徑 | V10.715 起 `/ai_recommend` 只使用已整理的外部訊號摘要與可用線索;搜尋或商品洞察結果若未整理成結構,前端只顯示可理解的待整理狀態,不再把 raw content 當上下文或 fallback 分支保留。 |
|
||||||
|
| 2026-06-26 | 首頁覆核候選必須標示為待確認商品 | V10.716 起首頁 PChome 覆核區不再使用「PChome 候選」作為可見主語,統一改為「PChome 待確認商品」與「開 PChome 待確認商品」,避免使用者把未確認同款誤認為正式比價結果。 |
|
||||||
|
|||||||
@@ -629,7 +629,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>分類</th>
|
<th>分類</th>
|
||||||
<th>商品 / MOMO</th>
|
<th>商品 / MOMO</th>
|
||||||
<th>PChome 候選</th>
|
<th>PChome 待確認商品</th>
|
||||||
<th>覆核判讀</th>
|
<th>覆核判讀</th>
|
||||||
<th>下一步</th>
|
<th>下一步</th>
|
||||||
<th class="text-end">紀錄</th>
|
<th class="text-end">紀錄</th>
|
||||||
@@ -786,7 +786,7 @@
|
|||||||
data-pchome-review-action
|
data-pchome-review-action
|
||||||
data-review-action="accept_identity"
|
data-review-action="accept_identity"
|
||||||
data-review-sku="{{ review.sku }}"
|
data-review-sku="{{ review.sku }}"
|
||||||
data-review-confirm="確認採用這筆 PChome 候選為正式同款配對?">
|
data-review-confirm="確認採用這筆 PChome 商品為正式同款配對?">
|
||||||
採用同款
|
採用同款
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -794,7 +794,7 @@
|
|||||||
data-pchome-review-action
|
data-pchome-review-action
|
||||||
data-review-action="reject_identity"
|
data-review-action="reject_identity"
|
||||||
data-review-sku="{{ review.sku }}"
|
data-review-sku="{{ review.sku }}"
|
||||||
data-review-confirm="確認否決這筆 PChome 候選?">
|
data-review-confirm="確認否決這筆 PChome 待確認商品?">
|
||||||
否決候選
|
否決候選
|
||||||
</button>
|
</button>
|
||||||
<button class="dashboard-review-action" type="button"
|
<button class="dashboard-review-action" type="button"
|
||||||
@@ -880,7 +880,7 @@
|
|||||||
<div class="dashboard-product-id momo-mono" title="{{ item.pchome_match_attempt.best_competitor_product_name }}">候選:{{ item.pchome_match_attempt.best_competitor_product_name }}</div>
|
<div class="dashboard-product-id momo-mono" title="{{ item.pchome_match_attempt.best_competitor_product_name }}">候選:{{ item.pchome_match_attempt.best_competitor_product_name }}</div>
|
||||||
{% if item.pchome_match_attempt.competitor_product_url %}
|
{% if item.pchome_match_attempt.competitor_product_url %}
|
||||||
<a class="dashboard-product-id dashboard-candidate-link momo-mono" href="{{ item.pchome_match_attempt.competitor_product_url }}" target="_blank" rel="noopener noreferrer">
|
<a class="dashboard-product-id dashboard-candidate-link momo-mono" href="{{ item.pchome_match_attempt.competitor_product_url }}" target="_blank" rel="noopener noreferrer">
|
||||||
PChome 候選 {{ item.pchome_match_attempt.best_competitor_product_id }}
|
PChome 待確認商品 {{ item.pchome_match_attempt.best_competitor_product_id }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if item.pchome_match_attempt.diagnostic_reasons %}
|
{% if item.pchome_match_attempt.diagnostic_reasons %}
|
||||||
@@ -975,7 +975,7 @@
|
|||||||
{% if competitor and competitor.product_url %}
|
{% if competitor and competitor.product_url %}
|
||||||
<a class="dashboard-platform-link is-pchome" href="{{ competitor.product_url }}" target="_blank" rel="noopener noreferrer">開 PChome 賣場</a>
|
<a class="dashboard-platform-link is-pchome" href="{{ competitor.product_url }}" target="_blank" rel="noopener noreferrer">開 PChome 賣場</a>
|
||||||
{% elif item.pchome_match_attempt and item.pchome_match_attempt.competitor_product_url %}
|
{% elif item.pchome_match_attempt and item.pchome_match_attempt.competitor_product_url %}
|
||||||
<a class="dashboard-platform-link is-pchome" href="{{ item.pchome_match_attempt.competitor_product_url }}" target="_blank" rel="noopener noreferrer">開 PChome 候選</a>
|
<a class="dashboard-platform-link is-pchome" href="{{ item.pchome_match_attempt.competitor_product_url }}" target="_blank" rel="noopener noreferrer">開 PChome 待確認商品</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if item.ai_pick.missing_evidence %}
|
{% if item.ai_pick.missing_evidence %}
|
||||||
@@ -1062,7 +1062,7 @@
|
|||||||
data-pchome-review-action
|
data-pchome-review-action
|
||||||
data-review-action="accept_identity"
|
data-review-action="accept_identity"
|
||||||
data-review-sku="{{ review.sku }}"
|
data-review-sku="{{ review.sku }}"
|
||||||
data-review-confirm="確認採用這筆 PChome 候選為正式同款配對?">
|
data-review-confirm="確認採用這筆 PChome 商品為正式同款配對?">
|
||||||
採用同款
|
採用同款
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -1070,7 +1070,7 @@
|
|||||||
data-pchome-review-action
|
data-pchome-review-action
|
||||||
data-review-action="reject_identity"
|
data-review-action="reject_identity"
|
||||||
data-review-sku="{{ review.sku }}"
|
data-review-sku="{{ review.sku }}"
|
||||||
data-review-confirm="確認否決這筆 PChome 候選?">
|
data-review-confirm="確認否決這筆 PChome 待確認商品?">
|
||||||
否決候選
|
否決候選
|
||||||
</button>
|
</button>
|
||||||
<button class="dashboard-review-action" type="button"
|
<button class="dashboard-review-action" type="button"
|
||||||
|
|||||||
@@ -496,7 +496,10 @@ def test_pchome_review_export_and_diagnostics_use_real_queue_data():
|
|||||||
assert "需檢查 matcher diagnostics" not in route_source
|
assert "需檢查 matcher diagnostics" not in route_source
|
||||||
assert "匯出覆核" in dashboard
|
assert "匯出覆核" in dashboard
|
||||||
assert "商品 / MOMO" in dashboard
|
assert "商品 / MOMO" in dashboard
|
||||||
assert "PChome 候選" in dashboard
|
assert "PChome 待確認商品" in dashboard
|
||||||
|
assert "開 PChome 待確認商品" in dashboard
|
||||||
|
assert "確認採用這筆 PChome 商品為正式同款配對?" in dashboard
|
||||||
|
assert "PChome 候選" not in dashboard
|
||||||
assert "覆核判讀" in dashboard
|
assert "覆核判讀" in dashboard
|
||||||
assert "dashboard-review-workbench-row" in dashboard
|
assert "dashboard-review-workbench-row" in dashboard
|
||||||
assert "dashboard-review-candidate-title" in dashboard
|
assert "dashboard-review-candidate-title" in dashboard
|
||||||
@@ -527,7 +530,8 @@ def test_pchome_review_export_and_diagnostics_use_real_queue_data():
|
|||||||
assert ".dashboard-table-wrap.is-review-wrap" in page_guard_css
|
assert ".dashboard-table-wrap.is-review-wrap" in page_guard_css
|
||||||
assert "width: max(100%, 1540px) !important" in page_guard_css
|
assert "width: max(100%, 1540px) !important" in page_guard_css
|
||||||
assert 'content: "商品/MOMO"' in page_guard_css
|
assert 'content: "商品/MOMO"' in page_guard_css
|
||||||
assert 'content: "PChome候選"' in page_guard_css
|
assert 'content: "PChome待確認"' in page_guard_css
|
||||||
|
assert 'content: "PChome候選"' not in page_guard_css
|
||||||
assert ".dashboard-review-reasons" in dashboard_css
|
assert ".dashboard-review-reasons" in dashboard_css
|
||||||
assert ".dashboard-review-envelope" in dashboard_css
|
assert ".dashboard-review-envelope" in dashboard_css
|
||||||
assert ".dashboard-review-actions" in dashboard_css
|
assert ".dashboard-review-actions" in dashboard_css
|
||||||
|
|||||||
@@ -587,7 +587,7 @@
|
|||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-ai-picks td:nth-child(9)::before { content: "更新"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-ai-picks td:nth-child(9)::before { content: "更新"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-ai-picks td:nth-child(10)::before { content: "上架"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-ai-picks td:nth-child(10)::before { content: "上架"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(2)::before { content: "商品/MOMO"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(2)::before { content: "商品/MOMO"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(3)::before { content: "PChome候選"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(3)::before { content: "PChome待確認"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(4)::before { content: "覆核判讀"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(4)::before { content: "覆核判讀"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(5)::before { content: "下一步"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(5)::before { content: "下一步"; }
|
||||||
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(6)::before { content: "紀錄"; }
|
.momo-app:not(.momo-observability-mode) .dashboard-table.is-review td:nth-child(6)::before { content: "紀錄"; }
|
||||||
|
|||||||
Reference in New Issue
Block a user