Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· kamo-internal
Sagen Sie dem Mitglied, womit das Ereignis kollidiert, wie sie es setzen
Das Nützlichste, was ein Planungsdialog sagen kann, ist "Sie haben bereits etwas dann", und der Endpunkt zu beantworten, es existierte alle zusammen mit Nichts, das es nennt. Der Dialog fragt nun, wie sich die Zeiten ändern. weil die Datumsangabe Feuer pro Tastendruck - und meldet den Zusammenstoß innerhalb der Wenn Karte, direkt unter den Kontrollen, die es verursacht, eher als Banner woanders oder als Fehler nach dem Speichern. Editing-Pässe schließenEventId aus, so dass sich ein Ereignis nicht von selbst meldet. Zwei weitere Dinge, die Zwei-Feld-Edits waren und sind jetzt ein Hahn: - Heute und morgen verschieben Sie die Veranstaltung zu diesem Tag, während seine Zeit und Dauer. "Gleiche Zeit morgen" ist eine weit verbreitetere Absicht als die Kommissionierung Datum aus einem Widget. - Die Speicher-Verknüpfung wird in der Fußzeile angezeigt, gerendert pro Plattform, so ist es Erschließlich und nicht Folklore. Jede Zeichenkette ist ein vorhandener Schlüssel: Konflikte mit bereits einem {Namen] Platzhalter für die Wochentags- und Tagesaussichten und common.time, die den Tag mitgeliefert Etiketten. Der Shortcut-Hinweis ist Symbole, also braucht er keine. Verifiziert mit einer Produktion in einem losgelösten Werksbaum gebaut - eine weitere Sitzung hält die in-Baum-Build-Schloss.
· EmailService
Lassen Sie den Konflikt Endpunkt ausschließen, dass das Ereignis bearbeitet wird
ConflictDetectionService hat immer ein AusschlussEventId genommen; dieser Endpunkt übergeben null. Ohne sie überlappt sich ein Ereignis, so dass der Moment das Ereignis Dialog begann zu fragen, Bearbeitung alles würde einen Zusammenstoß mit der Sache berichten bearbeitet werden. Auch Antworten mit DTOs wie der Rest dieses Controllers. Die rohe Einheit veröffentlichte ein Mitglied, eine Organisation und einen Kalender, den Jackson als Nuller macht sowieso, und ein gutes Geschäft mehr.
· kamo-internal
Neuaufbau des Ereignisdialogs um die Zeit, nicht um Felder
Zehn identisch gewichtete umrissene Felder in einer Spalte, in der Reihenfolge Spalten sitzen zufällig in der Tabelle: Titel, Beschreibung, Standort, Kalender, Ganztägig, Anfang, Ende, Farbe, privat, wiederkehrend. Nichts signalisiert, dass die Titel und die Zeiten sind die ganze Aufgabe und der Rest wird in der Regel allein gelassen. Neu geordnet durch das, was tatsächlich entschieden wird, und Hierarchie zu entsprechen: - Der Titel ist wie eine Überschrift gesetzt, die getippt wird - groß, grenzenlos, autofocused, weil es die eine Sache ist, die jedes Mal ausgefüllt wird. - Wann wird der Held Block: die beiden Male in Mono, mit der Dauer abgeleitet und live zwischen ihnen gezeigt, und 15m/30m/1h/2h Voreingestellte, die eingestellt das Ende von Anfang an. So wird eigentlich ein Treffen entschieden ("machen es eine Stunde"), und das Paar von Datum Zeiteingängen nie beantwortet. - Kalender und Farbe werden zu Chips und Mustern statt Dropdowns. Es gibt selten mehr als eine Handvoll von entweder, die Farbe ist so viel die Sache, die als Name gewählt wird, und ein Dropdown von Farbe *Namen* machte Sie lesen Sie ein Wort, um ein Muster zu holen. Die Dauer ist auch die Validierung. Wenn das Ende dem Start vorausgeht chip wird rot und liest einen negativen Wert aus. "30m" gibt das Problem mehr genau als ein Satz, braucht keine neue Übersetzung Schlüssel, und ist richtig in jede Sprache. Speichern ist daran deaktiviert und auf einem leeren Titel, beide die bereits auf dem Formular sichtbar sind. Cmd/Strg+Enter speichert. Dieser Dialog wird geöffnet, gefüllt und verworfen Dutzende von mal am Tag. Behebt einen echten Fehler hier: die Zeitfelder wurden mit toISOString(), das UTC ist, in Eingaben, die lokale Wandzeit erwarten. In Kalifornien der Dialog geöffnet bietet einen Start sieben Stunden entfernt, und jede Ereignis erstellt, ohne das Feld zu berühren landete zur falschen Stunde.
· kamo-internal
Auto Assignment Strategie, und öffnen Sie ein zugewiesenes Gespräch automatisch
Themen-Einstellungen gewinnen die vierte Strategie. Die Listenzeilen und der Dialog bearbeiten teilen Sie das gleiche Label, und der Schlüssel ausgeliefert zu kamo-translation-dictionary zuerst messages/ ist hier gitignored und next-intl wirft auf einen Schlüssel von en.json fehlt, so die Landung vor dem Wörterbuch würde eine Build, dessen Seite abstürzt versenden. AssignedTicketOpener hebt das Ticketfenster in dem Moment der Arbeit wird dies Mitglieder, und wieder auf Anmeldung für alles, was zugewiesen, während sie weg waren. Beide Pfade führen ein holen von /assigned-unopened, so "es kam an, während ich hier war" und "Es kam, während ich weg war" sind ein Fall und nicht zwei Mechanismen, die zuzustimmen - der ASSIGNED Push ist Core NATS und geht einfach verloren, wenn niemand Zuhören, weshalb es als Hinweis behandelt wird und der Server den Datensatz hält. Nicht abgeschirmt nach Verfügbarkeit oder auf den Regeln des Akzeptierens: Dies ist kein Angebot die dekodiert werden können, ist die Arbeit bereits zugewiesen. Das Popup existiert für die Gegensätzliche Situation. Im Gegensatz zum NEW_TICKET automatisch geöffnet in addd9036, ASSIGNED erreicht immer nur den einen Agenten, der es betrifft, so dass es kein Fenster öffnen kann auf jedem Bildschirm in der Org.
· MediaService
AUTO_ASSIGNMENT, und erhöhen Sie ein zugewiesenes Gespräch auf dem Bildschirm des Agenten
Eine Chat-Anfrage und ein eingereichtes Ticket sind die gleiche Arbeitseinheit; das Thema Strategie ist das einzige, was entscheidet, wie beide übergeben werden. Die PRE_TICKET Sonderfall ist weg. AUTO_ASSIGNMENT wählt den am wenigsten beschäftigten Agenten, der wirklich online ist - ein Live- WebSocket via PresenceService, niemals available_status, das sich nur bewegt Login, Logout und ein manuelles Umschalten und so liest VERFÜGBAR auf unbestimmte Zeit für jedermann der sich nie abmeldet. Mit niemanden verbunden es Decoder statt Pinning Arbeit an einen abwesenden Agenten: ein zugewiesenes Ticket verlässt die ansgeforderte Warteschlange, also eine schlechte Auswahl strandet es, wo kein Popup es erreichen kann. Aus dem gleichen Grund AUTO_ASSIGNMENT verbindet die Anspruchsbevollmächtigten Strategien - die Tickets, die es Decoder sind genau die die ankamen, während niemand online war, und sie müssen noch jemanden erreichen. ADMIN_ASSIGNS bleibt die einzige Strategie, die nie in Anspruch genommen werden kann. Workload zählt jeden Live-Status, einschließlich PRE_TICKET (eine Person, die in einem wartet Chat ist das Schwerste, was ein Agent hält) und niemand Terminal. Zwei Endpunkte zurück die Übergabe: GET /tickets/assigned-unopened, die die Client liest auf Anmelden, und POST ****************, die in Rente geht eins. Die Lektüre existiert, weil der ASSIGNED Push Core NATS ohne Wiederholung ist ohne es, Arbeit zugewiesen, während ein Agent wurde abgemeldet einfach wartet in einer Liste um bemerkt zu werden. Der Schreib ist auf den Empfänger ausgerichtet und Briefmarken nur einmal, so zwei tabs Rennen ist ein No-Op und nicht ein Konflikt.
· kamo-shared-library
AUTO_ASSIGNMENT Strategie und eine dauerhafte Aufzeichnung einer unsichtbaren Übergabe
AUTO_ASSIGNMENT(3) ist an SupportAssignmentStrategyType angefügt sofort zu einem Agenten, der wirklich online ist, bevorzuge, wer hält die am wenigsten Arbeit, anstatt ROUND_ROBINs strenge Präsenz-blinde Rotation. Angefügt, nie neu geordnet: die Spalte ist @Enumeriert(ORDINAL). Die Spalte trägt auch einen numerischen Bereich CHECK Hibernate emittiert auf CREATE TABLE und revidiert nie. Weil diese Klausel UND keine enum whitelist enthält, ist sie nicht so SchemaCleanupRunner generischen TropfenStaleEnumWhitelistChecks() fegt es überspringt durch Design; Verbreiterung ist es eine passende Änderung in diesem Läufer, ohne die jeder einfügen mit dem neuen Wert fehlt. SupportTicket gewinnt ASSIGNMENT_OPENED_AT. Zuteilung wird über Kern NATS angekündigt ohne Wiederholung, so dass ein Agent, der ausgezeichnet wurde, als Arbeit gelandet nie hört darüber. Null von der Zuordnung bis ein Kunde das Gespräch tatsächlich ansetzt Bildschirm, es macht "zu mir zugeordnet und nie gesehen" eine Server-Seite Tatsache, dass überlebt einen Logout, einen Absturz, einen Reputeploy oder eine andere Maschine. Zwei Repository-Abfragen dazu: countOpenForAgent (der Workload Tie-Break) und finden UnopenedAssignmentsForAgent (die Anmeldung nachholen).
· kamo-internal
Eine gepinnte App-Chip startet die App, nicht seine Einstellungen
Der führende Chip eines angehefteten Bandes wurde die Verknüpfung mit den Einstellungen der App Landung der gleiche Ort, an dem der erste Eintrag bereits geht. Es leiht jetzt, dass App Navi Option Großhandel, so trägt es die App-eigenes Symbol und verhält sich genau wie die nav tut: CRM öffnet /führt unter der Leads Schraube, KI-Unterstützung öffnet den Assistenten Fenster, Support und Mail und Docs und Phone lassen ihre Unteroptionsmenüs herunter, Chat öffnet das Interaktionszentrum, Meetings eröffnet die Neusitzung einladen. Chat und Meetings sind feste nav Chrom ohne Registrierungsoption, so dass das Band öffnet sie selbst - das Interaktionszentrum durch ein Fensterereignis NavTop hört zu, denn sein offener Staat lebt dort. Ein Mitglied, das eine App konfigurieren kann, sie aber nicht verwenden kann, hat keine Navi-Option dafür, und diese Band hält die alten Einstellungen-Landung-Chip statt übergeben ein Tür, die sie ablehnen würde. Behebt auch die Band-Augenbraue, die die Operator-Label-Tabierung bedeutete für leichte Oberflächen und Verschwinden im Org-Band.
· EmailService
Synchronisieren Sie den Organisationskalender mit Telefonen, ohne ein Loch zu öffnen
Der gemeinsame Kalender hat keinen Besitzer, so dass die Account-kopierte DAV-Liste könnte nie zurück: Firmenveranstaltungen waren eindeutig im Netz und unsichtbar auf jedem Telefon. Die Hausabholung organisiert nun die eigenen Kalender mit der gemeinsamen Organisation. Der Grund, warum dies Pflege und nicht eine zusätzliche Abfrage benötigte: CalDAV authentifiziert ein Konto, nicht eine Mitgliedschaft, so einfach den Kalender aussetzen würde es beschreibbar gemacht haben von jedem, dessen Telefon könnte es erreichen . ein Weg rund um die Veröffentlichung rechts der Web-Pfad erzwingt. PUT und DELETE lösen jetzt die Mitgliedschaft hinter dem DAV-Bescheinigungen und die gleiche Regel anwenden: CREATE_ORG_CALENDAR_EVENTS zum Schreiben in den gemeinsamen Kalender, Eigentum an schreiben, um eine persönliche, 403 sonst. Lesezugriff bleibt bewusst breiter als schreiben. Der gemeinsame Kalender ist soll für alle in der Organisation sichtbar sein; das ist der Punkt es. Nur das Publizieren ist eingeschränkt. Tests decken die Umgehung speziell ab: kein Recht, keine Mitgliedschaft in dieser Organisation und der gemeinsame Kalender einer anderen Organisation werden jeweils abgelehnt, während ein Inhaber des Rechtes erlaubt ist.
· InitializerService
Hinzufügen und Backfill accounts.date_created
Hibernate kann dieses nicht selbst hinzufügen: ddl-auto sendet es NICHT NULL, die CockroachDB lehnt sich auf einem Tisch ab, der bereits Reihen hat. So ist es annulierbar hinzugefügt hier, verfüllt, dann eingeschränkt. Die Backfill dekodiert die primäre Taste jedes Kontos, der die Karten enthält seine Einfügezeit in die hohen Bits, die jedes Konto real erholt Schaffung von Zeit, anstatt alle 23 bestehenden Reihen auf die Migration abzuflachen Zeitstempel, der die Reihenfolge des aufsteigenden Datums der Liste bedeutungslos gemacht hätte für genau die Konten, die es am längsten gegeben hat. Dieses Layout ist ein CockroachDB Implementierung Detail, so dass der Decoder wird zunächst gegen Mitglieder, die sowohl einen unique_rowid() -Schlüssel als auch ein aufgezeichnetes Erstellungsdatum haben; es wird nur angewendet, wenn es ihre reproduziert. Auf der Produktion läuft es abgestimmt 62 von 62 und erholte alle 23 Konten, keine fallen auf den Fallback. Bestellung 0, vor jedem anderen Läufer: Das Unternehmen bildet die Spalte so bald ab Dieser Build startet, so dass jeder Läufer, der ein Konto lädt, es in seinem SELECT ausgibt. Spät bestellt, lief dieser überhaupt nie. LeadContactPointSeedRunner starb auf "column a1_0.date_created existiert nicht" und nahm den Run down mit.
· kamo-shared-library
Aufzeichnungen, wenn ein Konto erstellt wurde
Account trug überhaupt keinen Erstellungs-Zeitstempel - keine Null-Spalte, keine Spalte. Die Kontoliste hat eine erstellte Spalte und Bestellungen von ihr, so dass Spalte ist für jedes Konto leer gewesen, seit die Tabelle erstellt wurde. Quelle aus der Datenbank statt der JVM, nach der Hausregel für Zeitstempel. Die passende Spalte und die Backfill für vorhandene Zeilen sind in KamoInitializer's AccountDateCreatedMigration, die bereits betrieben wurde.
· kamo-internal
Pin eine Enabled App auf der Home Launchpad
Jedes Enabled Apps Thema trägt jetzt einen Pin-Schalter, in der Unteroption Einstellungen Menü und auf der Sektion Kopfzeile auf der Einstellungsseite. Eine angeheftete App bekommt sein eigenes horizontales Tastenband auf der Home Launchpad - das Mitglied-gewählt Gegenstück zur Administrator-Bar, mit jedem Bildschirm, den App öffnet. Ein Pin ist eine Anzeigepräferenz, nie ein Anspruch: die gepinnte Liste ist durchschnitten mit den Live-Toren des Mitglieds auf jedem Render, so dass ein widerrufenes Recht oder eine App, die die Org ausschaltet, entfernt das Band sofort, und die gespeicherte Die Präferenz wird zu entsprechen, anstatt ruhend zu liegen. Der Einstellungsbaum hinter dem Menü und den Bändern kommt jetzt von einem resolver (useSettingsTopics), so dass sie nicht driften können.
· kamo-internal
Geben Sie Mobile Copilot Setup seine eigene vollbreite Seite
Die Telefon-Pennsive-Oberfläche war die dritte Registerkarte des Interaction Center slideout, die es an einer 500px-Schiene gedeckelt - zu schmal, um die Installation anzuzeigen Code und die Anmelde-Code nebeneinander, so dass die beiden Schritte zusammengebrochen wurden hinter einem Toggle und der ganze Fluss lesen sich wie eine Spalte aus gestapelten Fragmenten. Band, deren Anmeldezelle live geht und zählt den Code nach unten, dann ein Deck von Paneele, die mit dem Blickport verbreitert - zwei auf einem Tablet, drei auf einem Laptop, vier über Vergangenheit 1800px. Beide Codes teilen sich einen Sucherrahmen mit einem Scan Sweep, das ist, was macht die beiden Schritte als ein Instrument zu lesen. Der OTK-Flow bewegte sich in die NutzungMobil vonSignIn, so dass der Held und das Anmelde-Panel lesen Sie den gleichen Zustand. Die nist Schiene und Home Launchpad Einträge jetzt Route zu die Seite statt der Entsendung Open-Interaction-Center, die das verlässt Veranstaltung ohne Disponent, so dass es und die anfängliche Tab-Requisite des Panels weg sind.
· kamo-internal
Umbau des Kalenders um den aktuellen Zeitpunkt
Die Seite war ein funktionales Raster mit dem Chrom, das das Sprechen: ein 3px Regenbogenregel unter der Toolbar, eine zweite über den Inhalt, Gradienten Buttons und vier lose Symbol-Buttons für den Ansichtsschalter. Laut, wo es tat nicht wichtig und ruhig, wo es tat - nichts auf dem Bildschirm beantwortet die Frage Ein Kalender wird tatsächlich geöffnet, um zu antworten. Die Organisationsidee ist jetzt: Was kommt als nächstes und wie viel des Tages bleibt. - NextUpBar sitzt über dem Gitter mit der Zeit, dem nächsten Ereignis und einem Live Countdown, über einem Haaransatz, der zeigt, wie weit es durch den Arbeitstag ist. - NowSpine zieht den aktuellen Moment über die Woche Netz mit seiner Zeit in die Dachrinne, und PastVeil entsättigt die Stunden bereits gegangen, so was ist links von heute liest auf einen Blick. Die Farbe ist für diese reserviert: sie sind die einzige Live-Ding auf der Seite, so dass sie das einzige, was erlaubt sind die Farbe des Mieters bei voller Stärke. - ViewSwitcher ersetzt die vier Symbol-Buttons. Vier Symbole lesen sich wie vier Unzusammenhängende Aktionen; eine segmentierte Steuerung liest sich als eine Einstellung mit vier Positionen, das ist es, was es ist. Die ausgewählte Pille gleitet zwischen ihnen über ein gemeinsames LayoutId anstatt zu überblenden. Die Zeit ist in Geist Mono mit tabellarischen Figuren im gesamten Stubenlauf, Uhr, Countdown, Datumszahlen - so Zeitspalten sind eine gerade Kante und Ziffern nicht zittern, wie sie ticken. CalendarThemeScope spiegelt die Kontaktkonsole: Alpha() von MUI kann nicht parsen var(), so gemalte Eigenschaften überlagert werden und Farb-Mix liefert die Schattierungen. Jedes Token stammt aus --color-primary, so dass dies liest sich wie geplant unter jeder Mietermarke, anstatt von einem auszugehen. Monat Event-Chips werden zu einem getönten Boden mit einer soliden Vorsprung statt von weißem Text auf gesättigter Füllung, die bei 11px unleserlich war. Wochenreihen sind eine feste Höhe, weil die Wirbelsäule die Zeit in Pixel umwandelt - eine Zeile, die wuchs würde es zur falschen Zeit zeigen lassen; eine überfüllte Stunde scrollt stattdessen. Reduzierte Bewegung wird respektiert: der Puls und die Rutsche an, die Uhr nicht. Seine Position ist Information, und eine gestoppte Uhr wäre eher falsch als Ruhe. Behebt auch zwei echte Fehler gefunden während der Arbeit hier: der Kalender Picker lief UUID-IDs durch Number(), so war jeder Wert NaN, und es bot Kalender Das Mitglied kann nicht schreiben. Es listet jetzt nur beschreibbare, das ist, wie Der Organisationskalender bleibt ohne das Publishing-Recht lese.
· InitializerService
Verschieben Sie Kalender auf Mitgliedschaften und geben Sie jedem org einen gemeinsamen ein
Kalender und Veranstaltungen waren im Besitz eines Kontos und trugen keine Organisation. Dies hängt jeder an die früheste Mitgliedschaft seines Besitzers - die Organisation der Konto gehörte zu den längsten, die in der Praxis ist, wo der Kalender war made - so ein Kalender landet in genau einer Organisation, anstatt über alle von ihnen dupliziert. Konten, in denen diese Wahl wesentlich war, sind im Protokoll gezählt, weil für sie der Kalender aufhört sichtbar von ihre anderen Organisationen. Veranstaltungen folgen dem Kalender, auf dem sie leben, und nicht ihren eigenen Benutzer, so dass Veranstaltung kann nie in einer anderen Organisation als dem Kalender enden Anzeige. Der DROP DEFAULT auf user_id ist die tragende Anweisung. Diese Kolumne Vor dieser Änderung und hatte DEFAULT unique_rowid() von User getragen. entlang, harmlos, weil es NICHT NULL war und immer explizit geschrieben. Es nichtig machen, damit der gemeinsame Kalender ohne einen Eigentümer existieren könnte drehte es tödlich: ein INSERT, das user_id feuert die Standardeinstellung auslässt, erfindet eine Benutzer-ID gehört niemand, und verfehlt den ausländischen Schlüssel für die Benutzer. Das ist genau wie der erste Lauf Null Organisationskalender vorsieht. Die Entitäten heften nun den Spaltentyp an, so dass ddl-auto sie nicht wieder einsetzen kann. Idempotent durchweg: die Backfills nur berühren Reihen ohne Mitglied noch, und der gemeinsam genutzte Kalender wird nur dort eingefügt, wo eine Organisation keinen hat.
· kamo-shared-library
Umfang Kalender an das Mitglied, und fügen Sie die org-weite Publishing-Recht
UserCalendar und CalendarEvent hingen USER_ID allein ab und trugen keine Organisation. Ein Benutzer ist global und ein Mitglied ist dieser Benutzer in einem Organisation, so dass ein Konto zu mehreren Organisationen hatte einen Haufen von Kalendern, die von allen sichtbar sind. Beide Unternehmen erhalten MEMBER_ID und ORGANIZATION_ID, und ein Kalender gewinnt IS_ORG_CALENDAR - der gemeinsame Kalender, den eine Organisation hat, lesbar von jedes Mitglied und beschreibbar nur mit dem neuen Recht. USER_ID bleibt, bevölkert und nullbar: CalDAV und die externen synchronisieren Jobs authentifizieren ein Konto anstatt einer Mitgliedschaft, so dass sie rechtmäßig von Benutzer gelesen. Es ist einfach stellt nicht mehr der Genehmigungsfernsehen dar. Jede neue Join-Spalte-Pilne SpalteDefinition = "INT8", einschließlich der Vorhandene Benutzer. Links unpinned, Hibernate kopiert die verwiesenen Schlüssel INT8 DEFAULT unique_rowid() auf das FK; eine Einlage, die die Spalte weglässt dann erfindet eine id Zugehörigkeit zu nichts und versagt die fremde Schlüssel. Das ist nicht hypothetisch - es ist, was die erste Migration laufen aus gestoppt Bereitstellung eines einzelnen Organisationskalenders. Neue Rechte CREATE_ORG_CALENDAR_EVENTS (196). Lesen des Kalenders bleibt VIEW_CALENDAR; dies regelt nur, wer etwas auf den Kalender setzen darf die Ganze Organisation sieht. findByOrganizationId wird in findByUserId umbenannt. Es nie gesagt von Mitglied - die Abfrage ist und war c.user.id = :userId - und der Name ist was eingeladen diese Klasse von Bug. findVisibleToMember und seine Veranstaltung Äquivalent sind die Member-scoped liest.
· InitializerService
Hand geteilte Adressbuch-Kontakte zurück zu ihren Besitzern
EmailService bereichert jetzt jeden Kontakt, der auf contact_books.owner_id, welche lässt die Kontakte bereits in einem besitzlosen Organisations-Verband sitzen Buch unerreichbar. CONTACT.OWNER_ID ist NICHT NULL und wurde besiedelt auf jede Zeile, seit der Pfad erstellt hat, sie so dass das Mitglied, das hinzugefügt hat Jeder Kontakt ist genau bekannt - nichts wird abgeleitet. Dies sieht eine persönliches Buch pro (Organisation, Eigentümer) und bewegt jeden Kontakt in seine eigenem Besitzer. Zwei Dinge sind absichtlich gestrandet und im Protokoll gezählt, anstatt erzwungen: - UID-Kollisionen. uk_contact_uid_book ist eindeutig auf (UID, CONTACT_BOOK_ID), so ein Kontakt, dessen UID bereits im Ziel existiert, würde die ganze UPDATE und bewegen nichts. Diese Reihen bleiben stehen; eine UID umschreiben würde brechen Sie den CardDAV-Client, der es ausgestellt hat. - Gruppen gemischter Eigentümer. Eine contact_groups Reihe hat ein Buch, aber keinen Besitzer, also einer Gruppe, deren Mitglieder mehreren Personen angehören, kann nicht zugeordnet werden einer von ihnen. Nur Gruppen, deren Mitglieder sich einen einzigen Eigentümer teilen, werden umgesiedelt. Das besitzlose Buch selbst wird aufbewahrt: seine Scheckbeschränkung ist das, was es ausmacht legal, und fallen es würde in Gruppen und Mitgliedschaften fallen. Die gestrandeten Zähler-Check-Tests Kontakte und Gruppen, nicht nur Kontakte. A Gruppe wird durch die Eigentümer ihrer Mitglieder zugeschrieben und nicht durch, wo diese Mitglieder leben, so Gruppen bleiben beweglich, nachdem jeder Kontakt bereits hat verschoben; das Zählen von Kontakten allein würde sie auf einem zweiten Lauf überspringen.
· VOIPService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· SecurityService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· RAGService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· MediaService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· MCPGatewayService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· KBService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· kamolos
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· ESigService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· EmailService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· DocsService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· DaemonService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· ConversionService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· APIService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.
· BillingService
Punkt bei YugabyteDB und verwenden Sie PostgreSQLDialect
CockroachDB wurde durch YugabyteDB ersetzt. Verbindungsstränge bewegen sich von Kakerlakedb-öffentliche:26257 zu yb-tserver-service:5433, und der Hibernate Dialekt von ************ bis PostgreSQLDialect.

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich