fix: hard disable drive interactive auth in containers
Some checks failed
CD Pipeline / deploy (push) Has been cancelled

This commit is contained in:
ogt
2026-06-26 18:29:02 +08:00
parent c6c18f1c48
commit 1dfeee0506
4 changed files with 16 additions and 5 deletions

View File

@@ -402,7 +402,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '')
# ========================================== # ==========================================
# 系統版本與路徑 # 系統版本與路徑
# ========================================== # ==========================================
SYSTEM_VERSION = "V10.712" SYSTEM_VERSION = "V10.713"
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 # 用於模板顯示

View File

@@ -82,7 +82,7 @@ services:
- GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json - GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json
- GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json - GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json
- GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle - GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle
- GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=${GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH:-false} - GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=false
- METABASE_URL=/metabase - METABASE_URL=/metabase
- GRIST_URL=/grist - GRIST_URL=/grist
# 關閉登入驗證(開發/測試用,生產環境預設啟用登入) # 關閉登入驗證(開發/測試用,生產環境預設啟用登入)
@@ -228,7 +228,7 @@ services:
- GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json - GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json
- GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json - GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json
- GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle - GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle
- GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=${GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH:-false} - GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=false
# 資料庫設定: Docker 環境使用 PostgreSQL # 資料庫設定: Docker 環境使用 PostgreSQL
# H7 (2026-04-24): POSTGRES_* 改由 env_file: .env 唯一來源,移除 compose 層插值避免空值覆蓋 # H7 (2026-04-24): POSTGRES_* 改由 env_file: .env 唯一來源,移除 compose 層插值避免空值覆蓋
- USE_POSTGRESQL=true - USE_POSTGRESQL=true
@@ -296,7 +296,7 @@ services:
- GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json - GOOGLE_DRIVE_CREDENTIALS_FILE=/app/config/google_credentials.json
- GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json - GOOGLE_DRIVE_TOKEN_FILE=/app/config/google_token.json
- GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle - GOOGLE_DRIVE_LEGACY_PICKLE_FILE=/app/config/google_token.pickle
- GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=${GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH:-false} - GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=false
# H7 (2026-04-24): POSTGRES_* 改由 env_file: .env 唯一來源,移除 compose 層插值避免空值覆蓋 # H7 (2026-04-24): POSTGRES_* 改由 env_file: .env 唯一來源,移除 compose 層插值避免空值覆蓋
- USE_POSTGRESQL=true - USE_POSTGRESQL=true
- POSTGRES_PORT=5432 - POSTGRES_PORT=5432

View File

@@ -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.712 > **適用版本**: V10.713
--- ---
@@ -797,3 +797,4 @@ POSTGRES_HOST=momo-db
| 2026-06-26 | 低頻頁也不得藏工程 scaffold 或 raw fallback | V10.710 起市場情報停用頁移除舊 preview scaffold 註解只保留營運可讀狀態與下一步PChome 爬蟲匯出操作改為下載商品清單AI 建議頁若外部訊號未整理成結構,不再直接顯示 raw content而是提示重新整理或補商品線索。 | | 2026-06-26 | 低頻頁也不得藏工程 scaffold 或 raw fallback | V10.710 起市場情報停用頁移除舊 preview scaffold 註解只保留營運可讀狀態與下一步PChome 爬蟲匯出操作改為下載商品清單AI 建議頁若外部訊號未整理成結構,不再直接顯示 raw content而是提示重新整理或補商品線索。 |
| 2026-06-26 | 前台不得用爬蟲當使用者主語 | V10.711 起 PChome、設定、舊入口、market intel 與任務確認文字統一使用「商品監控 / 資料擷取 / 監控來源」不再把「爬蟲」當頁首、導覽、CTA 或提示主語;內部 route/key 可保留以降低部署風險。 | | 2026-06-26 | 前台不得用爬蟲當使用者主語 | V10.711 起 PChome、設定、舊入口、market intel 與任務確認文字統一使用「商品監控 / 資料擷取 / 監控來源」不再把「爬蟲」當頁首、導覽、CTA 或提示主語;內部 route/key 可保留以降低部署風險。 |
| 2026-06-26 | 匯入與設定頁不得回吐 raw 後端錯誤 | V10.712 起自動匯入與系統設定頁的未知錯誤 fallback 只顯示使用者可執行的下一步Google Drive、格式、同步與資料處理異常可分類成營運文案但不得把 SQL、snapshot、資料表欄位、driver error 或原始 exception 直接顯示在前台。 | | 2026-06-26 | 匯入與設定頁不得回吐 raw 後端錯誤 | V10.712 起自動匯入與系統設定頁的未知錯誤 fallback 只顯示使用者可執行的下一步Google Drive、格式、同步與資料處理異常可分類成營運文案但不得把 SQL、snapshot、資料表欄位、driver error 或原始 exception 直接顯示在前台。 |
| 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 並回可處理訊息。 |

View File

@@ -51,6 +51,16 @@ def test_core_runtime_services_pin_gemini_fallback_off_by_default():
assert "- GEMINI_FALLBACK_ENABLED=${GEMINI_FALLBACK_ENABLED:-false}" in block assert "- GEMINI_FALLBACK_ENABLED=${GEMINI_FALLBACK_ENABLED:-false}" in block
def test_core_runtime_services_hard_disable_google_drive_interactive_auth():
compose = DOCKER_COMPOSE.read_text(encoding="utf-8")
core_services = ("momo-app", "scheduler", "telegram-bot")
assert "GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=${" not in compose
for service_name in core_services:
block = _service_block(compose, service_name)
assert "- GOOGLE_DRIVE_ALLOW_INTERACTIVE_AUTH=false" in block
def test_optional_compose_services_stay_behind_profiles(): def test_optional_compose_services_stay_behind_profiles():
compose = DOCKER_COMPOSE.read_text(encoding="utf-8") compose = DOCKER_COMPOSE.read_text(encoding="utf-8")
expected_profiles = { expected_profiles = {