chore(docs): update project documentation with deployment and maintenance changes
Updated three documentation files to reflect recent deployment and maintenance improvements: - NEXT_STEPS.md: Added completed steps for 2026-05-20 including deploy script updates, Prisma integration, standardized database cleaning, and production fixes - README.md: Added new deployment flags and maintenance file information for 2026-05-20 release - TEKNISK_BESKRIVNING.md: Added technical details about new deploy flow, database cleaning process, and production hotfix resolution
This commit is contained in:
+37
-28
@@ -1,13 +1,22 @@
|
||||
# Nyheter och förbättringar (2026-05-19)
|
||||
|
||||
- **Flyer-session API i recipe-api:** `flyer-import.controller.ts` exponerar `GET /api/flyer-import/sessions/latest` och `GET /api/flyer-import/sessions/:sessionId`.
|
||||
- **Sessionmappning i service-lager:** `toFlyerImportResponseFromSession(...)` samlar mappning av session + items till standardiserat API-svar.
|
||||
- **HTTP-semantik:** Saknad session returnerar `NotFoundException` (404), vilket förenklar klientlogik och observability.
|
||||
- **Query-optimering:** `getLatestSession(...)` använder en enda Prisma-fråga med `include: items` i stället för dubbelhämtning.
|
||||
- **Flutter-cache-strategi:** Klienten persisterar endast metadata (`sessionId`, filnamn, valda rader) och hämtar full data från backend vid hydrering.
|
||||
- **Teststatus:** `flyer-import.service.spec.ts` verifierar not-found, ägd session och tom latest-session (3/3 gröna).
|
||||
|
||||
# Migrering: Import-funktion → microservice-importer (GENOMFÖRD 2026-04-30)
|
||||
# Nyheter och forbattringar (2026-05-20)
|
||||
|
||||
- **Deploy-flode utokat:** `deploy.sh` har nya flaggor `--migrate` och `--clean-database` for separat Prisma-migrering respektive datarensning.
|
||||
- **Migrate i runtime-miljo:** `--migrate` kor `npx prisma migrate deploy --schema prisma/schema.prisma` i `recipe-api` efter att containrarna startat och backend ar redo.
|
||||
- **Databasrensning utan kategoriforlust:** `--clean-database` kor `backend/prisma/maintenance/clean-database.sql` mot `recipe-db` och bevarar `Category`/anvandare.
|
||||
- **Specialfil for underhall:** Ny fil `backend/prisma/maintenance/clean-database.sql` ar avsedd att vara permanent och uppdateras nar schema/tabeller forandras.
|
||||
- **Hotfix efter produktionstest:** SQL-filen korrigerad till faktiska Prisma-tabeller (`ShoppingListItem`, `InventoryConsumption`, `MealPlanEntry`, `RecipeShare`, `UserProduct`, m.fl.) och felaktiga tabeller (`ShoppingList`, `InventoryTransaction`, `MealPlanItem`) borttagna.
|
||||
- **Operativ erfarenhet:** Forsta korningen misslyckade pa server med `ERROR 1146 ... ShoppingList doesn't exist`; fixen ar incheckad och pushad for robust korning i varierande databaslagen.
|
||||
|
||||
# Nyheter och förbättringar (2026-05-19)
|
||||
|
||||
- **Flyer-session API i recipe-api:** `flyer-import.controller.ts` exponerar `GET /api/flyer-import/sessions/latest` och `GET /api/flyer-import/sessions/:sessionId`.
|
||||
- **Sessionmappning i service-lager:** `toFlyerImportResponseFromSession(...)` samlar mappning av session + items till standardiserat API-svar.
|
||||
- **HTTP-semantik:** Saknad session returnerar `NotFoundException` (404), vilket förenklar klientlogik och observability.
|
||||
- **Query-optimering:** `getLatestSession(...)` använder en enda Prisma-fråga med `include: items` i stället för dubbelhämtning.
|
||||
- **Flutter-cache-strategi:** Klienten persisterar endast metadata (`sessionId`, filnamn, valda rader) och hämtar full data från backend vid hydrering.
|
||||
- **Teststatus:** `flyer-import.service.spec.ts` verifierar not-found, ägd session och tom latest-session (3/3 gröna).
|
||||
|
||||
# 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).
|
||||
@@ -23,23 +32,23 @@ Verifiering:
|
||||
|
||||
Se även: README.md för användarflöde, och AI-FUNKTIONER.md för AI-detaljer.
|
||||
|
||||
# Prisma-migreringar: P3009 recovery och lessons learned
|
||||
|
||||
# Nyheter och förbättringar (2026-05-18)
|
||||
|
||||
- **Flyerimport intern i recipe-api:** `/api/flyer-import/parse` använder nu en intern pipeline i backend (`TextExtractorService` + `AiFlyerParserService` + `FlyerNormalizerService`) och är inte längre beroende av `importer-api`.
|
||||
- **Textutvinning för flyer:** PDF tolkas primärt med `pdf-parse`; vid bildfiler eller skannad PDF-fallback används OCR via `tesseract.js`.
|
||||
- **AI-parse för flyer:** Mistral Tiny används för strukturerad extraktion av flyer-rader till JSON, följt av normalisering av pris/enhet/kategori.
|
||||
- **Timeout/retry-härdning för flyer-AI:** `AiFlyerParserService` har konfigurerbar timeout (`FLYER_AI_TIMEOUT_MS`, default 30000 ms) och retry med successivt kortare textfönster (`FLYER_AI_RETRIES`, default 2) för att minska 503 vid långsamma modellanrop.
|
||||
|
||||
- **Backend linting i CI:** ESLint är infört för backend (`backend/eslint.config.mjs`, `npm run lint`) och körs i `.github/workflows/test.yml`.
|
||||
- **Flutter lint-konfiguration:** `flutter/analysis_options.yaml` är tillagd och inkluderar `package:flutter_lints/flutter.yaml`.
|
||||
- **Prisma query logging (miljöstyrd):** `PrismaService` konfigurerar loggnivåer via env-variabeln `PRISMA_LOG_QUERIES`.
|
||||
- **Runtime-konfiguration:** `compose.yml` exponerar `PRISMA_LOG_QUERIES` till `recipe-api` med default `0`.
|
||||
- **Aktivering i testmiljö:** Sätt `PRISMA_LOG_QUERIES=1` och starta om `recipe-api` för att få SQL query-loggar.
|
||||
- **Verifierad testjustering:** `receipt-import.security.spec.ts` validerar nu `UnauthorizedException` vid saknat användar-id i `upsertUnitMapping`.
|
||||
|
||||
# Drift och deploy (2026-05-11)
|
||||
# Prisma-migreringar: P3009 recovery och lessons learned
|
||||
|
||||
# Nyheter och förbättringar (2026-05-18)
|
||||
|
||||
- **Flyerimport intern i recipe-api:** `/api/flyer-import/parse` använder nu en intern pipeline i backend (`TextExtractorService` + `AiFlyerParserService` + `FlyerNormalizerService`) och är inte längre beroende av `importer-api`.
|
||||
- **Textutvinning för flyer:** PDF tolkas primärt med `pdf-parse`; vid bildfiler eller skannad PDF-fallback används OCR via `tesseract.js`.
|
||||
- **AI-parse för flyer:** Mistral Tiny används för strukturerad extraktion av flyer-rader till JSON, följt av normalisering av pris/enhet/kategori.
|
||||
- **Timeout/retry-härdning för flyer-AI:** `AiFlyerParserService` har konfigurerbar timeout (`FLYER_AI_TIMEOUT_MS`, default 30000 ms) och retry med successivt kortare textfönster (`FLYER_AI_RETRIES`, default 2) för att minska 503 vid långsamma modellanrop.
|
||||
|
||||
- **Backend linting i CI:** ESLint är infört för backend (`backend/eslint.config.mjs`, `npm run lint`) och körs i `.github/workflows/test.yml`.
|
||||
- **Flutter lint-konfiguration:** `flutter/analysis_options.yaml` är tillagd och inkluderar `package:flutter_lints/flutter.yaml`.
|
||||
- **Prisma query logging (miljöstyrd):** `PrismaService` konfigurerar loggnivåer via env-variabeln `PRISMA_LOG_QUERIES`.
|
||||
- **Runtime-konfiguration:** `compose.yml` exponerar `PRISMA_LOG_QUERIES` till `recipe-api` med default `0`.
|
||||
- **Aktivering i testmiljö:** Sätt `PRISMA_LOG_QUERIES=1` och starta om `recipe-api` för att få SQL query-loggar.
|
||||
- **Verifierad testjustering:** `receipt-import.security.spec.ts` validerar nu `UnauthorizedException` vid saknat användar-id i `upsertUnitMapping`.
|
||||
|
||||
# Drift och deploy (2026-05-11)
|
||||
|
||||
- **Flutter build-artifacts:** Byggda filer i `flutter/build/` och `.flutter-plugins-dependencies` ska inte versionshanteras. Vid deploy på server: kör `git restore flutter/build flutter/.flutter-plugins-dependencies` och `git clean -fd flutter/build` innan `git pull`.
|
||||
- **Vanliga fel:** Om du får felmeddelandet "Your local changes to the following files would be overwritten by merge", beror det på att genererade filer är modifierade lokalt. Se till att alltid rensa dessa innan uppdatering.
|
||||
@@ -2114,4 +2123,4 @@ För att aktivera Prisma query logging i testmiljön:
|
||||
> **Notera:**
|
||||
> - Aktivera endast i test/staging, inte i produktion.
|
||||
> - Loggarna kan vara omfattande och påverka prestanda.
|
||||
> - Variabeln är avsiktligt inte dokumenterad i huvudkonfigurationen för att undvika oavsiktlig aktivering.
|
||||
> - Variabeln är avsiktligt inte dokumenterad i huvudkonfigurationen för att undvika oavsiktlig aktivering.
|
||||
|
||||
Reference in New Issue
Block a user