Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

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

  1. · kamo-shared-library

    Dodaj klawisze VENDOR_CALLBACK_RESOLVED typu zdarzenia (0.6a ingress)

  2. · kamo-shared-library

    Podłoże rejestru żytnifikatora — 42 id id (kałka kluczowy 0,5, plasterek 1)

    Nowy pkg com.kamo.zshared.mlos.identity (klucz routingu z hali przylegającej): LoanIdentifierType (42 pierwszorzędne identyfikatory, z których każdy nosi Kardynalność + Własność; ?Enumerowane STRING; singleActiveTypes () pochodzące z metadanych) + + podmiot rezydenta Pożyczkobiornika (BaseuEnud;Zamknięta PożyczkaFile; write-once - Nastartować obrońca rzucić ogłówek wartości / typ / niestosowanie/niekotypu, tylko dozwolone odwrócenie statusu; "PrePersist normalizes emitr / podtyp + wymuszanie INNA>cuscomtype) + rezydentury rezydenta identyfikacyjne (wyszukiwarki resolnerskie; tylko o wartości to search-aid-only). Zweryfikowane lokalnie: mvn install BUILD SUCCESS, 49 MLOS test testowy (w tym jednoaktywny test drift-guard zapewniający zestaw enum pasuje do indeksu indeksu częściowego indeksu BDL KamoInitializer). KamoInitializer DDL: skanowanie + 3 częściowo-niepowłęcze indeksy + INNE CHECK. RESOLVER + webhook ingress - pierwszy nowy mikrousługa MLOSIdentifierService (odroczona).

  3. · kamo-shared-library

    Koło zamachowe StewardFeedback — przechwytywanie każdego werdyktu stewarda (katernat 0.11)

    Nowy pkg - tylko dodajny rzędy naziemnej StewardFeedback (FK ai_decision.uid; werdykt CONFIRM/OVERRIDE/MODIFY; Reg-B-aligned uzasadniajCode; skorygowanyValue jsonb; jestTestLoan stemplowany w czasie pisania napisz o 12 euro,4; ?PreUpdate WORMTrzy klucze fazy-0 w jednym tx (spinowy osąd AiDecision + enqueues mlos.steward.feedback.recorded przez outbox event-backbone + stempluje partycję testową). Rejestrator ogrodzone mlos.governance.enabled (default off -> zero blast promieni). KamoInitializer DDL: skanowanie + indeksy steward_feedback + FK do ai_decision.

  4. · kamo-shared-library

    Niezmienny AiDecision WORM ledger + dwuścienny DecisionGate (klawiszy 0, 0,3, plaster 1)

    Nowy pkg com.kamo.zshared.mlos.decision (greenfield decision kręgosłup, nigdy nie edytuje donotmodify): bez dodatku tylko AiDecision (WYRM przez ’PreUpdate guard; loanFileId to Long FK to LoanFile.uid perc01/gotchas, NOT UID; supersesy via supersEtui + AiDecisionRepository (zidentyfikowani zlokalizatorzy). DecisionGate - biblioteka dwuścienna w procesie (blizna prawna ABSOLUTE/nie-tunable; ściana zaufania do przestrajania; nietunable platformowa pod) – konfiskata . . . . . . . . . . . . . DEFERRED to intuencje: DecyzjaNieruchomości (FKs w katalogu Phase 2)), StewardTask/OrchestrationState, rejestr prawny, HMDA-firewall CHECK, ModelVersion FK. Dodano KamoInitializer DDL (index: (index indeksai_decision + oznaczony wyzwalacz DB WORM needing CRDB v24.x).

  5. · kamo-shared-library

    Brama najemcy do tylnego kręgosłupa zdarzenia (Slice 3)

    Plan działania 0.10: (szwypadek subskrypcji dla klientów) + ToTenant (podmiot,orgId) pasujący do symboli, który odzwierciedla filtrowanie NATS; forEvent odrzuca teraz niepozytywny orgId (bez zdarzeń bez najemcy). MlosTenantIsolationTest to wykonalna bramka cross-tente (w tym token-boundary: org z 12 meczami lub g 123). MlosDeadLetterRepository zyskuje odkrywcę stewarda org-scoped (repo-layer org-sward) obok klatki poprzecznej z operatorem. Zakres per-najemca na chmielu X-Internal-Auth jest szeroki i odroczony do auth keystone; test izolacji na żywo jest zgodny z pierwszym betonowym konsumentem.

  6. · kamo-shared-library

    Poniżalność po stronie konsumenta, DLQ + powtórka stewarda (Slice 2)

    Dodaje rdzeń niezawodności, w który wtyka się każdy konsument MLOS: PrzetwórzaWydawanie dedup (unikalna nazwa konsumenta+event_id) + MlosDeadLetter DLQ + MlosDeadLetterStatus; IdempotentEventProcessor (INSERT-or-skip dedup w tx uchwytu, więc awaria cofa się znacznika; dead-lettDeadLetterReplayer (re-enqueuues list DEAD przez skrzynkę outbox jako NEW eventId z linią(-d) -> bez msg_id-unique/dedup-window kolizja, znaki REPLAYED). MlosEventEnvelope zyskuje Jacksonized za deserylizację w obie strony. Nowe - Komponenty dzielą się opt-in mlos.outbox.enabled; repos znajduje się w już zasmonkowanym opakowaniu. Live AbstractMlosDurableConsumer (subskrypcja NASTS) odroczona do pierwszego konkretnego konsumenta.

  7. · kamolos

    Przyjęcie pola transakcyjnej MLOS (ścieżka producentowa)

    Umożliwia backbone zdarzenia Phase-0 w KamoLOS: dodaje com.kamo.z.shared.mlos.event do skanowania "EnableJpaRepositories", mlos.- Id. Schemat (mlos_outbox_event + indexes) jest stosowany oddzielnie przez użytkownika KamoInitializer.

  8. · kamo-shared-library

    Koło zdarzeń transakcyjnej (Fase-0 keystone B)

    Ścieżka producenta klasy pieniężnej/zgodności w NOWE rodzeństwo pkg (nigdy nie edytuj kodowanie): MlosEventEnvelope DTO + MlosOutboxEvent out by jednostka/repo + OutboxWriter (występowanie za dwuosiowe) + OutboxRelay (AFTER_COMMIT hot-path + ?Scheduled sweeper, publikuje z Nats-M)Z okienkiem dedup NatsConfig brakuje). Ponowne wykorzystanie zablokowanej fasoli NATS Connection/JetStream. Opt-in via mlos.outbox.enabled (default off), więc usługi nieprzyjmowania są nienaruszone. Dokładnie na raz efekt - transakcyjne pudełko + JetStream Nats-Msg-Id dedup. Dedup konsumencki/DLQ + CI-izolacja najemców to Slice 2/3.

  9. · kamo-internal

    Pokaż warstwy danych na etapie włącznie włącznie Maska oceaniczna EDT4 + oznaczenia TRF2

    Karty sceniczne worldgen na tablicę sceniczną wymieniają teraz warstwy danych z każdej sceny z płytek, akcentowania nowo dożytych: maski oceanu EDT4 (złącze morskie) pod hydro, Oznaczenia pasa ruchu TRF2 + runtime tereny pod transportem. Czysty format / dane Etykiety (STAGE_LAYERS w types.ts) — brak nowych ciągów i18n. Stale/gatunk już się liczy Powierzchnia automatycznie, gdy pochodzenie uderza w EDT3-EDT4 / TRF1-TRF2.

  10. · kamo-internal

    Nieświeżość płytek powierzchni + ukierunkowany "Regeneruj N" na stronie

    Mieszówka agenta ma teraz nośność na przesunięcie (do aktualna / nieaktualna / brakowa); Odłóż go przez API + SSE na stronie: - Zakładka usług pokazuje linię świeżości na usługę płytek, a przycisk Start staje się "Regenerate N" (nieżyjący + brak) w przypadku pracy docelowej lub "Do tej pory". - Wskazówka z płytką uzupełniającą pokazuje, ile płytek wymaga aktualizacji. Start jest już napędzany przez pochodzenie na hostze, więc przycisk uruchamia cel Regeneracja dokładnie tych nieświeżych / zaginionych komórek.

  11. · kamo-internal

    Światowa strona administratora generacji wszechświata

    Dodaje /settings/platforma/światło wszechświatowe pod administracją Platformy — własna platforma Karta + trzy pod-taby (Przegląd, Usługi, Działania) — aby rozpocząć i monitorować Porarzenie danych świata KamoUniverse na żywo. Backend (Next API, platforma-admin gateed przez sesję, tak samo jak Straż graniczna klienta): - aplikacja/lib/worldgenNats.ts: jedno długotrwałe połączenie NATS + abonent statusu Ten całuje najnowszy status na etapie + migawka (w pamięci + Redis) i Powtórne informacje o autobusie w procesie dla SSE. Publikuje polecenia startowe. - aplikacja/api/uniwersalny/usługi GET aktualne stan każdego etapu (status + tile Liczby + lockHeld). - POST a start command do agenta k3m1. - aplikacja/api/uniwersalny/stream Transmisja SSE z wydarzeń o stanie/snapshot na żywo. Frontend (MUI + next-intl, mirrors strona konfiguracji): - useWorldgen: jeden współdzielony strumień SSE (auto-reconnect) + start() dla wszystkich kart. - Przegląd: agent/bata/dopełnianie/płytki płytek i kolejka na żywo. - Usługi: bogata karta na scenariusz — rola + to, co osiąga, stan na żywo Odznaka, zwiń / całkowity pasek postępu, ostatnie wydarzenie i przycisk Start (wyłączone podczas pracy Każda partia trzyma globalny zamek). - Działania: uruchomić cały rurociąg lub indywidualny etap (z potwierdzeniem), plus odświeżenie migawki. Okablowanie: NATS_URL dodany do mapy konfiguracji; dodano zależność klienta. K3m1 Agent + skręt telemetria na żywo w wszechświatach-ziemiach; ciągi w tłumaczeniu Słownik. tsc czyść na wszystkie nowe pliki.

  12. · kamo-shared-library

    Dodaj niewrażliwe na przypadek findByEmailEmailE ignoreCase

    E-maile są przechowywane w niespójnym przypadku (np. Sage-KamoCRM.com) i Równość łańcuchowa CockroachDB jest wrażliwa na przypadek, więc znajdźByEmailEmail misses W sprawie sama. Potrzebny do odzyskiwania hasła lookup e-mail.

  13. · EmailService

    Samonagotne konta skrzynek pocztowych z aplikacji DB (odzyskiwanie drytu)

    Aplikacja DB jest źródłem prawdy, dla której powinny istnieć skrzynki pocztowe; KamoMail Konta na żywo w serwerach poczty virtual_users. Jeśli poczta DB straci dane, Skrzynki pocztowe zaginęły w dostawcy, podczas gdy rekordy aplikacji pozostają. - MailboxSelfHealService: na starcie + codziennie, re-provision dowolnej aplikacji KAMO_MAIL Brak skrzynki pocztowej w virtual_users (świeże losowe hasło zarządzane aplikacjami). - syncMailboxes (ustawienia "Synchroniz" działanie) teraz również popycha aplikację->dostawcę dla Pominą brakującą skrzynkę pocztową, a nie tylko dostawca importu-> aplikację.

  14. · kamo-internal

    Kompozytorko/wysłać w imieniu przełączanej skrzynki pocztowej członkowzanej

    - Właściciel skrzynki pocztowej wątkówId z przełącznika przez activeMailbox do Kontekst komponowania (wydarzenia + URL param). - Nowa wiadomość / odpowiedź / forward open compose dla wybranej skrzynki pocztowej dla wybranego członka: Z list rozwijanych, które skrzynki pocztowe członków + aliasy, podpisy spersonalizowane Na nie i wysyłaj / wraków uwierzytelnij jako ich skrzynkę pocztową (mailboxId). - Komponuj się bez zmian, gdy żadna skrzynka poczta nie jest aktywna.

  15. · kamo-internal

    Przenieś w sesji per-tabStorage zamiast udostępnionego pliku cookie

    Id session żył w przeglądarce plików cookie udostępniany we wszystkich zakładkach Pochodzenie, więc druga zakładka (poduszina) nie mogła zorganizować własnej sesji. Przesuń przewoźnika do sessionStorage (na-tab): - sessionKlient: pomocnicy tokenów + globalne opakowanie, które dołącza Id jako X-a-Token na połączeniach z samym pochodzeniem /api, plus jednorazowy Cookies-sessionStorage Migracja. Zainstalowany przez SessionBootstrap w układzie. - - header-first (cookie fallback) używany przez generate-otk, sesja/info, sesja/rozdawnia, wyloguj, meet/invite-email. - generateOTK + getKsemIdOdZPrognozaRequest preferuj X-a--Token niż plik cookie. - /api/validate nie ustawia już pliku cookie; zwraca identyfikator id /validate page przechowuje ją w sesji tej zakładkiStorage. - useUserInfo + wszystkie haczyki WebSocket odczytują identyfikator z sessionStorage. - wylogowanie przechwytuje token przed rozliczeniu magazynu, tak aby sesja Redis Nadal jest unieważniona. Podszywa się teraz dopiero otwiera /validate?otk... w nowej karcie (ta sama ścieżka jako login: sesja Redis stworzona po stronie serwera, OTK przekazana /validate; Nowa karta dostaje własną sesję, a zakładka administratora jest nietknięta. Usuwanie Przestarzałe przechowywanie/ImpersonationBanner maszyny typu return-to-admin. Orgs pozostaje oddzielony domeną – bez zmian.

  16. · kamo-internal

    Przycisk podszywania się pod nagłówkiem ustawień członu

    Dodaje najwyższej prawą prawą akcję "Impersonate" na /settings/member/[id], widoczny Tylko wtedy, gdy podpisane sesja niesie za sobą tryb godowy (getsGod) i cel Nie jest samo/nowy. Nazywa nowy /api/bezpieczeństwo/impersone, a następnie zamienia Plik cookie za pośrednictwem ścieżki OTK (/validate?otk...&keepPrev-1) w nowej karcie. keepPrev zachowuje własną sesję administratora w Redis; globalna ImpersonationBanner kwas administratora i oferuje jedno kliknięcie 'Powrót Na moje konto" (tj-twoowe ciasteczka nie mogą odbylić dwóch sesji na żywo na raz). SettingsView zyskuje opcjonalny gniazdo-nagłowoAction.

  17. · SecurityService

    Punkt końcowy podszywania się pod członka trybu bogotowego

    POST /api/security/personate miętuje świeżą + OTK dla arbitrów Członek obecnego orgi dzwoniącego, zamknięty na sesji rozmówcy Tryb Boga (GD). Rejestruje członka admin id jako SUDO_MEMBER_ID dla Audyt. Ta sama budowa sesji w kształcie logowania, co EnterAsController, ale ten sam I bógowany raczej niż krzyż.

  18. · SecurityService

    Zwraca orgName + język w /user-info

    Rozwiązywać nazwę wyświetlania orgi i wybrany język członka (ISO-639-1 Kod) z DB, więc kamo-universe może pokazać org + flagę językową każdego gracza Na ich tabliczce. Rozwiązana na żywo (nie z sesji), więc istniejące sesje Odbierz je natychmiast.

  19. · kamo-internal

    Karta startowa KamoUniverse + ikona nav (gated ACCESS_KAMOWORLD, OTK przekierowanie do gry.)

  20. · kamo-shared-library

    Dodaj ACCESS_KAMOWORLD po prawej stronie (145, GAMES) dla dostępu KamoUniverse

  21. · KlusterServices

    Rejestr obrazów K1m1 zastępujący emerytowany k0m1:5000 (ktysiężne referencje)

  22. · KlusterServices

    Przestrzeń nazw Kamo-universe + intaż +valkey, Kopie zapasowe CockroachDB, stos obserwacji

    - wszechświat/: przestrzeń nazw + ResourceQuota, valkey-universe (AOF, hostPath k1m1), CockroachDB Backup CronJob, skrypt bootstrap operatora bootstrap - monitoring/: przypięte wartości steru ? Skrypt instaluj, grafana. Trasa, pulpit nawigacyjny wszechświata + reguły alarmowe - CI: zastosować wszechświatową przestrzeń nazw + klawisz w fazie k1m1 (Pakiet NASUS: 43030d6 już ponownie zadomowił k3m1 z izolacją konta)

  23. · KlusterServices

    Dodaj k3m1 węzeł + migrate klasat peering do adresów IP LAN

    - stanowy: reklamuj/dołączenie powyżej 192.168.4.x (k1m1x2, k3m1 x .36); WireGuard spadł (k3m1 wg0 10.8.0.1 zderzył się z reklamą IP k0m1). - init-job + CI kubeconfig punkty końcowe przeniesione do adresów IP sieci LAN. - CI: dodaj sekcję wdrożeń K3M1 CockroachDB (potrzeby K3M1_KUBECONFIG_B64 tajne).

  24. · kamo-login

    Trasa płatne zapisy do kasy po zalogowaniu

    Po udanym auth (manualne lub autologiczne), spożywaj domenę apex-domain ciasteczka sp_checkout_plan pozostawione przez kamo-rejestr i przekierować kupującego na Marka /subscribe?plan? page (Stripe checkout) zamiast domyślnej aplikacji Miejsce docelowe. One-shot: plik cookie wyczyszczony na czytany.

  25. · kamo-register

    Noś płatne?plan od rejestracji w kasie

    Kiedy rejestracja członków pochodzi z płatnej cenowej CTA (?plan-pro|business), Upuść apex-domain ciasteczko sp_checkout_plan po zakończeniu. kamo-login zużywa po tym, jak użytkownik uwierzytelni się i przetacza je do /subscribe -> Stripe, Zachowanie rejestru -> weryfikacji -> chmielu logowania.

  26. · kamo-shared-library

    Szablony sygnatariuszy e-sygnatariuszy (weryfikacja + zaproszenie)

    Dodaj dwa kanoniczne szablony wiadomości e-mail o szerokości całej platformy rozstawione leniwie na org: - esign.sign.signer_verification (step-up OTP: ?code, ?name) - esign.sign.signer_invite (zaproszenie: „nazwa”, „sender”, „message”, „link”) Przekaż je w listę kluczy CanonicalTemplateLoader + zasoby EmailService.seedForOrg odbiera je w pierwszym send. Umożliwia live OTP/invite Dostawa dla przepływu e-sygnałów (była najlepszym wysiłkiem bez szablonów).

  27. · BillingService

    E-sign użytkowania pomiar + samoobsługa dla konsumentów

    4 pomiary: - EsignMeterSubmissionService (ślicany codziennie): agregaty API-oryginalne EsignUsageRecords na org/p. + okres; pierwsze 40/okres wliczone w cenę, reszta przedłożona Jak stripe MeterWydarzenia. Idempotent przez raportToStripe + rejestrowany identyfikator użycia jako Identyfikator MeterEvent (Stripe-side dedupe). Rozwiązuje nazwę zdarzenia licznika Z rzeczywistej ceny Addonu Stripe - więc Dopasowuje dowolny licznik, którego należy do niego cena (naprawia niedopasowanie do nazewnictwa). 5 EUR za kasa konsumencka: - ConsumerCheckoutService: Stripe Checkout Session (mode-subscription) przeciwko Cena planu produktu (+ linia przekroczenia dla firmy); rejestruje KonkonyWpis (źródło PAID) + SubskrypcjaMemberote + KontoLicense na Ukończenie i unieważnienie uprawnień. - ConsumerSessionResolver: uwierzytelnia kupującego własnym plikiem cookie Redis (nigdy nagłówek org z zestawem klienta). - ConsumerCheckoutController POST - StripeWebhookSUnia teraz obsługuje checkout.session. Dodatek / wstawaj do momentu subskrypcji przez konsumenta; opłata na żywo wymaga prawdziwej karty.

  28. · kamo-internal

    Zakres kluczy API_SIGNATURE (E-Signature API)

    Dodaj zakres interfejsu API E-Signature do menedżera klucza API org, aby personel mógł przyznać Business orgs programmatic e-sign dostęp. Stosowanie poza wliczone w cenę miesięczny Nadmuchni się na podpis.

  29. · APIService

    Publiczna brama e-sygnazna API (zakres API_SIGNATURE)

    Add /api/public/esign/' do PublicApiController: waliduje klucz API org, Wymaga zakresu API_SIGNATURE, limitów stawek i przekazuje do ESigService's Wewnętrzne API kopertowe (/api/esig/wewnętrzny/-a) z X-Internal-Auth + X-Org-Id. Odzwierciedla subskrypcję-katalogową keystu.

  30. · ESigService

    Wewnętrzne programmatic kopert API (origin-API) dla biznesu

    - EsignInternalController (/api/esig/internal/'): X-Internal-Auth + X-Org-Id authed, wywołany przez APIService po poprawnieniu klucza API_SIGNATURE; Powtórnie wykorzystanie EsignEnvelopeService, tagi koperty EsignUsageOrigin.API - - zyskuje przeciążenie pochodzenia (niezwiązów ludzkich) - Podpisywanie ścieżki teraz metrów po pochodzeniu koperty (API -> overage, MANUAL nigdy) - OTKAuthFilter bypasses /api/esig/internal (internal-secret athed, a nie OTK)

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