Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · kamo-internal

    Autorenskripte in CRM-Einstellungen, lesen Sie diese auf einen Anruf

    Zwei CRM-Einstellungen hinter MANAGE_SALES_SCRIPTS - die Live-Skripte und die Archiv - plus ein Sales Scripts Registerkarte im Interaction Center im hinteren VIEW_SALES_SCRIPTS und ein Pin, der das Interaction Center offen hält. DER READER IST A TELEPROMPTER, NICHT ein DOKUMENT. Die einzige Frage, die zählt während jemand mit einem Kunden spricht, ist "wo ich", so ein Fortschritt läuft den Blockstapel runter und füllt sich, wenn Teile angekreuzt werden, der nächste ungelesene Teil wird in vollen Kontrast gehoben, während Lesen diejenigen zurücktreten, und ticken ein scrollt die weiter an Ort und Stelle. Ein Skript ist wirklich eine Sequenz von oben nach unten einmal gelesen, das ist, was verdient die sequentielle Behandlung. Alles andere auf der Oberfläche ist ruhig gehalten, damit eine Sache es tragen kann. Der Komponist spiegelt die gleiche Wirbelsäule, so ein Autor schaut auf die Form, die der Agent sehen wird, anstatt auf einem Formular das produziert es. Read-Progress und der Pin leben beide in sessionStorage: Sie überleben eine Nachladung in die Registerkarte, in der das Mitglied arbeitet, folgen Sie ihnen nicht in eine zweite Registerkarte ein anderer Anruf, und sind weg bei der Sign-out-out-App / . sessionStorage.clear(), also musste weder abgewickelt werden. Jeder Accessor ist verpackt, weil sessionStorage THROWS anstatt nicht in einem gehärteten Profil zurücksulliert, und dieser Code läuft innerhalb App-weitem Chrom. NavTops Opener-Gate weitet sich vom Chat-Zugang allein zum Chat-OR-Verkaufsskript. Es musste: ein CRM-Agent auf einer org ohne die Chat-App konnte die Interaction Center überhaupt, so dass die Sales Scripts Registerkarte wäre unsichtbar gewesen genau die Menschen, für die es ist. Jeder Tab im Inneren trägt noch sein eigenes Tor. Der Komponist nimmt seine "noch nichts geändert" Grundlinie ein Makroaufsatz nach Laden statt von den Werten, die es gesät. Lexical re-serialisiert ein Dokument wenn es es lädt - äquivalent JSON, selten identisch - so vergleichsweise gegen die Server-String berichtete jedes frisch geöffnete Skript als bearbeitet und aufgefordert "Lassen Sie sich ohne zu sparen?" auf dem Weg aus einem niemand hatte berührt. Blöcke mit weder einer Überschrift noch Text werden auf save fallen gelassen. Ein Autor, der hinzugefügt ein und zog weiter bedeutete nicht, einen leeren Schritt zu veröffentlichen, und der Leser würde ein Kontrollkästchen gegen nichts machen. Die beiden neuen Landekarten verbinden sich mitActiveMarkets und canManageSalesScripts to die Abhängigkeiten des Karten-Memo. Beide siedeln sich asynchron ab, also ohne sie Memo wurde gebaut, während beide falsch waren und nie wieder aufgebaut. Die vier marktbelasteten CRM-Karten oben waren bereits auf einige andere Abhängigkeiten Änderung in der Zeit angewiesen; die Namensgebung vonActiveMarkets fixiert sie im Vorbeigehen.

  2. · KBService

    Servieren Sie die Skripte ein Agent liest auf einen Anruf

    /api/kb/sverkaufs-scripts, gated auf den beiden neuen Rechten. Reads nehmen VIEW_SALES_SCRIPTS oder MANAGE_SALES_SCRIPTS, schreibt nehmen Sie MANAGE. SessionHelper.hasRight scheitert geschlossen, das ist, was jedes Tor in diesem Service hängt davon ab. Hier statt bei SecurityService, weil APIService bereits weiterkommt /api/kb/** zu diesem Service Großhandel, so dass die Funktion keine Gateway-Änderung benötigt, und weil donotmodify.dao.repos ist in dieser Anwendung @EnableJpaRepositories - die Lead-Market-Lookup ein Skript braucht, ist eine lokale Abfrage anstatt eines dienstübergreifenden Anrufs. Der Listenendpunkt gibt Zusammenfassungen mit einem Block COUNT und keinen Blockkörpern zurück. A Einstellungen Liste von einem Dutzend Skripte hat keine Verwendung für ein Dutzend vollständige Lexical Dokumente, und die Zählungen kommen von einer gruppierten Abfrage statt einer pro Reihe - die Form die gemacht / Blei langsam genug, um als Ausfall gemeldet werden. GET /märkte existiert, so dass das Interaction Center seine Sub-Tabs in einem ziehen kann Anruf. Die Alternative war, jeden Markt und jedes Drehbuch zu holen und kreuzen Sie sie im Browser: zwei Rundreisen und eine Nutzlast von Skript Körper, um eine Frage über ids zu beantworten.

  3. · kamo-shared-library

    Das Skript ein Mitglied liest auf einen Anruf, wie bestellte Blöcke

    Zwei Tische und zwei Rechte. SALES_SCRIPTS hängt von einem führenden Markt, wie ein LeadVendor tut es; SALES_SCRIPT_BLOCKS hält die Teile, jeder ein Lexical Dokument plus den abgeflachten Text, den die Vorschauen und Lesezeitschätzung lesen. Blöcke sind Zeilen und nicht ein JSON-Array auf dem Skript, weil die ID eines Blocks ist auf welchen Leseschritten ein Mitglied schreitet. Als Array wäre die Position die nur Identität zur Verfügung, so dass ein Autor Einfügen eines Absatzes in der Nähe der Spitze würde stillschweigend den Platz aller im Drehbuch verschiebe. Mit stabilen IDs kann die Formulierung neu geschrieben werden und die Blöcke neu geordnet werden, während jeder Agent Mid-Call hält die Zecken, die sie schon gemacht haben - weshalb **************** behält die ID eines jeden Blocks die Nutzlast noch Namen, und warum der Test dafür ist die erste in der Datei. Sparen ist ein FULL REPLACE: Blöcke mit einem ID-Update an Ort und Stelle, Blöcke ohne eine werden erstellt und blockiert die Nutzlastauszüge sind DELETED. Auf der DTO stehen und durch einen Test abgedeckt, weil ein Anrufer sonst davon ausgeht, verliert Daten mit nichts zu zeigen, für sie - der gleiche Vertrag, und die gleiche Falle, wie Hintergründe/Verpflichtung. Auslassen "Blöcke" vollständig ist die separate, sichere Fall, dass lässt einen Umbenennung sie in Ruhe lassen. VIEW_SALES_SCRIPTS (300) ist eine Wurzel: Das Lesen der Tonhöhe ist von keiner anderes Recht, am wenigsten VIEW_LEADS, seit dem Auszubildenden, der das Skript erlernt bevor eine Leführung übergeben wird, ist genau, für wen der Zuschuss ist. MANAGE (301) hängt aus ihm so Autoring kann nicht ohne die Fähigkeit zu lesen, was ist gewährt werden Autor, und das Entheben der Lektüre nimmt das Schreiben mit sich. Beide Namen ServiceType.CRM, das ist, was sie in die CRM-Sicherheitsgruppe bringt . permissionGroupTree leitet Gruppen von serviceType ab, so dass keine Gruppenbearbeitung erforderlich ist und ein Recht in keiner Gruppe konnte überhaupt nicht gewährt werden.

  4. · DocsService

    Füllen Sie ein Rechteck, Ehre eines Highlights und redig

    Drei Dinge über die Art und Weise ein vorbereitetes Dokument macht die Marken des Designers. Ein Rechteck wurde als Umriss gezeichnet, so dass die Füllung ein Mitglied jetzt wählt zu decken etwas oben ist nicht angekommen. Es füllt zuerst und streicht nach, und nur, wenn es ist eine Grenze links zu ziehen - die Deckkraft gehört zur Füllung, nicht zur Grenze um ihn herum. Ein Highlight ignorierte die Deckkraft, die der Designer immer gespart und gemalt hat einer bei 30%. Und ein Rechteck mit der Aufschrift "Entfernen des Textes darunter" hat nun seinen Text herausgenommen? PdfRedactor und nicht nur abgedeckt. Das läuft, bevor etwas gezeichnet wird, weil es den eigenen Inhaltsstrom der Seite neu schreibt. Die Anmerkungen bewegen sich auch vor der Seite Operationen, die eine Lösung in seiner eigenen ist rechts: eine Anmerkung benennt ihre Seite nach Index im DESIGN und applybeantragung vonSeitenoperationen löscht Seiten, so dass jeder Index hinter einem gelöschten verschoben. Eine Markierung, die danach gezogen wurde landete auf welcher Seite auch immer in diesen Slot gerückt war, der für ein Redaktionsfeld würde bedeuten, Text auf der falschen Seite zu löschen und die richtige in Ruhe zu lassen.

  5. · ESigService

    Legen Sie die Anmerkungen des Designers in das unterzeichnete Dokument

    abgeflachen() angewandte leere Seiten, Umdrehungen, Modifikatoren, Feldwerte, Seitenbestellung und Zertifikate. Es zog nie die Anmerkungen. Ein Rechteck, ein Highlight oder ein Pfeil gezeichnet über eine Vorlage zeigte sich im Designer und im Browser des Unterzeichners und dann war einfach nicht in der PDF-Datei, die geliefert wurde. Für ein Highlight, das eine fehlende Blüte ist. Für das Rechteck zieht ein Mitglied eine Kontonummer ist es das Gegenteil von dem, was sie verlangten, so dass alle fünf Typen werden jetzt gezeichnet, nach den Feldwerten und vor den Wasserzeichen, die sitzen oben - die Reihenfolge der Designer stapelt seine Schichten in. Ein Rechteck mit der Aufschrift "Entfernen des Textes darunter" hat auch seinen Text herausgenommen, von PdfRedactor, bevor überhaupt etwas gezeichnet wird: Redaktion schreibt die eigene Seite um Inhaltsstrom, so dass eine Marke zuerst abgebucht würde mit dem Text es umgeschrieben werden war dazu bestimmt zu überleben. Weder Pass wirft - eine Redaktion, die scheitert darf nicht verlieren eine Signatur - und ein Fehler wird für das, was es ist, dass die abgedeckt Wörter sind immer noch in der gelieferten Datei.

  6. · kamo-signer-monorepo

    Zeichnen Sie ein Rechteck füllen Sie die Ansicht des Unterzeichners

    Der Designer kann jetzt ein Rechteck eine Füllung und eine Insakheit, das ist, wie ein Mitglied deckt etwas auf. Dieser Renderer zeichnete fill="none", so dass der Unterzeichner ein sah leere Umrisse, wo ein fester Block sein sollte - und auf einem redigierenden Rechteck sie hätten direkt zu dem durchsichtigt, was herausgenommen wurde. Die Füllung trägt die Deckkraft und die Grenze bleibt fest: eine Grenze entlang verblassen mit einem 30% Block liest es als Fehler und nicht als Wahl. Ein Rechteck ohne fillColor ist die Skizze, die jeder gespeichert hat, bevor dieser noch zeichnet.

  7. · kamo-internal

    Machen Sie das Rechteck-Tool etwas, das Sie Dinge mit verbergen können

    Das Rechteck-Tool war die ganze Zeit in der Anmerkungs-Toolbar, aber es zeichnete eine umreißen: fill="none" in jedem Renderer. Es gab nichts zu verbergen mit, keine Deckkraft, und keine Möglichkeit, eine Form wieder zu berühren, sobald es gezeichnet wurde - Anmerkung Auswahl war unerreichbarer Code, weil die Schicht nur Pointer-Ereignisse nahm, während ein Zeichenwerkzeug war aktiv und der Klick-Handler lief nur, während das ausgewählte Werkzeug war. So hat ein Rechteck jetzt eine Füllung, eine Undurchsichtigkeit, eine Grenze, die nichts sein kann, und ein Schalter, der besagt, dass der Text darunter entfernt und nicht abgedeckt werden soll (die backend macht diesen Teil). Es kommt als ein solider schwarzer Block, weil die Abdeckung etwas auf, ist, was die Menschen für sie zu tun zu tun; die Umriss jedes Rechteck gespeichert, bevor dies noch hat, ist, was keine FillColor bedeutet, so dass keiner von ihnen ändern. Zeichnen ist entweder Geste: ziehen Sie es heraus, oder klicken Sie einmal, um es und wieder zu verankern zum Abschluss - eine Presse, die nirgendwo hingeht, wurde als zu klein verworfen, um sie zu behalten, das ist genau die Geste, die jetzt beginnt eine. Flucht verlässt es. Einmal gezeichnet es wird ausgewählt, mit acht Griffen und einem schleppbaren Körper, mit der gleichen Klemmung und Seiten-Raum-Mapping als Ecke Griffe eines Feldes, so dass die beiden gleichermaßen fühlen. Und weil eine ausgewählte Anmerkung nirgendwo hingehen konnte, eine leere Eigenschaftstafel verwendete nach oben zu rutschen; sie hat jetzt eine, mit den gleichen Kontrollen nach der Tat. Zwei-Punkt-Tools alle nehmen die zweite Geste, nicht nur das Rechteck, und Highlights bekommen die Griffe zu - sie sind die gleichen Box darunter.

  8. · kamo-shared-library

    PdfRedactor, so dass ein bedecktes Wort tatsächlich weg ist

    Ein gefülltes Rechteck, das über eine Kontonummer gezogen wird, verbirgt es vor dem Auge und vor nichts anderes: Die Glyphen bleiben im Inhaltsstrom der Seite, und eine Copy-Paste oder ein Textextraktor reicht sie direkt zurück. Der esign Designer steht vor dem Angebot "Entfernen Sie den Text darunter" auf seinem Rechteck-Tool, und das ist, was sein muss dafür, dass das alles bedeutet. Jede Glyphe, die eine Seite malt, wird gemessen, und die, die eine Region abdeckt, fallen gelassen vom Tokenstrom und ersetzt durch einen TJ Vorsprung von genau der Breite besetzt - so dass der Rest der Linie nicht bewegt und alles andere auf der Seite wird unberührt zurückgeschrieben. Text aus dem Inneren einer Form XObject gemalt kann nicht auf diese Weise erreicht werden, weil die Der eigene Token-Stream der Seite enthält ihn nicht. So wird die Arbeit danach überprüft durch erneute Messung der Glyphen und einer Seite, die noch Text in einer Region malt wird als Bild wieder srendered. Diese Seite verliert ihren durchsuchbaren Text, der ein schlechter ist Ergebnis und wird als eins protokolliert, aber es ist die einzige der beiden Optionen, die nicht ein stilles Leck. PDFBox ist für optional erklärt, so dass es nicht die rund zwanzig Dienste, die Öffnen Sie nie ein PDF; die beiden, die bereits 3.0.3 selbst deklarieren.

  9. · kamo-internal

    Link die Artikel ein Entwurf

    Die Autorenversammlung ist es, einen Geschwister-Artikel zu benennen, indem er seinen Titel in Kursivschrift "Lesen Sie *Sicherheitsrollen Erklärte* vor dem Bauen". 181 Spannweiten über die Entwürfe tun es und nichts jemals verwandelte sie in Links, so eine veröffentlicht Artikel sagt dem Leser, welche zu gehen und zu lesen und dann lässt sie zu finden es. Es gibt genau einen Markdown-Link in dreihundert Artikeln und es zeigt off-site. Es fütterte auch die KB-Link-Bug der Assistent hatte gerade. InhaltPlainText ist, was wird eingebettet und was der Assistent gezeigt wird, und eine abgespeckte kursive liest als Prose, so dass die Setup-Checkliste erreicht das Modell mit der Benennung ein Dutzend Artikel mit Nein Weg, um eine von ihnen zu erreichen. Das ist im KI-Dienst jetzt bewacht, aber eine Referenz das ist eine Verbindung braucht keine Bewachung. Auflösung geschieht bei der Einfuhr, gegen die Wissensdatenbank, die veröffentlicht wird, denn die Adresse ist ein guid und ein guid gehört zu einer Wissensbasis eher als auf die Entwürfe - schriftlich sie in die Inhaltsdateien würde die Hilfe binden zu einer einzelnen Organisation. Es läuft auf dem umgebauten Baum, wo ein Referenz ist bereits ein kursalischer Textknoten, der genau den Titel hält markdown-to-lexical.mjs unberührt, so dass die anderen dreihundert Artikel nicht Rückschritt. Nur ein exaktes Titelmatch ist verbunden, und Kursivschriften leisten hier doppelte Pflicht. 62 kursiv Spannweiten sind UI Labels, Beton- oder Fragetitel und bleiben, wie sie sind. Artikel, der sich selbst nennt, ist keine Referenz, der eigene Link eines Autors gewinnt immer und ein zweiter Run ist ein No-Op. Verifiziert gegen die Live-Wissensbasis: 181 Referenzen, 119 verschiedene Reiseziele, 110 Artikel gewinnen Links, nichts ungelöst.

  10. · kamo-internal

    Eine Einrichtungsgebühr für ein Einzelpreis-Zitat und die Suite auf der eigenen Linie

    Die Setup-Gebühr bestand nur auf Multi-Option-Zitate, so dass "Ein Preis" hatte keine Box für eins auf dem Formular oder auf der gedruckten Seite. Es sitzt jetzt neben Versand, erscheint in die Live-Schiene und druckt als eigene Totals-Linie. Es ist außerhalb der Rabatt subtotal, spiegeln QuoteTotals: ein Prozentsatz auf die Ware ist kein Prozentsatz von den Kosten für die Installation. Eine Adresse kam als eine Komma-verwendete Schnur, so lief 'Suite 400' auf die Straße und die Stadt. Das Gerät ist jetzt ein eigenes Feld und bekommt seine eigene Linie, unter der Straße - auf dem Adressblock des Zitats, auf den eigenen Briefkopf-Details des Verkäufers, und auf der Mailing-Adresse der Führung im Sichtmodus, wo das gleiche ist Adresse wird gelesen, bevor es jemals ein Angebot erreicht.

  11. · InitializerService

    Commerce quotes.setup fee

    Eine einmalige Einrichtungsgebühr auf einem Angebot, das einen einzigen Preis präsentiert. Die Gebühr bereits existierte auf QuoteOption, wo jede Alternative ihre eigene trägt; ein flaches Blatt hatte keine Möglichkeit, eine davon aufzuhängen, so dass sie überhaupt keine Setup-Gebühr aufnehmen konnte. Nullfähig, so dass der ADD COLUMN auf einer besiedelten Tabelle und jeder vorhandene akzeptiert wird Zitat bedeutet, was es bedeutet: keine Spalte, keine Gebühr.

  12. · kamo-shared-library

    Eine Einrichtungsgebühr für ein Einzelpreis-Zitat und die Suite auf der eigenen Linie

    Zwei Dinge, die ein Zitat nicht sagen konnte. Eine einmalige Einrichtungsgebühr wurde nur auf QuoteOption gelebt, wo jede Alternative ihre eigenem. Ein flaches Blatt hat keine Möglichkeit, eins zu hängen, so könnte es nicht aufnehmen ein Setup Gebühr überhaupt - ein Zitat bedeutete, das ganze Angebot auf Optionen zu vergleichen, die die Lesederei des Dokuments für den Kunden ändert. Quote.setup_fee ist die Flat-Blatt-Äquivalent. Es sitzt OUTSIDE die diskontable subtotal absichtlich: ein Prozentsatz aus der Ware ist nicht ein Prozentsatz von den Kosten für die Installation. Eine Adresse wurde zu einem Komma-mitgefügten String zusammengesetzt, so dass 'Suite 400' lief in die Straße und die Stadt. So wird eine Adresse nicht geschrieben, und auf ein Zitat ist sie ist das, was von einem Kunden erwartet wird, einen Scheck zu posten. Die Einheit reist jetzt als seine eigenes Feld sowohl auf dem Kundenblock als auch auf den eigenen Daten der Org, wobei die Seite bleibt frei, ihm eine eigene Linie zu geben. Die Spalte ist ungültig - jede Zeile geschrieben, bevor sie keine Gebühr hat, und null bedeutet keine - also kein vorhandener Anführungswert.

  13. · kamo-signer-monorepo

    Die Suite auf eigene Linie, und eine Einrichtungsgebühr auf einem Single-Price-Zitat

    Zwei Dinge, die die gedruckte Seite nicht sagen konnte. Eine Adresse kam als eine Komma-miterstehende Schnur, so lief 'Suite 400' auf die Straße und die Stadt nicht, wie eine Adresse geschrieben wird, und das ist die Seite ein Kunde ist erwartet, dass ein Scheck gegen zu posten. Die Einheit reist nun als eigenes Feld und druckt auf seiner eigenen Linie, auf dem Adressatblock und auf die eigenen Daten des Verkäufers. Die Einrichtungsgebühr existierte nur auf Multi-Option-Zitate, so dass ein Single-Price-Anführungsangebot könnte nicht geben ein überhaupt; Schaltmodi, um es zu erfassen geändert, wie das ganze Dokument liest. Es hat jetzt seine eigene Summen Linie, nur gezeigt, wenn es eine gibt.

  14. · InitializerService

    Reprice gespeicherte Angebot Summen durch die Preis-Engine

    Zitat Geld Spalten sind geschrieben, nicht auf gelesen berechnet, so dass die beiden Korrekturen die auf 2026-09-02 gelandet ist - ein Stückpreis ist eine pro Monat Rate der Laufzeit multipliziert, und ein engagierter Begriff ist das wert, was er verpflichtet - lassen Sie jede bestehende Zeile die alte Arithmetik tragen, bis etwas sie rettet. Auf das Zitat, das aufgedeckt dies, eine Drei-Jahres-Option gespeichert einen Monat von sich. Anrufe QuoteService.reprice, der gleiche Code, der Preise ein Angebot auf speichern, eher als die Neuimplementierung der Geldregeln in SQL. Eine Backfill mit einer eigenen Kopie von ihnen ist eine zweite Quelle der Wahrheit und die beiden driften den Moment entweder berührt. Terminal Zitate werden berichtet, nie neu geschrieben. Ein ACCEPTED Zitat die Gesamtaufzeichnungen was ein Kunde mit der angezeigten Zahl einverstanden war; diese Zahl kann sein falsch, aber es hier zu korrigieren würde stillschweigend ein unterzeichnetes Dokument bekräftigen. Jeder ist protokolliert mit seinem gespeicherten und reberechneten Wert für eine Person zu entscheiden. Idempotent, und bestellt spät, weil es Einheiten lädt.

  15. · kamo-signer-monorepo

    Drucken Sie die vollständige Zeile auf das Angebot des Kunden

    Jede Zeile zeigte einen Namen und einen Betrag. Das fordert den Kunden auf, die Menge, die Einheit, die Rate und jede Reduzierung auf Vertrauen, und lässt sie nichts um eine spätere Rechnung zu überprüfen. Optionskarten drucken jetzt die gleichen Spalten wie das flache Blatt, und beide gewinnen eine Rabatt-Spalte: Eine Reduzierung, die vereinbart wurde, gehört auf das Dokument, das besagt die Vereinbarung. Linien ohne Rabatt zeigen eine gedämpfte Bindestrich statt einer Lücke, so ein Spalte von ihnen liest sich immer noch als gewollt. Passt den Wechsel zu Kamo-internals Print-Vorschau ab, die für das Projekt existiert Seite - die beiden sind nur nützlich für die Mitarbeiter, während sie zustimmen.

  16. · kamo-internal

    Drucken Sie die volle Zeile auf dem Angebot, und aufhören zu verlieren Arbeit am Modus-Schalter

    Zwei Dinge, die ein Zitat nicht tun konnte. Die gedruckten Linieneinträge in einer Optionskarte zeigten einen Namen und einen Betrag, nichts sonst keine Menge, kein Stückset, kein Tarif, kein Rabatt. Das fordert den Kunden auf nehmen Sie alle vier auf Vertrauen und lässt ihnen nichts, um eine Rechnung zu überprüfen. Option Karten drucken jetzt die gleichen Spalten wie das flache Blatt, und BEIDE erhalten einen Rabatt Spalte: eine Reduzierung, die vereinbart wurde, muss auf dem Dokument, das besagt, sichtbar sein die Vereinbarung. Der Wechsel zwischen 'Einzelpreis' und 'Vergleichsoptionen' führte nur eine Möglichkeit zur Folge, und nur, wenn es noch keine Möglichkeit gab. Hinüber und zurück gedreht und damit verworfen was auch immer in der Ansicht getippt worden war, die zurückgelassen wurde. Die beiden Modi sind zwei Ansichten der gleichen ersten Sache verkauft, so dass der Schalter trägt es jetzt in beide Richtungen; Optionen hinter den ersten sind Alternativen und sind allein gelassen, da die flache Tabelle hat nirgendwo, um sie zu halten. Die Carry ist zwei exportierte reine Funktionen statt Logik in einem Klick-Handler, so das Verhalten, das stillschweigend falsch war, ist jetzt das Verhalten unter Bewährung.

  17. · kamo-internal

    Re-Ausgabe einer Share-Link aus seiner Zeile, und aufhören, die einmalige URL zu verlieren

    Die Share-Links-Liste bot keine Möglichkeit, einen Link zu sehen oder zu kopieren, und nichts erklärt warum. Nichts kann eine bestehende offenbaren - nur die Token SHA-256 gespeichert ist, so dass die URL existiert in der Mint-Antwort und im Posteingang des Kunden und nirgendwo sonst. Die eigene Antwort der Architektur auf eine verlorene Verbindung ist, eine andere zu prägen, die die Kopie bereits gesendet arbeiten und unabhängig widerrufbar; diese Antwort war einfach nicht erreichbar von der Benutzeroberfläche. Jede Zeile trägt sie nun: Kopieren Sie einen neuen Link, der leise prägt und den Kopierdialog öffnet, und wo die Zeile einen Empfänger benennt, sendet E-Mail ein neuer Link ihn auch. Beide gehen durch ein doMint-Pfad mit dem eigenen Erstellen des Dialogs, so dass die drei nicht driften können. Eine Bildunterschrift unter der Liste steht die Einschränkung, anstatt den Leser auf der Jagd nach einem die Taste, die nicht existieren kann. Zwei kleinere Reparaturen an der gleichen Beschwerde. Der einmalige URL-Dialog war abwurfbar per Hintergrund klicken und Escape - ein streunender Klick und der Link war unwiederbringlich; es schließt sich nun nur noch durch Done. Und die Mint-Antwort ist "emailed" ist die OUTCOME während die Anfrage der INTENT ist: um eine E-Mail bitten und nicht eine gerendere erhalten das gleiche "Link erstellt". wie nie fragen. Die beiden werden jetzt getrennt verfolgt und Ausgefallene Sendung sagt so.

  18. · RAGService

    Lösen Sie die Artikel eine Passage Namen in Link-Ziele

    Ein Hub-Artikel "Einrichten Ihrer Organisation - Eine Checkliste" ist einer, der existiert Senden Sie den Leser an ein Dutzend andere, und benennt jeden von ihnen in Klartext. Der Editor speichert keine Link-Knoten, so dass die Titel sind alle, die erreichen contentPlainText, das ist, was eingebettet wird und was der Assistent angezeigt wird. Suche dann kehrte diese Passage mit den Pfaden von nur der Handvoll von Artikel, die die Vektor-Abfrage abgestimmt, und der Assistent, gesagt, zu verknüpfen, was es zitiert, setzen Sie einen dieser Wege auf alle zwölf Empfehlungen. Die Suchantwort trägt nun verlinkbare Artikel: die Artikel diese Passagen Name, gelöst, um echte guids, gefiltert von den gleichen Ebenen die Suche filter verwendet - ein Artikel, den der Assistent zitieren kann, ist einer, den er verlinken kann. Ein Titel wird nur dann erreicht, wenn er spezifisch genug ist, um einen Artikel zu bedeuten. "Chat", "Leads" und "Notes" sind auch hier Artikeltitel und erscheinen in gewöhnlicher Prosa ständig, so dass die Übereinstimmung ist auf Titel von drei Wörtern und zwölf beschränkt Zeichen, auf ganze Wort Grenzen. Der Katalog ist nur Titel und Flaggen, nie die @Lob-Körper, und wird per org zwischengespeichert - dies läuft auf dem Suchpfad.

  19. · kamo-internal

    Fragen Sie, ob den Gästen gesagt werden sollte, und wie

    Das Hinzufügen eines Gastes zu einer Veranstaltung sagte es ihnen nicht, und der Dialog sagte es nie. Die nur, was jemals an einen Gast geschrieben wurde, war eine Erinnerung - die einen Kollegen erreicht in-App und erreicht eine externe Adresse nie - so lädt einen Kunden zu einem Treffen ein kontaktiert niemanden, und es gab keine Kontrolle irgendwo, die hätte. Eine Karte unter der Gästeliste, in Form der Privatsphäre und Erinnerungskarten sitzt zwischen: ein Schalter, und zwei Route-Chips darunter. Der Schalter schaltet sich ein wenn der erste Gast kommt, einmal und nie wieder, weil jemanden zu einem sich zu treffen und sie nicht zu erzählen, ist das überraschende Ergebnis - und es zurückzudrehen off muss auch kleben, während noch mehr Gäste hinzukommen. Die Zusammenfassung ist der Teil, der die Karte verdient. Ein Gast von außen hat keinen Chat Thread und kein Kamo-Kalender; E-Mail ist die einzige Route, die sie erreicht und es ist was die Kalenderdatei trägt. E-Mail-abzuschalten Stränge sie, und nichts anderes in der Schnittstelle würde so sagen. Das Abbiegen der letzten Route schaltet das Ganze ab anstatt einen Schalter zu lassen, der vorgibt, beim Senden Leute einzuladen nichts. Versteckt für den Lead Callback, der seinen eigenen Speicher in SecurityService besitzt: Mailing eine Führung eine Einladung für den Moment, Sie beabsichtigen, sie zu klingeln ist nicht was die Planung eines Rückrufs bedeutet. "Aktualisieren und benachrichtigen" geht. Es postete auf der Mail-Komponistin eigenen Einladung Endpunkt, die sein eigenes Ereignis prägt und jeden ablehnt, dessen ORGANIZER_EMAIL nicht der Absender ist. eine Spalte, die kein Kalenderereignis jemals gesetzt hat - und die Gästeliste geschickt, wie es war, als der Dialog geöffnet, so dass eine Bearbeitung, die jemand hinzugefügt hat, benachrichtigt alle außer ihnen. Es hätte nie in jedem Fall laufen können: es wurde auf attendee.isOrganizer, die Die Gästesynchronisierung des Kalenders schreibt für jede Zeile als falsch. Sparen macht jetzt den Job.

  20. · InitializerService

    Die Säulen, die eine Veranstaltung ihre Gäste einladen lassen

    Drei auf Kalender_events, denn ob ein Treffen Menschen einlädt, gehört zu der Treffen statt bis zu dem Moment, es gespeichert wurde - eine Bearbeitung sechs Wochen später, die fügt hinzu ein Gast muss es wissen. Alle Standard zu verlassen bestehende Ereignisse still: CalDAV, die ics Importeur und der Lead-Callback-Komponist schreiben alle durch den gleichen Service und keine von ihnen bietet diese Wahl. Zwei auf Kalender_event_attendees, beide null, und null ist der ladende Wert: es bedeutet "nie gesagt", das ist, was jede bestehende Zeile ist und was jeder Gast durch eine spätere Bearbeitung hinzugefügt wird. Ein Standard auf entweder würde die ganze Funktion machen stillschweigend nichts tun. Von Hand auf das Cluster angewendet, da KamoInitializerService nicht eingesetzt wird.

  21. · EmailService

    Senden Sie die Einladung der Gästeliste impliziert

    Jemanden zur Gästeliste einer Veranstaltung hinzuzufügen, hat es ihnen nicht gesagt. Nur eine Erinnerung schrieb an einen Gast, und eine Erinnerung erreicht ein Mitglied in-App und eine externe Adresse also wurde ein Kunde, der zu einem Treffen eingeladen wurde, überhaupt nie kontaktiert, und Kollege hörte zum ersten Mal davon fünfzehn Minuten, bevor es begann. EventInviteService läuft nach den Save-Commits, auf einem async-Thread. Nach der verpflichten, weil eine Einladung für ein Treffen, deren Speicher dann zurückgerollt werden kann nicht sein zurückgerufen; aus dem Thread, weil AfterCommit noch vor der Antwort läuft geschrieben, und fünfzig SMTP-Gespräche gibt es fünfzig Sekunden Spinner auf einem speichern das ist bereits gelungen. Zwei Routen, und der Unterschied zwischen ihnen ist, warum es zwei Kontrollen. E-Mail ist das einzige, was eine Adresse erreichen kann, die niemandem hier gehört, und es trägt die ics-Beratung - das ist der gesamte Mechanismus, durch den ein Treffen angeordnet ist Kamo landet auf dem eigenen Kalender eines Gastes. Chat erreicht einen Kollegen in der Thread haben sie bereits mit dem Veranstalter, durch das gleiche MediaService-Paar AlertChatService nutzt und überspringt einen externen Gast durch Konstruktion: einen Chat-Thread ist zwischen zwei Mitgliedern, so gibt es niemanden zu adressieren. Wem schuldet sich das, was aus der Gästereihe kommt und nicht von dem, was die sparen eingefügt. Nie gesagt bedeutet eine Einladung, wann immer sie hinzugefügt wurden. Behind on SEQUENCE bedeutet ein Update. Level bedeutet Stille, also wird das Korrigieren eines Tippfehlers nicht mailen updateEvent wirft SEQUENCE erst auf, wenn sich das Meeting selbst bewegt hat. Beschreibung ist absichtlich aus, denn es ist, wo Agendas gehen und Mailing jeder Gäste pro Linie würden das Zimmer schulen, um die Post zu ignorieren, die besagt, dass sich die Zeit geändert hat. Die Platte ist geschrieben, nachdem eine Route erfolgreich ist, nie zuvor: Markieren optimistisch würde einen transienten SMTP-Versagen in einen Gast verwandeln, von dem man dauerhaft glaubte, dass er wurde gesagt, das ist das Schweigen, das dies zu beenden. Setzen Sie auch ORGANIZER_EMAIL, aus der Mailbox, die tatsächlich gesendet wird. Keine Veranstaltung durch den Kalender gemacht hat jemals eine getragen, und ein ics ohne es kann nicht sein antwortete auf - der Gast "akzeptieren" hat keine Adresse zu gehen. Eine Veranstaltung löschen, die Die eingeladenen Leute ziehen es jetzt von den Gästen zurück, die es erfahren haben, und nur von denen.

  22. · kamo-shared-library

    Lassen Sie eine Veranstaltung ihre Gäste einladen und setzen Sie es in ihren Kalender

    Das Speichern einer Veranstaltung sagte niemandem. Die Gästeliste wurde erstellt und das Publikum gespeichert, und die Menschen auf sie hörte nichts, bis eine Erinnerung feuerte . erreicht eine Mitglieds-In-App und erreicht nie eine externe Adresse. So könnte ein Mitglied laden Sie einen Kunden zu einem Treffen ein, beobachten Sie den Namen auf der Gästeliste erscheinen, und die Client würde einfach nie erzählt werden. Auch ein Gast konnte das Treffen nicht sehen. Sichtbarkeit wurde durch den Besitz entschieden Kalender allein, so dass eine Veranstaltung im Kalender des Veranstalters unsichtbar war alle eingeladen. **************** hat einen Schalter umgelegt in Kalendereinstellungen und einer Spalte dahinter, da dieser Bildschirm ausgeliefert wurde, und Nichts hat es je gelesen. Die Veranstaltung hat die Wahl, ob Sie einladen, und per E-Mail, Chat, oder beide weil eine Bearbeitung sechs Wochen später, die ein Gast fügt, muss wissen, ob dies ein Treffen, die Menschen einlädt. Die Gästereihe trägt, wenn es zuletzt gesagt wurde und die SEQUENCE, das ist, was macht "ein Gast hinzugefügt später bekommt eine Einladung zu das gleiche Treffen" korrekt über jede Anzahl von Bearbeitungen: Ableitung von welchem, was auch immer Die Zeilen, die ein Speicher eingefügt werden, sind genau einmal richtig. Sichtbarkeit gewinnt eine eingeladene Ging-Gast-Filiale durch eine explizite LINKE JOIN, eingezäunt auf dass die Vorliebe über eine Mitglieds-ID nichts kann passen. Eine Zeile statt einer Kopie pro Gast: ein RSVP, und ein Veranstalter, der das Meeting verlagert, bewegt es für alle. Die LINKEN JOINs sind tragend - der Organisationskalender hat kein eigenes Mitglied, so dass ein impliziter Pfadausdruck jedes Shared-Compedy-Ereignis fallen lässt, das trap findBusyForMember bereits Dokumente.

  23. · SecurityService

    Eine Mitgliedsadresse unterschreibt Sie in seine eigene org, nicht jede Org

    Ein Mitglied, das sich mit der org Mailbox anmeldet, markiert Primary auf sein Mitglied Die Einstellungen wurden jedem Arbeitsplatz angeboten, dem ihr Benutzerkonto gehört. Die Adresse existiert nur innerhalb einer Organisation - Mailboxen sind einzigartig auf (org_id, E-Mail), nicht global - so dass die Anmeldung mit ihm ist die Anmeldung in THERE. Die Die anderen Arbeitsbereiche des Kontos bleiben über den eigenen Benutzernamen des Kontos erreichbar oder E-Mail, für die eine kontoweite Kennung ist. Die Kennung hat nun einen Umfang. Eine Kontokennung lässt es leer und Änderungen ändern sich; eine Postfachadresse des Mitglieds benennt die org(s) ist sie primär in und dieser Set ist das einzige, was der Anmeldegang eingeben darf. Die Verengung der Liste, die der Picker zeichnet, ist kosmetisch für sich: Die Wahl kommt zurück von einem Browser, und das Mitglied ist in der Regel ein echtes Mitglied des anderen Arbeitsbereiche, so /session/select's Mitgliedschaft Re-proof würde passieren. Die Beschränkung lebt daher in der Auswahlmarke, in Redis, wo der Anrufer nicht erreichen kann es - und geht zurück mit dem Token, wenn ein vorübergehender Fehler gibt es zurück, oder ein Wiederaufnahmeversuch würde sich stillschweigend zu einer uneingeschränkten Anmeldung ausweiten. - PrimaryMailboxIdentityLookup: Die ungekopierte Suche gibt die org ids mit der Benutzer-ID. weigert sich immer noch, wenn die Adressierung zwei verschiedene Konten nennt; eins Konto hält es in zwei seiner eigenen Orgs bietet sowohl, und nichts anderes. - CredentialResult Gewinne orgScope, leere Bedeutung uneingeschränkt. - loginWithoutAResolvedHost filtert enterableOrgs von ihm (nur jemals entfernen, so eine inaktive Mitgliedschaft fällt immer noch aus, lehnt einen ?org= Hinweis außerhalb davon ab die Wörter, die ein falsches Passwort erhält, und nicht mehr vorwählt ein last_org_id Adresse kann nicht erreicht werden. - OrgSelectTokenService speichert userId:orgIds; eine nackte Benutzer-ID von einer pod Mitte Walzling-Entwurf noch dekodiert, als unbeschränkt. Eine unlesbare Einschränkung versagt geschlossen. - SessionSelectController lehnt ein Out-of-scope org 403 ab und gibt die token zurück - das ist kein Fehler, den das Mitglied nicht verursacht hat. Der Custom-Domain-Pfad ist unberührt: Der Host benennt bereits eine org.

  24. · SecurityService

    Erzwingen Sie die Sichtbarkeit der Plattform und lassen Sie sie bearbeiten

    GET/PUT /api/security/reports/catalog, beide auf MANAGE_REPORTS auf der Plattform eingesperrt Wirbelsäule. Die Liste kommt aus dem REGISTRY, nicht die Override-Tabelle: ein Operator muss in der Lage sein, einen Bericht, der noch keinen Streit hat, das ist jeder Bericht zu beschränken, bis Jemand berührt einen. Der Scheck selbst ging in ReportScopeResolver.May, die der Katalog, die Läufer, die Picker, der Exporteur, die gespeicherte Ansichtsliste und der Zeitplan fegen alle schon Kreuz. Hinzufügen zu jedem von denen statt wäre sechs Chancen für einer von ihnen zu widersprechen - und derjenige, der nicht einverstanden wäre derjenige, der eine zeigte Bericht der Plattform versteckt hatte. Er sitzt IN FRONT der eigenen Rechte des Berichts, und Gott gibt ihn nicht. Break-Glas erweitert, was ein Mitglied innerhalb seiner Organisation sehen kann; dies ist eine Frage über für welche Organisationen überhaupt ein Bericht existiert, und ein Gott in einem Mieter ist noch in dieser Mieter. ReportVisibilityService scheitert OPEN, das ist das Gegenteil von allem anderen hier und absichtlich: eine unlesbare Override-Tabelle würde sonst jeden Bericht auf die Plattform verschwindet, und die Berichte darunter sind immer noch von ihren eigenen Rechten umzäunt und ihre eigene Reihe-Ebene Umfang. Der Verlust dieser Tabelle kostet eine Beschränkung, nicht eine Offenlegung. Die Einstellung von ALL_ORGS löscht die Zeile anstatt die Standardeinstellung zu speichern. Ein eingeschränkter Bericht stoppt seine bestehenden Zeitpläne, und der Lauf wird aufgezeichnet FAILED mit "der Spielplan hat keinen Zugriff mehr" - der gleiche Audit-Trail wie widerrufen Jemand hat Recht, was auch so ist, wie es passiert.

  25. · kamo-internal

    Entscheiden Sie, wer jeden Bericht sieht, von der Plattform-Verwaltung

    Ein Registerkarte Reports auf der Konfigurationskonsole, gated by MANAGE_REPORTS auf der Plattform Wirbelsäule - das ist auch, ohne weitere Arbeit, eine Reihe in der Manage Rights Dialog, da dieser Dialog den Katalog des Servers wiedergibt. Jeder Bericht der Plattform Schiffe, gruppiert nach Ordner, jeder mit einer Drei-Wege-Steuerung: alle Orgs, nur die Plattformorganisation oder nur Plattform-Administratoren. Jede Zeile zeigt auch das Recht, das ein Mitglied noch braucht, weil ein Betreiber einen Bericht einschränkt sollte in der Lage sein zu sehen, es ist bereits gated - die meisten brauchen nichts hier, und eine Konsole das versteckte, dass würde einladende Dinge zweimal. Spart pro Reihe, optimistisch. Eine Drei-Wege-Steuerung, die auf einer Rundreise wartet, fühlt sich an gebrochen, und die einzige Kosten für falsch ist der Knopf schnappt zurück mit der Vernunft. Die Kopie ist vorsichtig über zwei Tore, die ähnlich klingen. Dies ist die äußere: innen eine Organisation, die ein Bericht noch das Recht braucht, seine Daten zu regeln, und die Menschen immer noch siehe nur die Aufzeichnungen, die sie dürfen. Die Hilfe sagt laut, dass die Einschränkung eines Bericht stoppt jeden bereits dafür eingerichteten Zeitplan - richtiges Verhalten und am wenigsten Auffindbare Konsequenz auf dem Bildschirm. Zwei Dinge, die das Typ-System und ein Wächter gefangen, anstatt zu überprüfen: RIGHT_ICON ist ein Erschöpfender Record, so dass die neue Rechte nicht ohne eine Glyphe versenden konnte; und der Tab hatte kein Plattform-Verwaltungs-Menü Link. Jeder andere Tab hat eine, so dass die Wache jetzt erfordert es - eine Registerkarte, die nur von jemandem erreicht werden kann, der den Tab-Streifen bereits kennt es gibt eine Registerkarte, die niemand findet.

  26. · kamo-internal

    Geben Sie dem Angebot Abrechnung Wahl einen Bildschirm zu leben auf

    Die org-weite Einstellung, die entscheidet, ob ein Angebot in jeder Periode oder in voller Höhe abgerechnet wird up front existiert seit einiger Zeit auf OrgPOSConfig, und der Endpunkt, der schreibt hat es auch. Die einzige Komponente, die es darstellt - **************** wird durch nichts importiert, so dass kein Mitglied jemals in der Lage war, es zu erreichen: die Einstellung war nur durch Handposting auf die API konfigurierbar. Commerce-Einstellungen erhalten eine Quote Billing-Tab. Das Gremium trägt nur die Abrechnung Wahl; die andere Hälfte dieser verwaisten Komponente, die Verlobungsart, ist bereits von Markets & Fields auf dieser Seite bedient. Die Kopie wird von seinem gelesen die Name-der-Nachricht, anstatt dupliziert zu werden, da sie bereits übersetzt ist. Sparen schickt die Verlobungstypen genau wie gelesen zurück - der Endpunkt behandelt die aktivierte Liste als die ganze Wahrheit, so dass es jede vertikale deaktivieren würde org hat.

  27. · kamo-shared-library

    Lassen Sie die Plattform entscheiden, wer jeden Bericht sehen kann

    MANAGE_REPORTS, an PlatformRightType angefügt und eine REPORT_CATALOG Override-Reihe pro Bericht mit einem von ALL_ORGS, PLATFORM_ORG_ONLY oder PLATFORM_ADMIN_ONLY. Dies ist ein gö es gönnen steht wie alles andere im Rahmen und es sitzt vorne von ihnen: ein Bericht eigenen requiredRight entscheidet, was ein Mitglied sieht INSIDE ein Mieter, und der Umfang der Reihe Ebenen verengt sich weiter. Dies entscheidet, ob dem Mieter die Bericht an allen, das ist die Entscheidung der Plattform und nicht die der Organisation. Auf der Plattform Wirbelsäule absichtlich. Ein Mieter-Administrator kann seine eigene bearbeiten Sicherheitsmodelle, so dass ein RoleRightType hier einen Kunden einen Bericht erweitern lassen würde Plattform hatte eingeschränkt. Die drei Einstellungen sind INDEPENDENT Bedingungen, keine Leiter - eine Plattform-Administrator innen ein Mieter erfüllt PLATFORM_ADMIN_ONLY und nicht PLATFORM_ORG_ONLY, und a Mitglied der Plattform org, der kein Administrator ist, erfüllt das Gegenteil. Sie als Ranking zu lesen würde leise eine der beiden erweitern, und die Erweiterung würde aussehen wie die Funktion funktioniert. Ein Bericht ohne Zeile ist ALL_ORGS, was jeder Bericht heute tut - also die Tabelle beginnende Leerstände nichts live, und die Einschränkung eines Berichts bleibt ein vorsätzliche Handlung. Erlebt am Ende des rechten enum, weil getSortOrder() ordinal( ist: Einfügen würde die Konsole neu nummerieren. Zuschüsse werden nach Namen gespeichert, so auf Anhängen Änderungen nichts bereits gewährt.

  28. · kamo-signer-monorepo

    Zeigen Sie den gesamten Begriff, wenn der Verkäufer Rechnungen im Voraus

    Die Karte führte mit der wiederkehrenden Rate unabhängig, so dass ein Kunde unterschreibt eine Drei-Jahres-Vertrag zahlbar bei der Unterzeichnung sah eine monatliche Zahl und eine separate Gesamtsumme darunter. Wo das Zitat sagt, der Begriff ist im Voraus fällig, dass insgesamt ist jetzt die Preis auf der Karte und die Sub-Zeien, die es neu zu bekräftigen sind fallen gelassen. Liest eine fehlende Basis als pro Periode, so dass sich nichts ändert, bis die API die Feld.

  29. · kamo-internal

    Führen Sie mit der gesamten Laufzeit, wenn die Rechnung im Voraus fällig ist

    Eine Org, die die engagierte Laufzeit bei der Unterzeichnung berechnet sah die monatliche Rate auf seiner eigene Drei-Jahres-Zitate. Das Zitat trägt nun die Grundlage, unter der es erhoben wurde, und die Karte, die Live-Schiene und die Druckvorschau jede führen mit der Figur, die Basis fragt tatsächlich nach dem gesamten Begriff, gekennzeichnet 'voraus vor', oder eine Periode wie vorher. Die Wahl ist ein exportierter Helfer, HeadlineBetrag, anstatt die gleiche ternary in drei JSX-Blöcken: Diese Flächen dürfen sich nicht darüber einigen können Zahl ist der Preis. Das monatliche Äquivalent bleibt so oder so daneben, weil es ist die einzige Zahl, auf der eine Drei-Jahres-und eine jährliche Option zu vergleichen. Liest undefiniert als die pro Periode Standard, so dass dies genau so macht, wie es tut heute, bis SecurityService das Feld versendet.

  30. · InitializerService

    Commerce quotes.billing basis

    Der pro-Quote-Schnappschuss der Org-ZitkonversionBilling Wahl, also ein Zitat behält die Bedingungen, unter denen ein Administrator die Einstellung geändert hat. Nullable - jede vorhandene Zeile ist älter als sie, und null löst auf FIRST_PERIOD_PLUS_SETUP, das Verhalten, unter dem diese Zitate gesendet wurden. @Order(0) aus dem üblichen Grund: einmal Shared-lib Karten die Spalte, jeder Läufer, der loads Quote emittiert es in seinem SELECT, und eine spät angeordnete Migration läuft nie.

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