Перейти до вмісту
KAMOUniverse

Журнал змін

Что нового.

Все усовершенствования платформы, как только она будет запущена.

  1. · kamo-shared-library

    API SIGNATURE api-ключ + EsignGenericEnvelope.origin

    Додаток, немає версії bump: - ApiKeyScope.API SIGNATURE — хвіртки программатичного електронного підпису API (Бізнес) - EsignGenericEnvelope.origin (EsignUsageOrigin, nullable) — записи, чи є конверт був створений за допомогою API проти MANUAL, тому завершений лічильник підписів правильно (API підраховує до перевищення $0.20; MANUAL ніколи не робить). Колонка додано до прод через idempotent ALTER перед рукою.

  2. · kamo-internal

    Надіслати заявку + статус конверта в редакторі документів

    Додайте кнопку «Подати підпису» на заголовок редактора шаблону, який відкриває Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Новий двигун ESigService /api/esig/envelopes. - Маршрути проксі (OTK через генерOTK, дзеркала шаблонів проксі): POST/GET /api/esig/envelopes, GET [uid], POST [uid]/void, POST ****************************************************************************************************************************************************************************************************************************************************************************** - SendForSignatureDialog: Відправити вкладку (пошукові рядки, повідомлення, термін дії) + Статус вкладки (перекладний список конвертів, чіпси статусу, недійсний/резенд) - Кнопка вимкнена в той час як шаблон має незбережені зміни - i18n через next-intl*******************************************************************************************************************************************************************************************************************************************************

  3. · ESigService

    Генетичний конверт створить / send двигун (швидкий)

    Додавання OTK-authed /api/esig/envelopes API kamo-internal drives для відправки документи для підпису, що означають односторонніх суб’єктів публічної інформації Заміна API зчитування — добавка, агностична заміна на кредит У парі KamoLOS/EsignClient створюють шлях. - POST створення-і-send від шаблону: збірки EsignGenericEnvelope (AD HOC), один EsignEnvelopeRecipient per signer with a свіжий доступ token, і e-mails кожен /s/{env}/{recipient}?t={token} посилання входу (best-effort) - Список GET (повідна панель) + GET {uid} деталь з статусами одержувача - POST {uid}/void і {uid}/recipients/{rid}/resend (подрібнює токен) - Запрошення + делегування електронних листів EsignEmailClient.sendInvite; реєстратор-роум посилання, виправлено на /s/{env}/{recipient}

  4. · ESigService

    English, Українська, Français..

    Впровадити /api/esig/public/* ввімкнення API викликів додатків kamo-signer, перевернути в робочий бекенд. - валідувати (recipient token -> реєстраційний сеанс), сеанс, згоду, stepup/start+verify (email ОТП), подання, декодування, документ - Redis-backed реєстраційні сеанси (X-Signer-Session), відмінні від персоналу OTK - Документальні байти через реальний трубопровод Img/Minio (template imgId -> JavaScript licenses API Веб-сайт Go1.13.8 - PDFBox flatten: значення поля накладки + зображення підпису в дизайні координати, пристосувати сторінки сертифіката E-SIGN/UETA; підписано PDF в Мініо під номером конверта підписаноБлобід з записаним SHA-256 - Застосунки EsignSignature аудиторські рядки + EsignField Значення стійкості ********************************************************************************************************************************************************************************************************************************************************************** Закінчення API-рігіна в #3/#4 - Брендування вирішених з організації + OrgDomain для першого - OTKAuthFilter Bypasses /api/esig/public (привабливий, не персоналу OTK) Добавка тільки; наявні /api/esig/templates/* touched.

  5. · kamo-internal

    Платформовий товарний знак в вкладці Організація

    Поверхневий дизайн платформи, де він належить — Платформа → Організація. Додає забитий перемикач на орг (здатний для верхнього рівня org), діалогове вікно підтвердження, що пояснює ефект заголовка, 'Platform product' Чіпс, попередження некаталога, оптимістичне оновлення та снек-бар помилки. Всі рядки через наступний.

  6. · BillingService

    Управління організацією.isPlatformProduct від Platform → Orgs

    ПлатформаПродукція + hasSubscription Ринок; новий PUT************************************************************************************************************************************************************************************************************************************************************** (платформа-адміністратор) налаштовує прапор та недійсні авторські права членів org (виробництво) корінь, і особливості, зміна. Top-level org - корінь не може бджільництва.

  7. · kamo-shared-library

    Експлитація організацій.isPlatformПродукт як заголовок сигналу

    Замініть отриманий «власник ринку SUBSCRIPTION» вишуканістю з явною, адмін-set прапор володіння. Паперовий продукт (наприклад, знак.рожевий) є біло-лабораторним Юридична адреса: м. Київ, вул.Газова, буд.1 навіть один, що працює на ринку SUBSCRIPTION для перепродажу своїх клієнтів. не і залишається на майданчику. ЗаголовокRootResolver зараз читає прапор (поверхній корінь) і більше не залежить від ринку власність. Додавання platform product стовпчик (BOOL DEFAULT FALSE) — вимагає KamoInitializer для створення його перед послугами, які вибирають розгортання Організації.

  8. · SecurityService

    Не KamoCRM

    Компанія EntitleService тепер вирішить корінь імен кожного учасника ЗаголовокRootResolver (найкращий ринок-власник-а) замість ходьба до верхнього рівня org. Підлога без ярусу та прапора доступу Цей корінь, і isKamoCrmSubscription стає підпискоюGrantsRootAccess (план-орг проти кореня, ніколи не рахунок векселя). Приріст імен членів ПродуктRootOrgId так споживачі хвіртки доступу до правого продукту. BillingSetupПослуги джерела ринку + Безкоштовний тариф від нового продукту корінь при зберіганні рахунку-фактури на верхньому рівні KamoCRM org — тобто батьківські рахунки, дитина може мати продукт/ринок. Behaviour не змінюється до того, як org насправді має власний ринок (KamoCRM) тільки власник ринку сьогодні, тому кожен учасник все ще вирішує.

  9. · kamo-shared-library

    Розчинити заголовки продукту-root org, а не майданчик верхнього рівня

    Introduce EntitlementRootResolver: найближчий ринок-власник org (його кореня продукту), знизився назад до платформи верхнього рівня. Про нас decouples *What продукт, який ви маєте право на * (власник ринку/плану) від * (оплатний рахунок) і від однорівневої оргії, тому білий-лабораторний продукт org як знак. **************************************************************************************************************************************************************************************************************************************************************** корінь продукту (не знайденоFirstByIsTopLevelTrue), і вирішує плани продукт/маркет org, а не вексельно-знижковий org. Компанія KamoCRM в даний час є єдиним власником ринку, тому кожен існуючий org вирішує його точно, як і раніше — поведінка тільки дивує один раз суб-дерево володіє власним ринком. Додаток; немає версії bump.

  10. · kamo-shared-library

    Додавання одержувача конверта, значення поля, суб'єкти статусу одержувача

    Ознайомтеся з моделлю вхідного знака: EsignEnvelopeRecipient (+repo), EsignFieldValue (+repo), EsignRecipientStatus та оновлення ESignerType. Додаток; немає версії bump.

  11. · kamo-shared-library

    Додати EsignUsageRecord для обліку використання перевизначення

    Новий суб'єкт використання додатків (mirrors AiUsageRecord) вказаний на підписі завершення. Тільки підписи API-origin до щомісячного плану кв.м. + перевипуск (підписний бізнес: 40/міс., потім $0.20 кожний); MANUAL підписи однокористувачів записані, але ніколи не зараховуються. billing period (YYYY-MM) підтримка щомісячної агрегації; Ідемпотент. Добавка тільки; немає версії bump.

  12. · ConversionService

    Збережіть співвідношення сторін, ніколи не розтягуйте логотипи без квадроциклів

    Каркасні рамки Favicon PNG/ICO виготовлені з фіксатором будь-який некватний логотип у спотворену площу. Розробка логотипу на сайті прозора квадратна канва замість того, що збереження співвідношення сторін, тому дивляться виправлено будь-яку завантажуту форму логотипу без використання зображення квадратного джерела.

  13. · KlusterServices

    Попередній запис.pink + www.sign.pink в STATIC DOMAINS

    sign.pink - новий домен apex (consumer e-signature brand / білий-label Kamo тенант org. Попередня apex + www так що сертифікат Let's Encrypt існує до Перший HTTPS трафік; *.sign.pink subdomains отримує per-FQDN сертифікати динамічно коли перший удар, той же механізм, як *.priceturbo.com.

  14. · kamo-signer-monorepo

    Новий монорепо + мобільний додаток

    Turborepo + Pnpm робочі місця монорепо житло багаторазові електронні пакети з kamo-internal плюс новий, ультраполірований kamo-signer додаток - Досвід роботи другого боку SIGNING (конструктор/санкціонування) камо-інтернал. Пакети: - @kamo/esign-core type + DesignData дротовий контракт, zod schema, runtime польова валідація, знак - @kamo/esign-ui інтерактивні поля введення + читання поля/анотація рендерери (видалення від kamo-internal FieldControl) - @kamo/doc-render packd pdf.js page рендерер (самий працівник, без CDN), чуйні, поворотно-коректні накладки - @kamo/theme per-tenant брендування bootstrap (getThemePath, ThemeLogo, ДинамічнийMetaLoader - @kamo/api-client браузер fetch + сервер Redis/forwarding Helpers - @kamo/config загальний tsconfig / tailwind preset / eslint Додаток (додаток/kamo-signer): - Token-scoped signer auth (SIGNSESH httpOnly сеанс, BFF маршрутизатори) - ласкаво просимо -> згоду (ESIGN/UETA) -> eIDAS AES step-up OTP -> керівництво -> закінчити -> завершення, всі фази анімованих (framer-motion, знижено-емоція Усвідомо), мобільний-перший рівний робочий стіл, WCAG-minded - набір для запису підписів: креслення / тип (script fonts) / завантаження / прийняти-all - багатододаток, декодер, делегування / реасунт, повний i18n (неxt-intl, 22 локальних) - режим попереднього перегляду (не потрібно) + /.forgejo + /k8s (HostRegexp Увійти / Зареєструватися

  15. · kamo-internal

    Повна пропускна здатність підприємства перезапису з переглядом

    КредитПродукціяФорм був одним вузьким стовпчиком (maxWidth: 880) з твердихкодованих Англійська всюди. Тепер використовується один і той самий шаблон підприємства, як сторінка пропозицій: Місце проведення: - Повністючастотний градієнтовний головок з сухарями, виворітними стрілками, добрим значком - Двокамерні сітки (6fr / 6fr) на lg +, однокамерні нижче - Форма на лівому, в прямому ефірі "Погляд продукту" праворуч Форма зворотного зв'язку: - Види selector як ToggleButton Group з описами (Installment vs LOC), не похований у спадку — це структурний вибір, що нагадує решта форми, тому він заслуговує промінісу - Секційні блоки з іконками (Basics · Ціни · Ліміти та умови · Дотримання) - Ставки введені в %, перетворюються на bps на дріт (не більше "3600 = 36%") - Всі мітки полів за допомогою наступного - Денний інструмент для визначення ACT 365 проти ACT 360 Час перегляду: - Герой карти: чіп, чіп, назва, заголовок, опис - сітчаста сіточка 4-тилій: швидкість, походження, пізня плата, плата NSF - Limits & умови сітки (посуд: діапазон + частота для розвантаження, ****** для LOC - Зразок пропозиції картки (встановлення): щомісячний платіж, загальний інтерес, загальна вартість, видача зразків в середині точки основного діапазону - Комплаєнсові чіпси: дозволені стани (cap 24 + переливний чіп), автоплатний обов'язковий + знижка, інструкція-примітка шаблону - Примітка для ніг пояснює, як цей продукт тікає до сторінки пропозицій КредитПродукціяФорм тепер обгортає як нові, так і редагування сторінок. Серветки паперові пропускають ринокТак, щоб хлібопекар розчинився чисто.

  16. · kamo-internal

    Двокамерні макети з домашньою панеллю попереднього перегляду

    Нова сторінка була високою вузьким стовпчиком на широкому екрані — видовий порт. Тепер використовує CSS Grid з формою зліва (5fr) і формою живий "Офера обміну" пане на правому (7fr) який оновлюється як оператор види. Однокамерні на невеликих екранах (< lg). Форма зворотного зв'язку: - Секційні блоки з іконками (Продукт · Бородер · Сума · Умови використання) - Бородер полів стека вертикально (член id + держава) в більш компактному Презентація, що горизонтальний простір для попереднього перегляду Час перегляду (тільки коли обраний товар): - Герой карти з градієнтним фоном, добрим чіпом, назвою продукту і людсько-прочитана лінія ("$5,000 · 12-місячний розстрочка · 14.99% APR" / «$25,000 лінія кредиту · 9,99% курс») - 4-ти статів сітки: основний, курс, щомісячний платіж, термін (встановлення) або основний, курс, термін дії, термін погашення (LOC) - Поломка феї (рігінація/лат/NSF/annual) з чіпом «кутом» накладна - Доповнення вартості: чистий розірваний, загальний інтерес, загальна вартість - Графік амортизації пека: перший 3 + останні 3 ряди з "{N} докладніше платежі..." проміжок часу > 6 місяців - Нагадка ТІЛА роз'яснює зворотний зв'язок істинної APR + будує Розкриття реальних графіків Вся математика - клієнт-за межами прямолінійної амортизації (P × r × (1 +r)^n / ((1+r)^n - 1)) — вірний попередній перегляд, не остаточний розкривний APR. Зареєструватися І все-таки є правдою.

  17. · kamo-internal

    Польська нова версія сторінки — порожній стан, значок LOC, нестандартні умови

    Після попереднього рефактора три UX запускає сторінку пропозиції: 1. Порожня держава. Коли ринок ще не має кредитних продуктів, щоб мовчати, і оператор не мав ідеї, що робити. Віджети заміщений герой пустий стан (icon, headline, ґрунтовкою на монтажі проти LOC, і "Креативний кредитний продукт" CTA передається на продукти / новий потік). 2. LOC проти інсталяції не видно вгору - як з'являються однаково в зниження продукту. Додано кольоровий чіп (LOC = синій + повторення іконки, Встановлення = зелений + значок гаманця) надано як у вибраному значення і всередині кожного варіанта, плюс опис продукту в опції. 3. Блок «Зблоковані терміни» був плутанно названий — він незмінний без будь-якого способу перевизначення. Додано панель інструментів "Обласні умови" що передбачає перенапруження за процентною ставкою, розкрито APR і Плата за вивезення (реляційне ціноутворення, тренування вагів, промо Ціна. При налаштуванні замкнено-часова карта візуально вдаряє через значення продукту і показує перевизначення (наприклад, 14.99% → 11.99%) так оператор точно видається. Підтримка Backend штовхається в KamoLOS 0e80393; види продовжені в losApi.ts так Потоки перевизначення через створенняОфертиДраффт.

  18. · kamolos

    Зловмисники за курсом, АПР та комісій за походження

    КредитОферитЗапит отримує три додаткові поля — відсоткиRateBpsOverride, aprBpsOverride, походженняFeeAmountOverride. СтворенняDraft застосовує їх, коли встановити і іншим чином попадає назад до знімку продукту. Використання справ: відносини ТЦУ (відновити kickback для повторних позичальників), тренування стиглості походження, одинарні акційні пропозиції. Для розстрочку продуктів, тільки відсоткиRateBpsOverride знаходиться в нормальному шляху — APR складається з тарифу + оплати + графік. aprBpsOverride піддається впливу рідкісний випадок явно розкрито APR повинен відрізнятися від обчислення. Аудит: напишіть пропозицію ДРАФТОВАНО для кожного проекту (уніформа з ПРОПОЗИЦІЮ SENT/ACCEPTED). Журнали відображаються значення перенапруги проти типових продуктів, тому причіп може реконструювати що було успадковано проти. встановити пер-оффер.

  19. · kamo-internal

    ПЕРСОНАЛ LOANS в комерціонально-приватному комерці

    Додавання PERSONAL LOANS до Списків COMMERCE TYPES та EngagementТип так Новий ринок KamoLOS може бути створений з ринків/нових і Ринок/редагування сторінок, її поверхні в QuickActionsBar (з / торгівля/особистісно-лоани/нові маршрут, і включає в себе його в фільтрі типу трубопроводів і налаштування.

  20. · kamo-internal

    T6 + T7 фронтенд поль + org звіти + авто-pay UI

    Фронтальний полір (Т6): - Нові lib/format.ts: локальні помічники Intl — формат JavaScript licenses API Веб-сайт Go1.13.8 Замінює жорсткийкодований toLocaleString() + скибочка(0,10) візерунки, розкидані по коду бази. - BorrowerAutoPayCard: повний конверт / пауза / резюме / скасувати / редагувати UI для автоплатної державної машини. Поверхні об'єму-моде (ІНСТАЛМЕНТ SCHEDULED / MIN PAYMENT / FULL STATEMENT BALANCE / FIXED AMOUNT + день- місяць + вибірник для оплати. Закінчення вже проводилося; це остання частина для самообслуговування позичальника. - Випадок коду: IRS 1099-C букви А-Х за ІР § 6050П) замінюють поле безтекстової причини; За замовчуванням************************************************************************************************************************************************************************************************************************************************************** Залишки поля залишаються. Валюта, що надається за допомогою форматаCurrency. Org звітності (T7): ********************************************************************************************************************************************************************************************************************************************************************** 5-розкладна панель (Current / 1-29 / 30-59 / 60-89 / 90+) з %-загальною + кольорово-кодовано верхні кордони. Попередження про проходження черги. losApi доповнення: - старінняРепорт (orgId) + Тип АгінгРепорт - аудитПошук (фільтри) для кінцевої точки багатофільтра - КредитЧаржОффРасонКод Тип об'єднання - підтвердіть підпис ChargeOff приймає причину

  21. · kamolos

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

    T6 (frontend polish): - New /lib/format.ts: locale-aware formatCurrency / formatDate / formatDateTime / formatPercentBps via Intl APIs (replaces hardcoded toLocaleString + slice(0,10) patterns). - BorrowerAutoPayCard: enroll / pause / resume / cancel / edit auto-pay with amount-mode dropdown (INSTALLMENT_SCHEDULED / MIN_PAYMENT / FULL_STATEMENT_BALANCE / FIXED_AMOUNT) + day-of-month + payment-method selector. - Charge-off queue: IRS 1099-C reason code dropdown (8 official letters A–H per IRC §6050P) replaces the free-text reason field; default G. Currency formatting via formatCurrency. T7 (org reports): - New LoanReportsController.aging: counts loans into Current / 1-29 / 30-59 / 60-89 / 90+ buckets via paged DELINQUENT scan + countByOrganizationAndStatus for ACTIVE. - **************** 5-bucket dashboard with %-of-total + color-coded bands + drill-through to charge-off queue. T9-T10 (DX + docs): - **************** /v3/api-docs + /swagger-ui.html auto-generated. OpenApiConfig sets title + description + version. - DevSeedLoader @Profile("dev"): boots two sample LoanProducts (12-mo installment + perpetual LOC). Idempotent (skips on existing productCode). - JaCoCo Maven plugin: prepare-agent + report on test phase. Coverage HTML at target/site/jacoco/index.html for CI consumption. losApi additions: - agingReport(orgId) + AgingReport type - auditSearch(filters) for the multi-filter regulator endpoint - confirmChargeOff signature accepts reasonCode 36 tests passing.

  22. · kamolos

    Пакет відповідності шин 5

    - OfacSanctionsПослуга: Jaro-Winkler нечіткий матч @ ≥0.92 після точний-матч прохід. Переглядів поверхневих аналогічних показників. Налаштування через los.ofac.fuzzy-threshold. - AdverseActionNoticeService: ECOA §1002.9 компліантний PDF-генератор CFPB як федеральний регулятор. Рендери причини-для-декодер + стандарт ЕКОА недискримінаційна мова. Зберігати в MediaService. ************************************************************************************************************************************************************************************************************************************************************************** багатопрофільний запит для регулятора субпоенас + затримка лебедів. Написати - КредитиChargeOffService.confirm приймає причину Р box-6 лист), персистований на кредит. ChargeOffReasonCode і різьблений в РікEndTaxJob's 1099-C PDF рендер. За замовчуванням Г. - КредитПродукціяПослуга попереджає, коли відсоткиRateBps > MLA 3600bps Cap Таким чином, комплаєнс може записатися на проекцію MLA. - РікEndTaxJob: видалено виробництво1099Int branch — інерт (no існує кредитно-міжнародний платіж. Стуб пішов з реактивацією керівництво один раз на такі потоки землі. Пройдіть всі тести 30.

  23. · kamo-shared-library

    КредитЧаржОффРасонКод (IRS 1099-C box 6) + пошук аудиту

    - Нова КредитЧаржОффРасонКод енум (A bankRUPTCY.H OTHER) за IRC §6050P - Кредит.зарядкаОффРеазонКод стовп -*************************************************************************************************************************************************************************************************************************************************************** (loanId / type / акторMemberId / від / до) — Paged

  24. · kamolos

    Tier 3 security + Tier 8 bug cleanup batch

    T3 — Security: - New RateLimitFilter (Bucket4j): 1000/min per IP for webhooks, 10/min per session for offer accept/decoder/rescind, 60/min general. Registered ahead of ProxyHmacFilter so abuse hits the bucket before cryptographic verification cost. - SecurityConfig adds HSTS + frameOptions(DENY) + contentTypeOptions via Spring Security HeaderWriter. - StripeConfig fails fast on prod profile with non-live key. T8 — Bug cleanup: - **************** looks up Loan.productIdSnapshot → LoanProduct.feeNsfFlat instead of hard-coded $25. $25 remains the fallback when product or fee is missing. - **************** gains an AdjustmentTarget field (PRINCIPAL / INTEREST / FEES). manualAdjust dispatches per target rather than always touching principal. Audit metadata now records which counter was touched. - **************** finds the most recent ACTIVE *or* PAUSED plan and reactivates it instead of creating a new row that orphans paused ones. - **************** typed FetchResult record with status (OK / NOT_FOUND / UNREACHABLE / UNCONFIGURED). fetchBlob(uid) preserved as legacy bytes-or-null adapter.

  25. · kamo-shared-library

    ******************************************************************************************************************************************************************************************************************************************************************************

    Використовується ********, щоб реагувати існуючий План PAUSED замість створення дубліката рядка, який вихованці виловили.

  26. · kamo-internal

    /api/los проксі HMAC-підписує головки ідентичності

    Коли LOS PROXY HMAC SECRET env var встановлюється, проксі тепер обчислює ****** секрет) і надсилає X-Proxy-Signature + X-Proxy-Timestamp поряд з X-Org-Id / X-Member-Id головки. KamoLOS новий ProxyHmacFilter підтримує це (±60s skew, постійний час порівняння) тому клієнт обходу камо-інтернал не може більше співати головки особистості. Несетний секрет = локальний прохідний прохід (фільтр вимкнений на задньому плані) теж.

  27. · kamo-internal

    Org-на стороні сторінки позики + налаштування/promise API

    - losApi: ручнаправо, wiveFee, обіцяєToPay -*************************************************************************************************************************************************************************************************************************************************************** * 4-разові карти (поточні, основні, цікаві, наступні) * Форма ручного регулювання (КРЕДІ/ДЕБІТ, необхідна причина) — дзвінки /api/los/adjustments/manual * Promise-to-pay форма — дзвінки **************** * Заяви + платежі Столи * Вбудовування <LoanAuditTimeline> для повного журналу подій - Це вирішить зламану посилання, що MarketActiveLoansTab + PipelineActiveLoansTab були загострені.

  28. · kamolos

    Final batch — compliance, packets, adjustments, Grafana, tests

    Compliance: - MlaCheckService — Military Lending Act covered-borrower lookup against DoD MDC single-record query. Returns NotCovered if unconfigured so dev doesn't hard-fail; production MUST configure los.mla.endpoint + api-key OR run manual MLA at the org's KYC step (PII access required). - OfacSanctionsService — Treasury SDN list cached in-memory, refreshed nightly from sdn.csv. Unicode NFD normalization + diacritic stripping. Wired into LoanOfferService.send: SDN hit blocks the send and writes a STATE_RULE_VIOLATION_DETECTED audit row. - LoanLifecycleService cooling-off now reads LoanStateRule.coolingOffDays for the borrower's state (replaces the LocalDateTime.now() placeholder). - Stripe account.updated webhook now syncs charges/payouts/details flags + default_currency + requirements_disabled_reason onto LoanOrgStripeConnect so cron jobs + the org settings UI see live capability state. Disclosure packet: - New DisclosurePacketBuilder bundles TILA box + GLBA privacy notice + ECOA non-discrimination notice + ACH mandate authorization into one PDF via PDFBox PDFMergerUtility + stores in MediaService. Each component is recorded as a LoanDisclosure row keyed to the offer. LoanOfferService.send builds the packet automatically before the ESign envelope is created. Servicing operations: - **************** — fees/principal credit-or-debit with required reason; emits LoanPayment(INTERNAL_ADJUSTMENT or REVERSAL_ADJUSTMENT) + MANUAL_ADJUSTMENT audit - LoanAdjustmentService.waiveFee — flips LoanFee.waivedAt + credits feesPaidToDate + emits FEE_WAIVED audit - **************** — non-financial commitment row used in D60+ workflow tracking, emits PROMISE_TO_PAY_LOGGED audit - LoanAdjustmentController exposes /api/los/adjustments/{manual, fees/{uid}/waive, promise-to-pay} Observability: - **************** — importable dashboard with status gauges, payment outcome rates, R-code returns by code, webhook p50/p90/p99, disbursements/hour, charge-offs/day, JVM heap, HTTP rate Tests (30 total, all green): - 7 AmortizationEngine - 9 InterestAccrualEngine (including the previously-fixed 100x bug) - 5 PaymentAllocator - 4 NachaReturnCode (retry classes + mandate-revoking codes + describe) - 5 OfacSanctionsService (clean match / hit / diacritics / alias / disabled via reflection-injected cache, no network or test container needed)

  29. · kamolos

    Пакет P2 — спостережливість, тести, ріковий податок, реальні ідентифікатори Stripe

    Спостереження: - мікрометр-реєстр-профетея на класпаті - /actuator/prometheus, що видається за допомогою налаштування управління (наприклад, локальна + k8s configmap) - КредитМетриця обслуговування: **************** ****************************************************************************************************************************************************************************************************************************************************************************** los charge off total, los disbursement total, los loan status count{status} датчик, ****** гістограма - Лічильники, що проводилися в Кредитне обслуговуванняПослуги + КредитХаржОффСервіс Math + тести: - 21 блок випробувань, що охоплюють АмортизаціюІнжиніринг (рівневий платіж, APR Newton- Рафсон, щомісячний річний прогрес, головний +міжнародний інваріант, погані вхідні охоронці, процентиАккроален (ACT 365 / ACT 360 DPR, 1 день / тридцятьденний акронім, LOC ADB, ОплатаАльфатор (феї) → Перцеве замовлення, парні, переплату, nulls) *********************** — дивізор 36500/36000 замість 3,650,000/3,600,000 (універсалRate фракція потребує як /10000 bps→фракція та /365 днів), так що нараховано відсоток був 100 × занадто високий. Тест додано, що виловив його. Ідентифікатори Real Stripe (не більше власників): - StripeConnectController.onboard тепер зберігається КредитиОргазСтриптиз .status повертає на борту держави - New StripeIdResolver: підключенийAccountIdForOrg () + ліза getOrCreateBorrowerCustomerId() (ідемпотенція-під ключ Замовника.create під підключеним обліковим записом, зберігається в кредит.stripeCustomer Ід) - AutoDebitRunJob.fireAchDebit + .fireDisbursement тепер вирішує реальний Коди через StripeIdResolver замість "acct placeholder *" Змінний корпус: - ReminderSchedulingJob: нічний ковтання видає PAYMENT DUE 3 DAYS, PAYMENT DUE TODAY, PAYMENT LATE DAY 1/5/15, ПРОПОЗИЦІЯ EXPIRING (24h) перед expiresAt, ДЕРЖАВИ AVAILABLE (для покоління). Підшипник Зареєструватися ****** так reruns є idempotent. Річний податок: - РікEndTaxJob (cron 06:00 Jan 5): виробляє 1099-C для заряджання ≥ $600 + 1099-INT для відсотків позичальника-кредиту > $10. PDFBox-робота форма, зберігатися в медіасервісі, записаному як кредитрозкриття з формою / рік метаданих, щоб перебіги є idempotent. - Кредит.Податок1099 Зручний авто-сет на платній основі, що підтверджується сумою ≥ $600

  30. · kamo-shared-library

    КредитОрСtripeConnect + Кредитний податок / нарахування полів + гарячі індекси

    - Новий кредитний органСtripeConnect суб'єкт (один-пер-орг, має смугуConnectedAccountId + Роз'єм на борту можливостей + репозиторій - Кредити: StripeCustomerId (lazy-created під підключеним обліковим записом org), lastAccrualDate, податок1099Необхідний, податок1099CEligible - Гарячі композитні індекси: * Кредитування: (org id,status), (borrower member id,status), (next pay due at), (status,delinquency tier) * погашення кредиту: (loan id,initiated at), (loan id,status), (stripe payment intent id), (statement id) * кредит статті: (loan id,statement number DESC), (due date,status) * позивачів: (org id,status), (borrower member id,status), (status,expires at)

Твій всесвіт чекає.

Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.

Безкоштовно назавжди — не потрібна кредитна карта