Compare commits
No commits in common. "master" and "office-alexander-logistics-1.3.5" have entirely different histories.
master
...
office-ale
458 changed files with 406580 additions and 127177 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -13,11 +13,9 @@ target/
|
||||||
.metadata/
|
.metadata/
|
||||||
.project
|
.project
|
||||||
.classpath
|
.classpath
|
||||||
.env
|
|
||||||
|
|
||||||
# ignore docker deployments
|
# ignore docker deployments
|
||||||
docker/deployments/
|
docker/deployments/
|
||||||
docker/keys/imixs-llm.xml
|
|
||||||
|
|
||||||
# Sepa Report
|
# Sepa Report
|
||||||
reports/sepa/result_sepa*
|
reports/sepa/result_sepa*
|
||||||
|
|
|
||||||
12
Dockerfile
12
Dockerfile
|
|
@ -1,7 +1,11 @@
|
||||||
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
|
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
|
||||||
|
#FROM imixs/imixs-office-workflow:5.1.0
|
||||||
|
|
||||||
|
# Setup debug configuration
|
||||||
|
# COPY ./docker/configuration/standalone-debug.xml /opt/jboss/wildfly/standalone/configuration/
|
||||||
|
|
||||||
|
COPY ./docker/lucene-core-7.7.3.jar /opt/jboss/
|
||||||
|
|
||||||
# Deploy artefact
|
# Deploy artefact
|
||||||
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
||||||
# Deploy artefact
|
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||||
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
|
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
|
||||||
|
#FROM imixs/imixs-office-workflow:5.1.0
|
||||||
|
|
||||||
# Deploy artefact
|
# Deploy artefact
|
||||||
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
||||||
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
|
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||||
|
|
||||||
# Run in Debug Mode
|
# Run in Debug Mode
|
||||||
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]
|
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,11 @@
|
||||||
# Versionen
|
# Versionen
|
||||||
|
|
||||||
## 1.4.0 (Development)
|
## KSeF Produktiname II.
|
||||||
|
|
||||||
- neuer AGLAIInvoiceAdapter
|
|
||||||
der Adapter `com.alexanderlogistics.AGLAIInvoiceAdapter` muss künftig in das Import Event der Rechnungseingangs Modelle. Dieser Adapter Findet den Space und den Mandanten.
|
|
||||||
|
|
||||||
Neue Modelle:
|
|
||||||
|
|
||||||
- Posteingang
|
|
||||||
- posteingang-de-3.0
|
|
||||||
- AMS
|
|
||||||
- rechnungseingang-ams-1.1.0.bpmn
|
|
||||||
|
|
||||||
## 1.3.6 (Development)
|
|
||||||
|
|
||||||
**KSeF Produktiname II.**
|
|
||||||
|
|
||||||
Neues ksef.xml als Template einspielen
|
Neues ksef.xml als Template einspielen
|
||||||
Neue version deployen.
|
Neue version deployen.
|
||||||
|
|
||||||
**KSeF Produktiname I.**
|
## KSeF Produktiname I.
|
||||||
|
|
||||||
Wir bekommen von Majcie einen neuen Prod - Token für KSeF. Dieser muss in das Kubernetes Deployment file eintegragen werden. Auch der Enpunkt muss geändert werden!
|
Wir bekommen von Majcie einen neuen Prod - Token für KSeF. Dieser muss in das Kubernetes Deployment file eintegragen werden. Auch der Enpunkt muss geändert werden!
|
||||||
|
|
||||||
|
|
@ -33,10 +19,12 @@ Wir bekommen von Majcie einen neuen Prod - Token für KSeF. Dieser muss in das K
|
||||||
Im Worklfow Modell 'rechnungsausgang' muss das das Partner Mail im Schritt 4200.10 aktiviert werden.
|
Im Worklfow Modell 'rechnungsausgang' muss das das Partner Mail im Schritt 4200.10 aktiviert werden.
|
||||||
jhendzel@alexander-logistics.com in CC
|
jhendzel@alexander-logistics.com in CC
|
||||||
ralph.soika@imixs.com in BCC
|
ralph.soika@imixs.com in BCC
|
||||||
|
|
||||||
Derzeit fehlen meistens die Mailadressen so dass vermutlich häufig keine Mails rausgehen.
|
Derzeit fehlen meistens die Mailadressen so dass vermutlich häufig keine Mails rausgehen.
|
||||||
|
|
||||||
Im Dokument Import 'CARGOSOFT_INVOCIE_XML' muss die Task ID von 5001 auf 4000 geändert werden!!
|
Im Dokument Import 'CARGOSOFT_INVOCIE_XML' muss die Task ID von 5001 auf 4000 geändert werden!!
|
||||||
|
|
||||||
## 1.3.5
|
## 1.3.5 (Development)
|
||||||
|
|
||||||
- Verbesserter Cargosoft Export (Eingangsrechnungen)
|
- Verbesserter Cargosoft Export (Eingangsrechnungen)
|
||||||
- Polen KSeF Schnittstelle
|
- Polen KSeF Schnittstelle
|
||||||
|
|
|
||||||
204
backup/README.md
204
backup/README.md
|
|
@ -1,204 +0,0 @@
|
||||||
# Eigenes Backup-System (Backup-Mirror)
|
|
||||||
## Architektur, Einrichtung und Disaster-Recovery-Konzept
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Idee und Architektur
|
|
||||||
|
|
||||||
### 1.1 Ausgangslage
|
|
||||||
|
|
||||||
Imixs-Office-Workflow wird von uns als eine transaktionale, hochverfügbare
|
|
||||||
Geschäftsprozessmanagement-Suite betrieben. Die Basis ist ein Open Source Kernel,
|
|
||||||
der frei zugänglich ist ([https://github.com/imixs/](https://github.com/imixs/)).
|
|
||||||
Unabhängig vom gewählten Betriebsmodell (SaaS, Public Cloud, Private Cloud, On
|
|
||||||
Premise) sind und bleiben Sie Eigentümer Ihrer Geschäftsdaten. Über den
|
|
||||||
Backup-Service haben Sie die Möglichkeit, jederzeit eigenständig auf eine
|
|
||||||
vollständige Kopie Ihrer Daten zuzugreifen – unabhängig davon, wie und wo Ihre
|
|
||||||
Instanz aktuell betrieben wird.
|
|
||||||
|
|
||||||
### 1.2 Architektur – Own your Data
|
|
||||||
|
|
||||||
Auch wenn wir den Betrieb Ihrer Instanz übernehmen, bedeutet das nicht, dass Sie
|
|
||||||
von uns abhängig sind. Über den Backup-Mirror betreiben Sie bei sich einen eigenen,
|
|
||||||
unabhängigen Backup-Dienst. Dieser Dienst wird von Ihnen selbst eingerichtet,
|
|
||||||
verwaltet und überwacht und läuft vollständig autark – wir müssen ihn technisch
|
|
||||||
weder kennen noch verwalten. Dadurch gilt:
|
|
||||||
|
|
||||||
> **Sie verfügen über eine eigenständige, vollständige Kopie Ihrer
|
|
||||||
> Geschäftsdaten – unabhängig von unserer Infrastruktur. Mit dieser Kopie kann
|
|
||||||
> Ihr System bei Bedarf komplett neu aufgebaut werden.**
|
|
||||||
|
|
||||||
Das ist ein bewusst einfaches und robustes Prinzip: Es kommt nicht darauf an, *wo*
|
|
||||||
Ihre Daten zusätzlich liegen, sondern *wer* die Kontrolle über diesen zusätzlichen
|
|
||||||
Sicherungsort hat. Nur wenn diese Kontrolle bei Ihnen liegt, sind Sie wirklich
|
|
||||||
unabhängig.
|
|
||||||
|
|
||||||
### 1.3 Wie es funktioniert
|
|
||||||
|
|
||||||
Technisch basiert das Konzept auf dem Open-Source-Projekt
|
|
||||||
[Imixs-Archive](https://github.com/imixs/imixs-archive), konkret auf dem Baustein
|
|
||||||
*Imixs-Archive-Backup*. Der Ablauf im Überblick:
|
|
||||||
|
|
||||||
1. Bei jeder Änderung an einem Geschäftsvorgang erzeugt Ihre Workflow-Instanz
|
|
||||||
automatisch einen unveränderlichen Snapshot (eine vollständige Kopie des
|
|
||||||
Vorgangs inkl. aller angehängten Dokumente).
|
|
||||||
2. Diese Snapshots werden über die REST-Schnittstelle Ihrer Workflow-Instanz
|
|
||||||
bereitgestellt.
|
|
||||||
3. Ein bei Ihnen installierter Backup-Dienst (siehe Abschnitt 2) ruft diese
|
|
||||||
Snapshots eigenständig ab und speichert sie auf einem Speicherort Ihrer Wahl
|
|
||||||
(z. B. eigener FTP-/Storage-Server).
|
|
||||||
|
|
||||||
Wichtig: Die Verbindung erfolgt **von Ihrem System zu unserer Workflow-Instanz**
|
|
||||||
(„Pull-Prinzip"). Sie benötigen dafür lediglich einen Netzwerkzugriff auf die
|
|
||||||
REST-Schnittstelle Ihrer Instanz – wir müssen keinen Zugriff auf Ihre Infrastruktur
|
|
||||||
haben und erhalten auch keinen.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. Technische Einrichtung
|
|
||||||
|
|
||||||
Der Backup-Dienst kann als Docker-Container in unterschiedlichen Umgebungen betrieben werden:
|
|
||||||
|
|
||||||
- **Local**: lokal über Docker oder Docker Compose,
|
|
||||||
- **Private Cloud**: in einer Private Cloud (z.b. Kubernetes, OpenShift)
|
|
||||||
- **Public Cloud**: in einer Public Cloud Umgebung (z.b. AWS, Microsoft Azure)
|
|
||||||
|
|
||||||
|
|
||||||
### 2.1 Voraussetzungen
|
|
||||||
|
|
||||||
- Eine eigene Server- bzw. Container-Umgebung (Docker) auf Ihrer Seite
|
|
||||||
- Ein eigener Speicherort für die Backup-Daten (z. B. FTP-Storage, NAS mit
|
|
||||||
FTP-Anbindung)
|
|
||||||
- Eine sogenannte **Mirror-ID**, die wir Ihnen bereitstellen
|
|
||||||
|
|
||||||
### 2.2 Mirror-ID anfragen
|
|
||||||
|
|
||||||
Die Mirror-ID ist eine organisatorische Kennung, mit der wir Ihre eigene
|
|
||||||
Backup-Verbindung für Ihre Instanz freischalten. Sie ist kein Sicherheitsmerkmal im
|
|
||||||
engeren Sinn, sondern eine Vereinbarung zwischen uns: *„Kunde X betreibt ein eigenes
|
|
||||||
Backup."* Bitte fordern Sie diese ID formlos bei uns an.
|
|
||||||
|
|
||||||
### 2.3 Backup-Nutzer in Ihrer eigenen Instanz anlegen
|
|
||||||
|
|
||||||
Ein zentraler Punkt für die Autarkie des Systems: **Sie legen den technischen
|
|
||||||
Benutzer für den Backup-Zugriff selbst in Ihrer Imixs-Instanz an.** Dieser Nutzer
|
|
||||||
gehört ausschließlich Ihnen – wir kennen weder das Passwort noch verwalten wir
|
|
||||||
dieses Konto. Vergeben Sie dem Nutzer ausreichende Leserechte, damit er alle
|
|
||||||
relevanten Vorgänge und Dokumente sichern kann.
|
|
||||||
|
|
||||||
### 2.4 Docker-Compose Beispielkonfiguration
|
|
||||||
|
|
||||||
Das folgende Beispiel zeigt eine Docker Compose Konfiguraiton für den Betrieb des Backup-Dienstes:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
version: "3.6"
|
|
||||||
services:
|
|
||||||
backup:
|
|
||||||
image: imixs/imixs-archive-backup:latest
|
|
||||||
environment:
|
|
||||||
TZ: "Europe/Berlin"
|
|
||||||
WORKFLOW_SERVICE_ENDPOINT: "https://<ihre-instanz>.office-workflow.de/api/"
|
|
||||||
WORKFLOW_SERVICE_USER: "<ihr-backup-nutzer>"
|
|
||||||
WORKFLOW_SERVICE_PASSWORD: "<ihr-passwort>"
|
|
||||||
WORKFLOW_SERVICE_AUTHMETHOD: "form"
|
|
||||||
BACKUP_FTP_HOST: "<ihr-storage-host>"
|
|
||||||
BACKUP_FTP_PATH: "<ihr-zielverzeichnis>"
|
|
||||||
BACKUP_FTP_PORT: "21"
|
|
||||||
BACKUP_FTP_USER: "<ihr-ftp-nutzer>"
|
|
||||||
BACKUP_FTP_PASSWORD: "<ihr-ftp-passwort>"
|
|
||||||
BACKUP_MIRROR_ID: "<ihre-mirror-id>"
|
|
||||||
ports:
|
|
||||||
- "8084:8080"
|
|
||||||
- "9990:9990"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Erläuterung der wichtigsten Parameter:**
|
|
||||||
|
|
||||||
| Parameter | Bedeutung |
|
|
||||||
|---|---|
|
|
||||||
| `WORKFLOW_SERVICE_ENDPOINT` | Die REST-API-Adresse Ihrer bei uns gehosteten Workflow-Instanz |
|
|
||||||
| `WORKFLOW_SERVICE_USER/PASSWORD` | Der von Ihnen selbst angelegte Backup-Nutzer |
|
|
||||||
| `BACKUP_FTP_*` | Ihr eigener Speicherort für die Backup-Daten |
|
|
||||||
| `BACKUP_MIRROR_ID` | Die von uns bereitgestellte Freischalt-ID |
|
|
||||||
|
|
||||||
Nach dem Start prüft der Dienst regelmäßig auf neue zu sichernde Vorgänge und
|
|
||||||
überträgt diese automatisch auf Ihren Speicherort.
|
|
||||||
|
|
||||||
### 2.5 Monitoring des eigenen Backup-Dienstes
|
|
||||||
|
|
||||||
Da der Dienst vollständig in Ihrer Verantwortung läuft, sollten Sie ihn aktiv
|
|
||||||
überwachen. Ein einfacher Ping-Check zeigt zwar, dass der Container erreichbar
|
|
||||||
ist – sagt aber nichts darüber aus, ob der Dienst tatsächlich funktionsfähig ist
|
|
||||||
und Backups erfolgreich durchführt.
|
|
||||||
|
|
||||||
Der Imixs-Archive-Backup-Service stellt hierfür standardisierte **MicroProfile-Endpunkte** mit, die auf Port `9990`
|
|
||||||
bereitgestellt werden:
|
|
||||||
|
|
||||||
| Endpunkt | Beschreibung |
|
|
||||||
|---|---|
|
|
||||||
| `/health` | Liefert den Health-Status des Dienstes nach dem MicroProfile-Health-Standard – inklusive Readiness (ist der Dienst betriebsbereit, z. B. Verbindung zur Workflow-API und zum FTP-Storage vorhanden?) und Liveness (läuft der Prozess korrekt?) |
|
|
||||||
| `/metrics` | Liefert Betriebskennzahlen im MicroProfile-Metrics-Format (Prometheus-kompatibel), z. B. Anzahl verarbeiteter Backups, Fehlerzähler, Laufzeiten |
|
|
||||||
|
|
||||||
Damit lässt sich der Dienst professionell überwachen:
|
|
||||||
|
|
||||||
- **Health-Checks** binden Sie direkt in gängige Monitoring-Systeme ein (z. B.
|
|
||||||
Kubernetes Liveness-/Readiness-Probes, Uptime-Kuma, Nagios, Icinga) und erkennen
|
|
||||||
so nicht nur einen abgestürzten Container, sondern auch einen Dienst, der zwar
|
|
||||||
läuft, aber z. B. keine Verbindung mehr zu Ihrer Workflow-Instanz oder zum
|
|
||||||
FTP-Ziel herstellen kann.
|
|
||||||
- **Metrics** lassen sich direkt von Prometheus abgegriffen und in Grafana
|
|
||||||
visualisiert werden – so erkennen Sie auf einen Blick, ob regelmäßig Backups
|
|
||||||
durchgeführt werden, oder ob z. B. die Fehlerrate ansteigt.
|
|
||||||
|
|
||||||
**Voraussetzung:** Sie müssen Port `9990` in Ihrer Docker-Umgebung entsprechend
|
|
||||||
freigeben bzw. mappen, damit Ihr Monitoring-System auf die Endpunkte zugreifen kann
|
|
||||||
(siehe Port-Mapping im Beispiel aus Abschnitt 2.4).
|
|
||||||
|
|
||||||
Ein Backup, das unbemerkt seit Wochen nicht mehr funktioniert, bietet keinen Schutz.
|
|
||||||
Die Überwachung über Health- und Metrics-Endpunkte ist daher ein integraler
|
|
||||||
Bestandteil des Konzepts, nicht optional.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Notfall- und Wiederherstellungsfall (Disaster Recovery)
|
|
||||||
|
|
||||||
Im Falle eines Disaster-Recovery-Prozesses stellen Sie uns Ihr Backup zur Verfügung, damit Ihr System auf dessen Basis wiederhergestellt werden kann. Dieser Abschnitt beschreibt das Vorgehen nur in Stichpunkten.
|
|
||||||
Die vollständige technische Dokumentation der
|
|
||||||
Imixs-Workflow-Architektur ist Open Source und öffentlich einsehbar unter
|
|
||||||
[github.com/imixs](https://github.com/imixs).
|
|
||||||
|
|
||||||
**Grundprinzip der Wiederherstellung:**
|
|
||||||
|
|
||||||
- Ihre gesicherten Snapshot-Daten liegen vollständig und unverändert in Ihrem
|
|
||||||
eigenen Speicher (FTP/Storage) vor.
|
|
||||||
- Diese Daten liegen in einem offenen, plattformunabhängigen XML-Format vor und
|
|
||||||
sind nicht an unsere konkrete Infrastruktur gebunden.
|
|
||||||
- Auf Basis dieser Daten kann eine neue Imixs-Workflow-Instanz (bei Ihnen oder bei
|
|
||||||
einem anderen Dienstleister) aufgesetzt werden.
|
|
||||||
- Über die Restore-Funktion der Imixs-Archive-Komponenten werden die Snapshots in
|
|
||||||
die neue Instanz zurückgespielt – jeder Geschäftsvorgang wird dabei inklusive
|
|
||||||
seiner Historie und aller Dokumente wiederhergestellt.
|
|
||||||
|
|
||||||
**Wichtige Stichpunkte für den Ernstfall:**
|
|
||||||
|
|
||||||
- Backup-Daten sind vollständig bei Ihnen vorhanden → keine Abhängigkeit von uns
|
|
||||||
- Wiederherstellung erfordert eine lauffähige Imixs-Workflow-Umgebung (Open Source,
|
|
||||||
frei verfügbar)
|
|
||||||
- Die technische Vorgehensweise zum Restore ist Teil der öffentlichen
|
|
||||||
Imixs-Archive-Dokumentation
|
|
||||||
- Wir unterstützen Sie im Ernstfall selbstverständlich gerne beim Wiederaufbau –
|
|
||||||
diese Unterstützung ist jedoch **keine Voraussetzung**, da die Daten und das
|
|
||||||
Wiederherstellungsverfahren vollständig unabhängig von uns nutzbar sind
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Zusammenfassung
|
|
||||||
|
|
||||||
Mit dem Backup-Mirror bleiben Sie jederzeit Eigentümer Ihrer Geschäftsdaten – unabhängig
|
|
||||||
davon, wie und wo Ihre Instanz betrieben wird. Sie richten den Dienst selbst ein, verwalten
|
|
||||||
ihn eigenständig und behalten so die volle Kontrolle über Ihre zusätzliche Datenkopie. Genau
|
|
||||||
diese Unabhängigkeit ist es, die Ihnen im Bedarfsfall den vollständigen Wiederaufbau Ihres
|
|
||||||
Systems ermöglicht.
|
|
||||||
|
|
||||||
Bei Fragen zur Einrichtung oder zur Anforderung Ihrer Mirror-ID kontaktieren Sie uns
|
|
||||||
gerne.
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
version: "3.6"
|
|
||||||
services:
|
|
||||||
###############################################
|
|
||||||
# Backup Service
|
|
||||||
###############################################
|
|
||||||
backup:
|
|
||||||
image: imixs/imixs-archive-backup:latest
|
|
||||||
environment:
|
|
||||||
TZ: "Europe/Berlin"
|
|
||||||
WORKFLOW_SERVICE_ENDPOINT: "https://alexander-logistics-ams.office-workflow.de/api/"
|
|
||||||
WORKFLOW_SERVICE_USER: "kutzner-backup-service"
|
|
||||||
WORKFLOW_SERVICE_PASSWORD: "16e-7ede-4c1c-bdeb-e16ce"
|
|
||||||
WORKFLOW_SERVICE_AUTHMETHOD: "form"
|
|
||||||
BACKUP_FTP_HOST: "u248962.your-storagebox.de"
|
|
||||||
BACKUP_FTP_PATH: "/test/agl/ams-test"
|
|
||||||
BACKUP_FTP_PORT: "21"
|
|
||||||
BACKUP_FTP_USER: "u248962"
|
|
||||||
BACKUP_FTP_PASSWORD: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
||||||
BACKUP_MIRROR_ID: "backup-mirror-local"
|
|
||||||
WORKFLOW_REST_JPQL_DOUBLEDECODE_WORKAROUND: "true"
|
|
||||||
ports:
|
|
||||||
- "8084:8080"
|
|
||||||
Binary file not shown.
4
devi
4
devi
|
|
@ -53,13 +53,15 @@ fi
|
||||||
|
|
||||||
if [[ "$(strip_dash $1)" == "hot" ]]; then
|
if [[ "$(strip_dash $1)" == "hot" ]]; then
|
||||||
echo "* Hotdeploy..."
|
echo "* Hotdeploy..."
|
||||||
|
cd *-app
|
||||||
mvn manik-hotdeploy:hotdeploy
|
mvn manik-hotdeploy:hotdeploy
|
||||||
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$(strip_dash $1)" == "deploy" ]]; then
|
if [[ "$(strip_dash $1)" == "deploy" ]]; then
|
||||||
echo " Deploy to Imixs-Cloud..."
|
echo " Deploy to Imixs-Cloud..."
|
||||||
|
|
||||||
mvn clean install -Pimixs-cloud -DskipTests
|
mvn clean install -Pkubernetes -DskipTests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
96
doc/FTP.md
Normal file
96
doc/FTP.md
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
# FTP Server
|
||||||
|
|
||||||
|
Wir stellen verschiedene FTP Laufwerke auf dem Hetzner bereit um Daten mit Cargosoft und anderen Partnern auszutauschen
|
||||||
|
|
||||||
|
# Cargosoft
|
||||||
|
|
||||||
|
**ACHTUNG:** Frau Beste bittet darum den public key für alle Sub Accounts zu installieren:
|
||||||
|
|
||||||
|
$ cat id_rsa_cargosoft.pub | ssh -p23 u248962-sub12@u248962.your-storagebox.de install-ssh-key
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (Bremen - Mandant 001)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft
|
||||||
|
Benutzername: u248962-sub2
|
||||||
|
Passwort: aXa61n9Un3jDNQlL
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (AMS - Mandant 002)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-ams
|
||||||
|
Benutzername: u248962-sub12
|
||||||
|
Passwort: RA9N0V8EB8_1Dnw
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (Bremerhaven Mandant 005)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-bhv
|
||||||
|
Benutzername: u248962-sub5
|
||||||
|
Passwort: 5hKKzv6TFCKRrAdR
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (Polen Mandant 003)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-pl
|
||||||
|
Benutzername: u248962-sub7
|
||||||
|
Passwort: PGPzzqmtZ8BSxkbs
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (Dubai Mandant 006)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-dwc
|
||||||
|
Benutzername: u248962-sub3
|
||||||
|
Passwort: enHjxs9h4nJ6EgsZ
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (USA Mandant 004)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-usa
|
||||||
|
Benutzername: u248962-sub9
|
||||||
|
Passwort: GMk7NgDBrmb2QqXg
|
||||||
|
|
||||||
|
## Cargosoft Schnittstelle (China Mandant 007)
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/cargosoft-chn
|
||||||
|
Benutzername: u248962-sub10
|
||||||
|
Passwort: yswBeN83jMqkMqJa
|
||||||
|
|
||||||
|
# Dubai
|
||||||
|
|
||||||
|
**ACHTUNG** Wird nicht merh genutzt - jetzt Zoho
|
||||||
|
|
||||||
|
Wir stellen Herrn Hoelzl in Dubai ein eigenes FTP Laufwerk bereit, in das wir die Rechnungen per Imixs-Exporter verschieben.
|
||||||
|
|
||||||
|
Server: u248962.your-storagebox.de
|
||||||
|
Pfad: /office-alexander-logistics/filetransfer-dwc
|
||||||
|
Benutzername: u248962-sub11
|
||||||
|
Passwort: mH9mAS77QhuA5XJi
|
||||||
|
|
||||||
|
Herr Hoelzl überträgt dann die Daten in eine app von einer Steuerkanzlei.
|
||||||
|
|
||||||
|
Es wird dazu ein FTP Server bereitgestellt der von Herrn Hölzl und Frau Geisler lokal eingebunden werden kann.
|
||||||
|
|
||||||
|
Der aktuelle Workflow für Eingangs- und Ausgangsrechnungen wird dahingehend angepasst, dass die Belege automatisch nach folgenden Format exportiert werden:
|
||||||
|
|
||||||
|
```
|
||||||
|
├── invoice-out
|
||||||
|
│ ├── 2024
|
||||||
|
│ │ ├── 06
|
||||||
|
│ │ │ ├── 198_EX-DWC-2406-013.pdf
|
||||||
|
│ │ │ ├── 199_EX-DWC-2406-013.pdf
|
||||||
|
│ │ ├── 07
|
||||||
|
│ │ │ ├── 200_IM-DWC-2407-010.pdf
|
||||||
|
├── invoice-in
|
||||||
|
│ ├── 2024
|
||||||
|
│ │ ├── 06
|
||||||
|
│ │ │ ├── 700045_EX-DWC-2406-005.pdf
|
||||||
|
│ │ │ ├── 700045_59475.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
sequencenumer +
|
||||||
|
|
||||||
|
firmename + positionsnummer + rechnungsnummer +
|
||||||
|
|
||||||
|
Der Export erfolgt automatisch nach Empfang der Rechnung bzw. nach Prüfung der Rechnung (Review->Approved). Die Dateinamen werden vom System berechnet (siehe oben). Bei Sachrechnungen wird das Rechnungsdatum verwendet um die Buchungsperiode zu berechnen.
|
||||||
49
doc/HETZNER_SUPPORT/2025-07-28.md
Normal file
49
doc/HETZNER_SUPPORT/2025-07-28.md
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
Hallo,
|
||||||
|
wir nutzen oben genannte Storage Box für den Datenaustausch mit verschiedenen Kunden.
|
||||||
|
Einer der Kunden kann seit dem 25. Juli nicht mehr von seinem Firmennetzwerk darauf zugreifen.
|
||||||
|
|
||||||
|
Wir haben auf dem Linux Server beim Kunden folgende Tests durchgeführt:
|
||||||
|
|
||||||
|
cargodb@cargodb:~$ sftp -v -oPort=22 u248962-sub1@u248962.your-storagebox.de
|
||||||
|
OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f 31 Mar 2020
|
||||||
|
debug1: Reading configuration data /etc/ssh/ssh_config
|
||||||
|
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/_.conf matched no files
|
||||||
|
debug1: /etc/ssh/ssh_config line 21: Applying options for _
|
||||||
|
debug2: resolving "u248962.your-storagebox.de" port 22
|
||||||
|
debug2: ssh_connect_direct
|
||||||
|
debug1: Connecting to u248962.your-storagebox.de [78.47.94.120] port 22.
|
||||||
|
debug1: connect to address 78.47.94.120 port 22: Connection refused
|
||||||
|
debug1: Connecting to u248962.your-storagebox.de [2a01:4f8:2b01:db::2] port 22.
|
||||||
|
debug1: connect to address 2a01:4f8:2b01:db::2 port 22: Network is unreachable
|
||||||
|
ssh: connect to host u248962.your-storagebox.de port 22: Network is unreachable
|
||||||
|
Connection closed.
|
||||||
|
|
||||||
|
cargodb@cargodb:~$ nc -zv u248962-sub1@u248962.your-storagebox.de 22
|
||||||
|
nc: getaddrinfo for host u248962-sub1@u248962.your-storagebox.de port 22: Name or service not known
|
||||||
|
|
||||||
|
cargodb@cargodb:~$ tcptraceroute u248962.your-storagebox.de 22
|
||||||
|
Selected device ens160, address 192.168.83.3, port 52113 for outgoing packets
|
||||||
|
Tracing the path to u248962.your-storagebox.de (78.47.94.120) on TCP port 22 (ssh), 30 hops max
|
||||||
|
1 192.168.83.254 0.233 ms 0.175 ms 0.242 ms
|
||||||
|
2 82-198-218-38.briteline.de (82.198.218.38) 1.470 ms 1.103 ms 2.286 ms
|
||||||
|
3 10.200.48.254 0.930 ms 0.915 ms 0.776 ms
|
||||||
|
4 82-198-192-194.briteline.de (82.198.192.194) 1.092 ms 1.114 ms 0.902 ms
|
||||||
|
5 82-198-216-168.briteline.de (82.198.216.168) 1.101 ms 1.168 ms 1.034 ms
|
||||||
|
6 ae0-201.cr11.bre04.lwlcom.net (31.209.93.121) 1.543 ms 1.650 ms 1.528 ms
|
||||||
|
7 ae0-30.cr10.bre09.lwlcom.net (185.146.230.97) 7.713 ms 7.440 ms 11.215 ms
|
||||||
|
8 ae0-10.cr11.bre09.lwlcom.net (185.146.230.53) 7.647 ms 7.652 ms 7.617 ms
|
||||||
|
9 ae0-20.cr10.bre03.lwlcom.net (185.146.230.99) 7.530 ms 7.716 ms 7.505 ms
|
||||||
|
10 ae7-90.cr10.bre11.lwlcom.net (185.146.230.34) 7.723 ms 7.661 ms 7.578 ms
|
||||||
|
11 ae7-100.cr10.lut01.lwlcom.net (185.146.230.39) 7.446 ms 7.509 ms 7.673 ms
|
||||||
|
12 ae6-100.cr10.fra03.lwlcom.net (185.146.230.27) 7.980 ms 7.281 ms 7.981 ms
|
||||||
|
13 ae2-100.cr10.fra04.lwlcom.net (185.146.230.51) 7.287 ms 7.392 ms 7.406 ms
|
||||||
|
14 213-133-121-205.clients.your-server.de (213.133.121.205) 10.464 ms 10.542 ms 10.573 ms
|
||||||
|
15 core24.fsn1.hetzner.com (213.239.224.85) 16.458 ms 16.381 ms 16.338 ms
|
||||||
|
16 mx10k1.dc3.fsn1.hetzner.com (213.239.254.142) 16.632 ms 16.687 ms 24.837 ms
|
||||||
|
17 static.120.94.47.78.clients.your-server.de (78.47.94.120) 16.526 ms !p 16.509 ms !p 16.505 ms !p
|
||||||
|
|
||||||
|
Können Sie anhand dieser Daten erkennen worin das Problem besteht? Andere Kunden können die Storage Box problemlos nutzen.
|
||||||
|
|
||||||
|
Vielen Dank für Ihre Hilfe
|
||||||
|
Mit freundlichen Grüßen
|
||||||
|
Ralph Soika
|
||||||
25
doc/KSeF/FEEDBACK.md
Normal file
25
doc/KSeF/FEEDBACK.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Feedback zum PDF FIle
|
||||||
|
|
||||||
|
| Feld / Komponente | Status |
|
||||||
|
| :------------------------------------------------------- | :----------------------- |
|
||||||
|
| **1. Podmiot 1 — Daten des Rechnungsausstellers (AGLP)** | |
|
||||||
|
| `<Nazwa>` | **FIXED** |
|
||||||
|
| `<AdresL1>` | **FIXED** |
|
||||||
|
| `<PrefiksPodatnika>PL</PrefiksPodatnika>` | **FIXED** |
|
||||||
|
| **2. Podmiot 2 — Daten des Rechnungsempfängers** | |
|
||||||
|
| `<NrID> <NIP>` | **ALREADY IMPLEMENTED** |
|
||||||
|
| EU-Rechnungsempfänger | **UNCLEAR!** |
|
||||||
|
| Anschrift des Rechnungsempfängers | **CARGOSOFT TOPIC** |
|
||||||
|
| **3. Abschnitt <Fa> — Rechnungskopf** | **FIXED** |
|
||||||
|
| `<P_1M>` | **FIXED** |
|
||||||
|
| `<KursWalutyZ>` | **FIXED** |
|
||||||
|
| **4. Rechnungspositionen <FaWiersz> — Pflichtfelder** | |
|
||||||
|
| `<P_7>` | **FIXED** |
|
||||||
|
| `<P_8B>` | **IGNORED - NOT FIXED!** |
|
||||||
|
| `<P_11A>` | **????** |
|
||||||
|
| `<P_11Vat>` | **????** |
|
||||||
|
| **5. Rechnungssummen — <P_13_x> / <P_14_x>** | |
|
||||||
|
| _Noch keine Details_ | — |
|
||||||
|
| **6. Zahlung — <Platnosc>** | |
|
||||||
|
| `<FormaPlatnosci>` | **FIXED** |
|
||||||
|
| `<RachunekBankowy>` | **FIXED** |
|
||||||
3
doc/KSeF/SECRETS.md
Normal file
3
doc/KSeF/SECRETS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
NIP = "9552521552"
|
||||||
|
|
||||||
|
TOKEN = "20251113-EC-2751AC3000-5C5466924B-62|nip-9552521552|fc0c95d020dc45d4af491fb0aa755f3f3f674b33ecbf4250a88ea6e36fa8340b
|
||||||
Binary file not shown.
9
doc/MAIL.md
Normal file
9
doc/MAIL.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Mail
|
||||||
|
|
||||||
|
Testen von Mailing kann man über
|
||||||
|
|
||||||
|
https://www.mail-tester.com/
|
||||||
|
|
||||||
|
Kutzner Mail gateway
|
||||||
|
|
||||||
|
PW: 26W%R#Xe4^Z2Gyz1
|
||||||
1
doc/id_rsa_cargosoft.pub
Normal file
1
doc/id_rsa_cargosoft.pub
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnGiu0PUBl+G++vHrGP5wDRit4mXF4hXTyzUem3BPADaV0DUuYN1Fx5RpDl2F8mhnqDYcyCTBzLTJ+0jFqq1pzoJW5ZWZ+hSChabVCV4m8UkFkhbRmjxNkPx26ZMhfTD1mDqgCKQ+bbt1mi04UZppDKBr+9ZrMG3d0odHblEJHixtJ7Hqr9vvXXbvNv4E9B/9dlW57oyEUk/vKmwuLyGAsDjxjfB3W+Faab+gev8VDwJxdbD90HX0O2Az05wy9EC7M3pujcawsHdaFXgFFRRwlVuUkX3z9hp1Uekqg0N81hty7/i8GiZ9/m3Y6hIA5eRM4ZpDQFEF8SY9TLSzDehNoQ== seesped@cargodb
|
||||||
78
doc/zoho/SECRETS.md
Normal file
78
doc/zoho/SECRETS.md
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Zoho Web API
|
||||||
|
|
||||||
|
AGL Dubai nutzt Zoho als Platform zusammen mit einer lokalen Steuerkanzlei
|
||||||
|
|
||||||
|
## Test/Prod Account Imixs
|
||||||
|
|
||||||
|
https://api-console.zoho.eu/
|
||||||
|
https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
|
||||||
|
|
||||||
|
```
|
||||||
|
zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13
|
||||||
|
zoho.apidomain https://www.zohoapis.eu
|
||||||
|
zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ
|
||||||
|
zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47
|
||||||
|
zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072
|
||||||
|
zoho.organization 20105697367
|
||||||
|
zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e
|
||||||
|
zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Atari
|
||||||
|
|
||||||
|
atari.600xl@gmail.com
|
||||||
|
800xlAtari
|
||||||
|
|
||||||
|
```
|
||||||
|
zoho.apidomain https://www.zohoapis.eu
|
||||||
|
zoho.clientid 1000.86O4P321HDYDRX0Q0N1G7YOJRJ9D5W
|
||||||
|
zoho.clientsecret 2a67b6cfc364f5df27cc8eb33e9b0e4e8a0221ebc3
|
||||||
|
zoho.code 1000.c7dc89c06111b93f1242b587fabed4ac.44c591dffbd978a316e3d90ed3fefc78
|
||||||
|
zoho.organization 886924765
|
||||||
|
zoho.scope ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prod DWC
|
||||||
|
|
||||||
|
info@imixs.com
|
||||||
|
imixs4zoho
|
||||||
|
|
||||||
|
Für Drecks Forum
|
||||||
|
Imixs4#zoho
|
||||||
|
Imixs4#zoho
|
||||||
|
|
||||||
|
http://books.zoho.com/
|
||||||
|
|
||||||
|
https://api-console.zoho.com/
|
||||||
|
|
||||||
|
ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
zoho.apidomain https://www.zohoapis.com
|
||||||
|
zoho.clientid 1000.MQE1SU8UGY6F2PBPASOXGTLWYQD1FS
|
||||||
|
zoho.clientsecret 1ca70e1ab803b3fed6b1b5e00858c316e2003d289b
|
||||||
|
zoho.organization 884218508
|
||||||
|
zoho.scope ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# API Dokumentation
|
||||||
|
|
||||||
|
- API Docu: https://www.zoho.com/books/api/v3/introduction/
|
||||||
|
- Authentication: https://www.zoho.com/books/api/v3/oauth/
|
||||||
|
|
||||||
|
# Testumgebung
|
||||||
|
|
||||||
|
https://books.zoho.eu/app/20105697367
|
||||||
|
https://accounts.zoho.eu/home#
|
||||||
|
|
||||||
|
Base API URI= https://accounts.zoho.eu/
|
||||||
|
|
||||||
|
# AGL Organisation
|
||||||
|
|
||||||
|
https://api-console.zoho.com
|
||||||
|
|
||||||
|
info@imixs.com
|
||||||
|
password imixs4zoho
|
||||||
|
|
@ -25,7 +25,7 @@ services:
|
||||||
POSTGRES_CONNECTION: "jdbc:postgresql://db/office-alexander-logistics"
|
POSTGRES_CONNECTION: "jdbc:postgresql://db/office-alexander-logistics"
|
||||||
TZ: "CET"
|
TZ: "CET"
|
||||||
LANG: "en_US.UTF-8"
|
LANG: "en_US.UTF-8"
|
||||||
MAILGATEWAY: "mailpit"
|
MAILGATEWAY: "mailgateway"
|
||||||
|
|
||||||
ASYNCEVENT_PROCESSOR_ENABLED: "true"
|
ASYNCEVENT_PROCESSOR_ENABLED: "true"
|
||||||
ASYNCEVENT_PROCESSOR_INITIALDELAY: "10000"
|
ASYNCEVENT_PROCESSOR_INITIALDELAY: "10000"
|
||||||
|
|
@ -41,8 +41,8 @@ services:
|
||||||
WORKFLOW_SERVICE_USER: "admin"
|
WORKFLOW_SERVICE_USER: "admin"
|
||||||
WORKFLOW_SERVICE_PASSWORD: "adminadmin"
|
WORKFLOW_SERVICE_PASSWORD: "adminadmin"
|
||||||
|
|
||||||
# LLM Integration
|
LLM_SERVICE_ENDPOINT_USER: "admin"
|
||||||
LLM_CONFIG_FILE: /opt/jboss/imixs-llm.xml
|
LLM_SERVICE_ENDPOINT_PASSWORD: "imixs4.null"
|
||||||
|
|
||||||
# KSeF - Polen Test
|
# KSeF - Polen Test
|
||||||
KSEF_API_NIP: "9552521552"
|
KSEF_API_NIP: "9552521552"
|
||||||
|
|
@ -57,7 +57,6 @@ services:
|
||||||
- "8787:8787"
|
- "8787:8787"
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/
|
- ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/
|
||||||
- ./docker/keys/imixs-llm.xml:/opt/jboss/imixs-llm.xml
|
|
||||||
- ./docker/transfer:/opt/jboss/wildfly/transfer/
|
- ./docker/transfer:/opt/jboss/wildfly/transfer/
|
||||||
|
|
||||||
###############################################
|
###############################################
|
||||||
|
|
@ -103,15 +102,12 @@ services:
|
||||||
###############################################
|
###############################################
|
||||||
# Mailgateway
|
# Mailgateway
|
||||||
###############################################
|
###############################################
|
||||||
mailpit:
|
mailgateway:
|
||||||
image: axllent/mailpit:latest
|
image: imixs/exim4
|
||||||
container_name: mailpit
|
|
||||||
environment:
|
environment:
|
||||||
MP_SMTP_BIND_ADDR: "0.0.0.0:25"
|
EXIM_SMARTHOST: "www149.your-server.de:25"
|
||||||
ports:
|
EXIM_PASSWORD: "www149.your-server.de:webmaster@imixs.com:$MAILPASSWORD"
|
||||||
- "1025:25" # Host:1025 -> Container:25 (SMTP)
|
EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.18.0.0/12:192.168.0.0/16"
|
||||||
- "8025:8025" # Web UI
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
# prometheus:
|
# prometheus:
|
||||||
# image: prom/prometheus:latest
|
# image: prom/prometheus:latest
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
# LLM Config
|
|
||||||
|
|
||||||
LLM_API_ENDPOINT=https://api.llama.cpp.imixs.com/
|
|
||||||
LLM_API_KEY=7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
imixs-llm.xml - LLM Model Registry
|
|
||||||
======================================
|
|
||||||
Place this file in your deployment so it is available on the classpath,
|
|
||||||
e.g. in src/main/resources/ for a Maven project.
|
|
||||||
|
|
||||||
Each <model> element defines one logical LLM service endpoint.
|
|
||||||
A model is either a completion model OR an embedding model - never both.
|
|
||||||
The BPMN configuration references them separately by their id:
|
|
||||||
|
|
||||||
<imixs-ai name="CONDITION">
|
|
||||||
<endpoint>my-llm</endpoint>
|
|
||||||
...
|
|
||||||
</imixs-ai>
|
|
||||||
|
|
||||||
<imixs-ai name="RAG_INDEX">
|
|
||||||
<endpoint-completion>my-llm</endpoint-completion>
|
|
||||||
<endpoint-embeddings>my-embeddings</endpoint-embeddings>
|
|
||||||
...
|
|
||||||
</imixs-ai>
|
|
||||||
|
|
||||||
Environment variable placeholders are supported via ${env.VAR_NAME}.
|
|
||||||
-->
|
|
||||||
<imixs-llm>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Completion model – used for chat completions, conditions, analysis etc.
|
|
||||||
This example connects to a local llama.cpp server.
|
|
||||||
-->
|
|
||||||
<endpoint id="api.llama.cpp.imixs.com">
|
|
||||||
<url>https://api.llama.cpp.imixs.com/</url>
|
|
||||||
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
|
|
||||||
<options>{
|
|
||||||
"temperature": 0.2,
|
|
||||||
"max_tokens": 1024
|
|
||||||
}
|
|
||||||
</options>
|
|
||||||
</endpoint>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Embedding model – used for RAG indexing and retrieval.
|
|
||||||
This example connects to a separate embedding server.
|
|
||||||
No apikey needed for a locally hosted instance.
|
|
||||||
-->
|
|
||||||
<endpoint id="embeddings.llama.cpp.imixs.com">
|
|
||||||
<url>https://embeddings.llama.cpp.imixs.com/</url>
|
|
||||||
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
|
|
||||||
<options>{
|
|
||||||
"max_tokens": 512
|
|
||||||
}
|
|
||||||
</options>
|
|
||||||
</endpoint>
|
|
||||||
|
|
||||||
</imixs-llm>
|
|
||||||
BIN
docker/lucene-core-7.7.3.jar
Normal file
BIN
docker/lucene-core-7.7.3.jar
Normal file
Binary file not shown.
11
hotdeploy.sh
Executable file
11
hotdeploy.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Setup hotdeploy
|
||||||
|
#
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
cd office-alexander-logistics-app
|
||||||
|
mvn manik-hotdeploy:hotdeploy
|
||||||
|
|
||||||
|
cd ..
|
||||||
53
models/README.md
Executable file
53
models/README.md
Executable file
|
|
@ -0,0 +1,53 @@
|
||||||
|
# ML Models
|
||||||
|
|
||||||
|
Wir verwenden bei Alexander-Global Logistics ein standard Invoice ML Modell. Dieses basiert im Grund auf unserem offizielen spacy modell 'invoice-de-0.1.0'.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Modell Nachtrainieren
|
||||||
|
|
||||||
|
Das Modell bei Alexander Logistics läst sich in der Dev Umggebung bei Bedarf nachtrainieren. Dazu geht man wie folgt vor:
|
||||||
|
|
||||||
|
**1.)** Aktuelles Modell auf Tikal Cloud Server sichern:
|
||||||
|
|
||||||
|
$ ssh imixs@master-1.tikal.imixs.com
|
||||||
|
$ cd tikal-cloud/
|
||||||
|
$ ./apps/alexander-logistics.office-workflow.de/ml_model_backup.sh
|
||||||
|
|
||||||
|
# Falls es zu einem io/error kommt, muss der spacy ml pod neu gestartet werden!
|
||||||
|
|
||||||
|
|
||||||
|
**2.)** Die Tikal-Cloud Pullen
|
||||||
|
|
||||||
|
**3.)** Um auf dem aktuellen Modell weiter zu trainierne, den Inhalt des invoice-de-0.1.0 Folders aus dem Backup directory in die lokale Dev Umgebung kopieren /
|
||||||
|
um ein neues Modell zu genereiren einfach den localen ordner 'invoice-de-0.1.0' umbenennen oder leeren.
|
||||||
|
|
||||||
|
**4.)** Jetzt lokal den Trainingsserver aufrufen
|
||||||
|
|
||||||
|
http://localhost:8081/api/openapi-ui/index.html
|
||||||
|
|
||||||
|
und das training beginnen mit der datei 'training-config-prod.xml'. Man kann das training 3-4 mal durchführen.
|
||||||
|
|
||||||
|
|
||||||
|
**5.)** Nun kann man die Inhalte des invoice-de-0.1.0 Folders zurück auf den Tikal in den modell folder /invoice-de-0.1.0 einspielen
|
||||||
|
|
||||||
|
**6.)** Nun die änderungen nach Git Puschen.
|
||||||
|
|
||||||
|
**7.)** auf dem Tikal Sever nun das aktuellisete Modell wieder einspielen
|
||||||
|
|
||||||
|
$ git pull
|
||||||
|
$ ./apps/alexander-logistics.office-workflow.de/ml_model_deploy.sh invoice-de-0.1.0/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 22.05.2021 - invoice-de-0.1.0
|
||||||
|
|
||||||
|
NER=2.1948
|
||||||
|
|
||||||
|
|
||||||
|
## 17.02.2020 - invoice-de-0.1.0
|
||||||
|
|
||||||
|
Modell trainiert anhand der alexander-logistics Produtiv daten
|
||||||
|
|
||||||
|
|
||||||
491
models/TEST_PROTOKOLL.md
Normal file
491
models/TEST_PROTOKOLL.md
Normal file
|
|
@ -0,0 +1,491 @@
|
||||||
|
# Test Protokoll Alexander Logistic invoice-de-0.1.0
|
||||||
|
|
||||||
|
|
||||||
|
**Validierung**
|
||||||
|
f4eaceda-f28a-4394-928e-1a05daaf2760
|
||||||
|
a5d1e7fe-d74a-4fa2-9b06-3221865759fa
|
||||||
|
c0290497-f613-4492-81b6-4ae1e1680029
|
||||||
|
d8e3fce4-d11c-46a4-8ba0-369b4c6e902f
|
||||||
|
8b766f35-828a-41f1-be04-00b4b62da4d0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**********************************************************************
|
||||||
|
** invoice-de-0.1.0-falsemodell
|
||||||
|
**12.10.2021 15:50** (sort order created)
|
||||||
|
**********************************************************************
|
||||||
|
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||||
|
workflow.pagesize 500
|
||||||
|
ml.training.filepattern .pdf
|
||||||
|
ml.training.iterations 10
|
||||||
|
ml.training.dropoutrate 0,25
|
||||||
|
multiOccurrence false
|
||||||
|
ml.training.quality LOW
|
||||||
|
min_losses 0
|
||||||
|
|
||||||
|
RESULT
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.33% (200)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 15.2% (57)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 17.195895012525614
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 51.73% (194)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.8% (123)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 15.47% (58)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 6.50170386961344
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 14.4% (54)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 4.8940276912225
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 52.8% (198)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32% (120)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 15.2% (57)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.9605563888416824
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 54.13% (203)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 29.6% (111)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 16.27% (61)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.744507591826106
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.07% (199)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 15.73% (59)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.8395576715820736
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32% (120)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 14.13% (53)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.6799682681142363
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.6% (201)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 14.93% (56)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.520244211218683
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 49.33% (185)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.93% (131)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 15.73% (59)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.1511980661715193
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 14.93% (56)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.2739690429824475
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**13.10.2021 12:00**
|
||||||
|
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||||
|
workflow.pagesize 500
|
||||||
|
ml.training.filepattern .pdf|.PDF
|
||||||
|
ml.training.iterations 10
|
||||||
|
ml.training.dropoutrate 0,25
|
||||||
|
multiOccurrence false
|
||||||
|
ml.training.quality LOW
|
||||||
|
min_losses 0
|
||||||
|
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 61.33% (230)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 38.67% (145)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.790466332166552
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 61.07% (229)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 38.93% (146)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.160620521438082
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 58.13% (218)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 41.87% (157)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.636420357788331
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 58.13% (218)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 41.87% (157)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.506552163520219
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 58.93% (221)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 41.07% (154)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.3495061575286793
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 59.47% (223)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 40.53% (152)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.9351332692220107
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 61.33% (230)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 38.67% (145)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.8881396005118698
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 57.87% (217)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 42.13% (158)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.9754112840739593
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 59.73% (224)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 40.27% (151)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.7839739270522237
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 59.73% (224)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 40.27% (151)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.6024293913431429
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**********************************************************************
|
||||||
|
** invoice-de-0.1.0
|
||||||
|
**12.10.2021 15:50** (sort order created)
|
||||||
|
**********************************************************************
|
||||||
|
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||||
|
workflow.pagesize 500
|
||||||
|
ml.training.filepattern .pdf|.PDF
|
||||||
|
ml.training.iterations 10
|
||||||
|
ml.training.dropoutrate 0,25
|
||||||
|
multiOccurrence true
|
||||||
|
ml.training.quality LOW
|
||||||
|
min_losses 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 21.57255353509432
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.73% (254)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.27% (121)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 8.249835149395697
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 5.892598287488733
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 4.964129124089013
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.5603186705177947
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.2% (252)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.53% (122)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.692053828307031
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68% (255)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.3509401762802873
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (247)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.13% (128)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.2695994889458104
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.844410364015416
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 70.67% (265)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 29.07% (109)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.6153951610034658
|
||||||
|
|
||||||
|
|
||||||
|
page=1 (count=500)
|
||||||
|
--------------------------------
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 69.6% (261)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 30.4% (114)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 7.093659738880595
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 5.201780406598962
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.8116329003426204
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66.67% (250)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.33% (125)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.3164488404836154
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66.93% (251)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.07% (124)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.7822570929398576
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 69.07% (259)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 30.93% (116)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.31773083524846
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.8% (258)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.165804551920185
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.9591955652007715
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.5473874007025803
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 375
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (247)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.13% (128)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.705957084193204
|
||||||
|
imixs-ml-training_1 | |#]
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
|
||||||
|
page=0 (count=1000)
|
||||||
|
--------------------------------
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.47% (506)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.53% (244)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.2147245242951565
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 68.8% (516)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 31.07% (233)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.2084385109690565
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.73% (508)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.1797281610496464
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.2% (504)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.67% (245)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.8908819163368502
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 66% (495)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 33.87% (254)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.7774978150912477
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.6% (507)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.669098427922433
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.33% (505)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.53% (244)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.6048149396167861
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.6% (507)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.4026393956412981
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 67.87% (509)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 32% (240)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.1139796046407426
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (494)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34% (255)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.2621875029460226
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
page=1 (count=1000)
|
||||||
|
--------------------------------
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.47% (476)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.4% (273)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 3.7501272727903876
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64% (480)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 35.87% (269)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.7749715296165482
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 65.47% (491)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.27% (257)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 2.191986221088383
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.2% (474)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.53% (274)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.836000005105162
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64.8% (486)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.93% (262)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.629252182245437
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64.27% (482)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 35.47% (266)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.5023185259959349
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.6% (477)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.13% (271)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.1618358977500587
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64.93% (487)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.93% (262)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.1362052688492958
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64.4% (483)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 35.33% (265)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.0497074333838767
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 65.33% (490)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 34.4% (258)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.8865013575787167
|
||||||
|
|
||||||
|
page=1 (count=1000)
|
||||||
|
--------------------------------
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.33% (475)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.4% (273)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.6325150460009787
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 61.73% (463)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 38% (285)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.5385085364524884
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.6% (477)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.13% (271)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.343965340697668
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64.13% (481)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 35.73% (268)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.1842750119930687
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.73% (478)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36% (270)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 1.112559219903824
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 62.8% (471)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.93% (277)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.9444137586901881
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 64% (480)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 35.73% (268)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.9175624525798468
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 63.47% (476)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 36.27% (272)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.8877949306723629
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 62.53% (469)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 37.2% (279)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.7669201996298972
|
||||||
|
imixs-ml-training_1 |
|
||||||
|
imixs-ml-training_1 | ......documents trained in total = 750
|
||||||
|
imixs-ml-training_1 | ...... quality level GOOD = 62.8% (471)
|
||||||
|
imixs-ml-training_1 | ...... quality level LOW = 37.07% (278)
|
||||||
|
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||||
|
imixs-ml-training_1 | ...... average NER = 0.7161310708827515
|
||||||
128
models/invoice-de-0.1.0/config.cfg
Normal file
128
models/invoice-de-0.1.0/config.cfg
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
[paths]
|
||||||
|
train = null
|
||||||
|
dev = null
|
||||||
|
vectors = null
|
||||||
|
init_tok2vec = null
|
||||||
|
|
||||||
|
[system]
|
||||||
|
seed = 0
|
||||||
|
gpu_allocator = null
|
||||||
|
|
||||||
|
[nlp]
|
||||||
|
lang = "de"
|
||||||
|
pipeline = ["ner"]
|
||||||
|
disabled = []
|
||||||
|
before_creation = null
|
||||||
|
after_creation = null
|
||||||
|
after_pipeline_creation = null
|
||||||
|
batch_size = 1000
|
||||||
|
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||||
|
|
||||||
|
[components]
|
||||||
|
|
||||||
|
[components.ner]
|
||||||
|
factory = "ner"
|
||||||
|
incorrect_spans_key = null
|
||||||
|
moves = null
|
||||||
|
scorer = {"@scorers":"spacy.ner_scorer.v1"}
|
||||||
|
update_with_oracle_cut_size = 100
|
||||||
|
|
||||||
|
[components.ner.model]
|
||||||
|
@architectures = "spacy.TransitionBasedParser.v2"
|
||||||
|
state_type = "ner"
|
||||||
|
extra_state_tokens = false
|
||||||
|
hidden_width = 64
|
||||||
|
maxout_pieces = 2
|
||||||
|
use_upper = true
|
||||||
|
nO = null
|
||||||
|
|
||||||
|
[components.ner.model.tok2vec]
|
||||||
|
@architectures = "spacy.HashEmbedCNN.v2"
|
||||||
|
pretrained_vectors = null
|
||||||
|
width = 96
|
||||||
|
depth = 4
|
||||||
|
embed_size = 2000
|
||||||
|
window_size = 1
|
||||||
|
maxout_pieces = 3
|
||||||
|
subword_features = true
|
||||||
|
|
||||||
|
[corpora]
|
||||||
|
|
||||||
|
[corpora.dev]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.dev}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[corpora.train]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.train}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[training]
|
||||||
|
seed = ${system.seed}
|
||||||
|
gpu_allocator = ${system.gpu_allocator}
|
||||||
|
dropout = 0.1
|
||||||
|
accumulate_gradient = 1
|
||||||
|
patience = 1600
|
||||||
|
max_epochs = 0
|
||||||
|
max_steps = 20000
|
||||||
|
eval_frequency = 200
|
||||||
|
frozen_components = []
|
||||||
|
annotating_components = []
|
||||||
|
dev_corpus = "corpora.dev"
|
||||||
|
train_corpus = "corpora.train"
|
||||||
|
before_to_disk = null
|
||||||
|
|
||||||
|
[training.batcher]
|
||||||
|
@batchers = "spacy.batch_by_words.v1"
|
||||||
|
discard_oversize = false
|
||||||
|
tolerance = 0.2
|
||||||
|
get_length = null
|
||||||
|
|
||||||
|
[training.batcher.size]
|
||||||
|
@schedules = "compounding.v1"
|
||||||
|
start = 100
|
||||||
|
stop = 1000
|
||||||
|
compound = 1.001
|
||||||
|
t = 0.0
|
||||||
|
|
||||||
|
[training.logger]
|
||||||
|
@loggers = "spacy.ConsoleLogger.v1"
|
||||||
|
progress_bar = false
|
||||||
|
|
||||||
|
[training.optimizer]
|
||||||
|
@optimizers = "Adam.v1"
|
||||||
|
beta1 = 0.9
|
||||||
|
beta2 = 0.999
|
||||||
|
L2_is_weight_decay = true
|
||||||
|
L2 = 0.01
|
||||||
|
grad_clip = 1.0
|
||||||
|
use_averages = false
|
||||||
|
eps = 0.00000001
|
||||||
|
learn_rate = 0.001
|
||||||
|
|
||||||
|
[training.score_weights]
|
||||||
|
ents_f = 1.0
|
||||||
|
ents_p = 0.0
|
||||||
|
ents_r = 0.0
|
||||||
|
ents_per_type = null
|
||||||
|
|
||||||
|
[pretraining]
|
||||||
|
|
||||||
|
[initialize]
|
||||||
|
vectors = ${paths.vectors}
|
||||||
|
init_tok2vec = ${paths.init_tok2vec}
|
||||||
|
vocab_data = null
|
||||||
|
lookups = null
|
||||||
|
before_init = null
|
||||||
|
after_init = null
|
||||||
|
|
||||||
|
[initialize.components]
|
||||||
|
|
||||||
|
[initialize.tokenizer]
|
||||||
38
models/invoice-de-0.1.0/meta.json
Normal file
38
models/invoice-de-0.1.0/meta.json
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"lang":"de",
|
||||||
|
"name":"pipeline",
|
||||||
|
"version":"0.0.0",
|
||||||
|
"spacy_version":">=3.4.1,<3.5.0",
|
||||||
|
"description":"",
|
||||||
|
"author":"",
|
||||||
|
"email":"",
|
||||||
|
"url":"",
|
||||||
|
"license":"",
|
||||||
|
"spacy_git_version":"Unknown",
|
||||||
|
"vectors":{
|
||||||
|
"width":0,
|
||||||
|
"vectors":0,
|
||||||
|
"keys":0,
|
||||||
|
"name":null,
|
||||||
|
"mode":"default"
|
||||||
|
},
|
||||||
|
"labels":{
|
||||||
|
"ner":[
|
||||||
|
"cdtr.bic",
|
||||||
|
"cdtr.iban",
|
||||||
|
"cdtr.name",
|
||||||
|
"invoice.date",
|
||||||
|
"invoice.number",
|
||||||
|
"invoice.total"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pipeline":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"components":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"disabled":[
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
13
models/invoice-de-0.1.0/ner/cfg
Normal file
13
models/invoice-de-0.1.0/ner/cfg
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"moves":null,
|
||||||
|
"update_with_oracle_cut_size":100,
|
||||||
|
"multitasks":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"min_action_freq":1,
|
||||||
|
"learn_tokens":false,
|
||||||
|
"beam_width":1,
|
||||||
|
"beam_density":0.0,
|
||||||
|
"beam_update_prob":0.0,
|
||||||
|
"incorrect_spans_key":null
|
||||||
|
}
|
||||||
BIN
models/invoice-de-0.1.0/ner/model
Normal file
BIN
models/invoice-de-0.1.0/ner/model
Normal file
Binary file not shown.
1
models/invoice-de-0.1.0/ner/moves
Normal file
1
models/invoice-de-0.1.0/ner/moves
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
‚¥movesÚÄ{"0":{},"1":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"2":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"3":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"4":{"":1,"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||||
3
models/invoice-de-0.1.0/tokenizer
Normal file
3
models/invoice-de-0.1.0/tokenizer
Normal file
File diff suppressed because one or more lines are too long
1
models/invoice-de-0.1.0/vocab/key2row
Normal file
1
models/invoice-de-0.1.0/vocab/key2row
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
1
models/invoice-de-0.1.0/vocab/lookups.bin
Normal file
1
models/invoice-de-0.1.0/vocab/lookups.bin
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
109773
models/invoice-de-0.1.0/vocab/strings.json
Normal file
109773
models/invoice-de-0.1.0/vocab/strings.json
Normal file
File diff suppressed because it is too large
Load diff
BIN
models/invoice-de-0.1.0/vocab/vectors
Normal file
BIN
models/invoice-de-0.1.0/vocab/vectors
Normal file
Binary file not shown.
3
models/invoice-de-0.1.0/vocab/vectors.cfg
Normal file
3
models/invoice-de-0.1.0/vocab/vectors.cfg
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"mode":"default"
|
||||||
|
}
|
||||||
127
models/invoice-de-0.1.0_2022_01_01/config.cfg
Normal file
127
models/invoice-de-0.1.0_2022_01_01/config.cfg
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
[paths]
|
||||||
|
train = null
|
||||||
|
dev = null
|
||||||
|
vectors = null
|
||||||
|
init_tok2vec = null
|
||||||
|
|
||||||
|
[system]
|
||||||
|
seed = 0
|
||||||
|
gpu_allocator = null
|
||||||
|
|
||||||
|
[nlp]
|
||||||
|
lang = "de"
|
||||||
|
pipeline = ["ner"]
|
||||||
|
disabled = []
|
||||||
|
before_creation = null
|
||||||
|
after_creation = null
|
||||||
|
after_pipeline_creation = null
|
||||||
|
batch_size = 1000
|
||||||
|
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||||
|
|
||||||
|
[components]
|
||||||
|
|
||||||
|
[components.ner]
|
||||||
|
factory = "ner"
|
||||||
|
incorrect_spans_key = null
|
||||||
|
moves = null
|
||||||
|
update_with_oracle_cut_size = 100
|
||||||
|
|
||||||
|
[components.ner.model]
|
||||||
|
@architectures = "spacy.TransitionBasedParser.v2"
|
||||||
|
state_type = "ner"
|
||||||
|
extra_state_tokens = false
|
||||||
|
hidden_width = 64
|
||||||
|
maxout_pieces = 2
|
||||||
|
use_upper = true
|
||||||
|
nO = null
|
||||||
|
|
||||||
|
[components.ner.model.tok2vec]
|
||||||
|
@architectures = "spacy.HashEmbedCNN.v2"
|
||||||
|
pretrained_vectors = null
|
||||||
|
width = 96
|
||||||
|
depth = 4
|
||||||
|
embed_size = 2000
|
||||||
|
window_size = 1
|
||||||
|
maxout_pieces = 3
|
||||||
|
subword_features = true
|
||||||
|
|
||||||
|
[corpora]
|
||||||
|
|
||||||
|
[corpora.dev]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.dev}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[corpora.train]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.train}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[training]
|
||||||
|
seed = ${system.seed}
|
||||||
|
gpu_allocator = ${system.gpu_allocator}
|
||||||
|
dropout = 0.1
|
||||||
|
accumulate_gradient = 1
|
||||||
|
patience = 1600
|
||||||
|
max_epochs = 0
|
||||||
|
max_steps = 20000
|
||||||
|
eval_frequency = 200
|
||||||
|
frozen_components = []
|
||||||
|
annotating_components = []
|
||||||
|
dev_corpus = "corpora.dev"
|
||||||
|
train_corpus = "corpora.train"
|
||||||
|
before_to_disk = null
|
||||||
|
|
||||||
|
[training.batcher]
|
||||||
|
@batchers = "spacy.batch_by_words.v1"
|
||||||
|
discard_oversize = false
|
||||||
|
tolerance = 0.2
|
||||||
|
get_length = null
|
||||||
|
|
||||||
|
[training.batcher.size]
|
||||||
|
@schedules = "compounding.v1"
|
||||||
|
start = 100
|
||||||
|
stop = 1000
|
||||||
|
compound = 1.001
|
||||||
|
t = 0.0
|
||||||
|
|
||||||
|
[training.logger]
|
||||||
|
@loggers = "spacy.ConsoleLogger.v1"
|
||||||
|
progress_bar = false
|
||||||
|
|
||||||
|
[training.optimizer]
|
||||||
|
@optimizers = "Adam.v1"
|
||||||
|
beta1 = 0.9
|
||||||
|
beta2 = 0.999
|
||||||
|
L2_is_weight_decay = true
|
||||||
|
L2 = 0.01
|
||||||
|
grad_clip = 1.0
|
||||||
|
use_averages = false
|
||||||
|
eps = 0.00000001
|
||||||
|
learn_rate = 0.001
|
||||||
|
|
||||||
|
[training.score_weights]
|
||||||
|
ents_f = 1.0
|
||||||
|
ents_p = 0.0
|
||||||
|
ents_r = 0.0
|
||||||
|
ents_per_type = null
|
||||||
|
|
||||||
|
[pretraining]
|
||||||
|
|
||||||
|
[initialize]
|
||||||
|
vectors = ${paths.vectors}
|
||||||
|
init_tok2vec = ${paths.init_tok2vec}
|
||||||
|
vocab_data = null
|
||||||
|
lookups = null
|
||||||
|
before_init = null
|
||||||
|
after_init = null
|
||||||
|
|
||||||
|
[initialize.components]
|
||||||
|
|
||||||
|
[initialize.tokenizer]
|
||||||
40
models/invoice-de-0.1.0_2022_01_01/meta.json
Normal file
40
models/invoice-de-0.1.0_2022_01_01/meta.json
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"lang":"de",
|
||||||
|
"name":"pipeline",
|
||||||
|
"version":"0.0.0",
|
||||||
|
"spacy_version":">=3.1.1,<3.2.0",
|
||||||
|
"description":"",
|
||||||
|
"author":"",
|
||||||
|
"email":"",
|
||||||
|
"url":"",
|
||||||
|
"license":"",
|
||||||
|
"spacy_git_version":"ffaead8fe",
|
||||||
|
"vectors":{
|
||||||
|
"width":0,
|
||||||
|
"vectors":0,
|
||||||
|
"keys":0,
|
||||||
|
"name":null
|
||||||
|
},
|
||||||
|
"labels":{
|
||||||
|
"ner":[
|
||||||
|
"cdtr.bic",
|
||||||
|
"cdtr.iban",
|
||||||
|
"cdtr.name",
|
||||||
|
"invoice.date",
|
||||||
|
"invoice.number",
|
||||||
|
"invoice.total"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pipeline":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"components":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"disabled":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"_sourced_vectors_hashes":{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
13
models/invoice-de-0.1.0_2022_01_01/ner/cfg
Normal file
13
models/invoice-de-0.1.0_2022_01_01/ner/cfg
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"moves":null,
|
||||||
|
"update_with_oracle_cut_size":100,
|
||||||
|
"multitasks":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"min_action_freq":1,
|
||||||
|
"learn_tokens":false,
|
||||||
|
"beam_width":1,
|
||||||
|
"beam_density":0.0,
|
||||||
|
"beam_update_prob":0.0,
|
||||||
|
"incorrect_spans_key":null
|
||||||
|
}
|
||||||
BIN
models/invoice-de-0.1.0_2022_01_01/ner/model
Normal file
BIN
models/invoice-de-0.1.0_2022_01_01/ner/model
Normal file
Binary file not shown.
1
models/invoice-de-0.1.0_2022_01_01/ner/moves
Normal file
1
models/invoice-de-0.1.0_2022_01_01/ner/moves
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
‚¥movesÚÄ{"0":{},"1":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"2":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"3":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"4":{"":1,"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||||
3
models/invoice-de-0.1.0_2022_01_01/tokenizer
Normal file
3
models/invoice-de-0.1.0_2022_01_01/tokenizer
Normal file
File diff suppressed because one or more lines are too long
1
models/invoice-de-0.1.0_2022_01_01/vocab/key2row
Normal file
1
models/invoice-de-0.1.0_2022_01_01/vocab/key2row
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
1
models/invoice-de-0.1.0_2022_01_01/vocab/lookups.bin
Normal file
1
models/invoice-de-0.1.0_2022_01_01/vocab/lookups.bin
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
85965
models/invoice-de-0.1.0_2022_01_01/vocab/strings.json
Normal file
85965
models/invoice-de-0.1.0_2022_01_01/vocab/strings.json
Normal file
File diff suppressed because it is too large
Load diff
BIN
models/invoice-de-0.1.0_2022_01_01/vocab/vectors
Normal file
BIN
models/invoice-de-0.1.0_2022_01_01/vocab/vectors
Normal file
Binary file not shown.
128
models/invoice-de-0.2.0/config.cfg
Normal file
128
models/invoice-de-0.2.0/config.cfg
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
[paths]
|
||||||
|
train = null
|
||||||
|
dev = null
|
||||||
|
vectors = null
|
||||||
|
init_tok2vec = null
|
||||||
|
|
||||||
|
[system]
|
||||||
|
seed = 0
|
||||||
|
gpu_allocator = null
|
||||||
|
|
||||||
|
[nlp]
|
||||||
|
lang = "de"
|
||||||
|
pipeline = ["ner"]
|
||||||
|
disabled = []
|
||||||
|
before_creation = null
|
||||||
|
after_creation = null
|
||||||
|
after_pipeline_creation = null
|
||||||
|
batch_size = 1000
|
||||||
|
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||||
|
|
||||||
|
[components]
|
||||||
|
|
||||||
|
[components.ner]
|
||||||
|
factory = "ner"
|
||||||
|
incorrect_spans_key = null
|
||||||
|
moves = null
|
||||||
|
scorer = {"@scorers":"spacy.ner_scorer.v1"}
|
||||||
|
update_with_oracle_cut_size = 100
|
||||||
|
|
||||||
|
[components.ner.model]
|
||||||
|
@architectures = "spacy.TransitionBasedParser.v2"
|
||||||
|
state_type = "ner"
|
||||||
|
extra_state_tokens = false
|
||||||
|
hidden_width = 64
|
||||||
|
maxout_pieces = 2
|
||||||
|
use_upper = true
|
||||||
|
nO = null
|
||||||
|
|
||||||
|
[components.ner.model.tok2vec]
|
||||||
|
@architectures = "spacy.HashEmbedCNN.v2"
|
||||||
|
pretrained_vectors = null
|
||||||
|
width = 96
|
||||||
|
depth = 4
|
||||||
|
embed_size = 2000
|
||||||
|
window_size = 1
|
||||||
|
maxout_pieces = 3
|
||||||
|
subword_features = true
|
||||||
|
|
||||||
|
[corpora]
|
||||||
|
|
||||||
|
[corpora.dev]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.dev}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[corpora.train]
|
||||||
|
@readers = "spacy.Corpus.v1"
|
||||||
|
path = ${paths.train}
|
||||||
|
gold_preproc = false
|
||||||
|
max_length = 0
|
||||||
|
limit = 0
|
||||||
|
augmenter = null
|
||||||
|
|
||||||
|
[training]
|
||||||
|
seed = ${system.seed}
|
||||||
|
gpu_allocator = ${system.gpu_allocator}
|
||||||
|
dropout = 0.1
|
||||||
|
accumulate_gradient = 1
|
||||||
|
patience = 1600
|
||||||
|
max_epochs = 0
|
||||||
|
max_steps = 20000
|
||||||
|
eval_frequency = 200
|
||||||
|
frozen_components = []
|
||||||
|
annotating_components = []
|
||||||
|
dev_corpus = "corpora.dev"
|
||||||
|
train_corpus = "corpora.train"
|
||||||
|
before_to_disk = null
|
||||||
|
|
||||||
|
[training.batcher]
|
||||||
|
@batchers = "spacy.batch_by_words.v1"
|
||||||
|
discard_oversize = false
|
||||||
|
tolerance = 0.2
|
||||||
|
get_length = null
|
||||||
|
|
||||||
|
[training.batcher.size]
|
||||||
|
@schedules = "compounding.v1"
|
||||||
|
start = 100
|
||||||
|
stop = 1000
|
||||||
|
compound = 1.001
|
||||||
|
t = 0.0
|
||||||
|
|
||||||
|
[training.logger]
|
||||||
|
@loggers = "spacy.ConsoleLogger.v1"
|
||||||
|
progress_bar = false
|
||||||
|
|
||||||
|
[training.optimizer]
|
||||||
|
@optimizers = "Adam.v1"
|
||||||
|
beta1 = 0.9
|
||||||
|
beta2 = 0.999
|
||||||
|
L2_is_weight_decay = true
|
||||||
|
L2 = 0.01
|
||||||
|
grad_clip = 1.0
|
||||||
|
use_averages = false
|
||||||
|
eps = 0.00000001
|
||||||
|
learn_rate = 0.001
|
||||||
|
|
||||||
|
[training.score_weights]
|
||||||
|
ents_f = 1.0
|
||||||
|
ents_p = 0.0
|
||||||
|
ents_r = 0.0
|
||||||
|
ents_per_type = null
|
||||||
|
|
||||||
|
[pretraining]
|
||||||
|
|
||||||
|
[initialize]
|
||||||
|
vectors = ${paths.vectors}
|
||||||
|
init_tok2vec = ${paths.init_tok2vec}
|
||||||
|
vocab_data = null
|
||||||
|
lookups = null
|
||||||
|
before_init = null
|
||||||
|
after_init = null
|
||||||
|
|
||||||
|
[initialize.components]
|
||||||
|
|
||||||
|
[initialize.tokenizer]
|
||||||
38
models/invoice-de-0.2.0/meta.json
Normal file
38
models/invoice-de-0.2.0/meta.json
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"lang":"de",
|
||||||
|
"name":"pipeline",
|
||||||
|
"version":"0.0.0",
|
||||||
|
"spacy_version":">=3.4.1,<3.5.0",
|
||||||
|
"description":"",
|
||||||
|
"author":"",
|
||||||
|
"email":"",
|
||||||
|
"url":"",
|
||||||
|
"license":"",
|
||||||
|
"spacy_git_version":"Unknown",
|
||||||
|
"vectors":{
|
||||||
|
"width":0,
|
||||||
|
"vectors":0,
|
||||||
|
"keys":0,
|
||||||
|
"name":null,
|
||||||
|
"mode":"default"
|
||||||
|
},
|
||||||
|
"labels":{
|
||||||
|
"ner":[
|
||||||
|
"cdtr.bic",
|
||||||
|
"cdtr.iban",
|
||||||
|
"cdtr.name",
|
||||||
|
"invoice.date",
|
||||||
|
"invoice.number",
|
||||||
|
"invoice.total"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pipeline":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"components":[
|
||||||
|
"ner"
|
||||||
|
],
|
||||||
|
"disabled":[
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
13
models/invoice-de-0.2.0/ner/cfg
Normal file
13
models/invoice-de-0.2.0/ner/cfg
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"moves":null,
|
||||||
|
"update_with_oracle_cut_size":100,
|
||||||
|
"multitasks":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"min_action_freq":1,
|
||||||
|
"learn_tokens":false,
|
||||||
|
"beam_width":1,
|
||||||
|
"beam_density":0.0,
|
||||||
|
"beam_update_prob":0.0,
|
||||||
|
"incorrect_spans_key":null
|
||||||
|
}
|
||||||
BIN
models/invoice-de-0.2.0/ner/model
Normal file
BIN
models/invoice-de-0.2.0/ner/model
Normal file
Binary file not shown.
1
models/invoice-de-0.2.0/ner/moves
Normal file
1
models/invoice-de-0.2.0/ner/moves
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
‚¥movesÚÄ{"0":{},"1":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"2":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"3":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"4":{"":1,"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||||
3
models/invoice-de-0.2.0/tokenizer
Normal file
3
models/invoice-de-0.2.0/tokenizer
Normal file
File diff suppressed because one or more lines are too long
1
models/invoice-de-0.2.0/vocab/key2row
Normal file
1
models/invoice-de-0.2.0/vocab/key2row
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
1
models/invoice-de-0.2.0/vocab/lookups.bin
Normal file
1
models/invoice-de-0.2.0/vocab/lookups.bin
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<EFBFBD>
|
||||||
203737
models/invoice-de-0.2.0/vocab/strings.json
Normal file
203737
models/invoice-de-0.2.0/vocab/strings.json
Normal file
File diff suppressed because it is too large
Load diff
BIN
models/invoice-de-0.2.0/vocab/vectors
Normal file
BIN
models/invoice-de-0.2.0/vocab/vectors
Normal file
Binary file not shown.
3
models/invoice-de-0.2.0/vocab/vectors.cfg
Normal file
3
models/invoice-de-0.2.0/vocab/vectors.cfg
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"mode":"default"
|
||||||
|
}
|
||||||
44
models/model-analyze-prod.xml
Executable file
44
models/model-analyze-prod.xml
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
|
||||||
|
<!-- Workflow Instance -->
|
||||||
|
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||||
|
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||||
|
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||||
|
|
||||||
|
<item name="workflow.pagesize"><value xsi:type="xs:int">100</value></item>
|
||||||
|
<item name="workflow.pageindex"><value xsi:type="xs:int">30</value></item>
|
||||||
|
<item name="workflow.entities">
|
||||||
|
<value xsi:type="xs:string">cdtr.name</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.iban</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.bic</value>
|
||||||
|
<value xsi:type="xs:string">invoice.total</value>
|
||||||
|
<value xsi:type="xs:string">invoice.date</value>
|
||||||
|
<value xsi:type="xs:string">invoice.number</value>
|
||||||
|
</item>
|
||||||
|
<item name="workflow.locale">
|
||||||
|
<value xsi:type="xs:string">en_GB</value>
|
||||||
|
<value xsi:type="xs:string">en_US</value>
|
||||||
|
<value xsi:type="xs:string">de_DE</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Tika OCR Server -->
|
||||||
|
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||||
|
<item name="tika.options">
|
||||||
|
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||||
|
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- ML spaCy Server -->
|
||||||
|
<item name="ml.validation.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||||
|
<item name="ml.validation.model"><value xsi:type="xs:string">invoice-de-0.1.0</value></item>
|
||||||
|
<item name="ml.validation.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||||
|
|
||||||
|
</document>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
53
models/model-train-prod.xml
Executable file
53
models/model-train-prod.xml
Executable file
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
|
||||||
|
<!-- Workflow Instance -->
|
||||||
|
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||||
|
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||||
|
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||||
|
|
||||||
|
<item name="workflow.entities">
|
||||||
|
<value xsi:type="xs:string">cdtr.name</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.iban</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.bic</value>
|
||||||
|
<value xsi:type="xs:string">invoice.total</value>
|
||||||
|
<value xsi:type="xs:string">invoice.date</value>
|
||||||
|
<value xsi:type="xs:string">invoice.number</value>
|
||||||
|
</item>
|
||||||
|
<item name="workflow.locale">
|
||||||
|
<value xsi:type="xs:string">en_GB</value>
|
||||||
|
<value xsi:type="xs:string">en_US</value>
|
||||||
|
<value xsi:type="xs:string">de_DE</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Tika OCR Server -->
|
||||||
|
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||||
|
<item name="tika.options">
|
||||||
|
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||||
|
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- ML spaCy Server -->
|
||||||
|
<item name="ml.training.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||||
|
<item name="ml.training.model"><value xsi:type="xs:string">invoice-de-0.2.0</value></item>
|
||||||
|
<item name="ml.training.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||||
|
<!-- LOW | GOOD -->
|
||||||
|
<item name="ml.training.quality"><value xsi:type="xs:string">LOW</value></item>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Define the training set and taining mode -->
|
||||||
|
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||||
|
<item name="workflow.pagesize"><value xsi:type="xs:int">1000</value></item>
|
||||||
|
<item name="workflow.pageindex"><value xsi:type="xs:int">0</value></item>
|
||||||
|
<item name="ml.training.iterations"><value xsi:type="xs:string">5</value></item>
|
||||||
|
<item name="ml.training.dropoutrate"><value xsi:type="xs:string">0.0</value></item>
|
||||||
|
<item name="ml.options">
|
||||||
|
<value xsi:type="xs:string">min_losses=0.0&retrain_rate=100</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
|
||||||
|
</document>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
48
models/model-valiate-prod.xml
Executable file
48
models/model-valiate-prod.xml
Executable file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
|
||||||
|
<!-- Workflow Instance -->
|
||||||
|
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||||
|
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||||
|
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||||
|
|
||||||
|
<item name="workflow.entities">
|
||||||
|
<value xsi:type="xs:string">cdtr.name</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.iban</value>
|
||||||
|
<value xsi:type="xs:string">cdtr.bic</value>
|
||||||
|
<value xsi:type="xs:string">invoice.total</value>
|
||||||
|
<value xsi:type="xs:string">invoice.date</value>
|
||||||
|
<value xsi:type="xs:string">invoice.number</value>
|
||||||
|
</item>
|
||||||
|
<item name="workflow.locale">
|
||||||
|
<value xsi:type="xs:string">en_GB</value>
|
||||||
|
<value xsi:type="xs:string">en_US</value>
|
||||||
|
<value xsi:type="xs:string">de_DE</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Tika OCR Server -->
|
||||||
|
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||||
|
<item name="tika.options">
|
||||||
|
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||||
|
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- ML spaCy Server -->
|
||||||
|
<item name="ml.training.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||||
|
<item name="ml.training.model"><value xsi:type="xs:string">invoice-de-0.2.0</value></item>
|
||||||
|
<item name="ml.training.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||||
|
<!-- LOW | GOOD -->
|
||||||
|
<item name="ml.training.quality"><value xsi:type="xs:string">LOW</value></item>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Define the training set and taining mode -->
|
||||||
|
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||||
|
<item name="workflow.pagesize"><value xsi:type="xs:int">100</value></item>
|
||||||
|
<item name="workflow.pageindex"><value xsi:type="xs:int">40</value></item>
|
||||||
|
|
||||||
|
|
||||||
|
</document>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1
office-alexander-logistics-app/.gitignore
vendored
Normal file
1
office-alexander-logistics-app/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/target/
|
||||||
430
office-alexander-logistics-app/pom.xml
Normal file
430
office-alexander-logistics-app/pom.xml
Normal file
|
|
@ -0,0 +1,430 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<artifactId>office-alexander-logistics</artifactId>
|
||||||
|
<groupId>com.alexander-logistics</groupId>
|
||||||
|
<version>1.3.5</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>office-alexander-logistics-app</artifactId>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<name>Imixs Office Workflow App</name>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>docker</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.8</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>install</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<exec executable="docker">
|
||||||
|
<arg value="build" />
|
||||||
|
<arg value="-t" />
|
||||||
|
<arg value="imixs/${imixs-office.applicationname}" />
|
||||||
|
<arg value="../." />
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<profile>
|
||||||
|
<id>debug</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.8</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>install</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<exec executable="docker">
|
||||||
|
<arg value="build" />
|
||||||
|
<arg value="-f" />
|
||||||
|
<arg value="../Dockerfile-wildfly-debug" />
|
||||||
|
<arg value="-t" />
|
||||||
|
<arg value="imixs/${imixs-office.applicationname}" />
|
||||||
|
<arg value="../." />
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<profile>
|
||||||
|
<id>kubernetes</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.8</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>install</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<exec executable="docker">
|
||||||
|
<arg value="build" />
|
||||||
|
<arg value="-t" />
|
||||||
|
<arg
|
||||||
|
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
|
<arg value="../." />
|
||||||
|
</exec>
|
||||||
|
<exec executable="docker">
|
||||||
|
<arg value="tag" />
|
||||||
|
<arg
|
||||||
|
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
|
<arg
|
||||||
|
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
|
</exec>
|
||||||
|
<exec executable="docker">
|
||||||
|
<arg value="push" />
|
||||||
|
<arg
|
||||||
|
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
<build>
|
||||||
|
<testResources>
|
||||||
|
<testResource>
|
||||||
|
<directory>${basedir}/../reports</directory>
|
||||||
|
</testResource>
|
||||||
|
<testResource>
|
||||||
|
<directory>${basedir}/../workflow</directory>
|
||||||
|
</testResource>
|
||||||
|
<testResource>
|
||||||
|
<directory>${basedir}/src/test/resources</directory>
|
||||||
|
</testResource>
|
||||||
|
</testResources>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>3.3.2</version>
|
||||||
|
<configuration>
|
||||||
|
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||||
|
<webResources>
|
||||||
|
<resource>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<!-- this is relative to the pom.xml directory -->
|
||||||
|
<directory>${custom.webResources}</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/WEB-INF/*</include>
|
||||||
|
<!-- include any other file types you want to filter -->
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
</webResources>
|
||||||
|
<workDirectory>target/overlay-war-folder</workDirectory>
|
||||||
|
<!-- We exclude libs form the parent WAR artifact -->
|
||||||
|
<overlays>
|
||||||
|
<overlay>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-office-workflow-app</artifactId>
|
||||||
|
<excludes>
|
||||||
|
<exclude>WEB-INF/lib/*.jar</exclude>
|
||||||
|
</excludes>
|
||||||
|
</overlay>
|
||||||
|
</overlays>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.imixs.maven</groupId>
|
||||||
|
<artifactId>manik-hotdeploy-maven-plugin</artifactId>
|
||||||
|
<version>2.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>install</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>deploy</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<!-- List Source and Target folders for Autodeploy and Hotdeploy -->
|
||||||
|
<autodeployments>
|
||||||
|
<deployment>
|
||||||
|
<!-- wildcard deployment -->
|
||||||
|
<source>target/*.{war,ear,jar}</source>
|
||||||
|
<target>../docker/deployments/</target>
|
||||||
|
<unpack>true</unpack>
|
||||||
|
</deployment>
|
||||||
|
</autodeployments>
|
||||||
|
<hotdeployments>
|
||||||
|
<deployment>
|
||||||
|
<source>src/main/webapp</source>
|
||||||
|
<target>../docker/deployments/office-alexander-logistics.war</target>
|
||||||
|
</deployment>
|
||||||
|
</hotdeployments>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Imixs Workflow -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-workflow-core</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-workflow-engine</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-workflow-jax-rs</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-workflow-faces</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-workflow-index-lucene</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Marty -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-marty</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Imixs-Office-Workflow -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-office-workflow-app</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-office-workflow-util</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Imixs-Archive -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-archive-api</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Imixs Data -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-data-groups</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-data-views</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-data-documents</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-data-importer</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SEPA Adapter -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-adapters-sepa</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- DATEV Adapter -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-adapters-datev</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- QR Code -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- POI Adapter -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-adapters-poi</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
<artifactId>imixs-ai-workflow</artifactId>
|
||||||
|
<version>${org.imixs.ai.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- E-Invoice -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.imixs.util</groupId>
|
||||||
|
<artifactId>imixs-e-invoice</artifactId>
|
||||||
|
<version>${org.imixs.e-invoice.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sf.saxon</groupId>
|
||||||
|
<artifactId>Saxon-HE</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- Apache PDFBox -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.pdfbox</groupId>
|
||||||
|
<artifactId>pdfbox</artifactId>
|
||||||
|
<version>${apache.pdfbox.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Apache Commons FTP Client -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-net</groupId>
|
||||||
|
<artifactId>commons-net</artifactId>
|
||||||
|
<version>3.6</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Microsoft oauth token -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.mail</groupId>
|
||||||
|
<artifactId>javax.mail</artifactId>
|
||||||
|
<version>1.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>4.5.10</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-databind</artifactId>
|
||||||
|
<version>2.13.3</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- JUnit Tests
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.json</groupId>
|
||||||
|
<artifactId>javax.json-api</artifactId>
|
||||||
|
<version>1.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish</groupId>
|
||||||
|
<artifactId>javax.json</artifactId>
|
||||||
|
<version>1.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
<!-- JAX-RS 2.0 Test dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jersey.core</groupId>
|
||||||
|
<artifactId>jersey-client</artifactId>
|
||||||
|
<version>3.1.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-rs-client</artifactId>
|
||||||
|
<version>3.3.6</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jersey.inject</groupId>
|
||||||
|
<artifactId>jersey-hk2</artifactId>
|
||||||
|
<version>3.1.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>jakarta.ws.rs</groupId>
|
||||||
|
<artifactId>jakarta.ws.rs-api</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- KSeF 2.0 Client
|
||||||
|
<dependency>
|
||||||
|
<groupId>pl.akmf.ksef-sdk</groupId>
|
||||||
|
<artifactId>ksef-client</artifactId>
|
||||||
|
<version>3.0.4</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>github-cirfmf</id>
|
||||||
|
<url>https://maven.pkg.github.com/CIRFMF/ksef-client-java</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
-->
|
||||||
|
</project>
|
||||||
|
|
@ -120,57 +120,55 @@ public class AGLAnalyticControllerDebitor implements Serializable {
|
||||||
link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr();
|
link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr();
|
||||||
}
|
}
|
||||||
if ("analytic.invoices.count.all".equals(event.getKey())) {
|
if ("analytic.invoices.count.all".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", countAll);
|
event.setValue("" + countAll);
|
||||||
event.getData().setItemValue("label", formatTotals(totalAllCurrency1, totalAllCurrency2));
|
event.setLabel(formatTotals(totalAllCurrency1, totalAllCurrency2));
|
||||||
event.getData().setItemValue("description", "Total invoices");
|
event.setDescription("Total invoices");
|
||||||
event.getWorkitem().setItemValue("invoices.total", countAll);
|
event.getWorkitem().setItemValue("invoices.total", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.open".equals(event.getKey())) {
|
if ("analytic.invoices.count.open".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countOpen);
|
event.setValue("" + countOpen);
|
||||||
event.getData().setItemValue("label", formatTotals(totalOpenCurrency1, totalOpenCurrency2));
|
event.setLabel(formatTotals(totalOpenCurrency1, totalOpenCurrency2));
|
||||||
event.getData().setItemValue("description", "Total invoices not yet in due");
|
event.setDescription("Total invoices not yet in due");
|
||||||
event.getWorkitem().setItemValue("invoices.total.open", countOpen);
|
event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.due".equals(event.getKey())) {
|
if ("analytic.invoices.count.due".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countDue);
|
event.setValue("" + countDue);
|
||||||
event.getData().setItemValue("label", formatTotals(totalDueCurrency1, totalDueCurrency2));
|
event.setLabel(formatTotals(totalDueCurrency1, totalDueCurrency2));
|
||||||
event.getData().setItemValue("description", "Total invoices in due");
|
event.setDescription("Total invoices in due");
|
||||||
event.getWorkitem().setItemValue("invoices.total.due", countDue);
|
event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
|
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countDunning);
|
event.setValue("" + countDunning);
|
||||||
event.getData().setItemValue("label", formatTotals(totalDunningCurrency1, totalDunningCurrency2));
|
event.setLabel(formatTotals(totalDunningCurrency1, totalDunningCurrency2));
|
||||||
event.getData().setItemValue("description", "Total invoices in dunning");
|
event.setDescription("Total invoices in dunning");
|
||||||
event.getWorkitem().setItemValue("invoices.total.dunning", countDunning);
|
event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.payment.avg.due".equals(event.getKey())) {
|
if ("analytic.payment.avg.due".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + averagePaymentDue);
|
event.setValue("" + averagePaymentDue);
|
||||||
event.getData().setItemValue("label", "days");
|
event.setLabel("days");
|
||||||
event.getData().setItemValue("description", "Average terms of credit in the last 12 months.");
|
event.setDescription("Average terms of credit in the last 12 months.");
|
||||||
event.getWorkitem().setItemValue("payment.avg.due", averagePaymentDue);
|
event.getWorkitem().setItemValue("payment.avg.due", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.payment.avg.days".equals(event.getKey())) {
|
if ("analytic.payment.avg.days".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + averagePaymentDays);
|
event.setValue("" + averagePaymentDays);
|
||||||
event.getData().setItemValue("label", "days");
|
event.setLabel("days");
|
||||||
event.getData().setItemValue("description", "Average duration for payment during the last 12 months.");
|
event.setDescription("Average duration for payment during the last 12 months.");
|
||||||
event.getWorkitem().setItemValue("payment.avg.days", averagePaymentDays);
|
event.getWorkitem().setItemValue("payment.avg.days", event.getValue());
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.trend".equals(event.getKey())) {
|
if ("analytic.invoices.trend".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", chartData);
|
event.setValue(chartData);
|
||||||
event.getData().setItemValue("label", "Payment duration in days");
|
event.setLabel("Payment duration in days");
|
||||||
event.getData().setItemValue("description", "Payment practice by week");
|
event.setDescription("Payment practice by week");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,39 +100,34 @@ public class AGLAnalyticControllerOPListe implements Serializable {
|
||||||
+ "&spaceref=" + departmentID;
|
+ "&spaceref=" + departmentID;
|
||||||
}
|
}
|
||||||
if ("analytic.invoices.count.all".equals(event.getKey())) {
|
if ("analytic.invoices.count.all".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countAll);
|
event.setValue("" + countAll);
|
||||||
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
|
event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
|
||||||
event.getData().setItemValue("description",
|
event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.all"));
|
||||||
resourceBundleHandler.findMessage("oplist.invoices.description.all"));
|
event.getWorkitem().setItemValue("invoices.total", event.getValue());
|
||||||
event.getWorkitem().setItemValue("invoices.total", countAll);
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.open".equals(event.getKey())) {
|
if ("analytic.invoices.count.open".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + (countOpen));
|
event.setValue("" + (countOpen));
|
||||||
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
|
event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
|
||||||
event.getData().setItemValue("description",
|
event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.open"));
|
||||||
resourceBundleHandler.findMessage("oplist.invoices.description.open"));
|
event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
|
||||||
event.getWorkitem().setItemValue("invoices.total.open", countOpen);
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.due".equals(event.getKey())) {
|
if ("analytic.invoices.count.due".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countDue);
|
event.setValue("" + countDue);
|
||||||
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
|
event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
|
||||||
event.getData().setItemValue("description",
|
event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.due"));
|
||||||
resourceBundleHandler.findMessage("oplist.invoices.description.due"));
|
event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
|
||||||
event.getWorkitem().setItemValue("invoices.total.due", countDue);
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
|
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", "" + countDunning);
|
event.setValue("" + countDunning);
|
||||||
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
|
event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
|
||||||
event.getData().setItemValue("description",
|
event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.dunning"));
|
||||||
resourceBundleHandler.findMessage("oplist.invoices.description.dunning"));
|
event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
|
||||||
event.getWorkitem().setItemValue("invoices.total.dunning", countDunning);
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -69,57 +69,53 @@ public class AGLAnalyticControllerSteuer implements Serializable {
|
||||||
link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid";
|
link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid";
|
||||||
}
|
}
|
||||||
if ("analytic.steuer.eust".equals(event.getKey())) {
|
if ("analytic.steuer.eust".equals(event.getKey())) {
|
||||||
Object eustTotal = computeSteuerbescheideEUST();
|
event.setValue(computeSteuerbescheideEUST());
|
||||||
event.getData().setItemValue("value", eustTotal);
|
event.setLabel("EUR");
|
||||||
event.getData().setItemValue("label", "EUR");
|
event.setDescription("Gesamt Einfuhrumsatzsteuer (EUSt)");
|
||||||
event.getData().setItemValue("description", "Gesamt Einfuhrumsatzsteuer (EUSt)");
|
event.getWorkitem().setItemValue("eust.total", event.getValue());
|
||||||
event.getWorkitem().setItemValue("eust.total", eustTotal);
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.steuer.zoll".equals(event.getKey())) {
|
if ("analytic.steuer.zoll".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", computeSteuerbescheideZoll());
|
event.setValue(computeSteuerbescheideZoll());
|
||||||
event.getData().setItemValue("label", "EUR");
|
event.setLabel("EUR");
|
||||||
event.getData().setItemValue("description", "Gesamt Zölle (ZOLLEU)");
|
event.setDescription("Gesamt Zölle (ZOLLEU)");
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.steuer.total".equals(event.getKey())) {
|
if ("analytic.steuer.total".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", computeSteuerbescheideTotal());
|
event.setValue(computeSteuerbescheideTotal());
|
||||||
event.getData().setItemValue("label", "EUR");
|
event.setLabel("EUR");
|
||||||
event.getData().setItemValue("description", "Alle Steuerbescheide die noch nicht abgerechnet wurden.");
|
event.setDescription("Alle Steuerbescheide die noch nicht abgerechnet wurden.");
|
||||||
event.getWorkitem().setItemValue("link", link);
|
event.setLink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.steuer.saldo".equals(event.getKey())) {
|
if ("analytic.steuer.saldo".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", computeSteuerbescheideSaldo());
|
event.setValue(computeSteuerbescheideSaldo());
|
||||||
event.getData().setItemValue("label", "EUR");
|
event.setLabel("EUR");
|
||||||
event.getData().setItemValue("description",
|
event.setDescription("Saldo aller Steuerbescheide die noch nicht abgerechnet wurden.");
|
||||||
"Saldo aller Steuerbescheide die noch nicht abgerechnet wurden.");
|
event.setLink(link);
|
||||||
event.getWorkitem().setItemValue("link", link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.steuer.due".equals(event.getKey())) {
|
if ("analytic.steuer.due".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", computeSteuerbescheideSaldoDue());
|
event.setValue(computeSteuerbescheideSaldoDue());
|
||||||
event.getData().setItemValue("label", "EUR");
|
event.setLabel("EUR");
|
||||||
event.getData().setItemValue("description",
|
event.setDescription("Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden.");
|
||||||
"Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden.");
|
// event.setLink(link + "&task=Überfällig");
|
||||||
// event.getWorkitem().setItemValue("link", link + "&task=Überfällig");
|
event.setLink(link + "&task=1200");
|
||||||
event.getWorkitem().setItemValue("link", link + "&task=1200");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Charts
|
// Charts
|
||||||
|
|
||||||
if ("analytic.steuer.trend".equals(event.getKey())) {
|
if ("analytic.steuer.trend".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", accumulateSteuerbescheideByWeek());
|
event.setValue(accumulateSteuerbescheideByWeek());
|
||||||
event.getData().setItemValue("label", "Zoll & EUST");
|
event.setLabel("Zoll & EUST");
|
||||||
event.getData().setItemValue("description", "Fälligkeiten nach KW");
|
event.setDescription("Fälligkeiten nach KW");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("analytic.steuer.trend.abteilung".equals(event.getKey())) {
|
if ("analytic.steuer.trend.abteilung".equals(event.getKey())) {
|
||||||
event.getData().setItemValue("value", accumulateSteuerbescheideAbteilungByWeek());
|
event.setValue(accumulateSteuerbescheideAbteilungByWeek());
|
||||||
event.getData().setItemValue("label", "Nach Abteilungen");
|
event.setLabel("Nach Abteilungen");
|
||||||
event.getData().setItemValue("description", "Offene Salden nach KW pro Abteilung");
|
event.setDescription("Offene Salden nach KW pro Abteilung");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ import org.imixs.workflow.exceptions.PluginException;
|
||||||
import org.imixs.workflow.exceptions.QueryException;
|
import org.imixs.workflow.exceptions.QueryException;
|
||||||
import org.imixs.workflow.office.config.ConfigService;
|
import org.imixs.workflow.office.config.ConfigService;
|
||||||
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
||||||
import org.imixs.workflow.poi.XSSFUtil;
|
import org.imixs.workflow.poi.POIUtil;
|
||||||
import org.imixs.workflow.util.XMLParser;
|
import org.imixs.workflow.util.XMLParser;
|
||||||
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
|
@ -174,7 +174,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
|
||||||
int newColumns = (currencyList.size() - 1) * 2;
|
int newColumns = (currencyList.size() - 1) * 2;
|
||||||
for (int i = 0; i < newColumns; i++) {
|
for (int i = 0; i < newColumns; i++) {
|
||||||
logger.info(".. add currency column...");
|
logger.info(".. add currency column...");
|
||||||
XSSFUtil.insertColumn(sheet, 6, 8 + i);
|
POIUtil.insertColumn(sheet, 6, 8 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Beschriftungen eintragen
|
// Beschriftungen eintragen
|
||||||
|
|
@ -247,7 +247,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
|
||||||
|
|
||||||
// jetzt füge alle Rechnungen an.
|
// jetzt füge alle Rechnungen an.
|
||||||
int totalRowCount = invoices.size();
|
int totalRowCount = invoices.size();
|
||||||
XSSFUtil.insertRows(sheet, "A11", totalRowCount - 0);
|
POIUtil.insertRows(sheet, "A11", totalRowCount - 0);
|
||||||
|
|
||||||
for (ItemCollection invoice : invoices) {
|
for (ItemCollection invoice : invoices) {
|
||||||
logger.fine("......add invoice " + invoice.getUniqueID());
|
logger.fine("......add invoice " + invoice.getUniqueID());
|
||||||
|
|
@ -285,8 +285,8 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
|
||||||
// setze Summen Formeln
|
// setze Summen Formeln
|
||||||
for (int column = 6; column < currencyList.size() * 2 + 6; column++) {
|
for (int column = 6; column < currencyList.size() * 2 + 6; column++) {
|
||||||
XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11
|
XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11
|
||||||
String cellRefFrom = XSSFUtil.getCellReference(column, 10);
|
String cellRefFrom = POIUtil.getCellReference(column, 10);
|
||||||
String cellRefTo = XSSFUtil.getCellReference(column, totalRowCount + 10);
|
String cellRefTo = POIUtil.getCellReference(column, totalRowCount + 10);
|
||||||
String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")";
|
String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")";
|
||||||
cell.setCellFormula(formula);
|
cell.setCellFormula(formula);
|
||||||
}
|
}
|
||||||
|
|
@ -113,10 +113,7 @@ public class FTPConnector {
|
||||||
FTPClient ftpClient = null;
|
FTPClient ftpClient = null;
|
||||||
try {
|
try {
|
||||||
logger.info("├── 🔜 uploading " + fileName + " to FTP server: " + ftpServer + " ...");
|
logger.info("├── 🔜 uploading " + fileName + " to FTP server: " + ftpServer + " ...");
|
||||||
logger.info("│ ├── port=" + ftpPort.get().intValue());
|
|
||||||
logger.info("│ ├── working directory=" + ftpWorkingPath);
|
logger.info("│ ├── working directory=" + ftpWorkingPath);
|
||||||
logger.info("│ ├── user=" + ftpUser.get());
|
|
||||||
// logger.info("│ ├── password=" + ftpPassword.get());
|
|
||||||
ftpClient = new FTPSClient("TLS", false);
|
ftpClient = new FTPSClient("TLS", false);
|
||||||
ftpClient.setBufferSize(8192);
|
ftpClient.setBufferSize(8192);
|
||||||
ftpClient.connect(ftpServer.get(), ftpPort.get().intValue());
|
ftpClient.connect(ftpServer.get(), ftpPort.get().intValue());
|
||||||
|
|
@ -153,17 +150,11 @@ public class FTPConnector {
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("│ └── ✓ ftp transfer completed.");
|
logger.info("│ └── ✓ ftp transfer completed.");
|
||||||
} catch (IOException | PluginException e) {
|
} catch (IOException e) {
|
||||||
// Log the real cause immediately, before the finally block runs -
|
|
||||||
// otherwise a cleanup failure could overwrite/hide this exception.
|
|
||||||
logger.warning("│ ├── ⚠️ FTP connection error: " + e.getMessage());
|
|
||||||
if (e instanceof PluginException) {
|
|
||||||
throw (PluginException) e;
|
|
||||||
}
|
|
||||||
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
||||||
"FTP file transfer failed: " + e.getMessage(), e);
|
"FTP file transfer failed: " + e.getMessage(), e);
|
||||||
} finally {
|
} finally {
|
||||||
// Cleanup - never let a cleanup failure mask the primary exception
|
// Cleanup
|
||||||
try {
|
try {
|
||||||
if (writer != null) {
|
if (writer != null) {
|
||||||
writer.close();
|
writer.close();
|
||||||
|
|
@ -172,10 +163,9 @@ public class FTPConnector {
|
||||||
ftpClient.logout();
|
ftpClient.logout();
|
||||||
ftpClient.disconnect();
|
ftpClient.disconnect();
|
||||||
}
|
}
|
||||||
} catch (IOException cleanupException) {
|
} catch (IOException e) {
|
||||||
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
||||||
"FTP file transfer failed during cleanup: " + cleanupException.getMessage(),
|
"FTP file transfer failed during cleanup: " + e.getMessage(), e);
|
||||||
cleanupException);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -38,12 +38,6 @@ public class InvoiceUtil {
|
||||||
return bd.doubleValue();
|
return bd.doubleValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BigDecimal roundBigDecimal(double value) {
|
|
||||||
BigDecimal bd = BigDecimal.valueOf(value);
|
|
||||||
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rounds a Flat Value
|
* Rounds a Flat Value
|
||||||
*
|
*
|
||||||
|
|
@ -26,7 +26,7 @@ import org.imixs.workflow.exceptions.PluginException;
|
||||||
import org.imixs.workflow.exceptions.QueryException;
|
import org.imixs.workflow.exceptions.QueryException;
|
||||||
import org.imixs.workflow.office.config.ConfigService;
|
import org.imixs.workflow.office.config.ConfigService;
|
||||||
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
||||||
import org.imixs.workflow.poi.XSSFUtil;
|
import org.imixs.workflow.poi.POIUtil;
|
||||||
import org.imixs.workflow.util.XMLParser;
|
import org.imixs.workflow.util.XMLParser;
|
||||||
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
|
@ -179,7 +179,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter {
|
||||||
int newColumns = (currencyList.size() - 1) * 1;
|
int newColumns = (currencyList.size() - 1) * 1;
|
||||||
for (int i = 0; i < newColumns; i++) {
|
for (int i = 0; i < newColumns; i++) {
|
||||||
logger.fine(".. add currency column...");
|
logger.fine(".. add currency column...");
|
||||||
XSSFUtil.insertColumn(sheet, 5, 6 + i);
|
POIUtil.insertColumn(sheet, 5, 6 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Beschriftungen eintragen
|
// Beschriftungen eintragen
|
||||||
|
|
@ -37,7 +37,7 @@ import org.imixs.workflow.exceptions.PluginException;
|
||||||
import org.imixs.workflow.exceptions.QueryException;
|
import org.imixs.workflow.exceptions.QueryException;
|
||||||
import org.imixs.workflow.office.config.ConfigService;
|
import org.imixs.workflow.office.config.ConfigService;
|
||||||
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
||||||
import org.imixs.workflow.poi.XSSFUtil;
|
import org.imixs.workflow.poi.POIUtil;
|
||||||
import org.imixs.workflow.util.XMLParser;
|
import org.imixs.workflow.util.XMLParser;
|
||||||
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
|
@ -199,13 +199,13 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
|
||||||
int newColumns = (currencyList.size() * (spaces.size())) - 1;
|
int newColumns = (currencyList.size() * (spaces.size())) - 1;
|
||||||
for (int i = 0; i < newColumns; i++) {
|
for (int i = 0; i < newColumns; i++) {
|
||||||
logger.fine(".. add currency column...");
|
logger.fine(".. add currency column...");
|
||||||
XSSFUtil.insertColumn(sheet, 1, 2 + i);
|
POIUtil.insertColumn(sheet, 1, 2 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Total spalten einfuegen
|
// Total spalten einfuegen
|
||||||
for (int i = 0; i < currencyList.size() - 1; i++) {
|
for (int i = 0; i < currencyList.size() - 1; i++) {
|
||||||
logger.fine(".. add total column...");
|
logger.fine(".. add total column...");
|
||||||
XSSFUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i);
|
POIUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i);
|
||||||
}
|
}
|
||||||
newColumns = newColumns + currencyList.size();
|
newColumns = newColumns + currencyList.size();
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue