Refactor and enhance document and recipe import functionality
- Removed the QuickImport module and service to streamline the codebase. - Introduced DocumentImport module, service, and controller for handling PDF uploads and conversions to Markdown. - Added PdfParser for parsing PDF files and extracting text. - Implemented DocumentParser as an abstract class for future document parsers. - Created a new GenericRecipeParser and IcaRecipeParser for handling recipe data from various sources. - Developed QuickImportService to manage recipe scraping from URLs. - Enhanced error handling and validation for file uploads and input processing. - Updated project documentation with a structured plan for future development and improvements.
This commit is contained in:
@@ -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,
|
||||
],
|
||||
})
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
@@ -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 {}
|
||||
+1
-1
@@ -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 {
|
||||
@@ -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 {}
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user