Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

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

  1. · kamo-shared-library

    Zakres API_SIGNATURE api-key + EsignGenericEnvelope.origin

    Additive, bez wersji bump: - ApiKeyScope.API_SIGNATURE — bramy programowego e-podpisu API (Business) - EsignGenericEnvelope.origin (EsignUsageOrigin, nieważne) — rejestruje, czy Koperta została utworzona za pomocą API vs MANUAL, więc poprawnie wypełnione sygnaturami (API liczy się do przedawnienia w wysokości 0,20 USD; MANUAL nigdy tego nie robi). Kolumna dodana do prod Za pośrednictwem idempotent ALTER wcześniej.

  2. · kamo-internal

    Wyślij akcję do podpisu + stan koperty w edytorze dokumentów

    Dodaj przycisk "Wyślij do podpisu" do nagłówka edytora szablonów, który otwiera Okno dialogowe wysyłanie dokumentu do odbiorców i śledzenie statusu podpisywania, Nowy silnik ESigService /api/esig/envelopes. - Trasy proxy (OTK via generateOTK, lustrzane szablony proxy): POST/GET /api/esig/owelopes, GET [uid], POST [uid]/void, POST ) - SendForSignatureDialog: Wyślij kartę (rzędy odbiorców, wiadomość, wygaśnięcie) + Zakładka statusu (lista koperty per-template, chipy statusowe, pustka/resend) - Przycisk wyłączony, gdy szablon ma niezałatane zmiany - i18n przez next-intl

  3. · ESigService

    Generyczny silnik tworzenia/wyskończ (po stronie nadawcy)

    Dodaj OTK-authed /api/esig/envelopes API kamo-internal do wysłania Dokumenty do podpisu, ponowne wylewaniu tych samych podmiotów wspólnych i libów, które są publiczne Podpisywanie odczytów API — addytalna, org-agnostyczna zamiennik pożyczki Połączyć KamoLOS/EsignClient ścieżkę tworzenia. - POST create-and-send z szablonu: kompiluje EsignGenericEnvelope (AD_HOC), 1 EsignEnvelopePośrednik na sygnatariusza ze świeżym hashedowym tokenem dostępu, oraz Wysyła e-mail do każdego linku podpisu /s/env?/?recipient??t-token? (best-effort) - Lista wiązek GET (deski rozdzielcze kopert) + GET "uid" szczegóły ze statusami odbiorcy - POST ?uid?/void i ?uid?/recipients/?rid?/resend (obraca token) - Zaproś + delegatów, udostępnij EsignEmailClient.sendInvite; sygnatariusz-rociąg Linki poprawione do /s/-env?/'recipient'

  4. · ESigService

    Publiczne podpisywanie API silnika dla sign.sign.pink

    Wdrożenie /api/esig/public/e) Logowanie API do wywołania aplikacji kamo-signer, Przekształcenie sygnatariusza na żywo z preview-stub w działający backend. - walidacja (token odbiorcy -> sesja sygnatariusza), sesja, zgoda, stepup/start+weryfikuj (e-mail OTP), przesyłaj, dekoder, delegat, dokument - Sesje sygnatariusze Redis (X-Signer-Session), różniące się od personelu OTK - Dokumenty bajtami za pośrednictwem prawdziwego rurociągu Img/MinIO (template imgId -> Przekonwertowany-PDF ImgDat -> MinIO), a nie nigdy nieprogramowany /pi/imaging/blobs stub - PDFBox spłaszczenie: nakładkowe wartości pola + sygnowane obrazy przy projekcie Współrzędne, dodaj strony certyfikatu audytu E-SIGN/UETA; zapisany plik PDF W MinIO pod kopertą podpisanąBlobId z nagranym SHA-256 - rzędy audytu podpisów tylko dla Appendly EsignSignature + EsignPodziałek trwałości - Emits - Omiar pochodzenia API następuje w wersji ?3/x4 - Branding rozwiązany z Organizacji + OrgDomain za pierwsze malowanie - OTKAuthFilter bypasses /api/esig/public (tokenauthed, not staff OTK) Tylko additive; istniejący /api/esig/templates/' nietknięty.

  5. · kamo-internal

    Przełączanie produktów platformy w zakładce Organizacje

    Powierzenie oznaczenia produktu platformy, gdzie należy – Platforma Organizacje. Dodaje ogrodzone przełącznika na org (nie wyłączone dla org najwyższego poziomu), Dialog potwierdzający wyjaśnienie efektu uprawnienia, "Platformowy produkt" Chip, ostrzeżenie bezkatalogowe, optymistyczna aktualizacja i przekąska błędna. Wszystkie struny Przez next-intl.

  6. · BillingService

    Zarządzaj Organization.isPlatformProdukt z platformy ? Orgs

    PlatformAccountSummary ujawnia isPlatformProduct + hasSubscriptionMarket; nowy PUT (platforma-admin gated) Ustawia banderę i unieważnia uprawnienia członków orgi (ich produkt root, a tym samym funkcje, zmieniają się). Najwyższy poziom org jest korzeniem domniemanym i nie może To się przewiń.

  7. · kamo-shared-library

    Explicit Organization.isPlatformProdukt jako sygnał uprawnia do korzenia

    Zastąpienie pochodnego rynku SUBSCRIPTION" wyraźnym, Flaga własnościowa sygn. Produkt platformy (np. sign.pink) jest białą etykietą Produkt, który działa platforma i jest własnym korzeniem uprawnień; org klienta — Nawet jeden z własnych rynków SUBSCRIPTION, aby odsprzedawać swoim klientom – Nie i pozostaje uprawniony do platformy. EntitlementRootResolver czyta teraz Flaga (plus domniemany korzeń najwyższego poziomu) i nie zależy już od rynku Własność. Dodaje kolumna is_platform_product (BOOL DEFAULT FALSE) — wymaga KamoInitializer, aby utworzyć go przed usługami, które wybierają wdrożenie organizacji.

  8. · SecurityService

    Zakres uprawnień do roota produktu, a nie KamoCRM

    Uprawnienia USkutecznie rozwiązuje teraz root uprawnienia każdego członka poprzez UprawnienieRootResolver (niezależny przodek-właściciel rynku z lub siebie) zamiast Idąc do orgi na najwyższym poziomie. Podłoga Free-tier i flaga dostępu do produktów Wyników z tego korzenia, a isKamoCrmSubscription staje się subskrypcjąGrantsRootAccess (plan-org vs root, nigdy konto rozliczeniowe). Zyski z tytułu członkostwa ProduktRootOrgId, aby konsumenci mieli dostęp do właściwego produktu. BillingSetupSUtrasowy rynek + Darmowy plan z nowego produktu org Korzyść podczas utrzymywania Rachunku rozliczeniowego na najwyższym poziomie KamoCRM org - tj. Rodzic posiada faktury, dziecko może posiadać produkt / rynek. Zachowanie pozostaje niezmienione, dopóki org faktycznie nie będzie właścicielem własnego rynku (KamoCRM jest Dziś tylko właściciel rynku, więc każdy członek nadal się do niego determinuje).

  9. · kamo-shared-library

    Rozwiązy uprawnienia według org produktu, a nie platformy na najwyższym poziomie

    Wprowadzenie uprawnieńRootResolver: najbliższy przodek-właściciel rynku lub ja orgi (jego root produktu), spadając z powrotem na platformę na najwyższym poziomie. To jest Decouples „do czego masz prawo” (do właściciela rynku/planu) od „kto płaci” (kontowanie rozliczeniowe) i z orgi na najwyższym poziomie, więc produkt białej etykiety org, taki jak sign.pink, który jest właścicielem własnego rynku, staje się własnym korzeniem uprawnień. Teraz źródło wolnej linii podstawowej od org's Korzyt produktu (nie znajduje się FirstByIsTopLevelTrue) i rozwiązuje plany według Produkt/dekor orgnij zamiast orgcount billing-konto. Kompatybilny wstecznie: KamoCRM jest obecnie jedynym właścicielem rynku, więc każdy Istniejący org postanawia do niego dokładnie tak, jak wcześniej – zachowanie różni się tylko raz. Sub-tree posiada własny rynek. Additive; brak wersji bump.

  10. · kamo-shared-library

    Dodaj odbiorcę koperty, wartość pola, podmioty statusowe odbiorcy

    Sprawdź w modelu nadajnika w progresji: EsignEnvelopePoceńent (+repo), EsignFieldValue (+repo), EsignRecipientStatus i aktualizacja ESignSignerType. Additive; brak wersji bump.

  11. · kamo-shared-library

    Dodaj EsignUsageRecord dla do pomiaru użytkowania na podpis

    Nowy podmiot korzystający tylko z dodatków (zwolnik AiUsageRecord) emitowany przy podpisie Zakończenie. Tylko sygnatury pochodzące z API liczą się do miesięcznego planu Kontyngent + przekroczenie (sygn.pink Biznes: 40/mo wliczone w cenę, a następnie 0,20 USD); MANUAL Podpisy pojedynczego użytkownika są rejestrowane, ale nigdy nie rozliczane. billing_period (YYYY-MM) Obsługuje comiesięczną agregację; raport_to_stripe sprawia, że wysyłanie do użytku Stripe Idempotent. Tylko addytencja; bez wersji bump.

  12. · ConversionService

    Zachowaj proporcje, nigdy nie rozciągną logotypów innych niż okwadrat

    Ramy Favicon PNG/ICO zostały wyprodukowane z konserwa AspectRatio (fałszywie), rozciągając się dowolne logo nie-kwadratowe w zniekształconym kwadratowym. Center-fit logo na a Zamiast tego przezroczyste kwadratowe płótno, zachowując proporcje, więc favicons look Poprawa dla każdego przesłanego kształtu logo bez konieczności kwadratowego obrazu źródłowego.

  13. · KlusterServices

    Znak wstępny.pink + www.sign.pink w STATIC_DOMAINS

    sign.pink to nowa domena apex (konsument e-podpisy / białe etykiety Kamo lokator org). Wstępnie apex + www, więc a Let's Encrypt cert istnieje wcześniej Pierwszy ruch HTTPS; subdomeny .sign.pink dynamicznie otrzymują certyfikaty FQDN Po pierwszym uderzeniu, ten sam mechanizm, co .priceturbo.com.

  14. · kamo-signer-monorepo

    Nowa aplikacja do podpisywania monorepo + pierwsza aplikacja do podpisywania e-podpisu

    Turborepo + pnpm workspacesy monorepo obudowy wielokrotnego użytku e-sign Wydobywana z kamo-internal plus nowa, ultrapolizowana aplikacja kamo-signer — Doświadczenie SIGNING drugiej partii (strona projektanta/autorskiego pozostaje w Kamo-internal). Pakiety: - >ka/podpisy na typy + DesignData wire contract, schemat zod, runtime Walidacja pola, signStore (zustand) - - w polu interaktywnych wejść w poluka/esign-ui + pole/notacje Wykonawcy (wyprodukowane od kamo-internal FieldControl) - ?kamo/doc-render-renderd pdf.js page renderer (samodzielny pracownik, bez CDN), Responsywne, rotacyjne nakładki - bootstrap do brandingu na przedmowcę (getThemePath, ThemeLogo, ThemeLogo, DynamicMetaLoader ) - ?kamo/api-klien-ur.rekcja przeglądarki + serwer Redis/przekonujący pomocnicy - ?kamo/config shared tsconfig / tailwind preset / eslint Aplikacja (aplikacja/kam-signer): - token-scoped signer auth (SIGNSESH httpOnly session, BFF route Manualers) - welcome -> zgoda (ESIGN/UETA) -> eIDAS AES step-up OTP -> podpisanie z przewodnikiem -> zakończenie -> zakończenie, wszystkie fazy animowane (framer-motion, w zwolnionym tempie wiadome), mobile-first równa pulpitu, WCAG-nazorcjoner - signature capture suite: draw / type (skrypt) / upload/ adopt-all - multi-dokument, dekoder, delegat/reasign, pełny i18n (next-intl, 22 locales) - tryb podglądu uruchamialny (bez backendu) +.forgejo + /k8s (HostRegexp Znak., turbo-prune Dockerfile)

  15. · kamo-internal

    Pełnej szerokości przedsiębiorstwa przeróbka z podglądem na żywo

    PożyczanProductForm był pojedynczą wąską kolumną (maxWidth: 880) z kodem twardym Wszędzie po angielsku. Teraz używa tego samego wzorca przedsiębiorstwa, co strona oferty: Układ: - Nagłówek o pełnej szerokości z bułką tartą, strzałą do tyłu, odznaką życzliwą - Siatka dwukolumnowa (6fr/6fr) na lg+, pojedyncza kolumna poniżej - Forma po lewej, live "Podgląd produktu" po prawej stronie Strona formularza: - Selektor Kind jako ToggleButtonGroup z opisami (Instaling vs LOC), Nie zakopany w ujęciu zwieńczeniem – to jest wybór strukturalny, który przekształca kształty Reszta formy, więc zasługuje na wybitność - Bloki sekcji z ikonami (Basycyjna ? Cena ? Limity i Warunki > Zgodność) - Stawki wpisane jako %, przeliczone na bps na przewodzie (nie więcej "3600 - 36%") - Wszystkie etykiety pola za pośrednictwem next-intl t() - Day-count tooltip wyjaśniający ACT_365 vs ACT_360 Strona podglądu: - Karta bohatera: rodzaj chip, chip kodu produktu, nazwa, nagłówek, opis - 4-płytowa sieć statystyk: stawka, pochodzenie, opłata za opóźnienie, opłata NSF - Limity i siatki terminów (rodzaj rodzaju: zakres + częstotliwość dla raty, - dla LOC) - Przykładowa karta ofertowa (installment): miesięczna płatność, całkowite odsetki, Całkowity koszt, pochodzenie próbki w punkcie środkowym głównego zakresu - chipy zgodności: dozwolone stany (cap 24 + chip overflow), autopay Wymagane + rabat, wiązanie szablonu weksla - Notatka wyjaśniająca, w jaki sposób ten produkt płynie do strony oferty LoanProductForm teraz zamyka zarówno nowe, jak i edytujące strony. Owijarki na stronie Przejść marketTitle, aby bułka tarczała rozwiązała się czysto.

  16. · kamo-internal

    Dwukolumnowy układ z okienkiem podglądu na żywo

    Nowa strona była wysoką wąską kolumną na szerokich ekranach — zmarnowaną połowę Widnieje widokowe. Teraz używa CSS Grid z formularzem po lewej (5fr) i a Na żywo "Offer Preview" po prawej stronie (7fr), która aktualizuje się jako operator Typy. Jednokolumna na małych ekranach (ang.). Strona formularza: - Bloki sekcji z ikonami (Produkt - Pożyczkobiorca - Kwotowanie - Warunki niestandardowe) - pola oprocentowane układają się pionowo (członek id + stan) w bardziej kompaktowym Prezentacja teraz, gdy przestrzeń pozioma jest zarezerwowana dla podglądu Strona podglądu (tylko po wybraniu produktu): - Karta bohatera z gradientowym tłem, chipem, nazwą produktu i a Nagłówek czytelny dla człowieka ("5000 USD - 12-miesięczna rata przy 14,99% APR" / "24 000 USD linii kredytowej - stawka 9,99%") - 4-płytowa sieć statystyk: główna, stawka, płatność miesięczna, termin (installment) Wartość główna, stawka, okres losowania, okres spłaty (LOC) - Podział opłat (pierwotność/tół/NSF/rok) z chipem "nowość" w przypadku Stosuje się nadpis - Panel podsumowujący koszty: wypłacane netto, całkowite odsetki, całkowity koszt - Harmonogram amortyzacji: pierwsze 3 + ostatnie 3 rzędy z "N" więcej Płatności..." luka dla terminów > 6 miesięcy - Notatka przypominająca TILA wyjaśniająca, że backendy obliczają prawdziwe APR + kompilacje Prawdziwy harmonogram + renders ujawnienia w wysyłaniu Cała matematyka to amortyzacja po stronie klienta (P ? r ? (1+r) -n / ((1+r) - 1)) – wierny podgląd, a nie ostateczna ujawniona APR. Backend (ang.) Nadal jest właścicielem prawdy.

  17. · kamo-internal

    Polska strona nowej oferu — stan pusty, odznaka LOC, niestandardowe terminy

    Trzy luki UX, które strona oferty miała po wcześniejszym refaktorze: 1. Pusty stan. Gdy rynek nie ma jeszcze produktów pożyczkowych, wykorzystano rozwijanie Po cichu renderować puste, a operator nie miał pojęcia, co robić. Teraz Zastępiony z pustym stanem bohatera (ikona, nagłówek, podkład na ratze vs LOC i "Create Loan Product" CTA skierowane do produktów / nowy przepływ). 2. LOC vs Installment nie jest widoczny z góry – oba pojawiają się identycznie w Produkt rozwijany. Dodano kolorowy chip (LOC - niebieski + ikona powtórzenia, Rata - zielona + ikona portfela) renderowała oba w wybranej wartości I wewnątrz każdej opcji rozwijania, plus opis produktu w opcji. 3. Blok "zamkniętych terminów" został mylnie nazwany - sugerował, że nie jest wymienny Bez żadnego sposobu na obejrzenie. Dodano składany panel "Niedokładne terminy" która obnaża nadrzędne dla stóp procentowych, ujawnia APR, oraz Opłata za pochodzenie (ceny relacyjne, treningi trudności, promocja Ceny). Po ułożeniu karta z zamkniętymi terminami wizualnie uderza przez Wartość produktu i pokazuje nadpisanie (np. 14,99% - 11,99%) Operator dokładnie widzi, co zostanie wydane. Wsparcie backendowe naciśnięte w KamoLOS 0e80393; typy rozszerzone w losApi.ts Pola nadrzędne przepływają przez createOfferDraft.

  18. · kamolos

    Przepisy per-off dla stawek, RRSO i opłatę za pochodzenie

    PożyczPożyczPożyczOfferCreateRequest zyskuje trzy pola opcjonalne — odsetkiRateBpsOverride, aprBpsOverride, originationFeeAmountOverride. createDraft stosuje je, gdy Ustawione i w inny sposób spadają z powrotem do migawki produktu. Przypadki użycia: relacja Ceny (przewroty dla powtarzających się kredytobiorców), trudne treningi (wynajęte Początkowanie), jednorazowe oferty promocyjne. W przypadku produktów ratalnych tylko odsetkiRateBpsOverride znajduje się na normalnej ścieżce — APR jest obliczany z opłat + opłaty + harmonogram. aprBpsOverride jest narażony na Rzadki przypadek wyraźnie ujawnionego APR musi różnić się od obliczeń. Audyt: pisze OFFER_DRAFTED dla każdego szkicu (uniform with OFFER_SENT/ACCEPTED). Logs wyraźne nadpisywanie wartości a domyślnymi produktami, dzięki czemu szlak może zrekonstruować To, co zostało odziedziczone vs. set per-offer.

  19. · kamo-internal

    Expose PERSONAL_LOANS w pickerach typucommerce i zaangażowania

    Dodaje PERSONAL_LOANS do COMMERCE_TYPES i EngagementType listy Nowy rynek pożyczek osobistych KamoLOS może być tworzony z rynków/nowo nowych i Rynkowe/strony dowodowe, wyświetlają go w QuickActionsBar (z /commerce/personal-loans/new Trasa) i obejmuje ją w filtrze typu zaangażowania w rurociągu i konfigura.

  20. · kamo-internal

    T6 + T7 frontendowy raport + raporty / automatyczny płat

    Frontend polski (T6): - Nowy lib/format.ts: pomocnicy lokalnizna — formatCurrency / formatData / formatDateTime / formatPercentBps. Zastępuje zakodowane w twardo Wzory toLocaleString() + plaster(0,10) rozrzucone po podstawie kodu. - PożyczkobiorcaAutoPayCard: pełna rekrutacja / pauza / resumecz / anulowanie / edycja interfejsu użytkownika Do automatycznej maszyny państwowej. Rozciągnięcie zakresu ilości powierzchni (INSTALLMENT_SCHEDULED / MIN_PAYMENT / FULL_STATEMENT_BALANCE / FIXED_AMOUNT) + dzień miesiąca + wybór metody płatności. Backend był Już przewodowa; jest to ostatni element samoobsługi kredytobiorcy. - Kolejka Charge-off: IRS 1099-C przyczyna zwieńczenia kodu (8 oficjalnych litery A–H na IRC 6050P) zastępuje pole rozumowania wolnego tekstu; Domyślnie - Pomiga Notes pozostaje. Waluta renderowana za pomocą formatuCurrency. Raporty Org (T7): - Nowy 5-łkawnikowy deska rozdzielcza (Obecnie / 1-29 / 30-59 / 60-89 / 90+) z %-total + kodowany kolorem Na najwyższych granicach. Wiertło łącza do kolejki ładunkowej. Dodatki losApi: - agingReport(orgI) + AgingReport - audytSearch(filtry) dla punktu końcowego regulatora wielofiltrowego - PożyczkaChargeOffReasonCode typ - potwierdzić, że podpis ChargeOff akceptuje powodyCode

  21. · kamolos

    Poziom 6+7+9+10 — frontend polish, org, OpenAPI, JaCoCo

    T6 (plopol frontendowy): - Nowy /lib/format.ts: locale-aware formatCurrencykl / formatData / formatDateTime / formatPercentBps za pośrednictwem hoteli w ramach hoteli a Intl (zastępuje zakodowane wzory toLocaleString + plaster(0, 10)). - PożyczkobiorcaAutoPayCard: zapisz / pauza / resume / anuluj / edytowanie auto-płatności Z fabułami typu ilości (INSTALLMENT_SCHEDULED / MIN_PAYMENT / FULL_STATEMENT_BALANCE / FIXED_AMOUNT) + dzień miesiąca + metoda płatnicza Selektor. - Kolejka ładowania: IRS 1099-C przyczyna zniesienia kodu (8 oficjalnych listów A-H na IRC 6050P) zastępuje pole rozumowania wolnego tekstu; domyślne G. Formatowanie waluty za pomocą formatuCurrency. T7 (raporty zorg): - Nowa pożyczkaKontroler.aging: liczy pożyczki na prąd / 1-29 / 30-59 / 60-89 / 90+ wiadra przez stronę DELINQUENT scan + hrabstwoByOrganizationAndStatus Za ACTIVE. - 5-bucket deska rozdzielcza z %-of-total + kolorowe opaski + wierteł do naładowania kolejki. T9-T10 (DX + doks: - ? /v3/api-docs + /swagger-ui.html Auto-generowane. OpenApiConfig sety tytuł + opis + wersja. - DevSeedLoader : Profile("dev"): buty dwie próbki Pożyczka (12-mo Rata + wieczysty LOC). Idempotent (pomijanie na istniejącym produkcieCode). - Wtyczka JaCoCo Maven: przygotuj agent + raport na etapie testowym. Pokrycie HTML Na docelowy/site/jacoco/index.html dla CI. Dodatki losApi: - agingReport(orgId) + AgingReport - audytSearch(filtrtery) dla punktu końcowego regulatora multifiltra - potwierdzenie podpisu ChargeOff akceptuje rozumCode 36 testów z rzędu.

  22. · kamolos

    Dozwanowy partia zgodności Tier 5

    - OfacSanctionsService: Jaro-Winkler fuzzy match - 0,92 GBP po dokładnym meczu Przejście. Hits surface podobieństwo. Konfigurowalny przez los.ofac.fuzzy-threshold. - AdverseActionNoticeService: ECOA .1002.9 nazewnictwo generatora PDF CFPB jako federalny organ regulacyjny. Powody dla dwór + standard Język niedyskryminacji ECOA. Przechowywany na MediaService. - zapytanie o badanie multifiltra dla regulatora Wejdy + zamiatanie retencji. Paged. - LoanChargeOffService.confirm akceptuje parametr typu reasonCode (IRS 1099-C) box-6 letter), uparcie do Loan.chargeOffReasonCode i wciśnięty w gwint. Render PDFowy YearEndTaxJob 1099-C. Domyślnie G. - PożyczkaProductValidationUzdrowość ostrzega, gdy odsetkiRateBps > MLA 3600bps cap Tak więc zgodność może mieć flagę dla projekcji MLA w czasie oferty. - YearEndTaxJob: usunięto produkcję1099Int gałęzi — był obojętny (nie Przepływ płatności kredytobiorców-kredytowych istnieje). Stub lewa z reaktywacją Wskazówki, gdy taki przepływ ląduje. Wszystkie 30 testów jednostkowych przejdzie.

  23. · kamo-shared-library

    LoanChargeOffReasonCode (IRS 1099-C box 6) + wyszukiwanie audytu

    - Nowa LoanChargeOffResonCode enum (A_BANKRUPTCY..H_OTHER) na IRC ?6050P - Pożyczka.chargeOffasonCode kolumna - - multifiltr ?Query dla wezwań regulatorowych (loanId / kind / aktorType / aktorMemberId / od / do) — paged

  24. · kamolos

    Bezpieczeństwo poziomu 3 + Tier 8 bug cleanup batch

    T3 — Bezpieczeństwo: - Nowa RateLimitFilFilter (Bucket4j): 1000/min na adres IP dla webhooks, 10/min na sesję dla oferty akceptacja/dekoder/rescind, 60/min general. Zarejestrowany przed ProxyHmacFilter, więc nadużycie uderza w wiadro wcześniej Koszt weryfikacji kryptograficznej. - SecurityConfig dodaje HSTS + frameOptions(DENY) + zawartośćTypeOptions Za pośrednictwem Spring Security HeaderWriter. - StripeConfig szybko zawodzi na profilu prod z kluczem nieżyjącym. T8 — Czyszczenie błędów: - - - szuka Loan.productIdSnapshot Pożycz PożyczProduct.feeNsfFlat zamiast zakodowanych 25 USD. 25 dolarów pozostaje Opóźnienie, gdy brakuje produktu lub opłaty. - - zyskuje pole AdjustmentTarget (PRINCIPAL / INTEREST / FEES). ręczna Wysyłka dowolna na cel Zamiast dotykać zawsze dyrektora. Metadane audytu już teraz rekordy Który licznik został dotknięty. - - znajduje najnowsze ACTIVE Plan PAUSED i reaktywuje go zamiast tworzyć nowy wiersz Sieroty zatrzymały się na tych. - - - wpisany rekord FetchResult z Status (OK / NOT_FOUND / UNREACHABLE / UNCONFIGURED). fetchB(uid) Zachowane jako przestarzałe adapter-or-null.

  25. · kamo-shared-library

    - )

    Używany przez . do reaktywacji istniejącego Plan PAUSED zamiast tworzyć duplikat wiersza, który osieroci zatrzymanego.

  26. · kamo-internal

    /api/los proxy HMAC-signs nagłówki tożsamości

    Gdy LOS_PROXY_HMAC_SECRET env var jest ustawiony, serwer proxy teraz oblicza - tajna) i wysyła X-Proxy-Signature + X-Proxy-Timestamp obok X-Org-Id / Nagłówki X-Member-Id. Nowy ProxyHmacFilter KamoLOS potwierdza to (Kopia z lat 60., porównanie w stałym czasie), więc klient omijający kamo-internal Nie można już sfałszować nagłówków tożsamości. Nieustannąć tajemnicy - lokalno-dev pass-through (filtr wyłączony na zapleczu Strona też).

  27. · kamo-internal

    Strona opisowa pożyczki Org-side + korekty/promise API

    - losApi: manualAdjust, odrzutFee, obietnicaToPay - Pełna strona org-operations 4-wzrostowe karty bilansowe (aktualne, kapitałowe, odsetki, następne należne) Ręczny formularz regulacji (CREDIT/DEBIT, wymagany powód) — wywołania /api/los/adregulacje/manual Promise-to-pay form — wezwania Oświadczenia + tabele płatności Zapasy - LoanAuditTimeline> dla pełnego dziennika wydarzeń - To rozwiązuje zepsuty link, który MarketActiveLoansTab + PipelineActiveLoansTab wskazywano.

  28. · kamolos

    Final partia – zgodność, pakiety, korekty, Grafana, testy

    Zgodność: - MlaCheckService — Ustawa o pożyczkach wojskowych obejmowała lookup-rower DoD MDC jednonagraniowe zapytanie. Zwraca NotCovered jeśli nie jest skonfigurowany tak dev Nie jest w stanie trudnej sytuacji; produkcja MUSISZ skonfigurować los.mla.endpoint + api-key LUB uruchom ręczną MLA przy kroku KYC org (wymagany dostęp do PII). - OfacSanctionsService — Skarb Państwa SDN w pamięci, odświeżony Co ciekawego z sdn.csv. Normalizacja Unicode NFD + rozbieranie diakrytyczne. Przelajny do LoanOfferService.send: SDN uderza w przycisk wysyłania i pisze SRR_RULE_VIOLATION_DETECTED wiersz audytu. - LoanLifecycleService cooling-off czyta teraz LoanStateRule.coolingOffDays dla państwa pożyczkobiorcy (zastępuje posiadacza LocalDateTime.now()). - Stripe account.upated webhook synchronizuje teraz opłaty/wypłaty/pisy/pisy detali flagi + default_currency + wymagania_disabled_reason na LoanOrgStripeConnect Tak więc cron + ustawienia org UI zobacz stan zdolności na żywo. Pakiet informacji o umyciu: - Nowe pakiety DisclosurePacketBuilder box TILA + Energos prywatności + Ogłoszenie o niedyskryminacji ECOA + autoryzacja ACH w jednym PDF PDFBox PDFMergerUtility + sklepy w MediaService. Każdy składnik jest Nagrany jako wiersz pożyczkiDisclosure przyłączony do oferty. PożyczkaOfferService.send Automatycznie buduje pakiet przed utworzeniem koperty ESign. Operacje serwisowe: - - — opłaty/główny kredyt lub debetowy Z wymaganą przyczyną; emituje LoanPayment (INTERNAL_ADJUSTMENT lub REVERSAL_ADJUDMENT) + Audyt ROZASYCJI MANUAL_ADJUDMENT - PożyczanAdjustmentService.waiveFee — flips LoanFee.waivedPoza + kredyty OpłatyPaidToDate + emituje audyt FEE_WAIVED - — wiersz zobowiązań niefinansowych Wykorzystywany w śledzeniu przepływu pracy D60+, emituje audyt PROMISE_TO_PAY_LOGGED - LoanAdjustmentKontroler ujawnia /api/los/adjustments/Amanual, Opłaty/Uid?/waive, obietnica do zapłaty Obserwacja: - - - - - kierowana deska rozdzielcza z Wskaźniki statusu, wskaźniki wyników płatności, zwroty kodów R według kodu, webhook p50/p90/p99, wypłaty/godzinę, charge-offy/dzień, sterta JVM, szybkość HTTP Testy (łącznie 30, wszystkie zielone): - 7 Amortization Inteligentny - 9 InterestAluminiówka(Inteligentna oszacowana) (w tym wcześniej naprawiono 100x błąd) - 5Alokator płatności - 4 NachaReturnCode (klasy prób + kody zwrotne + opis) - 5 OfacSanctionsService (czysty mecz / hit / diacritics / alias / disabled za pomocą pamięci podręcznej z wstrzyknięciem, bez sieci ani pojemnika testowego)

  29. · kamolos

    P2 partia — obserwowalność, testy, podatek na koniec roku, prawdziwe identyfikatory Stripe

    Obserwacja: - mikrometr-rejestr-prometeusz na ścieżce klasy - /aktork/prometeusz narażony poprzez konfig zarządzania (oba lokalna konfiskata + k8s) - Usługa Pożyczków: . los_charge_off_total, los_disburbur_total, los_loan_status_partus, - histogram - Liczniki podłączone do LoanPaymentPostingService + LoanChargeOffService Matematyka + testy: - 21 testów jednostkowych obejmujących amortyzację (płatność na poziomie, APR Newton- Raphson, miesięczny postęp daty, principal+ Interestt niezmienny, Obstrzał inwalidzki, InwestycjaAkułna e-lopryka (ACT_365 / ACT_360 DPR, Jednodniowy / trzydziestodniowy naliczany, LOC ADB), PaymentAcator (fees-interest Główne zamówienie, częściowe, nadpłata, unieważnienie) - "Naprawiono 100-krotny błąd o oprocentowaniu" w " — dynastia wynosiła 36500/36000 zamiast 3,650,000/3 600 000 (roczną Frakcja wymaga zarówno /10000 bps-frakcji, jak i 365 dni), więc naliczone Zasoby za bardzo wysokie. Test dodał, że to by go złapało. Identyfikatory pasków (nie więcej zastępców): - StripeConnectController.onboard utrzymuje teraz LoanOrgStripeConnect na Udane tworzenie konta Stripe; .status zwraca stan onboardingu - Nowy StripeIdResolver: connectedAccountIdForOrg() + leniwy getOrCreateBorrowerCustomerId() (idempotency-keyed Customer.create Pod połączonym kontem, utrzymuje się na stronie Loan.stripeCustomerId) - AutoDebitRunJob.fireAchDebit + .Wybuchnięcie teraz Identyfikatory przez StripeIdResolver zamiast "acct_placeholder_" Przypomnienie kadencji: - ReminderSchedulingJob: nocne zamiatanie emituje PAYMENT_UE_3_DAYS, PAYMENT_DUE_TODAY, PAYMENT_LATE_DAY_1/5/15, OFERWEK_EXPIRING (24h) Przed wygaśnięciem), STATEMENT_AVAILABLE (w zależności od pokolenia). Dedup-keyed (ang.) Za pośrednictwem . Powtórki są idempotentne. Podatek z końca roku: - YearEndTaxJob (cron 06:00 Jan 5): produkuje 1099-C za charge-offy 600 USD + 1099-INT dla odsetek kredytobiorców > 10 USD. Formularz PDFBox, Przechowywany do MediaService, nagrany jako LoanUclosure z formularzem / rok Metadane tak, że powtórki są idempotentne. - Loan.tax1099CE Kwalifikujący się automatyczny automatyczny zestaw naładowania potwierdza, gdy kwota 600 USD

  30. · kamo-shared-library

    LoanOrgStripeConnect + podatkowo pożyczkowe/naliczkowe pola + hot indexes

    - Nowy podmiot LoanOrgStripeConnect (one-per-org, posiada stripeConnecteAccountId + Podłącz funkcje onboardingu) + repozytorium - Pożyczka: stripecrueCustomerId (leniwy-tworzony pod połączonym kontem orgi), lastAccrualDate, tax1099Int Kwalifikujący się, podatkowy1099 CE kwalifikujący się - Indeksy złóż gorący: pożyczki: (org_id, status), (borrower_member_id, status), (next_payment_due_at), (status, delinquency_tier) Pożyczka_płata: (loan_id,initiated_at), (pożyczka_id, status), (stripe_payment_intent_id), (stanment_id) Pożyczka_statements: (loan_id,statement_number DESC), (due_date, status) Pożyczka_oferty: (org_id, status), (borrower_member_id, status), (status,expires_at)

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