Changelog
Co nowego.
Każde ulepszenie platformy, jak to wysyła.
· KlusterServices
Wymagać klucza API i dopuścić tylko RAGService
· EmailService
Wysyłanie poczty wymaga miejsca, zarówno dla ludzi, jak i członków AI
Członek bez licencjonowanego miejsca jest odrzucony ze wspólnym ciałem 403 SEAT_REQUIRED Zanim cokolwiek zostanie wysłane: POST /api/email/send, współdzielona skrzynka pocztowa i cztery Trasy zapraszania do spotkania (wyślij, aktualizacji, anulowania, odpowiedzi). Zapisanie wydarzenia kalendarza prosi o miejsce tylko wtedy, gdy zaprasza swoich gości pocztą elektroniczną (sendInvites true, powiadomByEmail nie false): dialog kalendarza i KamoMobile wysyłają powiadomienieByEmail true na każdym zapisie, więc Wejście do kalendarza pozostaje otwarte dla wszystkich. Wewnętrzne trasy nigdy nie pytają. Wdrożenie pobiera również własny login NATS (nats-user-email), Redis Logowanie ACL (redis-auth) i tajemnica wewnętrzna KamoAI.
· MediaService
Spotkania, czaty grupowe, załączniki i połączenia wymagają miejsca, które je zawiera
· kamo-internal
Lista wybieracza czatu zawiera tylko modele, które może wybrać członek
Wybrańca odczytuje listę modeli administratora (403 bez MANAGE_AI_MODELS) i oferował dostawców, Który nigdy nie wybrał modelu. Teraz czyta GET /api/ai/modele/do wyboru przez nową trasę BFF, Usuwa opcje dostawcy, przenosi rozmowę z dostawcą z powrotem do Auto i utrzymuje Dostawca zamawia AIS wysyła (priorytet organizacji) zamiast ponownie sortować ją po imieniu.
· InitializerService
Migracja dla org _ alias _ domen, siadanie dwóch platform org
Tworzy * * * * * * * * * * * * * * * * i nasiona platformy org (is _ top _ level) z kurxiverse.com (domyślnie, przenoszenie do przodu starego hardcoded platform.mail.domain) i kontakt.kamocrm.com (dodatkowe, nie domyślny). Stosowane bezpośrednio do produkcji przed tym zobowiązaniem - ta usługa jest uruchamiany ręcznie w stosunku do DB, nie jest stosowany - tak więc tabela już istnieje; jest to źródło zapisu dla następnego świeżego środowiska lub ponownego uruchomienia. Kamo- Shared - biblioteka spadła do 1.6.2 dla * * * * * * * * * * * * * * * * * * * * * * * * * *
· EmailService
Przeczytaj alias-domu kompozytora domyślny z org_alias_domains
- użyta jedna zakodowana domena (platform.mail.domain, kamouniverse.com) jako syntetyczny send-as default, oraz Tylko dla platformy org - Odczyty OrgAliasDomainRepository zamiast: dowolny org może zarejestrować dowolną liczbę aliasów Domeny teraz, z których każda jest oferowana jako nadawa - jako tożsamość na głównym miejscu członka Skrzynka pocztowa, z domyślnym wierszem orgnia, który nadal jest przygotowywany jako Domyślnie kompozytora dokładnie tak, jak kamouniverse.com. Kamo-shared-library spadły do 1.6.2 za .
· kamo-shared-library
Dodaj org_alias_domains, formę per-org domeny poczty platformy
Generalizuje pojedynczą zakodowana platforma.mail.domain (kamouniverse.com, i Tylko dla platformy org) do stołu org może pomieścić dowolną liczbę wierszy Wszedł. EmailService's SendableMailboxService czyta go, aby oferował każdą domenę jako Wyślij tożsamość na głównej skrzynce pocztowej każdego członka, w tym samym mechanizmie, co wcześniej.
· SecurityService
Wyłącznik awaryjny AI może być odczytany przez każdego, kto ma rację.
· kamo-internal
Usługi platformy AI i AI Kill Switch prawa do platformy
· kamo-internal
Aplikacja AI Workforce i jej cztery prawa; strażnik aplikacji irrator ponownie czyta Javę
· AIService
Jeden stół trasy decyduje, kto może zadzwonić do każdej trasy AIService
· kamo-shared-library
Prywatny prefiks skrzynki odbiorczej dla nowych usług, a pracownik LOS webhook jest opt-in
· kamo-shared-library
Usługi logują się do Redis z nazwą użytkownika i hasłem, gdy zostanie podana
· kamo-shared-library
Jedna zasada siedzenia dla konsoli i każdej usługi, która ją wzmacnia
Resolver czyta członka z jego organizacji pobrane i otwiera nie transakcji własnych, więc miejsce jest podejmowane prawidłowo na gwincie z kontekst trwałości (AI WebSocket) i nieudany odczyt naprawdę nie jest otwarty zamiast rzucać nieoczekiwanym RollbackException obok połowu.
· KlusterServices
Zaloguj się do Redis jako mail_rspamd
rspamd odczytuje swoje hasło z tajnej poczty / rsup-redis-auth, włączone do Lokal.d/redis.conf. Kapsuła zyskuje fsGroup 11333: obraz działa jako 11333:11333 I root:root 0440 Secret plik to fatalne pozwolenie odrzucone przy obciążeniu konfiskaty.
· kamo-shared-library
Usługi platformy AI i prawa do wyłączania zabijają oraz kolumnę przełącznika
· KlusterServices
Użytkownicy ACL dla platformy, rspamd i operatorzy (domyślnie wciąż otwarte)
· kamo-shared-library
Oglądanie, nadzorowanie, zatwierdzanie i zarządzanie siłą roboczą AI (329-332)
· KlusterServices
Jeden login na obciążenie na koncie KAMO, obok kamo_svc
· kamo-shared-library
Aplikacja AI Workforce, poza granicami PHI i nigdy automatycznie
· kamo-internal
Wybierz sposób, w jaki publikowana aplikacja zadaje swoje pytania
"Publikuj tę aplikację" (Ustawienia → Cechy → CRM → Sprzedawcy & Produkty) teraz posiada trzy opcje obok czatu, każda para kart, które mówią, co oni średnia: - Typ: Normalny (kilka powiązanych pytań na krok) lub Squeeze (jedno pytanie na ekran, każdy wyjaśniony w prostych słowach). - Informacje kontaktowe: Start (nazwa, e-mail i telefon najpierw, zapisane w momencie, gdy są one wpisane, więc porzucona aplikacja jest nadal ołów) lub Last (pożyczka najpierw, dane kontaktowe tuż przed wysłaniem; nic do tego czasu nie zostało zapisane). - Pola: Pełna lub Podstawowa (tylko to, czego potrzebuje pierwsze połączenie). Podgląd na żywo obok nich zwraca pierwszy ekran, zamówienie sekcji (kontakt widocznie przesuwa się do końca) i co kredytobiorca spotka - ile pytań, i kiedy ołów zostanie uratowany. Okno dialogowe to 'md', więc oba pasują obok siebie. Wybór odbywa się na istniejącej aplikacji PUT... / (securityservice d345869), rund- trip przez listę sprzedawców, i prefill po ponownym otwarciu okna. Ponowne otwarcie strony na żywo mówi "Zapisz zmiany" / "Ustawienia aplikacji zapisane". zamiast publikować go ponownie, a jego ikona wiersza jest przesuwaczem ustawień niż bańka czatu, ponieważ otwiera więcej niż czat.
· kamo-apps
Wybór układu pożyczkodawcy — ściskaj, kontakt pierwszy lub ostatni, podstawowy
Wniosek o kredyt hipoteczny przedstawia się teraz, gdy produkt został opublikowany (Ustawienia > Funkcje > CRM > Publikuj tę aplikację): - Typ. - Tak. NORMAL to pięć pogrupowanych kroków, jak wcześniej. SQUEEZE zadaje jedno pytanie Na ekranie: brwi mówiącą, gdzie jesteś, pytanie na wyświetlaczu Twarz, prosta linia językowa na temat tego, co to znaczy i dlaczego jest pytana, a następnie jedna Odpowiedz. Pola dzielą ekran tylko wtedy, gdy są częścią jednej odpowiedzi (nazwa, Adres, agent i firma). Dotknięcie wyboru rusza po a Beat; klawiatura wybiera strzałkami i porusza się w trakcie Enter. Szyna wypełnia Pytanie po pytaniu. - Dane kontaktowe. START pyta, kto jest pożyczkobiorcą jako pierwszy, i oszczędza prowadzenie Chwila, w którym jest imię i e-mail – za niewidzialnym dowodem pracy, Ten sam przycisk wysyłania — a następnie dodaje każdą późniejszą odpowiedź na ten trop Token, a finał wysyła go dokończy, zamiast złożyć wniosek o sekundę. Strona Tak jest przy pytaniach kontaktowych. OSTATNIA przenosi kontakt do samego początku Zgoda i nic nie zostanie zapisane, dopóki formularz nie zostanie wysłany. - Pola. - Nie. BASIC zachowuje nazwę, e-mail, telefon, cel, sposób, w jaki dom będzie używany, Stan i ZIP, cena lub wartość, zaliczka lub saldo oraz kredyt. Help text zakłada, że czytelnik nic nie wie: zaliczka, ocena kredytowa, HOA, Podatki, ubezpieczenia, programy kredytowe i rodzaje nieruchomości są wyjaśnione Gdzie są pytani. Bez odpowiedzi tak/nie pytania pozostają nieważne (pominięty lub jeszcze nie) Osiągnięty) zamiast przyjazdu jako "nie". Również stałe, obaj żyją dzisiaj: akapit zgody nigdy nie został wymieniony pożyczkodawcy ("ty Wyraź swoją wyraźną pisemną zgodę na kontakt z Tobą” – funkcja przekazana jako Argument ICU nic nie dał), a pokwitowanie "Kopia jest w drodze". Upuścił adres w ten sam sposób. Przywództwo zgody nie zaczyna się już od Taśma "kilkuś". Proxies: (POST) i /progres, (Pentret/" (PUT), Udostępnianie X-For Obsługa z zgłoszeniem. Potrzebuje usługi zabezpieczenia d345869 dla układu i punktów końcowych postępu; Starszy backend formularz jest pogrupowany, pełny, kontaktowy formularz i pierwszy Wczesne zapisywanie 404 raz i zatrzymuje się.
· kamo-internal
Zakładka sesji przestaje nosić ikonę Guacamole
Zakładka sesji to dokument Guacamole, więc jego własny ’link rel’''icon" href""images/logo-64png"> Posiada zakładkę, a członek otwierający komputer swojej firmy obserwuje, że ikona zamienia się w Trzecia strona. Trzymanie zakładki na temat pochodzenia Kamo i kadrowanie sesji pozwoliłoby na Ikona organizacji; brama odpowiada na każdą trasę. Tak więc nie jest dostępny. Brama odpowiada za te dwa pliki. Kto Ikona jest oderwana od HOST, a czas, w którym jest to odpowiedź. Żądanie ikony jest zwykłym obrazem GET wydanym, gdy przeglądarka renderuje stronę trzecią Dokument. Nie ma sesji i żadnego tokena, więc gospodarz jest jedynym sygnałem. Na azie Własne komputery organizacji.-domaina, która jest kompletną odpowiedzią. Na wspólnej platformie host Nie jest: OTWIERDZAniu przez gospodarza nazywa się PLATFORM, jak już mówi layout.tsx — "co jest Nikogo nie jest lokatorem”. Tak więc host platformy celowo rozwiązuje się bez organizacji i otrzymuje niemarkowy glif. Każda organizacja, której domena nie jest jeszcze na żywo, dzieli się tym gospodarzem, i malowanie znaku KamoCRM Na karcie najemcy jest dokładnie ta, której istnieje biała etykieta, aby zapobiec - patrząc, Tutaj, nie do odróżnienia od pracy. Jest również nie do odróżnienia od poprawnej odpowiedzi na Członkowie KamoCRM, dlatego nie ma dla nich wyróżnienia. Nic nie musi Zmiana dla organizacji, aby uzyskać własną ikonę: w momencie, gdy jej komputery hostują, jest na żywo, Nazwiska go host i trasa rozwiązuje go. Glyph to zwykły zarys monitor w łupku, bez marki, w dwóch rozmiarach Guacamole klaruje. Ikona organizacji jest rozwiązywana alias -> config.json -> favicon set, tak samo łańcuch DynamicMetaLoader wykorzystuje, a każda awaria spada z powrotem do glify: favicon to Nie warto przesadzać z kartą, a niewłaściwa marka jest gorsza niż żadna marka. RORELes LIVES IN kamo, nie przyjmą najdłup w hostowanych komputerach. Traefik biegnie Z allowCrossNamespace i zezwolić naExternalNameServices zarówno w przypadku ich niewykonania fałszu, jak i Ingress tam nie może dotrzeć do kamowebinternal-service, a włączenie którejkolwiek z flag nie jest Zmiana w całym klastrze, aby osiągnąć jeden favicon. Certyfikat jest już wydawany w tej przestrzeni nazw, Tak więc trasa znajduje się obok usługi, do której przekazuje się, i CI stosuje ją kodem. TematPublicBase jest ekstrahowany, więc układ wiadra jest zapisywane raz: Theme.tsx is "Użyj klienta", a serwer potrzebuje takiego samego kształtu.
· kamo-internal
Atak na rynkach CRM, na stronie głównej oraz na profilach członków
- Rynki: "Arive" dołącza do zrzutu MLOS, a jego okno konfiguracji cztery haki Zapier (tylko pismo, zamaskowane), Arive → Adresy Kamo do wklej do Zaps, etap → mapa statusu, lead- tworzenie i przełączniki stage- push, przewodnik konfiguracji i dziennik aktywności połączenia. Konfiguracja jest teraz allow- list: dostawca nie ma nic do skonfigurowania longer otrzymuje włączony przycisk, który nic nie robi. - Strona główna: LosHeaderActions sprawia, że każde państwo dostawcy - MeridianLink bez zmian; Arive utworzyć → czekając na Arive (z zadowoleniem po 15 min, z potwierdzenie) → otwarte w Arive z jego etapie, konwertować na prowadzenie Arive, i chip sync-problem. Oczekiwany link ponownie czyta rynek config każdy 10 s zmienia się w "Open in Arive" bez przeładowania. - Profil: karta lender uwierzytelniania oszczędza ponownie (nie mógł od rekonstrukcja profilu, c20bac57). Każdy wiersz rynkowy edytuje samodzielnie: MeridianLink pobiera nazwę użytkownika + secret, Arive członka Arive logowanie e- mail. - MarketConfig.mlosProvider to związek usługodawców, a nie goły ciąg. Spec: Nie, nie, nie
· SecurityService
Wybór układu i zapisywanie danych kontaktowych
Okno z publikacją teraz wybiera, w jaki sposób aplikacja publiczna hipoteki sama się umieszcza na zewnątrz (kamo- Shared-library ac83bea1): NORMAL lub SQUEEZE, dane kontaktowe Pytania początkowe lub ostatnie, pełne lub podstawowe. - Put * * * * * * * * * * * * Układ, applicationContactStep and applicationFieldSet; brakujący zachowuje to, co jest przechowywane, więc przejście na emeryturę strona nigdy nie resetuje swój układ. Reakcja ich echa. - GET / public / loan- application / {p} odpowiada na układ {type, contactStep, fieldSet}, Zawsze załatwione. - POST * * * * * * * * * * * * * * * * * - tylko dla produktu START (404 w przeciwnym wypadku): * * * niepowodzenie zamknięte, złożenie budżetu IP, nazwa + e-mail wymagane. Tworzy ołów ze źródła "Aplikacja pożyczki online (niedokończone)" i odpowiedzi a 256- bit token utrzymywany w Redis na dzień, napisany wewnątrz transakcji tak Niepowodzenie Redis raczej odwraca prowadzenie niż gwarantuje duplikat. - Nie. dodaje odpowiedzi na ten trop przez updateLead (brak = niezmieniony). Token związany z produktem. - POST / public / loan- application / {p} z progressToken kończy ten ołów (źródło "Wniosek o pożyczkę online", odbiór jak wcześniej) zamiast składania drugi; nieznany lub przeterminowany token tworzy nowy trop jak wcześniej. - Własność wiodąca jest sprawdzana przed updateLead, a nie poprzez łapanie jej wyjątek: jest @ Transactional i oznaczałby żądanie rollback- only. Baza bazowa Ratchet: startProgress i SaveProgress dodawane z powodów, oraz byHost (dodany przez 81e0756 bez linii, która pozostawiła zapadkę na czerwono).
· kamo-shared-library
Wybór układu dla opublikowanego wniosku o pożyczkę
Trzy kolumny na LEAD _ VENDOR _ PRODUKTY, wybrane w oknie publikacji i przeczytane przez kamo-apps do złożenia publicznej formy hipoteki: - Application _ LAYOUT NORMAL (zgrupowane kroki) - Application _ CONTACT _ STEP START (kontakt pierwszy, zapisany jak idą) 124; LAST - Application _ field _ SET FULL BEL124; BASIC Struny proste, nie @ Enurated, więc żadne ograniczenie ddl- auto CHECK nie zamraża wartości Gotowe. Null odczytuje jako NORMAL / START / FULL, postać, jaka była. DTO nosi rozwiązane wartości; setProductApplication zyskuje przeciążenie biorąc opcje, z null członkowie oznaczający "zachować", a stary podpis delegatów do niego bez zmian. DDL został już zastosowany do klastra jako właściciel: ALTER TABLE public.lead _ seller _ products ADD COLUMN IF NOT EXISTS application _ layout varchar (16); ALTER TABLE public.lead _ seller _ products ADD COLUMN IF NOT EXISTS application _ contact _ step varchar (16); ALTER TABLE public.lead _ seller _ products ADD COLUMN IF NOT EXISTS application _ field _ set varchar (16);
· InitializerService
Kolumny i aktywność rejestrują mapy integracji Arive
(unikalne), pola łącza Arive na lead_los_links (rodzaj, GUID, deep link, etap, oczekujący od błędu, ostatni błąd) i los_sync_events. Wszystkie unieważniane, bez zasypu; ?Zamówienie(0), ponieważ podmioty Nakreśl je. Już złożył wniosek do Yugabyte ręcznie (jako właściciel, kamo) przed Popychanie biblioteki współdzielone; to utrzymuje świeże środowisko na kroku.
· APIService
Publiczny adres Zapier podaje wydarzenia Arive do
POST * * * * * * * * * * * * * * * * wyzwalacz > do przodu SecurityService 's AriveInboundController, który jest właścicielem czeku. W query string (zdarzenie) przecina hop, forma korpusu pojemnika już Parsed jest przebudowywany z jego parametrów, a status SecurityService jest przekazywany przez as- is: Zapier pokazuje zadanie non-2xx jako errored, gdzie jest Ludzie, którzy utrzymują Zap będą patrzeć. Nieuformowany żeton nigdy nie opuszcza krawędzi.
· SecurityService
Aryve poprzez Zapier - połączenie, przychodzące zdarzenia i działania przekierowujące
Rynek związany z Arive dostaje połączenie (cztery Zapier Łap Hooks dla create- loan, update- loan, update- lead i convert- lead, plus jeden przychodzący adres URL którego token jest przechowywany jako hasz) w Z dziennikiem aktywności, rotacja symbolu i "wysłanie próbki", aby Zapapier mógł nauczyć się każdego pola haka. Aryve 's wyzwalacze post do * * * * * * * * * * * * * * * * * * * JSON lub formuje ciała (domyślnie Zapier), uznane przez naszego crmReferenceId, Arive GUID, identyfikator wyświetlacza lub - dla ołowiu przekonwertowanego wewnątrz Arive - kredytobiorca e-mail. Uznane rekordy stosują Arive- wygrywa; nowy etap przenosi Kamo status poprzez mapę sceny połączenia; nieznane rekordy stają się wiodącymi przypisany do członka Arive nazwiska jako oficer, i nasz uid jest odesłany z powrotem. Każdy wynik jest zapisany i nic nie odpowiada na milczące 200. Strona główna tworzenia / otwartych wysyłek na rynku: Arive odpowiedzi 202 PENDING (potwierdza asynchronicznie) i dodaje / konwertuje. Mapa członków same do swojej poczty e-mail Arive (bez tajemnicy, bez NMLS, jeden członek na e-mail na rynek). LO- XML zastosować punkt końcowy teraz odmawia non-MeridianLink Dostawcy zamiast naklejać plaster all- null.
· kamo-internal
Rozpocznij sesję kodera w chmurze i pokaż ją w oknie
Która zawiera listę kas git na maszynie dev (ostatnio pracował w Model i wysiłek członka. Maszyna buduje polecenie, z CCR_FORCE_BUNDLE1, więc lokalna kasa jest przesyłana, a nie klonowana Z pilota GitHudu, którego nie mamy. Terminal, który otwiera, nosi „chmura: true” w swoich rekwizytach i tytuł Bar imaksymaska zakładka rysuj chmurę nad ikoną terminala (windowIcon). Rekwizyt zamiast węzł ikony, więc przetrwał przeładowanie; ponowne otwarcie z Lista terminala przenosi własny znak maszyny z powrotem do okna.

Twój wszechświat czeka.
Rozpocznij bezpłatnie w kilka minut.Dodaj produkty, kiedy tylko będziesz gotowy — bez migracji, bez nowych logowań.
Bezpłatne na zawsze — nie wymaga karty kredytowej