Production Readiness

HOMI 系統健康中心

System Health Center + Production Smoke Suite

服務狀態、數據管道、外部平台連接、已知阻塞與最近執行紀錄的只讀總覽。這頁用來快速判斷 HOMI BrandOps 是否可安全繼續運行。

安全模式:DRY_RUN=true 外部寫入:已封鎖 Meta Ads:blocked Google Ads:read_only
目前項目HOMI
Environmentproduction
Last updated2026年7月21日 上午9:28
Report generated2026-07-21T01:28:42.737356+00:00

系統總覽

目前最重要的安全狀態與最新數據日期。

Backend
ok
FastAPI read-only health-report endpoint
趨勢需累積更多歷史資料
Database
ok
Postgres schema / migrations / report data
趨勢需累積更多歷史資料
Redis
ok
Queue/cache availability if reachable
趨勢需累積更多歷史資料
外部寫入
已封鎖
Approved external write remains disabled
趨勢需累積更多歷史資料

服務狀態

核心服務 readiness。Scheduler/worker 目前以可見資料推導,不假裝有 heartbeat。

Backend API

ok

API is serving /system/health-report.

Postgres

ok

Database query succeeded.

Redis

ok

Redis ping status from backend container.

Scheduler

configured

Scheduler service is configured; no heartbeat table exists yet.

Worker Dispatcher

warning

Worker dispatcher latest job is visible in the local queue.

OPC Dashboard

ok

This page rendered from the dashboard service.

數據管道

Daily Ads Report、Ads Intelligence、審批與執行佇列的最新狀態。

最新資料

  • Daily Ads Report2026-05-28
  • Ads Intelligence2026-05-23
  • 最新 approved write jobfailed

最近 24 小時紀錄

  • audit_logs0
  • error_logs0
  • scheduled digest未啟用

安全邊界

  • DRY_RUNtrue
  • Meta/Google Ads只讀監控
  • Approved external writenot enabled

外部平台連接

目前 live、read-only、scaffold/not live 的 integration 狀態。

Discord

live

command/input layer

GitHub

live

issues, PRs, rules

Meta Ads

blocked

Meta Marketing API access blocked; read-only credentials exist but API access needs repair.

Google Ads

read_only

Read-only campaign data is available.

Daily Ads Report

live

local reporting

Ads Intelligence

live_structural

read_only analytics

client_report_center

live

client-facing read-only reports

data_quality_layer

live

plain-language source quality labels

llm_analysis_runtime

disabled

read_only advisory analysis

per_ad_ab_test_view

live

read_only ad-level comparison

Approval Gate

live

local approval

Worker Dispatcher

live

local executor queue

WordPress

scaffold/not_live

not enabled

Facebook/IG

scaffold/not_live

not enabled

Search Console

scaffold/not_live

not enabled

GA4

scaffold/not_live

not enabled

WhatsApp

scaffold/not_live

not enabled

已知阻塞

這些是可接受但需要被看見的限制,不會阻塞 dashboard 讀取。

meta_marketing_api_access_blocked

Meta Marketing API access blocked; ad-level intelligence rows remain empty until Business/App access is fixed.

llm_analysis_disabled

LLM_ANALYSIS_ENABLED=false; GPT-5.5 analysis is disabled and rule_based fallback is used.

ads_digest_disabled

ADS_DIGEST_ENABLED=false; scheduled Discord digest is disabled by default.

最近錯誤

來自 error_logs 的最新安全摘要,不顯示任何 token 或密鑰。

worker · error

executor is not enabled: unsupported.executor.smoke

2026-05-23T15:39:28.466314+00:00

最近審批與執行

Approval Gate / Worker Dispatcher 的近期狀態。

  • internal · unsupported.executor.smoke 已失敗
  • internal · test.noop 已完成

建議下一步

讓 Zachary 不需要讀 log 也能知道下一個最務實的動作。

  • Repair Meta Marketing API access before expecting ad-level intelligence rows.
  • Keep ADS_DIGEST_ENABLED=false until Zachary explicitly enables scheduled Discord digest.
  • Use this health report and the production smoke suite before and after future deploys.
Raw Health Report
{
  "dry_run": true,
  "environment": "production",
  "generated_at": "2026-07-21T01:28:42.737356+00:00",
  "project": {
    "id": "d103485b-57f7-4d2a-aef1-3cfc4b54feb2",
    "slug": "homi",
    "name": "HOMI",
    "status": "active"
  },
  "backend": {
    "status": "ok",
    "service": "homi-backend-api",
    "version": "1.0.0"
  },
  "database": {
    "status": "ok"
  },
  "redis": {
    "status": "ok"
  },
  "scheduler": {
    "status": "configured",
    "message": "Scheduler service is configured; no heartbeat table exists yet.",
    "ads_digest_enabled": false
  },
  "llm_analysis": {
    "enabled": false,
    "provider": "openai",
    "model": "gpt-5.5",
    "status": "disabled",
    "timeout_seconds": 30,
    "max_input_chars": 12000,
    "max_output_chars": 3000,
    "external_write": false,
    "message": "LLM_ANALYSIS_ENABLED=false; GPT-5.5 analysis is disabled and rule_based fallback is used."
  },
  "worker": {
    "status": "warning",
    "latest_job_status": "failed",
    "message": "Worker dispatcher latest job is visible in the local queue."
  },
  "latest_daily_ads_report_date": "2026-05-28",
  "latest_intelligence_report_date": "2026-05-23",
  "latest_approved_write_job_status": "failed",
  "latest_error_log_count": 0,
  "latest_audit_log_count": 0,
  "latest": {
    "daily_ads_report_date": "2026-05-28",
    "intelligence_report_date": "2026-05-23",
    "approved_write_job": {
      "id": "480df64e-450f-4193-9e64-9c470c30830b",
      "status": "failed",
      "executor_name": "unsupported.executor.smoke",
      "platform": "internal",
      "action": "unsupported.executor.smoke",
      "created_at": "2026-05-23T15:39:19.485246+00:00",
      "executed_at": "2026-05-23T15:39:28.465223+00:00"
    }
  },
  "counts": {
    "error_logs_24h": 0,
    "audit_logs_24h": 0
  },
  "recent_errors": [
    {
      "service": "worker",
      "severity": "error",
      "message": "executor is not enabled: unsupported.executor.smoke",
      "created_at": "2026-05-23T15:39:28.466314+00:00"
    }
  ],
  "recent_approvals_and_jobs": [
    {
      "id": "480df64e-450f-4193-9e64-9c470c30830b",
      "status": "failed",
      "executor_name": "unsupported.executor.smoke",
      "platform": "internal",
      "action": "unsupported.executor.smoke",
      "approval_decision": "approved",
      "created_at": "2026-05-23T15:39:19.485246+00:00",
      "executed_at": "2026-05-23T15:39:28.465223+00:00"
    },
    {
      "id": "0bd1efcd-5b6a-4306-97bf-73cc4025ad7e",
      "status": "succeeded",
      "executor_name": "test.noop",
      "platform": "internal",
      "action": "test.noop",
      "approval_decision": "approved",
      "created_at": "2026-05-23T15:38:32.407378+00:00",
      "executed_at": "2026-05-23T15:38:41.344607+00:00"
    }
  ],
  "integration_status": {
    "Discord": {
      "status": "live",
      "mode": "command/input layer"
    },
    "GitHub": {
      "status": "live",
      "mode": "issues, PRs, rules"
    },
    "Meta Ads": {
      "status": "blocked",
      "mode": "read_only",
      "configured": true,
      "message": "Meta Marketing API access blocked; read-only credentials exist but API access needs repair."
    },
    "Google Ads": {
      "status": "read_only",
      "mode": "read_only",
      "configured": true,
      "message": "Read-only campaign data is available."
    },
    "Daily Ads Report": {
      "status": "live",
      "mode": "local reporting"
    },
    "Ads Intelligence": {
      "status": "live_structural",
      "mode": "read_only analytics"
    },
    "client_report_center": {
      "status": "live",
      "mode": "client-facing read-only reports"
    },
    "data_quality_layer": {
      "status": "live",
      "mode": "plain-language source quality labels"
    },
    "llm_analysis_runtime": {
      "status": "disabled",
      "mode": "read_only advisory analysis"
    },
    "per_ad_ab_test_view": {
      "status": "live",
      "mode": "read_only ad-level comparison"
    },
    "Approval Gate": {
      "status": "live",
      "mode": "local approval"
    },
    "Worker Dispatcher": {
      "status": "live",
      "mode": "local executor queue"
    },
    "WordPress": {
      "status": "scaffold/not_live",
      "mode": "not enabled"
    },
    "Facebook/IG": {
      "status": "scaffold/not_live",
      "mode": "not enabled"
    },
    "Search Console": {
      "status": "scaffold/not_live",
      "mode": "not enabled"
    },
    "GA4": {
      "status": "scaffold/not_live",
      "mode": "not enabled"
    },
    "WhatsApp": {
      "status": "scaffold/not_live",
      "mode": "not enabled"
    }
  },
  "known_blockers": [
    {
      "code": "meta_marketing_api_access_blocked",
      "status": "blocked",
      "message": "Meta Marketing API access blocked; ad-level intelligence rows remain empty until Business/App access is fixed."
    },
    {
      "code": "llm_analysis_disabled",
      "status": "disabled",
      "message": "LLM_ANALYSIS_ENABLED=false; GPT-5.5 analysis is disabled and rule_based fallback is used."
    },
    {
      "code": "ads_digest_disabled",
      "status": "disabled",
      "message": "ADS_DIGEST_ENABLED=false; scheduled Discord digest is disabled by default."
    }
  ],
  "recommended_next_steps": [
    "Repair Meta Marketing API access before expecting ad-level intelligence rows.",
    "Keep ADS_DIGEST_ENABLED=false until Zachary explicitly enables scheduled Discord digest.",
    "Use this health report and the production smoke suite before and after future deploys."
  ]
}