Your Name
b1ef05fa8c
Code Review / ai-code-review (push) Successful in 50s
CD Pipeline / tests (push) Failing after 1m14s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
feat(ollama): ADR-110 GCP 三層容災架構(GCP-A → GCP-B → Local → Gemini)
## 變更摘要
- Primary: http://34.143.170.20:11434 (GCP-A SSD, 9x 載速 + 2x 推理)
- Secondary: http://34.21.145.224:11434 (GCP-B SSD)
- Fallback: http://192.168.0.111:11434 (M1 Pro Local HDD,最後防線)
- 廢止 ADR-105「111 唯一鐵律」,新建 ADR-110
## 核心改動
- config.py: 新增 OLLAMA_SECONDARY_URL;validator 加 GCP IP 白名單(34.143.170.20, 34.21.145.224)
- ollama_failover_manager.py: 三層 Ollama 決策矩陣;並行健康檢查三台;health_111 → health_gcp_a
- ollama_health_monitor.py: host label 萃取改為通用版(支援 GCP 公網 IP)
- failover_alerter.py: 故障/恢復主機動態顯示,不再硬編碼「Ollama 111 (GPU)」
- ollama_auto_recovery.py: notify_recovery 改為 ollama_gcp_a;recovered_host 動態
- k8s/awoooi-prod: configmap + deployment + network-policy 同步更新(egress 加 GCP /32)
- 服務層: 10 個服務檔案硬編碼 192.168.0.111 改為讀 settings.OLLAMA_URL
- 測試: URL 常數更新,新增三層容災場景,GCP IP 白名單驗證測試
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 22:49:23 +08:00
..
2026-03-19 19:16:12 +08:00
2026-03-26 09:55:47 +08:00
2026-03-26 09:55:47 +08:00
2026-03-23 18:40:36 +08:00
2026-03-26 09:55:47 +08:00
2026-03-26 09:55:47 +08:00
2026-03-29 16:03:41 +08:00
2026-03-23 18:40:36 +08:00
2026-03-28 18:04:12 +08:00
2026-04-25 02:10:06 +08:00
2026-03-23 19:44:56 +08:00
2026-03-26 15:34:12 +08:00
2026-03-23 19:44:56 +08:00
2026-03-24 15:19:52 +08:00
2026-03-26 10:12:43 +08:00
2026-03-26 10:45:29 +08:00
2026-03-26 11:22:47 +08:00
2026-03-26 10:13:05 +08:00
2026-03-26 10:13:12 +08:00
2026-03-26 19:09:08 +08:00
2026-03-26 12:27:47 +08:00
2026-03-26 12:27:36 +08:00
2026-03-26 19:09:08 +08:00
2026-03-30 01:32:48 +08:00
2026-03-26 15:32:52 +08:00
2026-04-01 09:27:40 +08:00
2026-03-26 15:34:12 +08:00
2026-03-26 18:43:28 +08:00
2026-03-26 20:13:07 +08:00
2026-03-26 19:09:08 +08:00
2026-03-26 19:09:08 +08:00
2026-04-09 11:29:04 +08:00
2026-04-01 13:12:02 +08:00
2026-03-28 18:04:12 +08:00
2026-03-31 11:03:10 +08:00
2026-03-28 21:57:57 +08:00
2026-03-28 21:47:49 +08:00
2026-03-29 01:51:35 +08:00
2026-03-29 16:04:08 +08:00
2026-03-29 15:48:09 +08:00
2026-03-30 01:07:51 +08:00
2026-03-30 01:20:50 +08:00
2026-03-31 16:06:51 +08:00
2026-03-31 11:36:21 +08:00
2026-03-31 12:24:54 +08:00
2026-03-31 18:52:53 +08:00
2026-04-01 09:17:08 +08:00
2026-04-01 13:12:02 +08:00
2026-04-01 13:12:02 +08:00
2026-04-01 16:20:57 +08:00
2026-04-01 16:20:57 +08:00
2026-04-01 16:20:57 +08:00
2026-04-01 16:20:57 +08:00
2026-04-02 13:16:09 +08:00
2026-04-02 21:38:39 +08:00
2026-04-05 00:24:50 +08:00
2026-04-05 00:24:50 +08:00
2026-04-05 00:24:50 +08:00
2026-04-05 00:44:31 +08:00
2026-05-01 17:18:32 +08:00
2026-04-05 14:44:32 +08:00
2026-04-08 11:44:06 +08:00
2026-04-08 11:56:58 +08:00
2026-04-08 11:44:06 +08:00
2026-04-08 16:38:31 +08:00
2026-04-08 16:07:12 +08:00
2026-04-11 21:35:25 +08:00
2026-04-09 18:19:57 +08:00
2026-04-09 18:23:55 +08:00
2026-04-11 21:35:25 +08:00
2026-04-10 11:39:42 +08:00
2026-04-11 09:07:47 +08:00
2026-04-12 00:09:18 +08:00
2026-04-11 20:04:47 +08:00
2026-04-11 20:36:59 +08:00
2026-04-12 13:30:37 +08:00
2026-05-01 20:34:33 +08:00
2026-04-14 18:36:59 +08:00
2026-04-14 18:46:25 +08:00
2026-04-15 10:46:40 +08:00
2026-04-15 12:44:53 +08:00
2026-04-15 13:48:55 +08:00
2026-04-15 14:01:37 +08:00
2026-04-17 15:25:34 +08:00
2026-04-17 15:25:34 +08:00
2026-04-18 13:18:46 +08:00
2026-04-19 01:32:52 +08:00
2026-04-21 21:59:00 +08:00
2026-05-01 16:53:02 +08:00
2026-04-25 02:22:40 +08:00
2026-04-25 02:22:40 +08:00
2026-04-27 14:54:19 +08:00
2026-05-01 15:09:57 +08:00
2026-05-03 22:49:23 +08:00
2026-05-03 01:53:09 +08:00
2026-05-03 01:54:19 +08:00
2026-05-03 22:49:23 +08:00