Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

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

  1. · SecurityService

    Dodaj AccountSettingsSAdministrator + Usługa dla telefonów + pytania bezpieczeństwa (SP3)

    Umożliwia zalogowanym użytkownikom ustawione/weryfikowanie telefonu i skonfigurowanie 3 pytań zabezpieczających. Trasy do /api/konto/o (sesyjne – za pośrednictwem KSESSION_DATA).

  2. · SecurityService

    Dodaj grę BulkTextSmsClient + EmailTemplateServiceClient + PasswordRecoveryController (SP3)

    Pełny przepływ odzyskiwania hasła: e-mail-link, SMS OTP, pytania bezpieczeństwa, fraza nasiona. Trasy do /api/recover/ (nieuwierzytelniona). Używa rurociągu poczty elektronicznej SP1 + VOIPService SMS.

  3. · VOIPService

    Dodaj do koszyka InternalAuthFilter + POST /api/bulktext/wysekcje dla SMS--do-usług (SP3)

  4. · kamo-shared-library

    Dodaj jednostki odzysku + repozys; bump do 1.3.0 (SP3)

    Dodaje PasswordResetToken, SmsOtp, RecoverySession, AccountVerificationCode Podmioty JPA z odpowiednimi repozytoriami dla przepływu odzyskiwania SP3.

  5. · kamo-shared-library

    Dodaj SecurityQuestionCatalog enum +/2 sq1/2/3 + seedPhraseHash do użytkownika (SP3)

  6. · InitializerService

    Dodaj tabelę odzyskiwania SP3 DDL + dodane do kolumny SchemaCleanupRunner

  7. · kamo-internal

    Podgląd trasy przez backendowy modal Browser (część SP2)

    EmailTemplateBrowser jest teraz właścicielem modalu Preview bezpośrednio, więc Menedżer nie musi już przechwytować żądań podglądu na poziomie wiersza i Przekierowanie do trybu edycji.

  8. · kamo-internal

    Wire EmailTemplateEdytuj do prawdziwego API

    Nawodnienia z templateApi.get, zapisy za pośrednictwem templateApi.update. Kategoria Rozpad jest oparty na API z inline-create afordance w kategorii. Zmienne Wybórnik czyta ze zmiennychKontrakty.ts (zadeklarowane umowy dla WYMAGANYCH Klucze szablonu; wspólny zestaw dla CUSTOM). WYMAGANE / SYSTEMowe Edycja wiersza Pokazuje odpowiedni baner ostrzegawczy. Przycisk podglądu otwiera Zaplecza podniecała EmailTelatePreview modal. Część SP2.

  9. · kamo-internal

    Wire EmailTemplateBrowser do prawdziwego API + dodaj kartę Domyślne domyślne

    Zastępuje 140 linii danych próbnych wywołaniami templateApi.list(). Warunkowe Piąta zakładka "System domyślnie" pojawia się tylko dla administratorów i renderów na najwyższym poziomie Od response.systemTemplates. Filtr kategorii omieszczony z kategoriiApi.list(). Wszystkie akcje wioślarzowe - trafione real Punkty końcowe backend. Błędy kierowane przez uchwytApiPoczta tost helper. Część SP2.

  10. · kamo-internal

    Dodaj e-mailTemplateDuplicateDialog (część SP2)

  11. · kamo-internal

    Dodaj e-mailTemplateCategory Modal (część SP2)

  12. · kamo-internal

    Dodaj e-mailProsmodalTemplatePreview

    Otwiera się na podgląd w akcję wozówką. Backend-rendered via templateApi.preview(); Wynik wyświetlany w piaskownicy iframe dla izolacji stylu. Pasuje do: Dokładna ścieżka kodu, której używasz, więc to, co podglądasz, jest tym, co otrzymują odbiorcy. Część SP2.

  13. · kamo-internal

    Dodaj templateApi + categoryApi + zmienne moduły klienta

    Wraps SP1's /api/email/plats/pl-es/a - i . Punkty końcowe z typed TypeScript helpers. zmienneKontrakty Lusterka SP1's TemplateKeys Javadoc więc zmienny numernik edytora zadeklarowany Kontrakty na wymagane szablony. Część SP2.

  14. · SecurityService

    Wire EmailTemplateSeedClient do -

    Thin RestTemplate klient, który POSTuje się do poczty e-mailService Po org + właściciel TeamMember Wytrwale. Retries dwa razy z backoffem; porażka rzuca OrgProvisioningException I cofa otoczenie ?Transactional, więc org + właściciel-TeamMember Oszczędność jest cofana (w specyfikacji SP1). Odzwierciedla istniejący TranslateServiceClient Wzór X-Internal-Auth. k8s/configmap.yaml dodaje: email.service.url (Wewnętrzny URL usługi EmailService) internal.auth.secret (luster o szerokości całego nagłówka X-Internal-Auth) Pom.xml bumps kamo-shared-library 1.1.0 x 1.2.0. Część SP1.

  15. · EmailService

    Dodaj e-mailTemplateCategory Kontroler REST punkty końcowe

    CRUD. - Usunięcie odpowiedzi obejmuje ReasededCount – liczba szablonów, które stały się niekategoryzowane jako Wynik usunięcia kategorii. Kontekst sesji odczytywany za pomocą tego samego - wzór jako inne kontrolery EmailService. Część SP1.

  16. · EmailService

    Dodaj e-mailTemplateController Punkty końcowe REST + DTO

    Ekspozycje /api/email/templates/? CRUD + podgląd + duplikat + reset-to-default + service-to-service /send + /seed-org/orgId. orgi najwyższego poziomu (bez rodzica) Zobacz także systemTemplates w odpowiedzi na listę. Usługa do obsługi Punkty końcowe są chronione przez istniejący InternalAuthFilter. Kontekst sesji (IDID, memberID) odczytany z atrybutu REQ_ATTR_SESSION OTKPreAuthFilter — To sam wzór już używany przez AliasController / MailboxController. Część SP1.

  17. · EmailService

    Dodaj InternalAuthFilter dla punktów końcowych usługi

    Walifikuje nagłówek X-Internal-Auth na /api/email/templates/send i /api/email/templates/seed-orgs/' ścieżki. Inne ścieżki omijają ten filtr (Sedaż sesji użytkownika auth je obsługuje). Tajemnica pochodzi z INTERNAL_AUTH_SECRET env var. Dodaj też transakcję.smp.user / transakcja.smtp.pass Konfiskatowe kikuby konsumowane przez EmailTemplateService — wszystkie trzy są pozyskiwane Z mapy konfigowej k8s w produkcji. Część SP1.

  18. · EmailService

    Dodaj e-mailTemplateCategoryService — CRUD for org-scoped kategorii

    Niewrażliwa na przypadek wymierna nazwa na org w warstwie usługowej (dopasuje częściowy unikalny indeks w DB). Delikatesy nulls category_id na dotkniętych szablonach przed usunięciem wiersza kategorii. Część SP1.

  19. · EmailService

    Dodaj e-mailTusterlateService — CRUD + wysyłaj + nasienie + reset-to-default

    Core orkiestrator dla transakcyjnej poczty e-mail. sendToUser rozwiązuje szablon, renderuje podmiot/ciało, wybiera domenę orgi z Organization.domains, i przekazuje wiadomości e-mail na adres e-mailSmtpService z NoReply-org.domain? jako adres. Zawiera nasiona ForOrg dla nowego zestawu lifecycle hak i resetToDefault, który Kopiuje zawartość wiersza SYSTEM w wierszu RJPOSAZYWEGO. Auth dla wysyłanych korzysta z transakcyjnej usługi SMTP w całym klastrze (transactional.smtp.user / transakcja.smtp.pass) zamiast na członka Dostawca-resolator — wysyłany transakcje nie mają działającego członka. Część SP1.

  20. · EmailService

    Dodać adres NoReplySenderService for 'NoReply'-domen'

    Pojedyncze źródło prawdy dla transakcyjnego-email z adresów. Akceptuje a Ciąg domeny, masa doznormalizuje go, zwraca "NoReply'domain>". Dzwonicze muszą rozwiązać domenę org (za pośrednictwem strony Organization.domains lookup lub Podobno) i przekaż to. Część SP1.

  21. · EmailService

    Dodaj TemplateRenderer dla substytucji .var

    Bezpaństwowy renderer oparty na regex. Brakujące vars zastępują pusty sznurek i emitowanie dziennika WARN z szablonemKey + orgId do przypisania. Brak ucieczki HTML W v1 — wartości są sterowane przez serwer. Część SP1.

  22. · InitializerService

    Dodaj e-mailTumplateSeedRunner dla SYSTEM + za-org seeding

    Działa na stronie "Zamek" (20) na startupie KamoInitializerService. Obciążenia kanoniczne Szablony z zasobów bibliotekowych kamo-wspólnych; upserts rzędy SYSTEM (nie clobber); zasypuje rzędy na gorg dla każdego orgi, który jeszcze ich nie ma. Idempotent - bezpieczny do ponownego uruchomienia w każdym startupie. Część SP1.

  23. · InitializerService

    Dodaj częściowe unikalne indeksy + CHECK ograniczenia dla email_templates

    Hibernate ddl-auto nie może generować częściowych unikalnych indeksów ani oliwonych-CHECK Ograniczenia. To zobowiązanie dodaje je za pośrednictwem istniejącego idempotent DDL biegacza Wzorzec po Hibernate tworzy tabele bazowe od nowych bytów. Część SP1.

  24. · kamo-shared-library

    CanonicalTemplateLoader + CanonicalTemplate rekord

    Odczytuje trzy wymagane szablony (WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION) z zasobów klasy patowych - Spożywane przez KamoInitializerService for SYSTEM-rzędowe siewu. Część SP1.

  25. · kamo-shared-library

    Dodaj kanoniczny HTML + JSON dla WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION

    Zawartość źródła prawdy dla wierszy SYSTEM. Załadowanie w KamoInitializerService Start firmy CanonicalTemplateLoader i UPSERTed do email_templates. Część SP1.

  26. · kamo-shared-library

    Dodaj EmailTemplate entity + repozytorium

    Przechowuje jeden wiersz SYSTEM na template_key (org_id NULL, is_system TRUE) plus Klon na org na template_key. Soft-reference org_id/category_id. DB- Przekierowane znaczniki czasu; JSONB dla body_blocks i tagów. Repozytorium zapewnia Odpylania lubg-scoped, przyrostu użycia atomowego i usuwanie kategorii Sprzątanie poprzez nullifyCategoryForOrg. Część SP1.

  27. · kamo-shared-library

    Dodaj EmailTemplateCategory entity + repozytorium

    Kategorie Org-scoped dla szablonów e-mail. Miękki BIGINT org_id (bez FK) Pasuje do istniejących wzorców. Niewrażliwa na przypadek nazwa niepowtarzalna per-org jest Wyegzekwowany za pomocą indeksu częściowego dodanego w KamoInitializerService. Część SP1.

  28. · kamo-shared-library

    Dodaj TemplateStatus enum + TemplateKluczowe stałe dla szablonów transakcyjnych

    Ogłasuje stany cyklu życia wymaganego/okiennego/ARCHIVED oraz trzech Wymagane klucze szablonu (WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION). Kontrakty zmienne dla każdego wymaganego szablonu udokumentowane jako Javadoc Klasa stałych; SP3 i SP4 dzwonią do nich. Część SP1.

  29. · InitializerService

    Seed KamoCRM z ALL_WORK_ELIGIBLE na świeżych instalacjach

    Pomocnik createOrg() stosuje ten pojedynczy argument do obu ageReqTypeMember i ageReqTypeTeamMember; Konwencja platformowa. Pary z KamoCRMAgeReqAktudateRunner, które obsługuje istniejące wdrożenia poprzez warunkowe UPDATE. Ukończyła SP5.

  30. · InitializerService

    Dodaj jednorazową prowadzkę do migracji KamoCRM agereq do ALL_WORK_ELIGIBLE

    Warunkowe idempotent UPDATE działa na startupie serwisowym; WHERE czeki klauzuli Oczekiwana stara wartość, więc powtórki są bezopowe. Błędy są rejestrowane i Połknięty – startup nie może blokować tej niekrytycznej migracji. Część SP5. Pary z Edycją DataLoader w następnym zatytułowaniu, które się zleca Świeże instalacje bezpośrednio siewają nową wartość.

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