Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

Każde ulepszenie platformy, jak to wysyła.

  1. · SecurityService

    Wyciąg RoleRightsSyncSyService i dodaj punkty końcowe praw syndobowych

    - RoleRightsSyncSnasSynService: centralizacja logiki synchronizacji praw ról dla obu OrgRole tabele; startup i na żądanie - DataLoader: delegaci do RoleRightsSyncService.syncAll() w celu uruchomienia - SecurityRoleController: POST /sync-rights triggers triggers without restart

  2. · kamo-shared-library

    Uczyń prawa do ról DTO enum i dodaj synchronizację praw do modeli zabezpieczeń

    - SecurityRoleDTO.fromOrgRole(): wylicz wszystkie wartości RoleRightType z DB Ustawienia jako lookup — nowe prawa pojawiają się automatycznie z NOT_SPECIFIED - - to samo podejście oparte na enum W przypadku domyślnych ról modelu bezpieczeństwa - OrgRoleRight.type: dodaj wyraźną adnotację (EnumType.ORDINAL) - dodaj insert IfAbsent natywny Zapytanie odstartowa i synchronizacja na żądanie

  3. · kamo-internal

    Zezwalaj na wielokrotne obsługę okien biletów z deduplikacją ticketId

  4. · kamo-internal

    Dodaj chip w rodzaju członkostwa i promuj / zemotuj do karty statusu członkostwa, usuń pole timeout sesji

  5. · SecurityService

    Dodaj PATCH / punkt końcowy typu członkostwa dla promocji / emocji członków

  6. · kamo-shared-library

    Dodaj natywną aktualizacjęMemberType i upewnij się, że zapytaniaTeamMberRow do MemberRepository

  7. · kamo-shared-library

    Dodaj ALLOW_PROMOTING_MEMBERS w prawo (id 132)

  8. · kamo-internal

    Promowanie POS i ESIG od PLANNING do etapu COMPLETED

  9. · kamo-shared-library

    Promowanie POS i ESIG od PLANNING do etapu COMPLETED

  10. · kamo-internal

    Pokaż miasto i podpodział w bilecie odwiedzającym geo-rzęd

    Wyświetlanie jako „Miało, region, kraj (IP)” — nulls są filtrowane tak, aby były filtrowane Degraduje się z wdziękiem, gdy dostępne są tylko dane krajowe

  11. · MediaService

    Expose miasto i podział w geo-szukajcie dla odwiedzających

    - Rozszerz rekord GeoResult z polami miasta i podziału - Przełącz SupportTicketService.toDTO() do użycia GeoLookupService (poziom IP Lookup) zamiast geolokalizacji tylko dla krajuRepozytorium, tak miasto i miasto Podział jest zamieszkany z pasujących bloków GeoLite

  12. · kamo-shared-library

    Dodaj odwiedzającegoCity i odwiedzającegoSubdivision do SupportTicketDTO

  13. · kamo-internal

    Dodaj kartę Params URL do strony /konkonto, aby uzyskać głębokie połączenie i odświeżanie trwałości

    Państwo Tab jest teraz zsynchronizowane z - więc linki Na określone karty praca i prawidłowa karta pozostają zaznaczone na odświeżaniu strony.

  14. · kamo-internal

    Pokaż flagę dla odwiedzających, kraj i adres IP w nagłówku biletów

    - Dodaj visitorIpAddress, odwiedzającyCokrajod, odwiedzającyCountryName do SupportTicketDTO typu - Render flaga emoji + nazwa kraju + wiersz adresu IP w TicketHeader na publiczne bilety

  15. · kamo-shared-library

    Dodaj pola geograficzne odwiedzających do SupportTicketDTO

  16. · MediaService

    Pokaż flagę dla odwiedzających i lokalizację w nagłówku biletu wsparcia

    - Wstrzyknąć PublicChatVisitorRepository i GeoLiteLocationRepository do SupportTicketService - Populate visitorIpAddress, odwiedzającyCokrad, odwiedzającyCountryName w toDTO() za pośrednictwem geo lookup - GeoLookupService już zaludnia gość.countryCode w tworzeniu sesji

  17. · kamo-marketing

    Wymień natywny WebSocket STOMP/SockJS w LiveSupportPanel

    - Dodaj pakiety .stomp/stompjs i sockjs-klient - Połącz się z mediami.-domain/ws/public-chat przez SockJS+STOMP zamiast Surowy WebSocket do api.-domain, który był złym hostem i niewłaściwym protokołem - Po połączeniu STOMP zapisz się na /topic/chat/session/'guid' i Powiadom backend via /app/chat/subscribe, aby aktywować przekaźnik NATS JetStream - Odpowiedzi agentów teraz flow: MediaController -> NATS -> ChatWebSocketController -> Broker STOMP -> LiveSupportPanel gościa w czasie rzeczywistym

  18. · MediaService

    Naprawiać czat publiczny w czasie rzeczywistym przez STOMP / NASS

    - Usuń wewnętrzny wymóg z PublicChatWebSocketInterceptor Aby odwiedzający mogli połączyć się bezpośrednio przy użyciu tylko za pomocą sessionToken - Dołącz wyświetlacz odwiedzającegoName jako senderName w ChatMessageDto tak agent Widzi, kto wysyła je do wiadomości w TicketChat - Dołącz nadawcaName w wiadomości STOMPMap przesłany z subskrypcji NATS Tak więc zarówno agent, jak i odwiedzający widzą nazwy nadawcy w wiadomościach w czasie rzeczywistym

  19. · kamo-shared-library

    Dodaj nadawcęName do ChatMessageDto, aby uzyskać nazwy czatu

  20. · kamo-internal

    Auto-otwarty bilet wsparcia wyskakującego okienka na NEW_TICKET NATS

    Kiedy pojawi się nowy bilet wsparcia, backend wysyła teraz NEW_TICKET Komunikat STOMP oprócz PENDING_COUNT. SupportCountContext Obsługuje go, wysyłając narzędzie:otwienie, aby wyłaniało się okno czatu biletowego Automatycznie bez konieczności nawigowania do /support.

  21. · kamo-marketing

    Dodaj stronę potwierdzaną /kontaktową z animowanym bohaterem, osią czasu i CTA

    Zastąp komunikat sukcesu w linii w formularzu kontaktowym dedykowaną premią Strona z potwierdzeniem: animowany znak kontrolny SVG z pęknięciem cząstek, "What Happens Następne "dworód" karty CTA i karty CTA "While You Wait". Wszystkie 23 pliki locale Zaktualizowano o nowy kontakt Potwierdzone klucze i18n.

  22. · kamo-internal

    Dodaj sekcję ustawień org (strefa czasowa, wiek req, flagi zawartości, opis, alias); usuń przyciski Podgląd/AddDomain

  23. · kamo-internal

    Przeprojektuj LabelManager — edycja sekcji inline, naprawę uszkodzonego zapisu, domyślnie tylko do odczytu

    Przepisywanie etykietManager.tsx z wzorami odczytu/edit. Naprawia zepsutą oszczędność Przycisk (validateForm zablokował zapisy, ponieważ pola kontaktowe / firmy nigdy nie były wypełnione Z API). Usuwa globalny formularz przesłania, walidacjaForm, stan błędów, podglądMode i Rozproszone przyciski Zapisz. Każda sekcja ładuje teraz dane z API na górze, pokazuje czysto Domyślnie wiersze od read-only i ma przepływ edycji/zapisu/kanowania. Wszystkie siedem sekcji (Informacje o firmie, Branding, obrazy w tle, Informacje kontaktowe, etykiety niestandardowe, linki społecznościowe) Zapisuj niezależnie bez blokowania walidacji poprzek pola.

  24. · EmailService

    Dodaj walidator domeny KamoMail, aby zablokować międzystolec adresy e-mail

    Przedstawia komponent KamoMailDomainValidator, który sprawdza, w warstwie serwisowej, czy przesłana domena e-mail pasuje do zweryfikowanej domyślnej domeny org. Gdy KamoMail jest aktywnym dostawcą. Wstrzyknięte do MailboxProvisioningService, AliasService i SharedMailboxService — dzwonią przed jakimkolwiek zapisem. Zwraca 403 FORBIDDEN, jeśli domena nie pasuje.

  25. · kamo-internal

    Enforce Ograniczenie domeny KamoMail w skrzynce pocztowej, alias i tworzeniu wspólnej skrzynki pocztowej

    Gdy KamoMail jest dostawcą poczty e-mail, członkowie mogą tworzyć tylko skrzynki pocztowe, aliasy i udostępnione skrzynki pocztowe przy użyciu zweryfikowanej domyślnej domeny org. Egzekwowanie w trzech niezależnych warstwach: Frontend UI (dotyczynie prefix + zablokowana domena wprowadzane ze stanem wyłączonym, gdy nie ma domeny), Next.js proxy (równoległy dostawca + kontrola domeny bezpieczeństwa przed spedycją) i Java warstwa serwisowa.

  26. · kamo-marketing

    Przeczytaj logoFullExt z config.json dla dynamicznego rozszerzenia logo

  27. · kamo-register

    Odczytaj logoFullExt from config.json; fix site.webmanifest path to favicon subdirectory

  28. · kamo-login

    Przeczytaj logoFullExt z config.json dla dynamicznego rozszerzenia logo

  29. · kamo-internal

    Orgowanie tematów — WebSocket hak, panel rezerwowy, okablowanie LabelManager, wyzwalacz DNS, bg resize, kontekst ThemeConfig

  30. · MediaService

    Relay NATS theme provision progress to STOMP WebSocket

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