diff --git a/config/settings.sentiment_macro.yaml b/config/settings.sentiment_macro.yaml index ba3182b..12a3ea6 100644 --- a/config/settings.sentiment_macro.yaml +++ b/config/settings.sentiment_macro.yaml @@ -38,14 +38,12 @@ telegram: ai: enabled: true - # 2026-08-18: xAI 403'd on exhausted credits. DeepSeek carried sentiment until - # 2026-08-26; now Z.AI (GLM) is the primary. The key is a Coding Plan - # subscription key — it only answers on the /api/coding/ endpoint (the - # pay-as-you-go /api/paas/v4 path returns error 1113 for it). - provider: zai - model: glm-5.3 - zai_base_url: https://api.z.ai/api/coding/paas/v4 + # Z.AI Coding Plan is not permitted for automated sentiment polling. + # DeepSeek is funded and remains the active provider. Z.AI implementation + # stays available for a future permitted general/API-package credential. + provider: deepseek polling_interval: 60.0 + fallback_model: deepseek-v4-pro trading_execution: enabled: false diff --git a/tests/test_config_merge.py b/tests/test_config_merge.py index 072a421..a9bb9aa 100644 --- a/tests/test_config_merge.py +++ b/tests/test_config_merge.py @@ -139,9 +139,9 @@ ai: enabled: true - provider: zai - model: glm-5.3 + provider: deepseek polling_interval: 60.0 + fallback_model: deepseek-v4-pro max_history: 10 allowed_chat_ids: [] api_key: "" diff --git a/tests/test_settings_integration.py b/tests/test_settings_integration.py index 4044ac4..6e8074d 100644 --- a/tests/test_settings_integration.py +++ b/tests/test_settings_integration.py @@ -145,11 +145,32 @@ def test_sentiment_macro_config_resolves_sentiment_strategy_only(): assert settings.telegram.daily_summary_send_empty is False assert settings.display_name == "sentiment-macro-1h-multiasset" assert settings.ai.enabled is True - assert settings.ai.provider == "zai" - assert settings.ai.model == "glm-5.3" + assert settings.ai.provider == "deepseek" + assert settings.ai.fallback_model == "deepseek-v4-pro" assert aggregator_config["buy_threshold"] == 0.6 +def test_sentiment_macro_config_selects_funded_deepseek_not_zai_coding_plan(): + """Sentiment-macro uses funded DeepSeek; Z.AI Coding Plan is not selected.""" + overlay_path = Path("config/settings.sentiment_macro.yaml") + overlay_text = overlay_path.read_text(encoding="utf-8") + assert "provider: deepseek" in overlay_text + assert "fallback_model: deepseek-v4-pro" in overlay_text + assert "zai_base_url:" not in overlay_text + assert "api/coding/paas/v4" not in overlay_text + assert "glm-5.3" not in overlay_text + + settings = load_settings(overlay_path) + assert settings.ai.enabled is True + assert settings.ai.provider == "deepseek" + assert settings.ai.fallback_model == "deepseek-v4-pro" + assert settings.ai.fallback_base_url == "https://api.deepseek.com/v1" + assert settings.ai.zai_base_url != "https://api.z.ai/api/coding/paas/v4" + assert settings.mode == "paper" + assert settings.trading_execution.enabled is False + assert settings.trading_execution.test_mode is True + + def test_sol_panic_block_paper_config_resolves_paper_safe_strategy(): settings = load_settings(Path("config/settings.sol_4h_panic_block_paper.yaml")) strategy_classes, strategy_configs, aggregator_config, _per_symbol = _resolve_strategy_config(