feat(recipe-generation): STEG 2 RUNDA 2 prep

- Food-safety prompt + lint: doneness krävs, gyllenbrun räcker inte
- DensityGPerMl för ginger, örter, mushroom, salsa, corn, olives, peas
- RUNDA_2_TARGETS fokuserade på gap-celler (paprika, blandfärs, räkor, torsk, svarta bönor)
- Export-verified script + scale-smoke-test
- Temp-skript borttagna; inga nycklar kvar i kod
This commit is contained in:
Sven (AAMOS AI)
2026-08-10 00:22:36 +07:00
parent 344ec8ee3a
commit 576c451cfe
7 changed files with 877 additions and 589 deletions
+30 -6
View File
@@ -93,13 +93,20 @@ const RAW_PROTEIN_REQUIRING_SAFE_COOKING = new Set([
]);
const SAFE_COOKING_KEYWORDS_SV = [
/\btemperatur\b/i,
/\b°\s*c\b/i,
/\bgrader\b/i,
/\bgenomstekt\b/i,
/\bgenomkokt\b/i,
/\bgenomgrillad\b/i,
/\bgenomv\w+\b/i,
/\binte längre rosa\b/i,
/\binte rosa\b/i,
/\bfiber\w*\b/i,
/\bflagnar\b/i,
/\bgenomkokt\b/i,
/\bkärntemperatur\b/i,
/\binnertemperatur\b/i,
/\btemperatur\b/i,
/\b°\s*c\b/i,
/\bgrader\b/i,
/\btill(?:s)? den är klar\b/i,
/\btill(?:s)? köttet släpper vätskan\b/i,
/\b72\s*c?\b/i,
@@ -110,14 +117,31 @@ const SAFE_COOKING_KEYWORDS_SV = [
/\b70\s*c?\b/i,
];
/** Fraser som INTE räcker som säkerhetsbevis de beskriver bara utseende/tid. */
const UNSAFE_APPEARANCE_ONLY_SV = [
/\bgyllenbrun\b/i,
/\bgyllene\b/i,
/\bkrispig\b/i,
/\bkrispiga\b/i,
/\bfint färg\b/i,
/\bfint färgade\b/i,
/\bfärgad\b/i,
/\bfräsch\b/i,
/\bfräscha\b/i,
];
function requiresSafeCookingStep(ingredientIds: string[]): boolean {
return ingredientIds.some((id) => RAW_PROTEIN_REQUIRING_SAFE_COOKING.has(id));
}
function hasSafeCookingStep(steps: RecipeCandidate["steps"]): boolean {
return steps.some((s) =>
SAFE_COOKING_KEYWORDS_SV.some((re) => re.test(s.instructionSv)),
);
return steps.some((s) => {
const instruction = s.instructionSv;
const hasPositive = SAFE_COOKING_KEYWORDS_SV.some((re) => re.test(instruction));
const onlyAppearance = UNSAFE_APPEARANCE_ONLY_SV.some((re) => re.test(instruction)) &&
!SAFE_COOKING_KEYWORDS_SV.some((re) => re.test(instruction));
return hasPositive && !onlyAppearance;
});
}
/**