initial commit
This commit is contained in:
225
Doku/Dokumenten-Check.md
Normal file
225
Doku/Dokumenten-Check.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# Dokumenten-Check
|
||||
|
||||
Projekt: https://projects.zoho.eu/portal/aquantico#project/323095000000333012
|
||||
|
||||
## Datenmodell
|
||||
|
||||
```mermaid
|
||||
|
||||
```
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
dc_users {
|
||||
number id PK
|
||||
varchar2_50 username UK
|
||||
varchar2_100 email UK
|
||||
varchar2_255 password_hash
|
||||
varchar2_20 role
|
||||
number is_active
|
||||
date created_at
|
||||
date updated_at
|
||||
}
|
||||
dc_user_roles {
|
||||
number id PK
|
||||
varchar2_20 role_name UK
|
||||
clob description
|
||||
}
|
||||
dc_document_types {
|
||||
number id PK
|
||||
varchar2_100 name
|
||||
clob description
|
||||
}
|
||||
dc_reference_documents {
|
||||
number id PK
|
||||
number uploaded_by FK
|
||||
number document_type_id FK
|
||||
varchar2_100 name
|
||||
clob description
|
||||
varchar2_500 file_path
|
||||
date upload_date
|
||||
varchar2_100 mime_type
|
||||
}
|
||||
dc_question_catalogs {
|
||||
number id PK
|
||||
number created_by_user FK
|
||||
number based_on_reference FK
|
||||
number document_type_id FK
|
||||
varchar2_100 name
|
||||
varchar2_4000 description
|
||||
}
|
||||
dc_question_categories {
|
||||
number id PK
|
||||
number catalog_id FK
|
||||
varchar2_100 name
|
||||
clob description
|
||||
}
|
||||
dc_questions {
|
||||
number id PK
|
||||
number category_id FK
|
||||
clob question_text
|
||||
varchar2_20 evaluation_type
|
||||
number threshold
|
||||
varchar2_20 result_handling
|
||||
clob example_0_percent
|
||||
clob example_100_percent
|
||||
}
|
||||
dc_projects {
|
||||
number id PK
|
||||
number catalog_id FK
|
||||
number created_by_user FK
|
||||
varchar2_100 name
|
||||
clob description
|
||||
varchar2_20 status
|
||||
number progress
|
||||
date completed_at
|
||||
varchar2_100 notification_email
|
||||
}
|
||||
dc_project_documents {
|
||||
number id PK
|
||||
number project_id FK
|
||||
number document_type_id FK
|
||||
blob original_file
|
||||
blob translated_file
|
||||
varchar2_255 filename
|
||||
varchar2_100 mime_type
|
||||
date uploaded_at
|
||||
}
|
||||
dc_results {
|
||||
number id PK
|
||||
number project_id FK
|
||||
number question_id FK
|
||||
number doc_id FK
|
||||
clob answer
|
||||
number score
|
||||
varchar2_20 result_type
|
||||
number deviation
|
||||
number warning
|
||||
clob the_comment
|
||||
date evaluated_at
|
||||
}
|
||||
dc_users ||--o{ dc_reference_documents : "uploads"
|
||||
dc_users ||--o{ dc_question_catalogs : "creates"
|
||||
dc_users ||--o{ dc_projects : "creates"
|
||||
dc_document_types ||--o{ dc_reference_documents : "used_in"
|
||||
dc_document_types ||--o{ dc_question_catalogs : "used_in"
|
||||
dc_document_types ||--o{ dc_project_documents : "used_in"
|
||||
dc_reference_documents ||--o{ dc_question_catalogs : "based_on"
|
||||
dc_question_catalogs ||--o{ dc_question_categories : "contains"
|
||||
dc_question_categories ||--o{ dc_questions : "contains"
|
||||
dc_question_catalogs ||--o{ dc_projects : "uses"
|
||||
dc_projects ||--o{ dc_project_documents : "contains"
|
||||
dc_projects ||--o{ dc_results : "has"
|
||||
dc_questions ||--o{ dc_results : "answered_in"
|
||||
dc_project_documents ||--o{ dc_results : "evaluated_in"
|
||||
```
|
||||
|
||||
## Backend
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph Browser["🌐 Browser"]
|
||||
APEX["Oracle APEX\nFrontend UI"]
|
||||
end
|
||||
|
||||
subgraph OracleDB["🗄️ Oracle Database 23c"]
|
||||
ORDS["ORDS REST Services\n/api/dc/..."]
|
||||
subgraph Schema["DB Schema"]
|
||||
Config["Konfiguration\ndc_document_types\ndc_question_catalogs\ndc_question_categories\ndc_questions"]
|
||||
Exec["Ausführung\ndc_projects\ndc_project_documents\ndc_results"]
|
||||
Users["dc_users\ndc_user_roles\ndc_reference_documents"]
|
||||
end
|
||||
ORDS <--> Schema
|
||||
end
|
||||
|
||||
subgraph Backend["☕ Quarkus Backend (Port 8090)"]
|
||||
CheckRes["CheckResource\nPOST /check/{projectId}"]
|
||||
Orch["CheckOrchestrationService\nHauptablauf (async)"]
|
||||
DocProc["DocumentProcessingService\nPDF/DOCX/ODT → Markdown"]
|
||||
EvalSvc["EvaluationService\nÜbersetzung + Auswertung"]
|
||||
OrdsClient["OrdsClient\nMicroProfile REST Client"]
|
||||
|
||||
CheckRes -->|"202 Accepted\nFire & Forget"| Orch
|
||||
Orch --> DocProc
|
||||
Orch --> EvalSvc
|
||||
Orch --> OrdsClient
|
||||
end
|
||||
|
||||
subgraph AI["🤖 Ollama (ollama.aquantico.de)"]
|
||||
MainModel["gpt-oss:20b\nÜbersetzung + Fragenauswertung"]
|
||||
OcrModel["quen3.5:9b\nPDF Vision-OCR"]
|
||||
end
|
||||
|
||||
APEX -->|"Dokument hochladen\nProjekt anlegen"| ORDS
|
||||
APEX -->|"POST /check/{id}"| CheckRes
|
||||
APEX -->|"Ergebnisse lesen"| ORDS
|
||||
|
||||
OrdsClient -->|"Projekt/Dok/Fragen laden\nErgebnisse speichern"| ORDS
|
||||
|
||||
DocProc -->|"Base64-Bild\nX-API-KEY"| OcrModel
|
||||
EvalSvc -->|"Text + Prompt\nX-API-KEY"| MainModel
|
||||
|
||||
subgraph PhaseA["Phase A (pro Dokument)"]
|
||||
A1["Download BLOB"] --> A2["OCR / Konvertierung\n→ Markdown"]
|
||||
A2 --> A3["Übersetzung → Deutsch"]
|
||||
A3 --> A4["Texte speichern (ORDS)"]
|
||||
end
|
||||
|
||||
subgraph PhaseB["Phase B (pro Dok × Frage)"]
|
||||
B1["KI-Auswertung\nscore 0–100"] --> B2["Abweichung/Hinweis\nberechnen (Java)"]
|
||||
B2 --> B3["Ergebnis speichern\n(ORDS)"]
|
||||
end
|
||||
|
||||
Orch --> PhaseA
|
||||
Orch --> PhaseB
|
||||
|
||||
style Browser fill:#dbeafe
|
||||
style OracleDB fill:#fef3c7
|
||||
style Backend fill:#dcfce7
|
||||
style AI fill:#f3e8ff
|
||||
style PhaseA fill:#f0f9ff
|
||||
style PhaseB fill:#f0f9ff
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Dialoge
|
||||
|
||||
### Fragenkatalog
|
||||
|
||||
#### Tabelle
|
||||
|
||||
* Name
|
||||
* Beschreibung
|
||||
* Referenz-Dokument
|
||||
|
||||
#### Dialog
|
||||
|
||||
* Name (Im Kopf aussuchen)
|
||||
* Referenz-Dokument Upload (Im Kopf)
|
||||
* Master/Detail
|
||||
* Fragen-Kategorien
|
||||
* Fragen
|
||||
|
||||
|
||||
|
||||
### Projekte
|
||||
|
||||
#### Tabelle
|
||||
|
||||
* Name
|
||||
* Beschreibung
|
||||
* Anz ok,nok,undefiniert
|
||||
|
||||
#### Dialog
|
||||
|
||||
* Name (Im Kopf Aussuchen)
|
||||
* Beschreibung
|
||||
* Master/Details
|
||||
* Dokumente
|
||||
* Ergebnisse
|
||||
|
||||
|
||||
|
||||
58
Doku/Projektbeschreibung.md
Normal file
58
Doku/Projektbeschreibung.md
Normal file
@@ -0,0 +1,58 @@
|
||||
### Ziel
|
||||
|
||||
Unterstützende Vorprüfung von Dokumenten
|
||||
|
||||
- TU-Dokumenten gegen eine manuell zu konfigurierenden Fragenkatalog
|
||||
- Transportbedingungen gegen die **Allgemeinen Deutschen Spediteurbedingungen (ADSp)
|
||||
**
|
||||
|
||||
|
||||
### Leistungsumfang
|
||||
|
||||
Erstellen einer APEX-Applikation mit folgenden Funktionalitäten
|
||||
|
||||
**Administration**
|
||||
|
||||
- Konfigurierbare **Fragenk****a****taloge** (TU-Dokumente / Transportbedingungen)
|
||||
- Es werden in Kategorien Fragen definiert und angegeben wie die Frage bewertet werden soll.
|
||||
- Beispiele für eine 0% Bewertung und Beispiele für eine 100% Bewertung
|
||||
- Schwellwert für OK / Unklar / Nicht OK
|
||||
- Umgang mit dem Ergebnis der Antwort
|
||||
- Markieren als Abweichung
|
||||
- Ausgabe als Hinweis (z.B. um Strafzahlungen explizit anzuzeigen)
|
||||
- Hinterlegung von Referenzdokumenten auf die sich die Fragen beziehen können. (z.B. die ADSp)
|
||||
- Benutzeradministration
|
||||
- Anlegen und Verwalten von Benutzern
|
||||
- Wer darf Konfigurationen hinterlegen?
|
||||
- Wer darf Dokumente prüfen?
|
||||
- Hinterlegen einer E-Mail für die Benachrichtigung
|
||||
|
||||
|
||||
|
||||
**Prüf-Funktionalität**
|
||||
|
||||
- Anlegen eines Prüfungsauftrags
|
||||
- Laden von Dokumenten
|
||||
- Angabe, welche Prüfung erfolgen soll
|
||||
- Start der Prüfung
|
||||
- Prüfung als Hintergrundverarbeitung
|
||||
- Dokumente ins Deutsche Übersetzen
|
||||
- Dokumente entsprechend des vorgegebenen Fragenkataloges prüfen
|
||||
- Pro Dokument ein Prüfprotokoll erstellen
|
||||
- Wenn alle Prüfungen abgeschlossen sind
|
||||
- Abschließendes Prüfungsprotokoll erstellen
|
||||
- Benutzer per Email über die abgeschlossene Prüfung Informieren
|
||||
- Alle Prüfungsprotokolle werden angehängt, auch das abschließende
|
||||
- Link, um in die Applikation zum Prüfungsauftrag zu springen um die Prüfungsergebnisse, Dokumente original und übersetzt direkt anzeigen zu lassen
|
||||
- Prüfungsübersicht
|
||||
- Anzeige der laufenden und fertiggestellten Prüfungen
|
||||
- Bei laufenden Prüfungen den Fortschritt
|
||||
- Sprung zum Prüfungsauftrag
|
||||
- Prüfungsauftrag anzeigen
|
||||
- Darstellen welcher Fragenkatalog auf die Dokumente angewendet wurde
|
||||
- Auflisten der Dokumente (original und übersetzt) mit der Möglichkeit der Anzeige und des Downloads
|
||||
- Darstellen der Prüfungsergebnisse (oder Fehler bei der Verarbeitung) pro Dokument
|
||||
|
||||
|
||||
|
||||
ACHTUNG: Eine KI kann Fehler machen. Die Ergebnisse können nicht rechtssicher sein.
|
||||
Reference in New Issue
Block a user