fix(email): support legacy AI gateway models

This commit is contained in:
2026-09-08 10:07:13 +02:00
parent 41e4cad929
commit a60570e0eb
3 changed files with 59 additions and 15 deletions

View File

@@ -2,8 +2,10 @@ import assert from "node:assert/strict"
import test from "node:test"
import {
buildSuggestionMail,
buildEntitySuggestionRequest,
dismissEntitySuggestion,
selectCandidates,
shouldRetryWithLegacyAiModel,
validateSuggestions,
type EntityCandidate,
} from "../src/modules/email/email.entity-suggestions"
@@ -69,3 +71,22 @@ test("dismisses only the selected entity suggestion", () => {
)
assert.deepEqual(dismissEntitySuggestion(null, "customers", 1), [])
})
test("uses Luna by default and omits reasoning effort for the legacy fallback", () => {
const request = buildEntitySuggestionRequest(buildSuggestionMail({ subject: "Test" }), [customer])
assert.equal(request.model, "gpt-5.6-luna")
assert.equal(request.reasoning_effort, "none")
const fallback = buildEntitySuggestionRequest(buildSuggestionMail({ subject: "Test" }), [customer], "gpt-4o-mini")
assert.equal(fallback.model, "gpt-4o-mini")
assert.equal("reasoning_effort" in fallback, false)
})
test("retries model compatibility errors without retrying auth, rate-limit, or configuration errors", () => {
for (const status of [400, 404, 422, 500, 502]) {
assert.equal(shouldRetryWithLegacyAiModel({ status }), true)
}
for (const status of [401, 403, 429, 503]) {
assert.equal(shouldRetryWithLegacyAiModel({ status }), false)
}
})