From 5942e39e18de1a21ecd93658c43eee8ed6ed58a0 Mon Sep 17 00:00:00 2001 From: OoO Date: Wed, 13 May 2026 11:57:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=88=E4=BD=8F=E6=9C=AC=E6=A9=9F=E7=94=A2?= =?UTF-8?q?=E7=89=A9=E5=BF=BD=E7=95=A5=E8=A6=8F=E5=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ .../claude_inventory_validation_20260513.md | 2 +- tests/test_gitignore_contracts.py | 21 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 tests/test_gitignore_contracts.py diff --git a/.gitignore b/.gitignore index 2c4b1e5..5c170f1 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,8 @@ data/excel_exports/ # 上傳檔案 web/static/uploads/ web/static/screenshots/ +uploads/ +screenshots/ MOMO Pro/uploads/ MOMO Pro/screenshots/ templates/__init__.py diff --git a/docs/memory/claude_inventory_validation_20260513.md b/docs/memory/claude_inventory_validation_20260513.md index a82ab50..37c8cd5 100644 --- a/docs/memory/claude_inventory_validation_20260513.md +++ b/docs/memory/claude_inventory_validation_20260513.md @@ -40,7 +40,7 @@ - CD migration 全範圍冪等已有回歸守門:`.gitea/workflows/cd.yaml` 必須維持 024-099 pattern、`sort | uniq` 與 `for m in $V5_MIGRATIONS` apply loop。 - CD Observability production smoke 已補 timeout 守門:`quick_review.sh --observability-smoke` 必須帶 `--timeout 12`。 - 0-byte `database/momo*.db` 迷惑檔已不存在;真實 SQLite 僅在 `data/momo_database.db`。 -- `.gitignore` 已涵蓋 `.claude/worktrees/`、`.tmp_*`、`MOMO Pro/`、uploads/screenshots。 +- `.gitignore` 已涵蓋 `.claude/worktrees/`、`.tmp_*`、`MOMO Pro/`、root/uploads/screenshots 與 `MOMO Pro` uploads/screenshots,並由 `tests/test_gitignore_contracts.py` 守住。 - `cache_service.py` 已成為 `cache_manager.py` 的相容 shim,`_SALES_CACHE_TTL` 單一來源有測試鎖住。 - `aiops-core/requirements.txt` 已不存在,`aiops-core/README.md` 已標記此目錄只保留歷史 stub,不應安裝或部署。 - V2 提到的「死依賴」不可整批刪:`beautifulsoup4` 用於多個 crawler、`google-api-python-client` 用於 Google Drive、`google-generativeai` 用於 Gemini paths、`python-pptx` 用於 PPT generator、`matplotlib` 用於 Telegram/圖表/PPT。 diff --git a/tests/test_gitignore_contracts.py b/tests/test_gitignore_contracts.py new file mode 100644 index 0000000..8010426 --- /dev/null +++ b/tests/test_gitignore_contracts.py @@ -0,0 +1,21 @@ +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + + +def test_local_generated_artifacts_stay_ignored(): + gitignore = (ROOT / ".gitignore").read_text(encoding="utf-8") + + required_patterns = [ + ".claude/worktrees/", + ".tmp_*", + "MOMO Pro/", + "MOMO Pro/uploads/", + "MOMO Pro/screenshots/", + "uploads/", + "screenshots/", + "database/*.db", + ] + for pattern in required_patterns: + assert pattern in gitignore