2.0 KiB
2.0 KiB
Technisch Ontwerp: Vergunningzoeker
Stack
- Backend: Python Flask (project template)
- Frontend: React met Vite
- Database: PostgreSQL
- AI: Druppie platform modules via SDK
Druppie Modules
De app gebruikt de Druppie SDK (druppie_sdk) om platformmodules aan te roepen.
Geen directe API-keys of externe provider-calls in de app.
| Module | Tool | Gebruik |
|---|---|---|
| vision | ocr | Tekst extraheren uit gescande vergunningdocumenten (PDF/afbeelding) |
| llm | chat | Classificatie van vergunningtype op basis van geëxtraheerde tekst |
Gebruik:
from druppie_sdk import DruppieClient
druppie = DruppieClient()
# OCR op geüpload document
ocr_result = druppie.call("vision", "ocr", {"image_source": image_url})
extracted_text = ocr_result["text"]
# Classificatie van vergunningtype
classify_result = druppie.call("llm", "chat", {
"prompt": f"Classificeer dit vergunningdocument...\n\n{extracted_text}",
"system": "Je bent een specialist in watervergunningen."
})
Componenten
- UploadHandler: verwerkt document uploads, slaat op in DB
- OCRProcessor: roept druppie vision/ocr aan voor tekstextractie
- Classifier: roept druppie llm/chat aan voor classificatie
- PermitStore: PostgreSQL repository voor vergunningmetadata
- SearchHandler: zoekt in opgeslagen metadata
Datamodel
Permit:
id: UUID (PK)
permit_number: String
applicant_name: String
permit_type: String (geclassificeerd door LLM)
extracted_text: Text (OCR output)
source_file: String (bestandsnaam)
upload_date: DateTime
created_at: DateTime
API Endpoints
- POST /api/permits/upload — upload document, start OCR + classificatie
- GET /api/permits — lijst van alle vergunningen met metadata
- GET /api/permits/:id — details van een vergunning
- GET /api/permits/search?q=term — zoek in metadata
Belangrijk
- GEEN hardcoded API keys in de app
- GEEN openai package — gebruik druppie_sdk
- DRUPPIE_URL wordt automatisch geïnjecteerd bij deploy