fix(coderd/database): fall back to model names in PR insights (#23490)

Fallback to the configured model name in PR Insights when a model config
has a blank display name.

This updates both the by-model breakdown and recent PR rows, and adds a
regression test for blank display names.
This commit is contained in:
Michael Suchacz
2026-03-24 13:58:29 +01:00
committed by GitHub
parent 1c0442c247
commit 405d81be09
3 changed files with 51 additions and 6 deletions
+43
View File
@@ -10417,6 +10417,49 @@ func TestGetPRInsights(t *testing.T) {
assert.Equal(t, int64(0), recent[0].CostMicros)
})
t.Run("BlankDisplayNameFallsBackToModel", func(t *testing.T) {
t.Parallel()
store, userID, _ := setupChatInfra(t)
const modelName = "claude-4.1"
emptyDisplayModel, err := store.InsertChatModelConfig(context.Background(), database.InsertChatModelConfigParams{
Provider: "anthropic",
Model: modelName,
DisplayName: "",
CreatedBy: uuid.NullUUID{UUID: userID, Valid: true},
UpdatedBy: uuid.NullUUID{UUID: userID, Valid: true},
Enabled: true,
IsDefault: false,
ContextLimit: 128000,
CompressionThreshold: 80,
Options: json.RawMessage(`{}`),
})
require.NoError(t, err)
chat := createChat(t, store, userID, emptyDisplayModel.ID, "chat-empty-display-name")
insertCostMessage(t, store, chat.ID, userID, emptyDisplayModel.ID, 1_000_000)
linkPR(t, store, chat.ID, "https://github.com/org/repo/pull/72", "merged", "fix: blank display name", 10, 2, 1)
byModel, err := store.GetPRInsightsPerModel(context.Background(), database.GetPRInsightsPerModelParams{
StartDate: startDate,
EndDate: endDate,
OwnerID: noOwner,
})
require.NoError(t, err)
require.Len(t, byModel, 1)
assert.Equal(t, modelName, byModel[0].DisplayName)
recent, err := store.GetPRInsightsRecentPRs(context.Background(), database.GetPRInsightsRecentPRsParams{
StartDate: startDate,
EndDate: endDate,
OwnerID: noOwner,
LimitVal: 20,
})
require.NoError(t, err)
require.Len(t, recent, 1)
assert.Equal(t, modelName, recent[0].ModelDisplayName)
})
t.Run("MergedCostMicros_OnlyCountsMerged", func(t *testing.T) {
t.Parallel()
store, userID, mcID := setupChatInfra(t)