fix(ai): las aldrig gissade utgangsdatum – skarpt prompt + rimlighetssparr
Gemini gissade fel artal pa kryptiska tryckstamplar (t.ex. "2024" pa en farsk gradde) vilket kan trigga falska "utgangen"-varningar. Tva lager: - Prompt: modellen far aldrig gissa artal, returnerar null vid tvetydiga/ kryptiska koder (buildFridgePrompt + buildExpiryPrompt). - Kod: ny isPlausibleFoodDate() nollar orimligt gamla/framtida datum i toDetectedItems. Hellre inget datum an ett felaktigt (spec §13). promptVersion -> gemini-fridge-v2. Tester 7/7 grona. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WZdew6cWn1MeHqoYWFfxzo
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { GeminiAamosClient, MemoryBudgetStore, parseDate } from "../src/gemini.js";
|
||||
import { GeminiAamosClient, MemoryBudgetStore, parseDate, isPlausibleFoodDate } from "../src/gemini.js";
|
||||
import type { AamosRequestEnvelope } from "../src/tasks.js";
|
||||
|
||||
const FIXTURE_RESPONSE = {
|
||||
@@ -170,3 +170,19 @@ describe("parseDate (svenska bäst-före-stämplar)", () => {
|
||||
expect(parseDate("skräp")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe("isPlausibleFoodDate (rimlighetsspärr mot feltolkade årtal)", () => {
|
||||
const TODAY = new Date("2026-08-18T00:00:00Z");
|
||||
it("släpper igenom rimliga datum (nära i tid och framåt)", () => {
|
||||
expect(isPlausibleFoodDate("2026-09-04", TODAY)).toBe(true); // ~2 v framåt
|
||||
expect(isPlausibleFoodDate("2026-08-01", TODAY)).toBe(true); // nyss passerat
|
||||
expect(isPlausibleFoodDate("2027-06-01", TODAY)).toBe(true); // torrvara framåt
|
||||
});
|
||||
it("kastar orimliga datum – grovt feltolkat årtal", () => {
|
||||
// Grädden i fälttestet: stämpel lästes som 2024 → ~2 år bak = feltolkning, inte utgången vara.
|
||||
expect(isPlausibleFoodDate("2024-09-26", TODAY)).toBe(false);
|
||||
expect(isPlausibleFoodDate("2035-01-01", TODAY)).toBe(false); // orimligt långt fram
|
||||
expect(isPlausibleFoodDate(null, TODAY)).toBe(false);
|
||||
expect(isPlausibleFoodDate("skräp", TODAY)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user