diff --git a/README.md b/README.md index d2f50eb5..f26227c5 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ En fullstack-applikation för hantering av hemmavaror och recept. Håll koll på - [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md): teknisk referens för drift och utveckling. - [NEXT_STEPS.md](NEXT_STEPS.md): gemensam roadmap och prioriteringar. - [produktlansering.md](produktlansering.md): releasechecklista. -- [migrering-MSI.md](migrering-MSI.md): migreringshistorik för importer. + - Migrerings- och driftinstruktioner finns nu i [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md). (Tidigare migrering-MSI.md är borttagen då migreringen är klar.) - [flutter/README.md](flutter/README.md): Flutter ur användarperspektiv. - [flutter/teknisk_beskrivning_flutter.md](flutter/teknisk_beskrivning_flutter.md): Flutter teknisk referens. - [flutter/next_steps_flutter.md](flutter/next_steps_flutter.md): Flutter roadmap. diff --git a/TEKNISK_BESKRIVNING.md b/TEKNISK_BESKRIVNING.md index e702c815..047c273f 100644 --- a/TEKNISK_BESKRIVNING.md +++ b/TEKNISK_BESKRIVNING.md @@ -1,4 +1,52 @@ -# Session 2026-05-06: User-scoped AI-fallback, admin-toggles och refaktor +# Migrering: Import-funktion → microservice-importer (GENOMFÖRD 2026-04-30) + +Recipe-apps importflöde (quick-import, parse-markdown, receipt-import) är nu migrerat till en separat microservice-importer: +- All URL-skrapning, OCR, PDF-parsning och AI-kvittoparsning sker i microservice-importer (NestJS, Docker, port 3001 internt). +- Backend-till-backend-integration: recipe-app anropar microservice-importer via HTTP, frontend är oförändrad. +- OCR via tesseract.js och Alpine-paket. +- Compose-länkning och healthchecks på plats. +- Bildoptimering sker fortfarande i recipe-app vid sparande. +- Lessons learned: Separat import-microservice ger enklare scaling, robustare deploy och tydligare ansvarsfördelning. + +Verifiering: +- Alla endpoints testade (ICA-URL, PDF, bild, markdown, kvitto) och fungerar. +- Auth och proxy-routes oförändrade. + +Se även: README.md för användarflöde, och AI-FUNKTIONER.md för AI-detaljer. + +# Prisma-migreringar: P3009 recovery och lessons learned + +**Problem:** +Prisma migrationer kan fastna i failed state (P3009) om en migration körts med fel SQL-citering (t.ex. "User" istället för `User` i MySQL) eller om deploy avbryts mitt i en migrering. + +**Symptom:** +``` +migrate found failed migrations in the target database, new migrations will not be applied. The `20260506144000_add_ai_engine_enabled` migration ... failed +``` + +**Lösning/playbook:** +1. Rätta migrationsfilen så att den använder backticks (`) för tabell- och kolumnnamn (MySQL-stil). +2. Kör: + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate resolve --rolled-back 20260506144000_add_ai_engine_enabled --schema prisma/schema.prisma" + docker exec recipe-api sh -lc "cd /app && npx prisma migrate deploy --schema prisma/schema.prisma" + ``` +3. Om deploy klagar på duplicate column (dvs kolumnen finns redan): + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate resolve --applied 20260506144000_add_ai_engine_enabled --schema prisma/schema.prisma" + docker exec recipe-api sh -lc "cd /app && npx prisma migrate deploy --schema prisma/schema.prisma" + ``` +4. Verifiera status: + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate status --schema prisma/schema.prisma" + ``` + +**Lessons learned:** +- Kontrollera alltid SQL-citering i migrationsfiler (MySQL kräver backticks, inte dubbla citattecken). +- Vid P3009: använd `migrate resolve` för att markera migrationen som rolled-back eller applied beroende på DB-läge. +- Kör alltid migrationskommandon i rätt container/miljö för att undvika env- och version-mismatch. + +# Session 2026-05-06: User-scoped AI-fallback, admin-toggles och refaktor Denna session har genomfört en omfattande refaktor och utbyggnad av AI-funktionalitet i Recipe App, med fokus på: diff --git a/migrering-MSI.md b/migrering-MSI.md index 82acea51..a4ac7fa3 100644 --- a/migrering-MSI.md +++ b/migrering-MSI.md @@ -1,3 +1,36 @@ +This file has been removed as all relevant information has been migrated. +# Prisma P3009 recovery (MySQL, migrationer) + +**Problem:** +Prisma migrationer kan fastna i failed state (P3009) om en migration körts med fel SQL-citering (t.ex. "User" istället för `User` i MySQL) eller om deploy avbryts mitt i en migrering. + +**Symptom:** +``` +migrate found failed migrations in the target database, new migrations will not be applied. The `20260506144000_add_ai_engine_enabled` migration ... failed +``` + +**Lösning/playbook:** +1. Rätta migrationsfilen så att den använder backticks (`) för tabell- och kolumnnamn (MySQL-stil). +2. Kör: + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate resolve --rolled-back 20260506144000_add_ai_engine_enabled --schema prisma/schema.prisma" + docker exec recipe-api sh -lc "cd /app && npx prisma migrate deploy --schema prisma/schema.prisma" + ``` +3. Om deploy klagar på duplicate column (dvs kolumnen finns redan): + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate resolve --applied 20260506144000_add_ai_engine_enabled --schema prisma/schema.prisma" + docker exec recipe-api sh -lc "cd /app && npx prisma migrate deploy --schema prisma/schema.prisma" + ``` +4. Verifiera status: + ```bash + docker exec recipe-api sh -lc "cd /app && npx prisma migrate status --schema prisma/schema.prisma" + ``` + +**Lessons learned:** +- Kontrollera alltid SQL-citering i migrationsfiler (MySQL kräver backticks, inte dubbla citattecken). +- Vid P3009: använd `migrate resolve` för att markera migrationen som rolled-back eller applied beroende på DB-läge. +- Kör alltid migrationskommandon i rätt container/miljö för att undvika env- och version-mismatch. + # Session 2026-05-06: Migreringar för user-scoped AI och premium Denna session: