# ShinrAI für Nextcloud

Erstellen Sie geschützte PDF- und Textkopien in Dateien und schützen Sie ausgewählte Assistentenaufgaben vor der Modellanfrage. Die Erweiterung ist freie Software unter AGPL-3.0-or-later. Aufrufe des ShinrAI-Dienstes verbrauchen Ihr Kontingent. [English](README.md).

## Installation

Getestet mit Nextcloud **33.0.8** und **34.0.3**, Assistant **3.5.0** und OpenAI and LocalAI integration **4.5.2**. Diese Vorschau unterstützt Nextcloud 33 und 34. Die direkte Installation benötigt keine Freigabe im App Store; eine solche Freigabe wird nicht behauptet.

1. Melden Sie sich bei ShinrAI an und erstellen oder wählen Sie einen vorhandenen API-Schlüssel. Bewahren Sie ihn vertraulich auf.
2. Entpacken Sie `shinrai-nextcloud-0.1.1.tar.gz` nach `custom_apps`. Das Archiv enthält den Ordner `shinrai`. Übertragen Sie ihn an den Webserver-Benutzer und führen Sie als dieser Benutzer `php occ app:enable shinrai` aus. Beim offiziellen Container lautet der Aufruf nach dem Kopieren nach `/var/www/html/custom_apps/`: `docker exec -u www-data <nextcloud-container> php occ app:enable shinrai`.
3. Öffnen Sie **Verwaltungseinstellungen → Zusätzliche Einstellungen → ShinrAI**. Tragen Sie Dienstadresse und API-Schlüssel ein, speichern Sie und wählen Sie **Verbindung und Datenschutz testen**. Name und E-Mail-Adresse des Beispiels müssen ersetzt werden.
4. Verwenden Sie für Nextcloud-Hintergrundaufgaben **Cron**. Der reguläre Cron-Prozess muss laufen. Konvertierung und Texterkennung erfolgen im ShinrAI-Dienst.
5. Öffnen Sie in **Dateien** das Aktionsmenü einer eigenen TXT-, PDF- oder DOCX-Datei und wählen Sie **Geschützte Kopien erstellen**. Auf der ShinrAI-Seite sehen Sie den Fortschritt. Anschließend liegen geschützte PDF- und Textkopien neben dem unveränderten Original.

Nur Administratoren dürfen Zugangsdaten und Anbieter ändern. Der Schlüssel wird mit dem Nextcloud-Servergeheimnis verschlüsselt und nicht über die Einstellungsabfrage zurückgegeben. Sichern Sie das Servergeheimnis zusammen mit Datenbank und Datenverzeichnis. Die App unterbindet die Aufzeichnung von Funktionsargumenten in Ausnahmeprotokollen, damit HTTP-Traces keine Anbieter-Zugangsdaten enthalten.

## Assistent

Installieren Sie die getesteten Assistant- und OpenAI/LocalAI-Apps. Richten Sie Modelladresse, Modell und **Administrator-Zugangsdaten** in der vorhandenen Modellintegration ein. Wählen Sie dann in ShinrAI ausdrücklich den ursprünglichen Anbieter für **Text erstellen**, **Zusammenfassen** und/oder **Chat**. Nach dem Speichern ist ShinrAI für diese Aufgabentypen vorgeschaltet. Persönliche Modell-Zugangsdaten werden nicht verwendet. Die Aufgabe gehört weiterhin dem jeweiligen Nextcloud-Benutzer; dessen Kennung wird nicht als Modellmetadatum übertragen.

- **Pseudonyme beibehalten** lässt erkannte Ersetzungen in der Antwort stehen.
- **Erkannte Werte wiederherstellen** setzt exakt erkannte Ersetzungen nach der Antwort lokal zurück. Zuordnungen bleiben im Speicher dieses Aufrufs und werden nicht an das Modell übermittelt.

Unterstützt sind `core:text2text`, `core:text2text:summary` und `core:text2text:chat`. Der Chatverlauf darf strukturierte Textnachrichten der Rollen human/user und assistant enthalten. Werkzeugaufrufe, multimodale Nachrichten, Erinnerungen, Kontextagenten und andere Aufgabentypen sind nicht abgedeckt. Nicht ausgewählte Typen bleiben ungeschützt; deaktivieren Sie nicht benötigte Anbieter und Aufgabentypen in den KI-Einstellungen. **Chat mit KI** kann andere Aufgabentypen verwenden. Die Auswahl für **Chat** bedeutet deshalb keine vollständige Abdeckung dieser Oberfläche.

Bei einem abgeschlossenen Dokumentvorgang öffnet **Geschützten Text zusammenfassen** eine Zusammenfassung des geschützten Texts im Assistenten. Auch diese Anfrage nutzt den ausgewählten Schutzanbieter. Das Dokumentoriginal und dessen Wiederherstellungszuordnungen werden dafür nicht verwendet.

## Umfang und Fehlerbehebung

- TXT, digitale und gescannte PDF sowie DOCX werden unterstützt, einschließlich unterstützter englischer/deutscher Texte in eingebetteten Bildern. Ergebnisse sind extrahierter Text und eine flach gerenderte PDF, keine bearbeitbare Word-Datei. Grenzen: 10 MB Eingabe, 100 Seiten, 125.000 extrahierte Zeichen, 40 MB Ausgabe und fünf Minuten Verarbeitung. Nicht vollständig verarbeitete Dokumente werden abgewiesen.
- Kopien heißen neutral `protected-<Vorgang>.pdf/.txt`. Eigentümer, Zugriff, Version und Berechtigungen werden vor dem Speichern erneut geprüft. Wählen Sie eigene Dateien in einem beschreibbaren Ordner. Von anderen Personen freigegebene Dateien werden abgewiesen. Bestehende Freigabelinks der Quelldatei werden nicht kopiert; für neue Kopien gelten die Ordnerrechte.
- Geschützt werden ausgewählte Exporte und Aufgabenanbieter. Originale und Benutzereingaben bleiben in Nextcloud. Andere Apps, externe Indizierung, externe Speicher, direkte Modellverbindungen und frühere Uploads sind nicht abgedeckt.
- Verschlüsselte Vorgangsdatensätze verfallen nach 24 Stunden. Gespeicherte Kopien bleiben bis zur Löschung durch den Eigentümer in Dateien. Dienst-Eingaben sind temporär; Ergebnisse verfallen nach 24 Stunden und werden nach dem Speichern zur Löschung angefordert.
- Verbindungsfehler sowie erschöpfte oder abgelaufene Schlüssel stoppen den Vorgang. Korrigieren Sie die Einstellungen und wählen Sie **Vorgang erneut versuchen**. Derselbe Vorgang verwendet den vorhandenen Dienstauftrag und das bezahlte Ergebnis erneut. Erstellen Sie zum Wiederholen keinen neuen Vorgang. Nach einem Neustart können seit mehr als sechs Minuten laufende Vorgänge wiederholt werden. Für eine geänderte Quelldatei ist ein neuer Vorgang erforderlich.

Bleibt der Status in der Warteschlange, prüfen Sie Cron. Prüfen Sie bei Fehlern Verbindungstest, Kontingent, Dateiformat und Zugriff. Fehlt die Dateiaktion, kontrollieren Sie App-Aktivierung und unterstützte Version und laden Sie Dateien neu. Kundeninstallationen sollten HTTPS verwenden; das abgeschottete LAN-Labor erlaubt ausdrücklich seinen lokalen HTTP-Dienst.

## Paket erstellen und prüfen

`npm ci` und anschließend `python3 build.py` prüfen PHP/XML, erstellen die Dateiaktion mit festgelegtem `@nextcloud/files` 4.0.0 und schreiben das Installationsarchiv nach `dist/`. App-Quelltext und Lizenz sind enthalten. `php tests/provider.php` prüft Verlauf, Wiederherstellung, Abbruch und Ablehnung vor Modellaufrufen. Die Labortests verwenden tatsächliche Installationen, Dokumente und Modelle; sie ersetzen keine App-Store-Freigabe.

Referenzen: [Nextcloud-Aufgabenverarbeitung](https://docs.nextcloud.com/server/stable/developer_manual/digging_deeper/task_processing.html), [Assistant-Integration](https://github.com/nextcloud/assistant/blob/v3.5.0/docs/developer/web-integration.md).

## Geprüftes Beispiel

Die [Screenshots](screenshots/) stammen aus der tatsächlich installierten Testumgebung mit synthetischen Daten. Ersatzwerte können bei jedem Lauf anders aussehen. Die gemeinsamen Beispieldateien und ein ausführbarer Verbindungstest liegen im Ordner `../fixtures/` des Downloadpakets.
