5.2 KiB
5.2 KiB
Session Checkpoint (2026-05-12)
Föregående checkpoint: SESSION_CHECKPOINT_2026-05-11.md
Status
- Alla ändringar är lokalt implementerade och verifierade (tester gröna, inga type-fel, 0 npm-sårbarheter).
- Ej committat/pushat.
Klart i denna session
1. Alias-scopehantering (admin kan höja privat → globalt)
Backend (receipt-alias):
UpdateReceiptAliasDtoutökat medisGlobal?: boolean(@IsBoolean()).receipt-alias.service.ts:update()hanterar scope-byte med:- Admin-only-regel: vanlig användare →
ForbiddenException. - Global → privat utan owner →
BadRequestException. - Beräknar
nextIsGlobal+nextOwnerIdkorrekt och sparar.
- Admin-only-regel: vanlig användare →
- Konfliktcheck baseras på nästa scope, inte gammalt.
Admin-UI (flutter/lib/features/admin/presentation/admin_aliases_panel.dart):
- Edit-dialog har scope-switch.
- Switch är låst (disabled) om aliaset redan är globalt — endast privat → global är möjligt.
- Subtitel förklarar läget dynamiskt.
- Bekräftelse-chip visas i listan i 6 sekunder efter genomförd scope-ändring.
_scopeChangedAliasId/_scopeChangedToGlobalstate-fält med Timer + dispose-cleanup.
Admin repository (flutter/lib/features/admin/data/admin_repository.dart):
updateReceiptAliastar emotbool? isGlobaloch inkluderar det i PATCH-body.
Tester (16/16 passerar):
receipt-alias.service.spec.ts: admin kan höja privat → global; användare blockeras; global → privat utan owner gerBadRequestException.receipt-alias.security.spec.ts: controller delegerar DTO medisGlobalkorrekt.
2. Kategori-chip fallback
- Den gemensamma chip-buildern returnerar nu
SizedBox.shrink()vid tom kategoriväg — "okänd"-chip visas inte längre i admin- eller importpaneler.
3. Beroendehärdning
recipe-app backend:
- Uppgraderat till NestJS 11 (
@nestjs/common/core/platform-express/testing11.1.19,@nestjs/jwt11.0.2,@nestjs/passport11.0.5). multeruppgraderat till 2.1.1 (åtgärdar high-severity CVE i transitivt beroende).@types/express→ 5.0.5,@nestjs/cli→ 11.0.21,@nestjs/schematics→ 11.1.0.jwt.strategy.ts: fail-fast check förJWT_SECRET+ typedsecretOrKey.JWT_SECRET: ci-test-secretsatt i CI-env i.gitea/workflows/test.yml.npm audit --audit-level=high= 0 sårbarheter.
microservice-importer backend:
- Samma uppgradering till Nest 11 + multer 2.1.1 +
@types/express5. npm audit --audit-level=high= 0 sårbarheter.
4. Quality-gate scripts
recipe-app/backend/package.json – nya scripts:
| Script | Syfte |
|---|---|
prisma:validate |
prisma validate --schema prisma/schema.prisma |
typecheck |
tsc --noEmit |
audit:high |
npm audit --audit-level=high |
quality:ci |
Kedja: validate → generate → typecheck → test → build → audit |
recipe-app/.gitea/workflows/test.yml – uppdateringar:
- Prisma-steg kör
npm run prisma:validate. - Audit-steg kör
npm run audit:high. - Nytt Typecheck backend-steg i PR-snabbjobb och push-fulljobb.
microservice-importer/backend/package.json – nya scripts:
| Script | Syfte |
|---|---|
typecheck |
tsc --noEmit |
audit:high |
npm audit --audit-level=high |
quality:ci |
Kedja: typecheck → build → audit |
microservice-importer/.github/workflows/test.yml – uppdateringar:
npm install→npm ci.- Prisma/test-steg ersatta med: typecheck → build → audit.
continue-on-errorborttagen från build.
Ändrade filer (recipe-app)
backend/src/receipt-alias/dto/update-receipt-alias.dto.tsbackend/src/receipt-alias/receipt-alias.service.tsbackend/src/receipt-alias/receipt-alias.service.spec.tsbackend/src/receipt-alias/receipt-alias.security.spec.tsbackend/src/auth/jwt.strategy.tsbackend/package.jsonbackend/package-lock.json.gitea/workflows/test.ymlflutter/lib/features/admin/data/admin_repository.dartflutter/lib/features/admin/presentation/admin_aliases_panel.dartTEKNISK_BESKRIVNING.mdNEXT_STEPS.md_archive/docs/SESSION_CHECKPOINT_2026-05-12.md(denna fil)
Ändrade filer (microservice-importer)
backend/package.json.github/workflows/test.ymlTEKNISK_BESKRIVNING.mdnext_steps_MSImporter.md
Snabb återstart nästa gång
# Verifiera status
cd recipe-app/backend
npm run quality:ci
cd ../../microservice-importer/backend
npm run quality:ci
Flutter-analys:
cd recipe-app/flutter
flutter analyze lib/features/admin/presentation/admin_aliases_panel.dart
Alias-tester:
cd recipe-app/backend
npm test -- src/receipt-alias/receipt-alias.service.spec.ts src/receipt-alias/receipt-alias.security.spec.ts --runInBand
Nästa rekommenderade steg
- Commit och push av samtliga lokala ändringar.
- Deploy till produktionsmiljö och verifiera alias-flöde med riktiga kvitton.
- Manuell verifiering: admin kan höja privat → globalt via UI; vanlig användare kan inte.
- Widgettester för alias-panelens switch (privat → global, disabled-state om globalt).