diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 4da564e..b2edd87 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -1,12 +1,12 @@ import { Module } from '@nestjs/common'; -import { QuickImportModule } from './quick-import/quick-import.module'; +import { WebScrapingModule } from './web-scraping-service/web-scraping.module'; import { RecipesModule } from './recipes/recipes.module'; -import { DocumentImportModule } from './document-import/document-import.module'; +import { DocumentServiceModule } from './document-service/document-service.module'; @Module({ imports: [ - DocumentImportModule, - QuickImportModule, + DocumentServiceModule, + WebScrapingModule, RecipesModule, ], }) diff --git a/backend/src/document-import/document-import.controller.ts b/backend/src/document-service/controllers/document-import.controller.ts similarity index 87% rename from backend/src/document-import/document-import.controller.ts rename to backend/src/document-service/controllers/document-import.controller.ts index a82b5a6..15afdb9 100644 --- a/backend/src/document-import/document-import.controller.ts +++ b/backend/src/document-service/controllers/document-import.controller.ts @@ -6,7 +6,7 @@ import { BadRequestException, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; -import { DocumentImportService, DocumentImportResult } from './document-import.service'; +import { DocumentImportService, DocumentImportResult } from '../services/document-import.service'; @Controller('api/document-import') export class DocumentImportController { diff --git a/backend/src/document-import/document-import.module.ts b/backend/src/document-service/document-service.module.ts similarity index 100% rename from backend/src/document-import/document-import.module.ts rename to backend/src/document-service/document-service.module.ts diff --git a/backend/src/document-import/parsers/document.parser.ts b/backend/src/document-service/parsers/document.parser.ts similarity index 100% rename from backend/src/document-import/parsers/document.parser.ts rename to backend/src/document-service/parsers/document.parser.ts diff --git a/backend/src/document-import/parsers/pdf.parser.ts b/backend/src/document-service/parsers/pdf.parser.ts similarity index 100% rename from backend/src/document-import/parsers/pdf.parser.ts rename to backend/src/document-service/parsers/pdf.parser.ts diff --git a/backend/src/document-import/document-import.service.ts b/backend/src/document-service/services/document-import.service.ts similarity index 100% rename from backend/src/document-import/document-import.service.ts rename to backend/src/document-service/services/document-import.service.ts diff --git a/backend/src/document-service/services/document-service.module.ts b/backend/src/document-service/services/document-service.module.ts new file mode 100644 index 0000000..a852956 --- /dev/null +++ b/backend/src/document-service/services/document-service.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { DocumentImportController } from './controllers/document-import.controller'; +import { DocumentImportService } from './services/document-import.service'; + +@Module({ + controllers: [DocumentImportController], + providers: [DocumentImportService], +}) +export class DocumentServiceModule {} \ No newline at end of file diff --git a/backend/src/quick-import/quick-import.controller.ts b/backend/src/web-scraping-service/controllers/quick-import.controller.ts similarity index 78% rename from backend/src/quick-import/quick-import.controller.ts rename to backend/src/web-scraping-service/controllers/quick-import.controller.ts index 35fa055..f0d9195 100644 --- a/backend/src/quick-import/quick-import.controller.ts +++ b/backend/src/web-scraping-service/controllers/quick-import.controller.ts @@ -1,5 +1,5 @@ import { Controller, Post, Body } from '@nestjs/common'; -import { QuickImportService, QuickImportResult } from './quick-import.service'; +import { QuickImportService, QuickImportResult } from '../services/quick-import.service'; @Controller('quick-import') export class QuickImportController { diff --git a/backend/src/quick-import/parsers/base.parser.ts b/backend/src/web-scraping-service/parsers/base.parser.ts similarity index 100% rename from backend/src/quick-import/parsers/base.parser.ts rename to backend/src/web-scraping-service/parsers/base.parser.ts diff --git a/backend/src/quick-import/parsers/generic.parser.ts b/backend/src/web-scraping-service/parsers/generic.parser.ts similarity index 100% rename from backend/src/quick-import/parsers/generic.parser.ts rename to backend/src/web-scraping-service/parsers/generic.parser.ts diff --git a/backend/src/quick-import/parsers/ica.parser.ts b/backend/src/web-scraping-service/parsers/ica.parser.ts similarity index 100% rename from backend/src/quick-import/parsers/ica.parser.ts rename to backend/src/web-scraping-service/parsers/ica.parser.ts diff --git a/backend/src/quick-import/quick-import.service.ts b/backend/src/web-scraping-service/services/quick-import.service.ts similarity index 100% rename from backend/src/quick-import/quick-import.service.ts rename to backend/src/web-scraping-service/services/quick-import.service.ts diff --git a/backend/src/web-scraping-service/services/web-scraping.module.ts b/backend/src/web-scraping-service/services/web-scraping.module.ts new file mode 100644 index 0000000..4a05346 --- /dev/null +++ b/backend/src/web-scraping-service/services/web-scraping.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { QuickImportController } from './controllers/quick-import.controller'; +import { QuickImportService } from './services/quick-import.service'; + +@Module({ + controllers: [QuickImportController], + providers: [QuickImportService], +}) +export class WebScrapingModule {} \ No newline at end of file diff --git a/backend/src/quick-import/quick-import.module.ts b/backend/src/web-scraping-service/web-scraping.module.ts similarity index 100% rename from backend/src/quick-import/quick-import.module.ts rename to backend/src/web-scraping-service/web-scraping.module.ts diff --git a/next_steps_MSImporter.md b/next_steps_MSImporter.md new file mode 100644 index 0000000..b5f49ef --- /dev/null +++ b/next_steps_MSImporter.md @@ -0,0 +1,103 @@ +# Plan för vidareutveckling av Microservice Importer + +För att utveckla **Microservice Importer** vidare kan vi fokusera på att förbättra befintliga funktioner, lägga till nya funktioner, optimera arkitekturen och säkerställa skalbarhet. Nedan är en strukturerad plan för projektets fortsatta utveckling. + +--- + +## 1. Förbättra befintliga funktioner + +### a. PDF-import och konvertering +- **OCR-implementering**: Slutför OCR-stödet för skannade PDF-filer. Använd bibliotek som Tesseract.js för att extrahera text från bilder. +- **Förbättrad metadatahantering**: Lägg till stöd för fler metadatafält, såsom författare, nyckelord och språk. +- **Förbättrad felhantering**: Utöka felmeddelanden för att ge tydligare feedback vid problem med PDF-filer. + +### b. Webb-skrapning +- **Utöka stöd för webbplatser**: Lägg till specifika parsers för fler populära receptwebbplatser. +- **Förbättrad robusthet**: Hantera dynamiskt innehåll och JavaScript-renderade sidor med verktyg som Puppeteer. +- **Caching**: Implementera caching för att minska belastningen på extern webbplatser och förbättra prestanda. + +--- + +## 2. Lägga till nya funktioner + +### a. Stöd för fler dokumentformat +- **Word-dokument**: Lägg till stöd för att importera och konvertera `.docx`-filer till Markdown. +- **Bildfiler**: Implementera OCR för att extrahera text från bilder (t.ex. `.jpg`, `.png`). + +### b. Databasintegration +- **Lokal databas**: Lägg till stöd för att spara konverterade dokument och metadata i en databas (t.ex. PostgreSQL eller MongoDB). +- **Sökfunktion**: Implementera en sökfunktion för att enkelt hitta sparade dokument. + +### c. Användarautentisering +- **Inloggning**: Lägg till autentisering för att skydda API:et och möjliggöra användarspecifika dokument. +- **Rollbaserad åtkomst**: Implementera roller för att styra åtkomst till olika funktioner. + +--- + +## 3. Optimera arkitekturen + +### a. Backend +- **Modulär struktur**: Se till att varje funktion är tydligt separerad i moduler för att underlätta underhåll och skalning. +- **Prestandaoptimering**: Använd caching och asynkron bearbetning för att förbättra prestandan vid stora filuppladdningar. + +### b. Frontend +- **Förbättrad användarupplevelse**: Lägg till en förhandsgranskning av konverterade dokument innan de sparas. +- **Responsiv design**: Säkerställ att gränssnittet fungerar bra på mobila enheter. + +--- + +## 4. Testning och kvalitetssäkring + +### a. Enhetstestning +- **Backend**: Skriv enhetstester för alla tjänster och parsers. +- **Frontend**: Testa komponenter och API-anrop. + +### b. Integrationstestning +- **API-tester**: Verifiera att alla API-endpoints fungerar som förväntat. +- **E2E-tester**: Testa hela flödet från filuppladdning till visning av konverterat dokument. + +### c. Säkerhetstestning +- **Säkerhetsgranskning**: Kontrollera att API:et är skyddat mot vanliga säkerhetshot, såsom SQL-injektioner och CSRF-attacker. + +--- + +## 5. Dokumentation och användarstöd + +### a. API-dokumentation +- **Swagger/OpenAPI**: Lägg till automatiskt genererad API-dokumentation för att underlätta integration med andra system. + +### b. Användarhandbok +- **Installationsguide**: Uppdatera `README.md` med tydliga instruktioner för installation och användning. +- **Felsökningsguide**: Lägg till vanliga problem och lösningar. + +--- + +## 6. Skalbarhet och drift + +### a. Containerisering +- **Docker**: Se till att alla tjänster är korrekt containeriserade för enkel distribution. +- **Orkestrering**: Använd Kubernetes för att hantera skalning och hög tillgänglighet. + +### b. Övervakning och loggning +- **Loggning**: Implementera centraliserad loggning för att enkelt kunna felsöka problem. +- **Övervakning**: Använd verktyg som Prometheus och Grafana för att övervaka prestanda och tillgänglighet. + +--- + +## 7. Framtida utökningar + +### a. AI-integration +- **Automatisk sammanfattning**: Använd NLP för att automatiskt sammanfatta konverterade dokument. +- **Smart kategorisering**: Klassificera dokument baserat på innehåll. + +### b. Integration med molntjänster +- **Molnupladdning**: Lägg till stöd för att ladda upp dokument till molntjänster som Google Drive eller Dropbox. + +--- + +## Prioriteringsförslag +1. **OCR-implementering** (hög prioritet) +2. **Databasintegration** (medel prioritet) +3. **Användarautentisering** (medel prioritet) +4. **Stöd för fler dokumentformat** (låg prioritet) +5. **AI-integration** (framtida utökning) \ No newline at end of file