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
+7
View File
@@ -403,6 +403,12 @@ export class GeminiAamosClient implements AamosClient {
let parsed: z.infer<typeof generateRecipeCandidatesOutput>;
try {
const json = JSON.parse(text);
// Defensiv normalisering: Gemini kan returnera rejectedPrompts som objekt istället för strängar.
if (Array.isArray(json.rejectedPrompts)) {
json.rejectedPrompts = json.rejectedPrompts.map((p: unknown) =>
typeof p === "string" ? p : JSON.stringify(p)
);
}
const safe = generateRecipeCandidatesOutput.safeParse(json);
if (!safe.success) {
return { status: "failed", output: null, error: `Gemini-svar matchar inte schema: ${safe.error.message}` };
@@ -474,6 +480,7 @@ Begränsningar:
Regler:
- Recepten ska vara realistiska vardagsrätter för svenska hushåll.
- Stegen ska vara tydliga, med rimliga tider och temperaturer.
- MATSÄKERHET recept som innehåller rå fågel, rått fläsk/köttfärs, rå fisk/skaldjur eller råa ägg MÅSTE innehålla ett explicit steg som beskriver att proteinet blir genomstekt/genomkokt. Använd formuleringar som: "stek tills kycklingen är genomstekt och inte längre rosa i mitten", "koka tills fisken flagnar", "stek tills köttfärsen är genomstekt", eller ange kärn-/innertemperatur i °C. Det räcker INTE med enbart utseende (t.ex. "gyllenbrun") eller enbart tid.
- Använd ENDAST dessa exakta enhetskoder: GRAM, KILOGRAM, MILLILITER, DECILITER, LITER, TEASPOON, TABLESPOON, CUP_US, COUNT, PORTION, PINCH, SLICE, CLOVE, CAN, PACKAGE. Aldrig "g", "dl", "msk", "tsk", "st".
- Formuleringen ska vara mjölkprincips-vänlig: ingen svinnskam, inget "släng".
- Varje ingrediens MÅSTE finnas i katalogen ovan.