fix(inventory): sluta gissa utgangsdatum + las 2-siffriga bast-fore-stamplar
CI / Typecheck, test & build (push) Failing after 46s
CI / Typecheck, test & build (push) Failing after 46s
BUG: forseglad vara utan tryckt datum fick fabricerat utgang (purchasedAt + shelfLifeGuidance, som ar hallbarhet EFTER oppning) -> falska 'gar ut snart'-varningar OCH gav sken av att datum inte lastes. Nu: ingen data -> unknown (hedrar appens egen princip 'aldrig gissa'). parseDate laser aven YY-MM-DD/YYMMDD/YYYYMMDD (svenska stamplar) som forr slangdes. Regressionstester tillagda. 36/36 gront.
This commit is contained in:
@@ -79,15 +79,11 @@ export function classifyExpiry(input: ExpiryInput, today: Date = new Date()): Ex
|
||||
factor: "opened_guidance",
|
||||
date: new Date(opened.getTime() + guidanceDays * DAY_MS),
|
||||
});
|
||||
} else if (!useBy && !bestBefore && guidanceDays != null) {
|
||||
const purchased = parse(input.purchasedAt);
|
||||
if (purchased) {
|
||||
candidates.push({
|
||||
factor: "purchased_guidance",
|
||||
date: new Date(purchased.getTime() + guidanceDays * DAY_MS),
|
||||
});
|
||||
}
|
||||
}
|
||||
// shelfLifeGuidance = hållbarhet EFTER öppning (entities.ts). Vi gissar ALDRIG
|
||||
// utgång från inköpsdatum på en oöppnad vara — utan riktigt tryckt datum blir
|
||||
// status "unknown" (spec: "ingen data → unknown, aldrig gissning"). Den gamla
|
||||
// purchased_guidance-grenen gav falska "går ut snart"-varningar på förseglade varor.
|
||||
|
||||
if (candidates.length === 0) {
|
||||
return { status: "unknown", daysLeft: null, limitingFactor: "none", pastBestBefore: false };
|
||||
|
||||
@@ -54,6 +54,16 @@ describe("bäst före-klassning (spec §13)", () => {
|
||||
it("ingen data → unknown, aldrig gissning", () => {
|
||||
expect(classifyExpiry({}, TODAY).status).toBe("unknown");
|
||||
});
|
||||
it("förseglad vara: inköpsdatum + riktvärde men INGET tryckt datum → unknown", () => {
|
||||
// Regressionsvakt: gamla purchased_guidance-grenen gissade utgång från inköp
|
||||
// på oöppnade varor → falska "går ut snart"-varningar (Bug B).
|
||||
const result = classifyExpiry(
|
||||
{ purchasedAt: "2026-08-01", storageLocationType: "fridge", shelfLifeGuidance: { fridge: 7 } },
|
||||
TODAY,
|
||||
);
|
||||
expect(result.status).toBe("unknown");
|
||||
expect(result.limitingFactor).toBe("none");
|
||||
});
|
||||
it("mjölkprincipen: gick ut igår → använd sinnena, inte soptunnan", () => {
|
||||
// Bäst före är en KVALITETSgräns: mjölken som gick ut igår är inte
|
||||
// automatiskt dålig – användaren ska lukta/smaka. Appen får aldrig
|
||||
|
||||
Reference in New Issue
Block a user