All checks were successful
CD Pipeline / deploy (push) Successful in 2m50s
Operation Ollama-First v5.0 / Phase 14-18 全套(statesman 批准全部) Phase 14 — services/ppt_vision_service.py (新檔, 200+ 行) - minicpm-v:latest(GCP Primary 已拉 5.5GB,代替 qwen2-vl 不存在) - check_image(image_path) → VisionResult.issues_found 視覺異常清單 - 走 resolve_ollama_host 三主機 retry + mark_unhealthy - 繁中強制 system prompt + 結構化解析 ⚠️ marker - feature flag PPT_VISION_ENABLED 預設 OFF Phase 15 — services/deepseek_service.py (新檔, 170+ 行) - DeepSeek API 直連 (api.deepseek.com/v1),OpenAI-compatible - 取代部分 OpenRouter 路徑(直連便宜 ~30-50% + 延遲低) - deepseek-chat ($0.014/$0.28) / deepseek-reasoner ($0.14/$2.19) - feature flag DEEPSEEK_DIRECT_ENABLED 預設 OFF - DeepSeekResponse 含 input_tokens/output_tokens/duration_ms Phase 16 — services/llm_caller_registry.py (新檔, 130+ 行) - CALLER_REGISTRY frozenset 集中管理 35+ 個 caller 名(ADR-028 白名單) - assert_known_caller(strict=False) 整合到 ai_call_logger __init__ - 不在 registry → log warning(不 raise,保留擴展彈性) - list_callers_by_service() 分組除錯 - 解 critic-A11 第 3 輪 L4 修補(命名分散三層) Phase 17 — _is_low_quality_response 4 條新規則(A2 警訊深化) - 規則 5:純英文回應(中文字元 < 30%) - 規則 6:thinking-mode 漏洞(<think>...</think> 洩漏) - 規則 7:重複迴圈偵測(前 50 字出現 ≥ 3 次) - 規則 8:佔位符未填充({{var}} / [TODO] / <待填>) Phase 18 — docs/operation_ollama_first_v5_postmortem.md (新檔) - 戰役完整時間軸(Day 1-2) - 3 大決策替代分析 - 4 個 critical hotfix 教訓 - Owen 三護欄落地對照 - KPI 達成度(Wave 1 提前 4 天 / Wave 2 提前 10 天) - 統帥手動清單 + 7 條未來戰役教訓 Phase 13 補強(合併本 commit): - ai_call_logger COST_TABLE 補 7 個新模型(qwen3:14b / qwen2.5:7b-instruct / qwen2.5-coder:32b / qwen2-vl:7b / deepseek-r1:14b / gemma3:4b / minicpm-v) regression: 214 unit tests 全綠(4:02 跑完),2 skipped Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>