feat(ai_review): route per-repo model override through PRICES provider field

This commit is contained in:
Claude
2026-08-22 19:13:04 +00:00
parent e344831b05
commit 92020d4d46
2 changed files with 27 additions and 7 deletions
+10 -3
View File
@@ -451,15 +451,22 @@ def test_parse_repo_config_model_must_be_string():
def test_resolve_display_model_precedence(monkeypatch):
# Order is OPENCODE_MODEL env > config['model'] > headroom/{base}.
# Order is OPENCODE_MODEL env > config['model'] (re-prefixed by provider) > headroom/{base}.
monkeypatch.delenv("OPENCODE_MODEL", raising=False)
# 1. No env, no config → headroom/<base>
assert ai_review._resolve_display_model("MiniMax-M2.7", None) == "headroom/MiniMax-M2.7"
assert ai_review._resolve_display_model("MiniMax-M2.7", {}) == "headroom/MiniMax-M2.7"
# 2. No env, config has model → use config model as-is (already a known key)
# 2. No env, config has a PRICES key → re-prefixed with that model's provider.
# headroom-hosted models default to provider="headroom".
assert (
ai_review._resolve_display_model("MiniMax-M2.7", {"model": "claude-sonnet-5"})
== "claude-sonnet-5"
== "headroom/claude-sonnet-5"
)
# Self-hosted models carry provider="local" → routes to the `local`
# provider block in opencode.json (AI workstation on 192.168.1.79:18020).
assert (
ai_review._resolve_display_model("MiniMax-M2.7", {"model": "qwen3.8-27b"})
== "local/qwen3.8-27b"
)
# 3. Env wins over config
monkeypatch.setenv("OPENCODE_MODEL", "headroom/MiniMax-M2.7")