diff --git a/backend/Dockerfile b/backend/Dockerfile index de97399..c0b1946 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -2,8 +2,8 @@ FROM node:20-alpine WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci --omit=dev +COPY package.json ./ +RUN npm install --omit=dev COPY . . diff --git a/backend/analytics.json b/backend/analytics.json deleted file mode 100644 index 063b41d..0000000 --- a/backend/analytics.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "events": [], - "_counter": 0 -} diff --git a/backend/db.js b/backend/db.js index 3ba7ca0..31d0c33 100644 --- a/backend/db.js +++ b/backend/db.js @@ -13,7 +13,11 @@ function loadDB() { } function saveDB(data) { - writeFileSync(DB_FILE, JSON.stringify(data, null, 2)); + try { + writeFileSync(DB_FILE, JSON.stringify(data, null, 2)); + } catch (e) { + console.error('DB Schreibfehler:', e.message); + } } let db = loadDB(); diff --git a/backend/package.json b/backend/package.json index a94f1bc..d845ce4 100644 --- a/backend/package.json +++ b/backend/package.json @@ -10,7 +10,6 @@ "bcryptjs": "^2.4.3", "cors": "^2.8.5", "express": "^4.21.0", - "jsonwebtoken": "^9.0.2", - "node-fetch": "^3.3.2" + "jsonwebtoken": "^9.0.2" } } diff --git a/backend/prompts/extractRecipe.js b/backend/prompts/extractRecipe.js index 9f15f2e..6f11aa4 100644 --- a/backend/prompts/extractRecipe.js +++ b/backend/prompts/extractRecipe.js @@ -1,25 +1,18 @@ -export const SYSTEM_PROMPT = `Du bist ein Assistent der aus TikTok-Videobeschreibungen Rezepte extrahiert. -Du antwortest NUR mit validem JSON, keinem anderen Text. +export const SYSTEM_PROMPT = `Du bist ein Experte für die Rezepteextraktion. Analysiere den gegebenen Text und extrahiere ein Rezept daraus. -Das JSON muss dieses Schema haben: +Antworte NUR mit einem JSON-Objekt in diesem Format (kein Markdown, kein Text davor oder danach): { "name": "Name des Rezepts", "description": "Kurze Beschreibung des Gerichts", - "category": "Frühstück|Hauptgericht|Dessert|Snack|Getränk|Sonstiges", - "ingredients": [ - { "name": "Zutat", "amount": "Menge", "unit": "Einheit" } - ], - "steps": [ - "Schritt 1 Beschreibung", - "Schritt 2 Beschreibung" - ] + "ingredients": ["Zutat 1 (Menge)", "Zutat 2 (Menge)"], + "steps": ["Schritt 1", "Schritt 2"], + "category": "Kategorie (z.B. Hauptgericht, Dessert, Snack, Suppe, Salat, Getränk, Sonstiges)" } Regeln: -- Extrahiere alle Zutaten mit Menge und Einheit aus dem Text -- Wenn keine Menge angegeben ist, setze amount auf "" -- Wenn keine Einheit angegeben ist, setze unit auf "" -- Kategorie muss eines dieser sein: Frühstück, Hauptgericht, Dessert, Snack, Getränk, Sonstiges -- steps ist eine sortierte Liste der Zubereitungsschritte -- Wenn du die Zubereitung nicht erkennen kannst, gib einen sinnvollen Standard basierend auf dem Rezeptnamen -- Gib NUR das JSON-Objekt zurück, kein Markdown, kein Code-Block`; +- Alle Texte auf Deutsch +- Mengenangaben beibehalten wenn vorhanden +- Schritte logisch sortieren +- Kategorie sinnvoll zuordnen +- Wenn Informationen fehlen, sinnvolle Werte verwenden +- Antworte NUR mit dem JSON-Objekt`; diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 717a47c..b00690f 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -2,8 +2,8 @@ FROM node:20-alpine AS build WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci +COPY package.json ./ +RUN npm install COPY . . RUN npm run build diff --git a/frontend/nginx.conf b/frontend/nginx.conf index f975562..10eb869 100644 --- a/frontend/nginx.conf +++ b/frontend/nginx.conf @@ -6,7 +6,7 @@ server { index index.html; location /api/ { - proxy_pass http://backend:3500; + proxy_pass http://backend:3001; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;