Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-internal
Обозначение продукта по умолчанию на портале KamoMLOS в вендорах-продуктах (#11)
Звездный переключатель на каждом продукте обозначает единый портал KamoMLOS организации. (одноактивный). Gated via GET/lead-vendors/mlos-readiness: отображается только при редактировании рынка Ведущий рынок жилищной ипотеки и POS + рынок торговли MORTGAGE настроены. Отражает/редактирует прямой дефолт через PUT.../продукты/{id}/mlos-default. (i18n в P6 sweep.)
· SecurityService
P3 обозначение продукта по умолчанию backend (одноактивный) + готовность оператора
********************** Компания ONE LeadVendorProduct получила название KamoMLOS Портал автоназначения продукта; одноактивный (размещает любой другой, орг-скапированный, закрытый) через JPQL Массовые обновления. - Ведущий Контролер: ПУТ **************** GET /mlos-readiness (какой продукт по умолчанию + является ли POS + RESIDENTIAL MORTGAGE лидером рынка) Настроен рынок MORTGAGE commerce) — backs the settings gate + показывает текущее состояние. Компиляции чистые; никаких изменений схемы/общего либа.
· SecurityService
P2c ведущий первый портал backend
- MortgageVerticalResolver: разрешает RESIDENTIAL MORTGAGE LeadMarket, MORTGAGE CommerceMarket, обозначенный по умолчанию LeadVendorProduct и EFFECTIVE POS-enabled — один Детерминированная готовность считывает резервную копию как ворот настроек (#11), так и ворот портала (#12). - PortalLeadService: leads-first - createOrGetAnonymousLead (ключ к файлу cookie AccountGuid, автоназначенный продукт по умолчанию на рынке ипотеки, закрытый по умолчанию на готовность — НЕ регистрироваться; No AppMortgage, patchEstimate, and the sign-in mergeGuidIntoMember (связывает GUID с GUID). Аккаунт участника + возмещает лид(ы), отражая запись истории LeadAccount. - PortalController **************************** POST/PATCH, merge}: анонимный (org-from-host, GUID от доверенного заголовка BFF X-Kamo-Guid); слияние ***-связано. Компиляции чистые. Анонимные маршруты проходят по сети фильтров All (контроллеры самозахвата).
· kamo-internal
Админ аккаунта UI (MERGE ACCOUNTS)
AccountManager получает действие Merge Accounts (от ***************) Выберите ровно два счета клиента, выберите выжившего, необязательно сохраните дубликаты Полосатый клиент / основной член, затем сливается — возмещает всех детей на выжившего. мягко деактивирует дубликат. AccountsApi.mergeCustomer() → POST/account/customers/{uid}/merge. (i18n ключи должны быть добавлены в P6.)
· SecurityService
Инструмент слияния счетов P2a + бэкэнд транзакций P2b
P2a — слияние учетной записи администратора (требование владельца A), защищенное MERGE ACCOUNTS: - AccountMergeService: возмещает каждого ребенка через UPDATE (обходит JPA) Удаление, чтобы проигравшие лиды / приложения выжили, разоблачает глобально-уникальный аккаунт + (аккаунтная, рыночная, целевая) подписка, согласование Stripe customer id / PrimaryMember / указатель FKs (выживший-выигрыш + отказ от проигравшего переопределяется), мягко деактивирует проигравшего. Только один. - AccountController POST ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** P2b — бэкэнд группирования сделок: - LoanTransactionService: обеспечение TransactionForApp (автооднокредитная группа по созданию, идемпотентная), (перенаправлено с «LoanFileStatus via LoanTransactionStatusDeriver») **************************** (TransactionSummaryDTO) — участник-участник (D52) обобщенная на группу), backfillOrganization. - MortgageAppController: создайте () теперь автогруппы кредита; GET/транзакции (operators=org pipeline, borrower=own account). - Регистрация mlos.transaction + mlos.docs repos в SecurityServiceApplication @EnableJpaRepositories. Схема уже создана KI (P1). Компиляции чистые по сравнению с установленными shared-lib.
· kamo-shared-library
Фундамент организации P1 — первый лид / ориентированный на учет / рефактор, сгруппированный по транзакциям
Новые объекты (дополнительные; KI работает DDL): - TransactionGroupStatus enum + LoanTransactionStatusDeriver: производный групповой жизненный цикл (Created→...→Completed) скатывается из члена LoanFileStatus (никогда не хранится авторитетно). - AccountGuid (аккаунты): долгоживущий файл cookie GUID→Account (отменяется) для анонимного потока потенциальных клиентов. - AccountBorrowerParty (счета): общая идентификационная информация заемщика-заемщика (необязательно участника) + ключ doc-vault. - MemberDocument (mlos.docs): хранилище многоразовых документов уровня учетной записи/члена. - Кредитные операции Timeline (+event enum), SharedTransaction Задача (+статус/суровость): совместное групповое питание + задачи. - РЕПО для всего вышеперечисленного. Enum appends (id-stable/ordinal-safe): LoanFileStatus.SOLD BOARDED(9) — прилагается по адресу END (ORDINAL storage); +isTerminal; фиксированные исчерпывающие переключатели. - **************** - ведро с изображением-членом-ультом. ********************** Общие настройки (serviceType=null) для инструмента слияния учетной записи администратора. Колонки FK (нулевая, прикрепленная колонка Определение, нет по умолчанию — уникальный rowid/gen random uuid сиротская ловушка): LoanFile.loan transaction id **************** Lead.account guid id CommerceMarket.lead market id, **************** **************************** Дизайн: **************** Никакой версии.
· SecurityService
Авторизация самообслуживания заемщика (заемщик IDOR Guard)
Заемщик является простым членом организации без права оператора LOS; он может действовать на ОДНОГО Они являются стороной — и только этой. Слоеная охрана: сначала ворота оператора, Проверка кредитной стороны (isMemberPartyToApp). MortgageAppController: **************** Перегрузки, применяемые для получения, все 23 приложения Напишите конечные точки и 3 помощника повторного сечения. - список: операторы видят трубопровод; заемщик видит только принадлежащие приложения. - создать: оператор берет приложение (в т.ч. из свинца); заемщик самостоятельно создает свое собственное (Перенаправлено с KamoMLOS reward-gate mint) - удалить: оператор приостанавливает право ИЛИ владелец заемщика; поиски: любой аутентифицированный сеанс (ссылка перечисляет потребности в приеме); поездка остается только оператором. MortgageProgramController: закрывает уже существующий IDOR на setPersona/setSelectedProgram (org-only check) — теперь оператор-LOS-role или кредитная сторона. Операторы не изменились; заемщики скупили; перекрестный заемщик закрыл IDOR (D52).
· kamo-shared-library
Право собственности заемщика на AppMortgageService
Добавляет примитивы владения для самообслуживания заемщика (заемщик — простая организация) Участник, не имеющий права оператора LOS: - createBlankOwnedByMember(orgId, memberId): createBlank + владение печатью путем присоединения (или повторное использование) Счета, основным участником которого является заемщик. - isMemberPartyToApp (appUid, orgId, memberId): незакрытый ссудно-партийный караул - матч организации И вызывающий является основным участником / участником учетной записи приложения. - listOwnedByMember(orgId, MemberId): собственные заявки заемщика. Владение - это ссылка по дизайну ****************; Учетная запись / Учетная запись уже существует, поэтому нет схемы / KI. Только добавки (D52).
· kamo-internal
Колонка «Заемщик-путешествие» + впускной фильтр в кредитном трубопроводе
Sub=pipeline datagrid (ApplicationsPipelineConsole) теперь показывает Прогресс в направлении заемщика, чтобы сотрудники организации могли пересмотреть статус заявки как Заемщик оформляет собственный кредит через портал KamoMLOS. - колонка "Borrower Journey": государственный чип (только что запущен / Заполнение / Готов к отправке) + Определенная планка прогресса + секции n/total, с отложенным набором инструментов; '-' для уже взятых кредитов. - «Взятие браузера» фильтр ведро: кредиты с живым самообслуживанием вход в путешествие. - список Journey() API клиент + BorrowerJourneyDTO тип + ключи i18n. Источник: GET/mortgage-apps/journey (D51).
· SecurityService
Предварительно принятая заёмщиком конечная точка путешествия оператора трубопровода
Новый GET **************************** (LOS VIEW PIPELINE) возвращает Прогресс в привлечении заемщиков, чтобы управляющие трубопроводом могли наблюдать, как кредит приобретает форму, в то время как Заемщик по-прежнему обслуживает себя через портал KamoMLOS. BorrowerJourneyService пересчитывает серверную часть полноты раздела портала над каноническим графиком AppMortgage (толерантные проверки присутствия — канонические DTO и другие). Портал-клиент DTO имеет разные названия полей. Состояние = НАЧАЛ / IN PROGRESS / READY TO SUBMIT более 7 разделов предварительного представления; обратные ипотечные кредиты пропускают финансовые разделы, соответствующие порталу. Ничего не сохранилось; ограничено 300 черновиками/просмотром. BorrowerJourneyDTO - это запись на стороне службы безопасности, поэтому donotmodify остается нетронутым. Часть перепрофилирования трубопровода doc03 (D51).
· SecurityService
Контроллеры LOS принимают сеансы *** для каждого заемщика (doc03 §0.1)
BaseLosController теперь разрешает сеанс абонента через CallerSessionResolver (X-OTK-валидированный атрибут FIRST — операторы / BFF без изменений — затем первый участник) *** Откат печенья) вместо атрибута X-OTK. Это ключевой камень что позволяет порталу заемщика KamoMLOS достичь /api/security/mortgage-apps/** реальная сессия для заемщика (заемщик является простым членом организации через стандарт) Логин→OTK→validate-otk→*** flow) вместо общей учетной записи службы. Назад Все 7 контроллеров LOS имеют преимущество. Компиляции чистые.
· SecurityService
Сервер-авторитетный счетчик программ LOE-Core +/программы/оценки (doc03 §9 Фаза 2)
Портирует клиентский счетчик KamoMLOS (lib/los/scoring.ts) в SecurityService LOE-Core: LoeCoreScorer оценивает эффективный каталог программ организации (базовый уровень глубоко сливается с наложение орга) на заемщика AppSnapshot — идентичный LTV/DTI/occupancy/reserves/ Проверки VA-права / обратного возраста — возвращение ProgramScoreDTO в точном клиенте Форма программного обеспечения. Пост **************************** Сервер первый: Это происходит до удаления клиент-корера §9 фазы 3. 3 теста зеленый.
· InitializerService
Семя 17 реальных программных правил (doc03 § 9 Фаза 1)
Переносит авторитетные данные ProgramRuleset из клиентского набора правил KamoMLOS Файлы для **************** (17 кодов, извлеченных верно) и заменяет заполнитель ProgramSeederRunner's rulesetJson("{}") реальным Правила для каждого кода, загруженные с траектории. Idempotent: вставки отсутствующих программ Обновление существующих «заполнителей» до реальных данных, никогда не сбивая оператора Редактировать. Применяется при следующем запуске KamoInitializer (user-run). Пререк для фазы 2 §9 Серверный счетчик, который удаляет клиентский счетчик.
· kamo-shared-library
Реальное глубокое слияние для переопределений программ-правил (doc03 § 9 Фаза 0)
Заменяет M2 Last-write-wins mergeOverlay placeholder (который бесшумно отбрасывается) авторитетный базовый уровень на любой оверрайде организации) с рекурсивным глубокое слияние JSON: Org overrides поставляет только ключи, которые они изменяют, вложенные объекты повторяются, массивы Заменить оптом, и неправильно сформированный оверрайд не является безопасным для исходного уровня. Замкнуть ProgramRuleset заключает контракт перед сервером-авторитетным счетчиком (§ 9 Фаза 2), который Удалит клиентский счетчик. Программа/Сервис программы javadoc переназначен. 3 теста зеленый.
· kamo-shared-library
MlosExtractedCandidate Staging entity for the ingestion pipeline (D48) (недоступная ссылка)
Терминальный вывод на поле парсера MLOSIngestionService: постановочный, рецензируемый кандидат на экстракцию (сегмент/source-doc FK, targetEntity, fieldPath, cellRef, Необработанное/нормализованное значение, DECIMAL(4,3) достоверность, обзорСтатус. Кандидаты никогда не продвигают в канонические объекты каталога, за исключением RateSheetSanityGate от MLOSCatalogService + человеческое одобрение. Завершает прием субстрата **************** Экстракционный шаблон ранее существовавший. mlos.catalog уже в KI-сканировании → стол автоматически создает на Далее KI run; сервисы работают ddl-auto:none.
· kamo-shared-library
Изолированная запись профиля с наилучшими усилиями для путей с правой стеной (D47)
mergeFactsBestEffort выполняет обратную запись обогащения в своей собственной транзакции (REQUIRES NEW) поэтому сбой никогда не может отменить транзакцию абонента. Безопасная обратная запись для пути принятия решений через правовую стену (AUS / внутренние правила), Решение о записи должно сохраняться независимо. Пропускает молча, когда нет профиля. +1 тест на совместное использование (skip-When-absent / delegate-When-present).
· kamo-internal
Раздел Государственного лицензирования по члену моего профиля
Новая карта SectionCard (NMLS ID + таблица с активной лицензией на каждый штат) предоставление чекбокса и даты продления / истечения срока действия, продление <= подтверждение истечения срока действия. Оригинальное название: **************** Следующий прокси-маршрут, Зеркало TS RoleRightType и документы по дизайну/плану.
· SecurityService
Доступность API + лицензионное лидерство
Добавить MemberStateLicensingController (GET/PUT/api/security/members/{id}/) Государственное лицензирование (State LICENSING * rights with serverside) Обновление <= Исчезновение. Включить mlos.legal JPA repos. Всплывающее резюме Доступная сетка теперь уважает право на государственную лицензию.
· kamo-shared-library
Государственное лицензирование + ворота для принятия свинца
Повторное использование mlos.legal StewardLicense в качестве единого для каждого члена / штата NMLS Реестр (добавляет активное предоставление бизнеса). Добавить Member-level Member.nmlsId. Добавить общие права **************************** CreditLeadAssignmentService пропускает ипотечных кандидатов явное состояние собственности, в котором член не имеет активной лицензии.
· kamo-internal
Добавить источник в картографируемые свинцовые поля
Ведущий «источник» отображается на главной странице, но отсутствует в списке импортных полей; Добавьте его (путевой «источник») теперь, когда его поддерживает бэкэнд-импортер + CreateLeadRequest.
· SecurityService
Карта импортированной колонки в поле "источник"
Добавьте «источник» регистра в setDirectFieldOnCreateRequest, чтобы «источник» пути отображения был удостоен чести.
· kamo-shared-library
Добавьте импортируемое поле «Источник» в CreateLeadRequest + сохраните его в CreateLead
The Lead имеет свободный текст «источник» (показан / отредактирован на главной странице), но это было CreateLeadRequest не имел исходного поля, поэтому CreateLead никогда не устанавливал его. Добавьте его, чтобы ручной импорт мог сопоставить столбец файла с источником свинца.
· kamo-shared-library
Добавить ScenarioProfileSource.PRICING для сценариста FICO/ratio write-back (D45)
· kamo-shared-library
Канонический сценарий-факт позвоночника — производный генезиса + фактыJson populate + write-back + overlay matcher (D45)
D1/D45 расширяет потребление BorrowerScenarioProfile. Населяет спящий ФактыДжсон и делает его общим источником истины для фактов заемщика / кредита: - ScenarioFactKeys: один канонический факт-ключ лексики + уровень (структурный vs) Обогащение) + нормализовать (); белый список D21/производитель/потребители ссылаются на них. ScenarioFactDeriver: продвигает D18 LTV/CLTV/HCLTV + категорическое производное из MLOSPricingService в shared-lib (один дом для фактов, полученных из сущности). BorrowerScenarioProfileService: продукт FromUrla теперь населяет структурные факты (сохранение обогащения); устранение фактов () для консультативного заполнения пробелов; слияние фактов () Запись-запись, которая фильтрует до уровня обогащения (генез владеет структурой, D45.3). ScenarioFacts.fillGapsFrom(): консультативное слияние (выигрывает запрос, профиль заполняет пробелы). InvestorOverlayMatcher: чистый отказоустойчивый спичечный (только в настоящем и нарушении). Никаких изменений схемы/КИ (ранее существовала колонка FactsJson). 27 целевых испытаний зеленых.
· kamo-internal
На вкладке «Правила канала» — завершает конфигурационную поверхность §3.2
· SecurityService
Правила применимости каналов CRUD — завершает конфигурацию §3.2
создать ChannelRule/update/delete на позвоночнике с плоским сбором D31 (профильный уровень, орг) Закрытый отказ, журнал изменений WORM; контроллер / правила каналов GET / POST / PUT (удалить через Активный: ложный. Объем/канал/необходимые результаты; **************** Управление / финансирование + эффективное окно опционально. Последняя конфигурация §3.2.
· kamo-internal
Вкладка включения продукта (пер-программа, версия)
· SecurityService
Конфигурация включения продукта — по программе одноактивная, эффективная дата
**************************** (программируемый demote-then-insert) + считывает; контроллер/продукт-реализаторы GET (активные по программе)/PUT (опубликовано). тело несет в себе программный, включенный, жизненный цикл Вариант, канал Ограничение, эффективный From.
· kamo-internal
Закладка политики — конфигурация ценообразования/капитала/обслуживания с датой вступления в силу
New MortgagePoliciesTab: текущая активная версия + форма публикации-новой версии + версия история для каждой из трех политик с эффективными датами; configTypes/configApi + вкладка регистрация.
· SecurityService
Эффективно датированные политики профиля — ценообразование / капитал / обслуживание
Новый MlosPolicyWriteService (изолированный; его собственные репозитории, так что конфигурация-коллекция записывается) Сервис не тронут: одноактивная демо-версия затем вставляется на тот же аудит позвоночник. Контроллер /ценовая политика, /капитальная политика, /сервисная политика GET (текущий +) История) / PUT (опубликовать новую версию). Инварианты SCRA/FDCPA остаются верными.

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта