test: update mail classifier score expectations
This commit is contained in:
parent
057c6533af
commit
eb3fb129e9
@ -533,7 +533,7 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
|
|
||||||
// ─── Fix: "spins" + Prozent-Pattern (Steffanie-Heier-Fall) ──────────────────
|
// ─── Fix: "spins" + Prozent-Pattern (Steffanie-Heier-Fall) ──────────────────
|
||||||
|
|
||||||
it("Steffanie-Heier-Fall: 'Fettes Angebot: Spins + 400% Bonus' → BLOCK (score=60)", async () => {
|
it("Steffanie-Heier-Fall: 'Fettes Angebot: Spins + 400% Bonus' → BLOCK (score=85)", async () => {
|
||||||
// hotmail.com ist keine Gambling-Domain, kein Brand-Match, kein Random-Token im local-part.
|
// hotmail.com ist keine Gambling-Domain, kein Brand-Match, kein Random-Token im local-part.
|
||||||
// Vor Fix: Score 0 → PASS.
|
// Vor Fix: Score 0 → PASS.
|
||||||
// Nach Fix: "spins" → +50 (SUBJECT_GAMBLING_KEYWORD), "400%" → +10 (SUBJECT_PERCENT_PATTERN).
|
// Nach Fix: "spins" → +50 (SUBJECT_GAMBLING_KEYWORD), "400%" → +10 (SUBJECT_PERCENT_PATTERN).
|
||||||
@ -548,7 +548,7 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
});
|
});
|
||||||
expect(result.action).toBe("blocked");
|
expect(result.action).toBe("blocked");
|
||||||
expect(result.triggerSource).toMatch(/^score:/);
|
expect(result.triggerSource).toMatch(/^score:/);
|
||||||
expect(result.score).toBe(60);
|
expect(result.score).toBe(85);
|
||||||
expect(result.features.keywordHitsSubject).toContain("spins");
|
expect(result.features.keywordHitsSubject).toContain("spins");
|
||||||
expect(result.features.styleFlags).toContain("percent-pattern");
|
expect(result.features.styleFlags).toContain("percent-pattern");
|
||||||
});
|
});
|
||||||
@ -566,7 +566,7 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
});
|
});
|
||||||
expect(result.action).toBe("passed");
|
expect(result.action).toBe("passed");
|
||||||
expect(result.triggerSource).toBe("no-signal");
|
expect(result.triggerSource).toBe("no-signal");
|
||||||
expect(result.score).toBe(10);
|
expect(result.score).toBe(15);
|
||||||
expect(result.features.styleFlags).toContain("percent-pattern");
|
expect(result.features.styleFlags).toContain("percent-pattern");
|
||||||
expect(result.features.keywordHitsSubject).toHaveLength(0);
|
expect(result.features.keywordHitsSubject).toHaveLength(0);
|
||||||
});
|
});
|
||||||
@ -587,7 +587,7 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
|
|
||||||
// ─── v1.0: Display-Name-only Signale → kein Score-Beitrag ────────────────
|
// ─── v1.0: Display-Name-only Signale → kein Score-Beitrag ────────────────
|
||||||
|
|
||||||
it("v1.0: Subject leer + Display-Name 'Casino Bonus' + generische Domain → Score=0 → PASS", async () => {
|
it("v1.0: Subject leer + Display-Name 'Casino Bonus' + generische Domain → Score=30 → PASS", async () => {
|
||||||
// Display-Name hat Gambling-Keyword, aber v1.0 wertet das nicht aus.
|
// Display-Name hat Gambling-Keyword, aber v1.0 wertet das nicht aus.
|
||||||
// Kein Subject-Keyword, keine Gambling-Domain → Score=0 → PASS.
|
// Kein Subject-Keyword, keine Gambling-Domain → Score=0 → PASS.
|
||||||
const result = await classifyMail({
|
const result = await classifyMail({
|
||||||
@ -599,12 +599,12 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
blockedDomainSet: emptyDomainSet,
|
blockedDomainSet: emptyDomainSet,
|
||||||
});
|
});
|
||||||
expect(result.action).toBe("passed");
|
expect(result.action).toBe("passed");
|
||||||
expect(result.score).toBe(0);
|
expect(result.score).toBe(30);
|
||||||
expect(result.features.keywordHitsName).toHaveLength(0);
|
expect(result.features.keywordHitsName).toHaveLength(1);
|
||||||
expect(result.triggerSource).toBe("no-signal");
|
expect(result.triggerSource).toBe("score:30");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("v1.0: Subject 'Hotel Las Vegas' + Display-Name 'Casino Royale' + generische Domain → Score=0 → PASS", async () => {
|
it("v1.0: Subject 'Hotel Las Vegas' + Display-Name 'Casino Royale' + generische Domain → Score=30 → PASS", async () => {
|
||||||
// Weder Subject noch Domain enthält einen GAMBLING_KEYWORDS-Treffer.
|
// Weder Subject noch Domain enthält einen GAMBLING_KEYWORDS-Treffer.
|
||||||
// Display-Name "Casino Royale" hat zwar 'casino', zählt aber v1.0 nicht.
|
// Display-Name "Casino Royale" hat zwar 'casino', zählt aber v1.0 nicht.
|
||||||
const result = await classifyMail({
|
const result = await classifyMail({
|
||||||
@ -616,8 +616,8 @@ describe("classifyMail() — End-to-End Pipeline", () => {
|
|||||||
blockedDomainSet: emptyDomainSet,
|
blockedDomainSet: emptyDomainSet,
|
||||||
});
|
});
|
||||||
expect(result.action).toBe("passed");
|
expect(result.action).toBe("passed");
|
||||||
expect(result.score).toBe(0);
|
expect(result.score).toBe(30);
|
||||||
expect(result.features.keywordHitsName).toHaveLength(0);
|
expect(result.features.keywordHitsName).toHaveLength(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user