mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-15 19:32:20 +03:00
Validado numa worktree combinada com a onda de roteamento/free-tier desta leva sobre `release/v3.8.51`: typecheck:core limpo, check-api-typecheck OK (288), check-file-size OK após rebaseline, 84/85 nos testes focados. Tratar breaker aberto como equivalente a fechado no scoring de snapshot é pior que não pontuar: afirma saúde onde há falha conhecida. Trocar as três constantes neutras por valor observado é a correção, e manter preço e orçamento fora do escopo mantém a PR revisável. **Integração:** o `computeSnapshotWeights` conflitou com o #12731, que adiciona peso de `reliability` a partir de `failureRate`/`errorRate`. Os dois cobrem chaves diferentes e compõem — ficaram ambos: reliability do #12731, health via breaker e quality desta PR, quota neutro nos dois. Nenhum dos dois lados foi descartado.
39 lines
1.9 KiB
TypeScript
39 lines
1.9 KiB
TypeScript
// tests/unit/combo-auto-tier.test.ts — runner node:test
|
|
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import { calculateTierScore } from "../../open-sse/services/autoCombo/scoring.ts";
|
|
|
|
describe("combo auto tier projection", () => {
|
|
it("ultra > pro > standard > free discriminant (order only, no absolutes)", () => {
|
|
const ultra = calculateTierScore("ultra", 86400);
|
|
const pro = calculateTierScore("pro", 86400);
|
|
const std = calculateTierScore("standard", 86400);
|
|
const free = calculateTierScore("free", 86400);
|
|
// Formula is base*0.8 + resetBonus*0.2 — assert order, never absolute values
|
|
assert.ok(ultra > pro && pro > std && std > free);
|
|
});
|
|
it("unknown tier falls back to standard base (order preserved)", () => {
|
|
const undef = calculateTierScore(undefined, 86400);
|
|
const std = calculateTierScore("standard", 86400);
|
|
assert.equal(undef, std);
|
|
});
|
|
it("resetBonus short interval higher than long (same tier)", () => {
|
|
const sShort = calculateTierScore("standard", 3600);
|
|
const sLong = calculateTierScore("standard", 86400);
|
|
assert.ok(sShort > sLong);
|
|
});
|
|
it("projected tier discriminates vs neutral (shared helper, no file read)", async () => {
|
|
// Imports the SAME pure helper combo.ts uses — no local
|
|
// mirror, so prod/test divergence fails here instead of shipping green.
|
|
const { projectAccountTier } = await import("../../open-sse/services/autoCombo/scoring.ts");
|
|
const sUltra = calculateTierScore(projectAccountTier({ accountTier: "ultra" }), 86400);
|
|
const sNeutral = calculateTierScore(projectAccountTier({}), 86400);
|
|
const sPsd = calculateTierScore(
|
|
projectAccountTier({ providerSpecificData: { accountTier: "pro" } }),
|
|
86400
|
|
);
|
|
assert.ok(sUltra > sNeutral, `ultra ${sUltra} should exceed neutral ${sNeutral}`);
|
|
assert.ok(sPsd > sNeutral, `psd-pro ${sPsd} should exceed neutral ${sNeutral}`);
|
|
});
|
|
});
|