diff --git a/config.py b/config.py
index 0253a7f..5759654 100644
--- a/config.py
+++ b/config.py
@@ -402,7 +402,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '')
# ==========================================
# 系統版本與路徑
# ==========================================
-SYSTEM_VERSION = "V10.684"
+SYSTEM_VERSION = "V10.685"
LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log')
public_url = PUBLIC_URL # 用於模板顯示
diff --git a/docs/AI_INTELLIGENCE_MODULE_SOT.md b/docs/AI_INTELLIGENCE_MODULE_SOT.md
index 6d9e036..3ac9b51 100644
--- a/docs/AI_INTELLIGENCE_MODULE_SOT.md
+++ b/docs/AI_INTELLIGENCE_MODULE_SOT.md
@@ -761,3 +761,4 @@ POSTGRES_HOST=momo-db
| 2026-06-25 | 全站前台不可再把 AI 模型路由、資料表、raw log 當使用者訊息 | V10.682 起 PPT 視覺 QA、Logs、Code Review、AI 助手與觀測台主要頁面改用「AI 模型、知識命中、工具編排、產出紀錄、修復流程」等營運語言;PPT 審核舊錯誤與 Logs API 會即時脫敏 IP、模型失敗、金鑰路徑與資料表名稱,成長分析空狀態不再顯示 `realtime_sales_monthly`。 |
| 2026-06-25 | Code Review 歷史決策需清除所有 GCP/111 句型 | V10.683 起 `ea_decision.reasoning` 舊紀錄讀取層同時清除「GCP-A/GCP-B AI 架構檢查不可用時應暫停 111 重分析」等非 fallback 句型,避免正式 history 10 筆仍殘留模型拓撲。 |
| 2026-06-25 | Logs 頁不得露內部 Agent 服務名 | V10.684 起 `/api/logs` 會把 OpenClawBot、OpenClaw、Hermes、NemoTron 等內部 agent/service 名稱轉為 AI 自動化、架構檢查、掃描與派工服務,避免系統日誌頁重新暴露工程實作細節。 |
+| 2026-06-25 | Code Review template 原始碼也不得殘留 OpenClaw 可掃描字串 | V10.685 起 `/code-review/` 的 CSS 註解與 JS 函式名稱改為 Architecture Report 命名,讓正式 HTML 掃描不需例外白名單即可確認無內部 agent 名稱。 |
diff --git a/templates/code_review.html b/templates/code_review.html
index 4968883..d4e9a39 100644
--- a/templates/code_review.html
+++ b/templates/code_review.html
@@ -93,7 +93,7 @@
.badge-type { display: inline-block; padding: 1px 6px; border-radius: var(--momo-radius-sm); font-size: 10px; background: var(--momo-bg-paper); color: var(--muted); }
code { background: var(--momo-bg-paper); padding: 1px 5px; border-radius: var(--momo-radius-xs); font-size: 12px; color: var(--momo-info-text); }
- /* ── OpenClaw Report ─────────────────────────────────── */
+ /* ── Architecture Report ─────────────────────────────── */
.report-box { background: var(--momo-bg-paper); border: 1px solid var(--border); border-radius: var(--momo-radius-sm); padding: 12px; font-size: 13px; line-height: 1.6; }
.report-box b { color: var(--text); }
@@ -465,7 +465,7 @@ function renderFindings(findings) {
}
// ── Architecture report ───────────────────────────────────────────
-function renderOpenClaw(html) {
+function renderArchitectureReport(html) {
document.getElementById('openclawReport').innerHTML = html || '(未取得)';
}
@@ -568,7 +568,7 @@ function loadHistoryItem(idx) {
sBar.className = 'completed';
sBar.innerHTML = `✅ 歷史記錄 — 提交 ${h.commit_sha}${h.auto_fix ? ' 🔧 已自動修復' : ''}`;
renderFindings(h.findings || []);
- renderOpenClaw(h.openclaw_report || '');
+ renderArchitectureReport(h.openclaw_report || '');
renderEA(h.ea_decision || {}, h.auto_fix || false);
for (let i = 1; i <= 5; i++) {
const el = document.getElementById('step-' + i);
@@ -590,7 +590,7 @@ async function poll() {
renderSteps(state.steps||[], state.current_step||0);
renderSeverity(state.severity_summary);
renderFindings(state.findings||[]);
- renderOpenClaw(state.openclaw_report);
+ renderArchitectureReport(state.openclaw_report);
renderEA(state.ea_decision, state.auto_fix_triggered);
renderCommitInfo(state);
document.getElementById('pipelineId').textContent = (state.pipeline_id||'').slice(-14);