Chat: Bilder, Kamerafoto, Dateien und Sprachnachrichten
- Kundenbereich und Admin-Chat: Bueroklammer-Menue (Bild, Kamera, Datei), Mikrofon fuer Sprachnachrichten, Vorschau vor dem Senden mit Upload-Fortschritt, Einfuegen (Strg+V) und Hineinziehen von Dateien - Kamera: am Handy/Tablet die Kamera-App, am Rechner die Kamera im Browser mit Vorschau, Kamerawechsel und "Nochmal" - Sprachnachricht: Aufnahme mit Zeit und Pegel, vorher anhoerbar oder direkt senden, hoechstens 5 Minuten - Verlauf: Bilder (einzeln bzw. Raster, Grossansicht), Player fuer Sprachnachrichten, Datei-Kacheln mit Download - Server: jede Datei einzeln roh hochgeladen (max. 25 MB, 10 je Nachricht, max. 3 gleichzeitig), Typ aus dem Inhalt, nur erlaubte Endungen, keine Programme; Ablage unter upload-data/chat/<Kunde>/ ausserhalb von public/, Auslieferung nur mit Login; Bilder, Audio und PDF inline, alles andere als Download (nosniff, CSP sandbox) - Nicht gesendete Anhaenge werden nach 24 Stunden geloescht - Benachrichtigungs-Mail nennt nur Art und Namen der Anhaenge - Appwrite: neues Attribut portalMessages.attachments (scripts/setup-chat-collection.mjs, vor dem Deploy ausfuehren) - Datenschutzerklaerung Abschnitt 6 ergaenzt (Stand 26.09.2026), PDF neu Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6e18a70a5d
commit
35d98da977
15 files changed
+2086
-107
No files matched your search
@@ -1,7 +1,8 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Legt die Collection portalMessages (Kunde-Admin-Chat) in woms-database an.
|
||||
* Idempotent: existierende Collection/Attribute/Indexe werden uebersprungen.
|
||||
* Idempotent: existierende Collection/Attribute/Indexe werden uebersprungen
|
||||
* (also auch zum Nachruesten neuer Attribute wie `attachments` geeignet).
|
||||
* Usage: APPWRITE_API_KEY=... node scripts/setup-chat-collection.mjs
|
||||
*/
|
||||
const endpoint = (process.env.APPWRITE_ENDPOINT || 'https://ticket.webklar.com/v1').replace(/\/$/, '')
|
||||
@@ -78,6 +79,8 @@ const attributes = [
|
||||
{ kind: 'string', key: 'sender', size: 16, required: true },
|
||||
{ kind: 'string', key: 'senderName', size: 128, required: false },
|
||||
{ kind: 'string', key: 'text', size: 4000, required: true },
|
||||
// JSON-Liste der Anhaenge (Bilder, Dateien, Sprachnachrichten); Dateien selbst liegen auf dem Server
|
||||
{ kind: 'string', key: 'attachments', size: 20000, required: false },
|
||||
{ kind: 'boolean', key: 'readByAdmin', required: false },
|
||||
{ kind: 'boolean', key: 'readByCustomer', required: false },
|
||||
{ kind: 'datetime', key: 'createdAt', required: true },
|
||||
|
||||
Reference in new issue
Block a user