diff --git a/docs/guides/observability_ui_governance.md b/docs/guides/observability_ui_governance.md index b9d116d..64c571f 100644 --- a/docs/guides/observability_ui_governance.md +++ b/docs/guides/observability_ui_governance.md @@ -40,11 +40,17 @@ AI 觀測台是「AI 中樞控制室」,不是 Bootstrap 報表頁。任何新 先跑本地 guard,避免把已知 UI/UX 回歸重新帶進 repo: +```bash +scripts/check_observability_suite.sh +``` + +若只想跑靜態檢查: + ```bash python3 scripts/check_observability_ui.py ``` -或透過既有 quick review 選單執行第 6 項: +或透過既有 quick review 選單執行第 8 項完整 QA 套件、第 6 項靜態 UI guard: ```bash ./scripts/quick_review.sh diff --git a/scripts/check_observability_suite.sh b/scripts/check_observability_suite.sh new file mode 100644 index 0000000..5d483ea --- /dev/null +++ b/scripts/check_observability_suite.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# AI observability QA suite. +# +# Runs the static UI regression guard first, then the production page smoke +# check unless --skip-production is provided. + +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +BASE_URL="https://mo.wooo.work" +SKIP_PRODUCTION=0 + +while [[ $# -gt 0 ]]; do + case "$1" in + --base-url) + BASE_URL="${2:-}" + if [[ -z "$BASE_URL" ]]; then + echo "ERROR: --base-url requires a value" >&2 + exit 1 + fi + shift 2 + ;; + --skip-production) + SKIP_PRODUCTION=1 + shift + ;; + -h|--help) + cat <<'EOF' +Usage: scripts/check_observability_suite.sh [--base-url URL] [--skip-production] + +Runs: + 1. python3 scripts/check_observability_ui.py + 2. python3 scripts/check_observability_pages.py --base-url URL + +Options: + --base-url URL Target site for the 10-page smoke check. + --skip-production Run only the static UI guard. +EOF + exit 0 + ;; + *) + echo "ERROR: unknown option: $1" >&2 + exit 1 + ;; + esac +done + +cd "$PROJECT_ROOT" + +echo "========================================" +echo "AI Observability QA Suite" +echo "========================================" +echo "1/2 Static UI guard" +python3 scripts/check_observability_ui.py + +if [[ "$SKIP_PRODUCTION" -eq 1 ]]; then + echo "2/2 Production smoke skipped" + echo "AI Observability QA Suite: PASS" + exit 0 +fi + +echo "2/2 Production 10-page smoke" +python3 scripts/check_observability_pages.py --base-url "$BASE_URL" + +echo "AI Observability QA Suite: PASS" diff --git a/scripts/quick_review.sh b/scripts/quick_review.sh index cd92244..aba01a5 100755 --- a/scripts/quick_review.sh +++ b/scripts/quick_review.sh @@ -17,6 +17,7 @@ PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" CODE_REVIEW_SCRIPT="$PROJECT_ROOT/scripts/code_review.py" OBSERVABILITY_UI_GUARD="$PROJECT_ROOT/scripts/check_observability_ui.py" OBSERVABILITY_PAGE_SMOKE="$PROJECT_ROOT/scripts/check_observability_pages.py" +OBSERVABILITY_QA_SUITE="$PROJECT_ROOT/scripts/check_observability_suite.sh" # 顯示標題 echo -e "${BLUE}========================================${NC}" @@ -64,6 +65,16 @@ run_observability_page_smoke() { python3 "$OBSERVABILITY_PAGE_SMOKE" } +run_observability_qa_suite() { + if [ ! -f "$OBSERVABILITY_QA_SUITE" ]; then + echo -e "${RED}❌ AI觀測台 QA 套件不存在: $OBSERVABILITY_QA_SUITE${NC}" + exit 1 + fi + + echo -e "${GREEN}🏛️ 開始 AI觀測台完整 QA 套件...${NC}" + bash "$OBSERVABILITY_QA_SUITE" +} + # 顯示選單 if [ $# -eq 0 ]; then echo -e "${YELLOW}請選擇操作:${NC}" @@ -74,8 +85,9 @@ if [ $# -eq 0 ]; then echo "5) 效能檢查 (Performance Review)" echo "6) AI觀測台 UI/UX 防回歸檢查" echo "7) AI觀測台 10頁線上巡檢" + echo "8) AI觀測台完整 QA 套件" echo "" - read -p "請輸入選項 (1-7): " choice + read -p "請輸入選項 (1-8): " choice case $choice in 1) @@ -111,6 +123,9 @@ if [ $# -eq 0 ]; then 7) run_observability_page_smoke ;; + 8) + run_observability_qa_suite + ;; *) echo -e "${RED}❌ 無效選項${NC}" exit 1