Zum Hauptinhalt springen

Datenbankschemas

info

Dieses Dokument beschreibt alle in der Anwendung verwendeten Datenbankschemas, einschließlich ihrer Felder und Indizes.

Clients

Die clients-Kollektion speichert Informationen über verschiedene Kunden.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Client-Bezeichner
codeStringNeinOptionaler Client-Code
nameStringJaClient-Name
deletedBooleanJaSoft-Delete-Flag (Standard: false)

Branches

Die branches-Kollektion enthält Informationen über die Filialen der Kunden.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Branch-Bezeichner
clientIdStringJaID des Clients, zu dem diese Branch gehört
codeStringNeinOptionaler Branch-Code
nameStringJaBranch-Name
deletedBooleanJaSoft-Delete-Flag (Standard: false)

Projects

Die projects-Kollektion enthält Daten zu einer Inventur einer Filiale.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Projekt-Bezeichner
branchIdStringJaID der Branch, zu der dieses Projekt gehört (validiert mit idRegex)
teamIdStringNeinDem Projekt zugewiesenes Team
teamManagerIdStringNeinBenutzer-ID des zugewiesenen Teamleiters
projectManagerIdStringNeinBenutzer-ID des zugewiesenen Projektleiters
codeStringNeinOptionaler Projekt-Code
nameStringJaProjektname
stateStringJaProjektstatus (erlaubte Werte: initiated,running,closed,published,archived; Standard: initiated)
effectiveDateDateNeinGeplantes Startdatum
startDateDateNeinTatsächliches Startdatum
endDateDateNeinEnddatum (muss nach startDate liegen, wenn beide gesetzt sind)
closedAtDateNeinZeitpunkt, zu dem das Projekt abgeschlossen wurde
miscObjectJaBeliebige Metadaten (Blackbox, Standard: {})
deletedBooleanJaSoft-Delete-Flag (Standard: false)
emailProcessedBooleanNeinOb die E-Mail-Benachrichtigung über Kundenliefergegenstände gesendet wurde
matchDataVerifiedEmailSentBooleanNeinOb die Benachrichtigungs-E-Mail für ungültige Kundendaten gesendet wurde
notPaidBooleanNeinGibt an, ob dies ein nicht bezahltes Projekt war

Indizes

  • deleted + startDate + endDate - Unterstützt Abfragen, die nach aktivem/gelöschtem Status und Projektzeitraum filtern
  • branchId - Optimiert Abfragen von Projekten, die zu einer bestimmten Branch gehören
  • deleted + state + emailProcessed - Unterstützt die Filterung von Projekten nach Lebenszyklusstatus und E-Mail-Verarbeitungs-Workflow-Status

Users

Die users-Kollektion speichert Benutzerkontoinformationen und Profile.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Benutzer-Bezeichner
usernameStringJaEindeutiger Benutzername
emailsArrayNeinArray von E-Mail-Objekten
emails[].addressStringJaE-Mail-Adresse
emails[].verifiedBooleanJaOb die E-Mail verifiziert ist
createdAtDateJaDatum der Kontoerstellung
profileObjectJaBenutzerprofilinformationen
profile.firstNameStringNeinVorname des Benutzers
profile.lastNameStringNeinNachname des Benutzers
profile.preferedLanguageStringNeinBevorzugte Sprache (Standard: 'en')
profile.birthdayDateNeinGeburtstag des Benutzers
profile.genderStringNeinGeschlecht ('Male' oder 'Female')
profile.organizationStringNeinOrganisationsname
profile.websiteStringNeinWebsite-URL
profile.bioStringNeinBiografie
profile.countryObjectNeinLänderinformationen
profile.country.nameStringJaLändername
profile.country.codeStringJaISO-Ländercode (2 Buchstaben)
profile.miscObjectNeinSonstige Profildaten
profile.forceChangeBooleanNeinFlag für erzwungene Passwortänderung
servicesObjectNeinDaten zu Authentifizierungsdiensten (Blackbox)
teamIds[string]ArrayNeinArray von Team-IDs, denen der Benutzer angehört
heartbeatDateNeinZeitstempel der letzten Aktivität
deletedBooleanJaSoft-Delete-Flag (Standard: false)
currentProjectIdStringNeinAktuell aktive Projekt-ID
typeStringJaBenutzertyp: 'full' oder 'temp' (Standard: 'full')
lastLogInDateNeinZeitstempel der letzten Anmeldung
projectIdStringNeinZugehörige Projekt-ID für temporäre Benutzer

Indizes

  • teamIds - Indiziert für Abfragen von Benutzern nach Teammitgliedschaft
  • deleted + username - Indiziert für Abfragen aktiver Benutzer nach Benutzername
  • projectId + username + deleted (partieller Filter: projectId vorhanden)
    • Wird für Abfragen von Benutzern innerhalb eines bestimmten Projekts verwendet

Text-Indizes

  • username + profile.firstName + profile.lastName - Volltextsuche nach Benutzernamen

Matches

Die matches-Kollektion speichert Produkt-Match-Informationen. Kollektionen werden dynamisch pro Projekt erstellt.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Match-Bezeichner
codeStringJaMatch-Code (indiziert)
typeStringJaMatch-Typ (indiziert)
locationCodeStringNeinStandortcode
productCodeStringNeinProduktcode
lotCodeStringNeinChargencode
serialCodeStringNeinSeriencode
descriptionStringNeinProduktbeschreibung
extra1StringNeinZusatzfeld 1
extra2StringNeinZusatzfeld 2
extra3StringNeinZusatzfeld 3
extra4StringNeinZusatzfeld 4
extra5StringNeinZusatzfeld 5
priceNumberJaProduktpreis (Standard: 0)
messageStringNeinZusätzliche Nachricht
alternateCodesStringNeinAlternative Produktcodes
zoneCodeStringNeinZonencode
divisionStringNeinAbteilung
productGroupStringNeinProduktgruppe
batchIntegerJaChargennummer (Standard: 1)
createdAtDateJaErstellungszeitstempel (automatisch gesetzt)

Hinweis: Dokumente laufen nach 15 Tagen ab (TTL-Index auf createdAt).

Indizes

  • type + code - Indiziert für Abfragen von Matches nach Typ und Code
  • productCode + lotCode - Indiziert für Abfragen nach Produkt und Charge

TTL-Index

  • createdAt - Dokumente laufen nach 15 Tagen ab

Scans

Die scans-Kollektion speichert Scan-Datensätze, die während Zonensitzungen erstellt werden.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Scan-Bezeichner
sessionIdStringJaAktuelle Zonensitzungs-ID
originalSessionIdStringJaUrsprüngliche Zonensitzungs-ID bei der Erstellung des Scans
orderIntegerJaReihenfolge des Scans innerhalb der Sitzung
matchCodeStringJaMatch-Code aus der Matches-Kollektion
countNumberJaGescannte Menge
modifiedAtDateJaZeitstempel der letzten Änderung
needsVerificationBooleanNeinOb der Scan eine Verifizierung erfordert
isVerifiedBooleanJaOb der Scan verifiziert wurde
addMarkerBelowBooleanJaMarkierungsplatzierungs-Flag
verifyReasonStringNeinGrund für die Verifizierungsanforderung
matchObjectJaMatch-Daten aus der Match-Datenbank (Blackbox)
deletedBooleanJaSoft-Delete-Flag (Standard: false)
revisions[object]ArrayNeinRevisionshistorie-Array
projectIdStringJaProjekt-ID
priceNumberNeinPreis aus dem Match
piecesNumberNeinAnzahl der Stücke
zoneCodeStringNeinZonencode
sourceStringNeinScan-Quelle

Indizes

  • projectId + originalSessionId + order - Indiziert für Abfragen von Scans nach Projekt und ursprünglicher Sitzung
  • projectId + sessionId + deleted - Indiziert für Abfragen von Scans nach aktueller Sitzung
  • projectId + deleted + count (absteigend) - Indiziert für Abfragen von Scans nach Menge
  • projectId + matchCode + deleted - Indiziert für Abfragen von Scans nach Match-Code
  • projectId + revisions.sessionId - Indiziert für Abfragen von Scans nach Revisionssitzung
  • projectId - Allgemeiner Projektindex

Zones

Die zones-Kollektion speichert Zonen-/Arbeitsbereichsinformationen.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Zonen-Bezeichner
projectIdStringJaProjekt-ID (nicht indiziert)
codeStringJaZonencode
warehouseCodeStringJaLagercode
divisionStringNeinAbteilung
remarksStringNeinZonenanmerkungen
errorVerifyFunctionStringNeinFehlermeldung der Prüffunktion
errorTransformScansStringNeinFehlermeldung bei der Scan-Transformation
flags[string]ArrayNeinZonen-Flags-Array
priorityStringNeinZonenpriorität
extra1StringNeinZusatzfeld 1
extra2StringNeinZusatzfeld 2
extra3StringNeinZusatzfeld 3
extra4StringNeinZusatzfeld 4
extra5StringNeinZusatzfeld 5
statusStringJaZonenstatus (Standard: 'undefined')
deletedBooleanJaSoft-Delete-Flag (Standard: false)
scanSessionsIntegerNeinAnzahl der Scan-Sitzungen (automatisch durch Hooks aktualisiert)
isVerifiedBooleanNeinOb die Zone verifiziert wurde
metaObjectNeinMetadaten-Objekt (Blackbox)
clientZoneCodeStringNeinKundenspezifischer Zonencode

Statuswerte:

  • undefined
  • scan.plan, scan.busy, scan.ready
  • verify.plan, verify.busy, verify.ready
  • export.plan, export.busy, export.ready
  • blocked

Indizes

  • projectId + deleted + code - Indiziert für Abfragen von Zonen nach Projekt und Code
  • projectId + deleted + status - Indiziert für Abfragen von Zonen nach Projekt und Status

Zone Sessions

Die zoneSessions-Kollektion speichert Sitzungsdatensätze für Scan-, Verifizierungs- und Exportvorgänge in Zonen.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Sitzungs-Bezeichner
uuidStringJaEindeutige Sitzungs-UUID
zoneIdStringJaZonen-ID
typeStringJaSitzungstyp: 'scan', 'verify', 'zone-verify', 'export', 'change-request'
deviceCodeStringNeinGerätecode, der für die Sitzung verwendet wird
createdAtDateJaZeitstempel der Sitzungserstellung
startedAtDateNeinStartzeitstempel der Sitzung
closedAtDateNeinAbschlusszeitstempel der Sitzung
userIdStringJaBenutzer-ID, der die Sitzung erstellt hat
flags[string]ArrayNeinSitzungs-Flags-Array
busyBooleanNeinOb die Sitzung aktuell aktiv ist
deletedBooleanJaSoft-Delete-Flag (Standard: false)
projectIdStringJaProjekt-ID
jobIdStringNeinZugehörige Job-ID (für Export-Sitzungen)
revisions[object]ArrayNeinRevisionshistorie-Array
previousZoneIdStringNeinVorherige Zonen-ID (für verschobene Sitzungen)
retryHistoryArrayNeinWiederholungshistorie für zone-verify-Sitzungen
retryHistory[].countNumberJaAnzahl der Wiederholungsversuche
retryHistory[].createdAtDateJaZeitstempel des Wiederholungsversuchs
countNumberNeinSitzungsanzahl

Indizes

  • userId - Indiziert für Abfragen von Sitzungen nach Benutzer
  • projectId + busy - Indiziert für Abfragen aktiver/beschäftigter Sitzungen nach Projekt
  • projectId + zoneId + uuid (eindeutig, partieller Filter: uuid vorhanden) - Indiziert für eindeutige Sitzungssuche
  • projectId + userId + closedAt - Indiziert für Abfragen von Benutzersitzungen nach Projekt
  • projectId + zoneId - Indiziert für Abfragen von Sitzungen nach Zone
  • projectId + deleted + type - Indiziert für Abfragen von Sitzungen nach Typ (für Statistiken verwendet)

Registrations

Die registrations-Kollektion speichert Benutzerregistrierungsinformationen für Projekte.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Registrierungs-Bezeichner
projectIdStringJaProjekt-ID
usernameStringJaBenutzername (eindeutig pro Projekt)
passwordStringNeinGehashtes Passwort
deletedBooleanJaSoft-Delete-Flag (Standard: false)
roleStringJaProjektrolle (aus roles.project Enum)
typeStringJaRegistrierungstyp: 'full' oder 'temp'
isClientBooleanJaOb die Registrierung für einen Client-Benutzer ist (Standard: false)
firstNameStringNeinVorname des Benutzers
lastNameStringNeinNachname des Benutzers
teamIds[string]ArrayNeinArray von Team-IDs
createdAtDateJaErstellungsdatum der Registrierung (Standard: jetzt)
modifiedAtDateNeinZeitstempel der letzten Änderung
modifiedByStringJaBenutzer-ID, der zuletzt geändert hat
metaObjectNeinMetadaten-Objekt (Blackbox)
revisions[object]ArrayNeinRevisionshistorie-Array

Indizes

  • username - Indiziert für Abfragen von Registrierungen nach Benutzername (verwendet von Registrierungsjobs)
  • projectId - Indiziert für Abfragen von Registrierungen nach Projekt
  • projectId + username (eindeutig) - Indiziert für eindeutige Benutzernamensuche pro Projekt

Text-Indizes

  • username + firstName + lastName - Volltextsuche nach Registrierungsnamen

Assets

Die assets-Kollektion speichert Datei-Assets (Bilder), die mit Projekten, Branches, Clients oder globalen Einstellungen verknüpft sind.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Asset-Bezeichner
metaObjectJaAsset-Metadaten
meta.fileNameStringJaUrsprünglicher Dateiname
meta.objectIdStringNeinID des zugehörigen Objekts (Projekt/Branch/Client)
meta.objectLevelStringJaObjektebene: 'projectId', 'branchId', 'clientId' oder 'global'
meta.uploaded_atDateJaUpload-Zeitstempel
meta.uploaded_byStringJaBenutzer-ID, der das Asset hochgeladen hat

Hinweis: Diese Kollektion verwendet das ostrio:files-Paket. Zusätzliche Felder werden vom Paket verwaltet (Größe, Typ, Pfad usw.).

Akzeptierte Dateitypen:

  • image/png
  • image/jpg
  • image/svg+xml

Maximale Dateigröße: 5 MB

Indizes

  • meta.objectLevel + meta.objectId - Indiziert für Abfragen von Assets nach Objektebene und ID

Stock

Die stock-Kollektion speichert Lager-/Inventurinformationen für Projekte.

Schemafelder

FeldTypErforderlichBeschreibung
_idStringJaEindeutiger Lager-Bezeichner
projectIdStringJaProjekt-ID (indiziert)
matchObjectJaMatch-Datenobjekt (Blackbox)
expectedNumberJaErwartete Menge
actualNumberJaTatsächliche Menge (Standard: 0)
zoneIds[string]ArrayNeinArray von Zonen-IDs
verifiedBooleanJaOb der Lagerbestand verifiziert wurde (Standard: false)
differenceNumberJaDifferenz zwischen erwartet und tatsächlich (Standard: 0)
differencePriceNumberJaPreisdifferenz (Standard: 0)

Indizes

  • projectId - Indiziert für Abfragen des Lagerbestands nach Projekt

Hinweise

Index-Notation

  • Text-Indizes: Volltextsuchindizes für Textsuchoperationen
  • TTL-Indizes: Time-to-Live-Indizes, die Dokumente automatisch ablaufen lassen

Abfrageleistung

Verwenden Sie bei Abfragen von Kollektionen indizierte Felder in Ihren Abfragefiltern, um eine optimale Leistung zu gewährleisten. Zusammengesetzte Indizes unterstützen Abfragen, die die indizierten Felder in der Reihenfolge verwenden, in der sie im Index erscheinen.

Soft-Deletes

Die meisten Kollektionen verwenden ein boolesches deleted-Feld für Soft-Deletes. Bei Abfragen müssen Sie möglicherweise nach deleted: false filtern, um gelöschte Dokumente auszuschließen, es sei denn, Sie haben die Berechtigung, gelöschte Elemente anzuzeigen.

Scanner SQLite

Schemafelder

FeldTypErforderlichBeschreibung
MatchCodenvarchar(60)JaEindeutiger Match-Bezeichner (Primärschlüssel)
Divisionnvarchar(250)NeinAbteilung, zu der der Match gehört
ProductGroupnvarchar(250)NeinProduktgruppenklassifizierung
LocationCodenvarchar(30)NeinFilial- oder Standortbezeichner
ProductCodenvarchar(60)NeinProduktbezeichner
LotCodenvarchar(60)NeinChargen- oder Loskennung
SerialCodenvarchar(60)NeinProdukt-Seriennummer
Descriptionnvarchar(250)NeinProdukt- oder Match-Beschreibung
ExtraCode1nvarchar(250)NeinOptionaler Zusatzcode 1
ExtraCode2nvarchar(250)NeinOptionaler Zusatzcode 2
ExtraCode3nvarchar(250)NeinOptionaler Zusatzcode 3
ExtraCode4nvarchar(250)NeinOptionaler Zusatzcode 4
ExtraCode5nvarchar(250)NeinOptionaler Zusatzcode 5
Pricedecimal(18,2)NeinProduktpreis
Messagenvarchar(60)NeinFreitextnachricht oder Hinweis
AlternateMatchCodesnvarchar(1000)NeinAlternative Match-Codes (z. B. kommagetrennt)
ZoneCodenvarchar(60)NeinZonen- oder Bereichscode
BatchINTNeinChargen- oder Importbezeichner

Alternative Match-Codes

Die Spalte "AlternateMatchCode" wird erst verarbeitet, nachdem der eingegebene Match verifiziert wurde.
Wenn der generierte Match ein Feld "AlternateMatchCode" enthält, das nicht leer ist, teilt das System dieses durch Komma in eine Liste von Optionen auf. Die erste Option ist ein Modifikator: Wenn er auf 0 gesetzt ist, ist der folgende Dialog optional. Wenn er auf 1 gesetzt ist, ist der Dialog für alternative Match-Codes obligatorisch. Zur Verwendung siehe Android -> Alternative Barcode

Die folgenden Werte der Liste werden erneut durch ein Gleichheitszeichen (=) in Spalten aufgeteilt. Diese Werte werden dem Benutzer im Dialog angezeigt.

  • Der erste Wert jeder dieser Optionen ist der Wert, den das Feld erhält, wenn er ausgewählt wird. - Der zweite Wert ist der scannbare Wert. Wenn keine Option scannbar ist (indem das zweite Feld leer gelassen wird), wird der Barcode-Leser deaktiviert.
  • Alle Werte nach dem zweiten Wert werden dem Benutzer in einer Tabelle angezeigt. Die erste Option wird als Überschrift interpretiert und kann nicht ausgewählt werden. Alle anderen Optionen werden darunter aufgelistet, wo der Benutzer sie entweder mit den Pfeiltasten auswählen und ENTER drücken kann, sobald das gewünschte Element ausgewählt ist, oder durch Scannen. Der Wert der ersten Spalte wird dann so verarbeitet, als ob dies der ursprüngliche Wert wäre, es sei denn, er ist gleich. Wenn der Match, der durch den ausgewählten Code abgerufen wird, erneut Daten in der Spalte
    "AlternateMatchCode" enthält, beginnt dieser Vorgang von vorne.

Beispiel: 1,==Description=Price=Unit,2085001003227==Alternate 1=1.99€=pcs,2085001003234==Alternate 2=14.99€=pcs

alternativeBarcode