Перейти к содержимому
KAMOUniverse

Журнал изменений

Что нового.

Каждое усовершенствование платформы, как только она появится.

  1. · kamo-shared-library

    Руководящие правила + условия + оценщик, совместное использование двигателя предикатов LLPA (фаза 2 срез 8)

    Принцип-правило предиката конъюнкта §8.1 шага-2. Повторяет пересмотренное условие Slice-4 оценщик вместо дублирования критически важной для безопасности логики предикатов. Рефактор DRY (нерегрессивный — тел оценки байт-идентичный): - Интерфейс предварительного состояния **************** - MlosAdjustmentCondition + MlosGuidelineRuleCondition оба реализуют его. - AdjustmentConditionEvaluator generalized to PredicateCondition; adjustmentMatches -> allConditionMatch (Список <? расширяет предикатное состояние>). Тест Slice-4 повторяет зеленый (9), оба предыдущих исправления HIGH не повреждены. Новое: - MlosGuidelineRule (mlos guideline rule): guidelineVersionId FK, productId FK, ruleCode Версия), вердикт (Правило Вердикта ELIGIBLE/INELIGIBLE/STIPULATED §10.3 vocab), требование **************************** требование Значение, серьезность, SourceSectionRef, Unconditioned flag. + MlosGuidelineRuleCondition (реализует PredicateCondition). - GuidelineRuleEvaluator (ungated @Component) + GuidelineEvaluation + GuidelineOutcome: правило загорается, когда все его условия (через общего оценщика); НЕЛИГИБИЛЬНО любое уволенное НЕЛИГИБИЛЬНОЕ правило; собраны. 8 GuidelineRuleEvaluatorТест зеленый. 2-агент: рефактор, подтвержденный байт-идентичным/нерегрессивным; фиксированный MEDIUM сверхблоковая опасность — правило без одеяла с нулевыми условиями теперь не обеспечивает безопасность (не стреляет) Полуавторское правило INELIGIBLE не может бесшумно блокировать каждого заемщика (зеркала с набором стоимости) незакрытый); явный "безусловный" флаг для преднамеренных общих правил. Никаких изменений кода KamoInitializer.

  2. · InitializerService

    Руководящий принцип-версия непересекающийся частичный-уникальный индекс (фаза 2 Срез 7)

    SchemaCleanupRunner: ux guideline version active part-unique ON mlos guideline version (organization id, product id) Где статус = «Активный» и эффективный IS NULL — одна открытая/текущая версия ACTIVE Guideline per (org, product); зеркала ux rate sheet version active (doc 02 §6.5). Каталог repo pkg уже зарегистрирован (раздел 1).

  3. · kamo-shared-library

    MlosGuidelineVersion (WORM) + GuidelineVersionResolver (Phase-2 Slice 7)

    Неизменяемый эффективный датированный руководящий принцип VERSION — матрицы приемлемости контейнеров **************** и будущие руководящие правила отменяются. Верная репликация из рассмотренного Slice-1 MlosRateSheetVersion позвоночник, закодированный на продукт (vs на инвестора). - MlosGuidelineVersion (mlos guideline version): productId FK, revisionLabel, effective from/until, sequence no, supersedes id self-FK, status, source document id FK, kb article guid + kb article version no (§6.4 KB-prose drift-pin, immutable). Частичная изменчивость WORM (@PostLoad snapshot + @PreUpdate diff): замораживает личность/контент, разрешает только DRAFT-> Действительный, ACTIVE->SUPERSEDED, ACTIVE->RETIRED + write-once effective until close. Руководящий принципVersionStatus **************** - GuidelineVersionResolver (gated mlos.catalog.enabled): разрешение окна в момент времени, никогда Последний ряд, броски на перекрытии. Зеркала EffectiveVersionResolver. - 17 зелёных тестов (6 Руководящих принципов VersionResolverTest + 11 ******************* KamoInitializer добавляет ux guideline version active Partial-unique (один открытый ACTIVE на один продукт).

  4. · kamo-shared-library

    Матрица приемлемости + ячейки + соответствующая ячейка (фаза 2, срез 6)

    Подложка фильтра этапа 2 § 8.1 (конъюнкт ячейки; направляющее правило + ворота AUS) позже. - MlosEligibilityMatrix (mlos eligibility matrix) per ******************* Дата выхода: REUSES locked URLA **************** @Enumerated(STRING) на новых колонках (FK-free, никогда их не редактирует); руководство VersionId soft-FK (отменяется до рекомендаций). - MlosEligibilityCell (mlos eligibility cell): типизированное окно приемлемости - fico low/high, property type (locked PropertyTypeUrla), unit low/high, loan amount low/high, state set id (FK MlosValueSet) Ограничение значение. Ценообразование/лимит номеров сырых BigDecimal (каталожная конвенция). - MlosMatrixType {MAX LTV,MAX CLTV,MAX DTI} - дискриминатор, для которого отношение предел значения колеблется. - EligibilityCellMatcher (ungated @Component) + ScenarioFacts reuse + Eligibility Результаты **************************** + Право на участие Результат: найти содержащую ячейку поперек **************************** RATIO-DISPATCH by matrix type (ltv/cltv/dti) vs предел; отсутствующий требуемый Attr → CANNOT PRICE (поднятый до покрытия); состояние закрыто; перекрытие Самый ограниченный (вскрытый в деталях). 12 EligibilityCellMatcherTest зеленый. Enum-reuse + спецификация из исследовательского рабочего процесса; состязательно рассмотренный (2-агент): фиксированное отношение матрицы типа диспетчер + подъемный коэффициент CANNOT PRICE + перекрытие видимости + падение незаслуженного ДРУГОГО. Нет. Изменение кода KamoInitializer (каталога repo pkg зарегистрированного Slice 1) — только повторный запуск.

  5. · kamo-shared-library

    MlosMarginSchedule + MarginScheduleResolver (Phase-2 Slice 5)

    Маржинальный уровень инвестора — термин «+ маржинальный график» § 8.1 шага-4 сборки цен. - MlosMarginSchedule (mlos margin schedule): rateSheetVersionId FK, productId (null=all), marginType, Кредит Низкий/Высокий диапазон, стоимость (сырой BigDecimal), CompBasis (BORROWER PAID |LENDER PAID). CompBasis enum — соглашение Comp BASIS (как выплачивается маржа), а не сумма плана LO; LO comp никогда не является забивающим фактором (doc 13 § 8.5). - MarginScheduleResolver (незарегистрированный @Component): applicable(schedules, loanAmount, compBasis) = band содержит количество (включительно, null=open) и спички компа; суммарная маржа = значения Σ (ноль, если нет). 5 MarginScheduleResolverTest зеленый. Ценообразование исходных чисел BigDecimal (коррекция Slice-3). Изменение кода KamoInitializer (каталожный репо) pkg registered Slice 1; indexes entity-declared) — только повторно.

  6. · InitializerService

    CHECK (Phase-2 Slice 4) — платформенная собственность

    SchemaCleanupRunner: ADD CONSTRAINT mlos value set ownership chk CHECK (platform owned = (organization id IS NULL)) — doc 02 §6.2: таксономия платформы Платформа, принадлежащая нулевой орг; набор, специфичный для орг, скопирован. Двухкондиционное «=... не имеет значения» Форма выживает после зачистки в белом списке. Каталог repo pkg уже зарегистрирован (раздел 1).

  7. · kamo-shared-library

    Корректировки LLPA + наборы значений + оценщик условий (этап 2 Срез 4)

    Слой LLPA/регулировки + детерминированный предикатный двигатель для соответствия шагу-4 §8.1 ("an) корректировочные соответствия iff Все его условия выполнены. - MlosPriceAdjustment (mlos price adjustment): rateSheetVersionId FK, productId (null=all), регулировкаГруппа, эксплуатация (ADDITIVE |MULTIPLICATIVE), значение, stackOrder, capValue, этикетка. - MlosAdjustmentCondition (mlos adjustment condition): priceAdjustmentId FK, атрибут, оператор **************************** numLow/numHigh, valueSetId FK. - MlosValueSet (mlos value set) + MlosValueSetMember (mlos value set member) наборы; док 02 § 6.2 исключение, принадлежащее платформе (организация Id аннулируемая + флаг, принадлежащий платформе) только SET; член не несет зеркала orgId - владение через набор, нет поверхности дрейфа. - AdjustmentConditionEvaluator (ungated @Component) + ScenarioFacts: Numberic ops vs num low/high, set ops vs. resolution members; Missing fact → no match; SET OPS FAIL CLOSED on empty/null member набор (вешащийся мягкий набор значений FK никогда молча не соответствует всем) и нулевой растворитель-безопасный (нет NPE). 9 ************* Зеленый. Обратно рассмотренный (2-агентный рабочий процесс): исправлено 2 ошибки HIGH evaluator (NOT IN отказоустойчив на пустом) set; NPE on null resolver) + выпало избыточное зеркало участника orgId за обзор. цены число BigDecimal (коррекция Slice-3). KamoInitializer добавляет стоимость владения CHECK.

  8. · kamo-shared-library

    MlosBasePriceGrid + NoteRateLadder дорогие ячейки (фаза 2 срез 3)

    Ценовые ячейки / ячейки цен — первый объект каталога для FK BOTH версии с таблицей ставок (срез 1) И продукт (срез 2); основа сборки цен § 8.1. - MlosBasePriceGrid (mlos base price grid): rateSheetVersionId FK, productId FK, noteRate lockPeriodDays, basePrice (цена-100), basePoints, min/maxLoanAmount, ioFlag. Композитный UNIQUE (версия, продукт, note rate, lock period days, io flag) - объект, объявленный (io flag NOT NULL → полный Уникальный, без сырых DDL. - NoteRateLadder (неопубликованный @Component): par = ячейка ближайшая цена-100; ближайшая цена (цель); связи -> более низкая ставка ноты (doc 02 § 8.1 шаг 5). 5 NoteRateLadderTest зеленый. CODE-VERIFIED CORRECTION: doc 02 §6 говорит EmbMoney/EmbPercent, но заблокированный LoanPricingSnapshot (якорь воспроизводимости) использует RAW BigDecimal — InterestRate DECIMAL (9,6), пункты DECIMAL (9,4), EmbPercent (9,4) не может соответствовать 6-десятичной скорости. Цены на скриншоты числа используют необработанные BigDecimal-совпадающие LoanPricingSnapshot (note rate 9,6/base price+points 9,4/) Сумма займа 18,2. No KamoInitializer code change (каталог repo pkg зарегистрирован Slice 1); index entity-declared) — только повторный запуск.

  9. · InitializerService

    Mlos product ARM-consistency CHECK (Phase-2 Slice 2)

    SchemaCleanupRunner: ADD CONSTRAINT **************** CHECK ((amortization type = 'ARM') = (arm fixed period months IS NOT NULL)) — фиксированный период Заявленный IFF продукт является ARM (doc 02 § 6.6). Форма «=... IS NOT NULL» (не голая цифра в списке) Сохранился общий список белых листов CHECK. Каталог repo pkg уже зарегистрирован в разделе 1.

  10. · kamo-shared-library

    MlosProduct + слой таксономии продукта MlosArmIndex (фаза 2)

    Позвоночник продукта каталога (doc 02 §6.3): все ценится ниже по течению (базовая цена) grids, eligibility matrices, guideline rules) FKs to MlosProduct.uid. - MlosProduct (mlos product): per-investor product - investorId FK, productCode, амортизация Тип (REUSES заблокирован URLA AmortizationType), termMonths, armFixedPeriodMonths, armIndexId FK, loanClass, тип, соответствие, losProgramCode (REUSES locked 17-значный LoanProgramCode, §6.4), РуководствоVersionPointer (настоящий FK-by-id к будущему MlosGuidelineVersion.uid, недействительный), активный. Для сравнения: arm fixed period months set IFF amortization type=ARM. - MlosArmIndex (mlos arm index): indexName, marginBps, начальные/периодические/пожизненные колпачки + пол EmbPercent (doc 02 § 6 rate-via-EmbPercent), adjustMonths. - 2 новых номера LoanClass / Документация Тип (каталог-специфический; тип документации - не QM § 3.5) Класс док-программы, отличный от Slice-1 MlosDocType. Base = BaseUuidEntity; orgId = Long @JsonSerialize (ToString). 5 MlosProductInvariantТест зеленый. KamoInitializer добавляет mlos product ARM-consistency DB CHECK (каталог repo pkg уже зарегистрирован) в разделе 1). Отсрочка: цена **************** + автор.

  11. · InitializerService

    Регистрационные репозитории каталогов + индекс без перекрытия в виде таблицы ставок (этап 2, раздел 1)

    - @EnableJpaRepositories += com.kamo.z.shared.mlos.catalog (новый MlosInvestor/) ************* Репозитории; организации, уже охваченные @EntityScan. - SchemaCleanupRunner: ux rate sheet version active part-unique index ON mlos rate sheet version (organization id, investor id) Где статус = "Активный" effective until IS NULL — поддерживает «одну открытую ACTIVE версию на одного инвестора» инвариант без перекрытия (doc 02 §6.5; CRDB не имеет ограничения на исключение из диапазона).

  12. · kamo-shared-library

    Происхождение каталога + эффективная датировка позвоночника (фаза 2, срез 1)

    Самый маленький отгрузочный кусочек каталога Фазы-2 (doc 02 §6): цепочка происхождения ImgDat -> MlosSourceDocument -> MlosRateSheetVersion и неизменяемая эффективная дата Версия позвоночника с разрешением Point-in-time. Substrate-first (без MLOSCatalogService) Автор; это неизменный каталог-PK фонд DecisionInput будет FK. Новый pkg com.kamo.z.shared.mlos.catalog: - MlosInvestor (регистрация per-org; Short code unique per org), MlosSourceDocument (тонкий) anotation over locked ImgDat; soft-FK img dat id, never restores bytes, doc 02 §6.4. - MlosRateSheetVersion: неизменяемая версия с эффективной датировкой (effective from/until window, заменяет self-FK, sequence no, status lifecycle, source document FK, cutoff time @PostLoad snapshot + @PreUpdate diff: замораживание Ценовые/идентификационные коды, разрешены только DRAFT->ACTIVE, ACTIVE->SUPERSED, ACTIVE->RETIRED и однократное закрытие effective until. Нет триггера DB (CRDB не может доработать до 24.3). - EffectiveVersionResolver (gated mlos.catalog.enabled): разрешение «точка-в-время» Версия, чье окно [effective from, effective until] CONTAINS оценено as of, никогда «Последний ряд» присоединяется; броски на эффективном перекрытии окна (глубокая защита, док 02 §6.5/§8.1). 6 enums **************** RateSheetVersionStatus) + 3 РЕПО. Base = BaseUuidEntity (doc 02 §6.1); orgId=Long @JsonSerialize (ToString) (проверено кодом: Organization.id является уникальным rowid, а не «UUID» дока 02. 17 тестов зеленых (6 решающих точек-в-времени) + 11 часов охраны. KamoInitializer добавляет каталог repo pkg + ux rate sheet version active Уникальный неперекрывающийся индекс.

  13. · kamo-shared-library

    Перегрузка ворот по доверительному порогу для арендатора (config→gate wiring)

    Additive DecisionGate.evaluate (стадия, уверенность, юридические требования) BigDecimal tenantThresholdOverride) — автономно настроенная стена для арендатора решена *************, этаж. The Правовая стена остается абсолютной, и переопределение все еще настигается неперестраиваемым Пол безопасности (автономия никогда не может автоматически действовать под ним). Null Override возвращается платформа по умолчанию; существующие 3-arg оценивают делегатов с нулевым значением, поэтому Поведение шлюза/решения Спины + их тесты не изменились. Безопасный пол() Геттер, поэтому звонящий решает порог арендатора на том же этаже. Это подсоединяет конфигурационный фундамент Фазы-1 к воротам принятия решения: теперь двигатель может работать в режиме реального времени. do gate.evaluate (стадия, конфеты, юридические, ****************) Исполнитель: ******************* 9 DecisionGateTest (4 новых) + 5 DecisionSpineTest + 6 MlosActivationServiceTest зеленый.

  14. · InitializerService

    Частичные уникальные индексы + инварианты обслуживания (завершение конфигурации фазы-1)

    SchemaCleanupRunner DDL для новых доменов mlos.config @EnableJpaRepositories; Hibernate ddl-auto:update создает таблицы: Одноактивные частичные уникальные индексы (WHERE is active=true AND effective to IS NULL) mlos pricing policy / mlos capital policy / mlos servicing policy (lender profile id) + mlos product enablement (lender profile id, program id) — Hibernate не может испускать индексы WHERE. Неизменные инварианты: CHECK scra enforced=true + fdcpa enforced=true (=-CHECKs, выживите в списке белых).

  15. · kamo-shared-library

    Полные конфигурационные домены Фазы-1 + MlosActivationService (слайд 5)

    Завершает инвентаризацию объекта конфигурации doc 04 **************** - Политика синглтонов (один-актив-на-профиль, дата-факт/только приложение): PricingPolicy (ppeSourcePriority List<String> — типизированный MortgageVendorType) Отложенный на домен поставщика §5; NO LO-comp, CapitalPolicy (NO pullThroughPct) + Концентрация капитала Ограничить ребенка, ОбслуживаниеПолитика (scra/fdcpa immutable) инварианты. Частичные уникальные индексы + scra/fdcpa CHECKs идут в KamoInitializer. - ProductEnablement (единственная активная программа; канал Ограничение @ElementCollection); ProgramId UUID — Program.id — это UUID, а Doc’s Long — это ошибка, проверенная кодом. - Семья инвесторов: InvestorConfig + InvestorOverlay + DeliveryRule (повторное использование) **************** — no dup) + Правило обязательств (reuses CommitmentType). - RiskOverlay (ruleExpression JSONB String). 11 new enums. - MlosActivationService @Component (gated mlos.config.enabled): resolveProfile (org) Ид + **************** сцена, этаж — галстуки LenderProfile + автономия config + AutonomyResolver (пер-арендатор источника для стены доверия ворот). 23 mlos.config тест зеленый (MlosActivationService 6 новый). Базовый шаблон конфигурации @Id UUID + @Embedded EmbRecordState; Children no EmbRecordState. План: **************************** (расширенный). Отсрочка: полноэкранная/модульная/вендорная матрица активации + валидацияПрофиль + Служба безопасности самоисцеление; *.config.history append-only tables; predicate evaluators.

  16. · kamo-shared-library

    Двигатель пригодности канала (фаза 1 срез 4)

    Детерминированный наиболее ограничительный растворитель (doc 04 § 8) — Продукт x Канал x Инвестор -> {ALLOWED |DISALLOWED, executionPath, authorityModel, fundingBehavior} - ChannelApplicabilityRule entity: **************** условиеExpression (JSONB String, Program.rulesetJson precedent) **************** Даты + EmbRecordState. Priority Выдается из области применения (не хранится). Тот же шаблон базы конфигураций. - 5 номеров: RuleScope(+приоритет() Investor=0..Tenant=3), Channel, Applicability, **************************** (ГИБРИД решил по кредиту на них), FundingBehavior (5, в т.ч. PORTFOLIO HOLD — DeliveryRule’s 4-value unify deferred). - ChannelApplicabilityResolver @Component (невостребованный, без гражданства): пустой/любой => Ограничено (безопасное наиболее ограничивающее чтение двусмысленности § 8.2); с аттрс из сильнейшего размаха. Рекорд ChannelResolution. 5 **************** Зеленый (17 тестов mlos.config). условие Экспрессия оценщик предикатов + фильтр эффективного датирования + штифт решения + MlosActivationService Отсрочка. mlos.config уже в сканировании KamoInitializer — только повторный запуск. План: ****************************

  17. · kamo-shared-library

    AuthorityConfig (орган по андеррайтингу + правительственные делегации) — Фаза 1 Слайд 3

    AuthorityConfig (singleton per LenderProfile): андеррайтинг DELEGATED/NON DELEGATED/HYBRID + manualUwAllowed + govtDelegation Set {FHA DE,VA SAR LAPP,USDA,NONE} via @ElementCollection (коллекционная таблица) mlos authority govt delegation) — ворота внутреннего правительства UW против реферала агентства. HasGovtDelegation() helper (HYBRID/channel resolution deferred). - UnderwritingAuthority + GovtDelegation enums + AuthorityConfigRepository. - Тот же шаблон базы конфигураций (руководство @Id UUID + @Embedded EmbRecordState); UNIQUE(lender profile id) singleton. Первый @ElementCollection в Mlos. 3 AuthorityConfigTest green (12 тестов mlos.config). Mlos.config уже в KamoInitializer scan — повторный запуск создает mlos authority config + таблицу сбора.

  18. · kamo-shared-library

    Конфигурация автономности ИИ + растворитель безопасного пола (фаза 1 срез 2)

    - AiAutonomyConfig (singleton per LenderProfile; AutonomousLevel) **************** GlobalDefaultThreshold DECIMAL(4,3), AutoExecuteEnabled + AutonomyStageOverride (в профиль, этап); stageKey повторное использование LifecycleStage — отдельного PipelineStage не существует; TrustThreshold + AutoExecuteEnabled. Тот же шаблон базы конфигураций (руководство @Id UUID + @Embedded) EmbRecordState); UNIQUE (lender profile id) singleton + UNIQUE (profile,stage key). AutonomyResolver @Component (невостребованный, без гражданства, как DecisionGate): эффективный порог = max (stageOverride?:global, safetyFloor) — автономия настраивает ТОЛЬКО стену доверия и НИКОГДА не может опустить ненастраиваемый пол платформы (doc 13 § 8.7); сверхмировой. Источник для стены доверия ворот (проводка отложена). 5 AutonomyResolverTest + 4 LicensingResolverTest green (TDD). Индексы, объявленные юридическими лицами. mlos.config уже в сканировании KamoInitializer — повторный запуск создает 2 новых таблицы.

  19. · InitializerService

    Регистрация mlos.config repo pkg (Фаза-1 Срез 1)

    Добавить com.kamo.z.shared.mlos.config на @EnableJpaRepositories so KamoInitializer mlos lender profile + mlos licensing entry. Индексы (в том числе). УНИКУ market id) являются юридическими лицами, объявленными через @Table — SchemaCleanupRunner DDL не требуется.

  20. · kamo-shared-library

    LenderProfile + LicensingEntry config foundation (Phase-1 Slice 1)

    Новый фонд com.kamo.z.shared.mlos.config (doc 04 §3): - LenderProfile (root, UNIQUE per MORTGAGE marketId) - soft-FKs locked Организация (Long) + CommerceMarket (UUID) по id. MarketId является UUID (CommerceMarket.id - это gen random uuid; Doc 04 "Long FK" - это проверенный код) Ошибка, тот же случай, что и AiDecision.loanFileId. Профиль Версия для повторения. - Лицензионное разрешение (лицензионное право на государственную компанию, отличное от лицензии Стюарда) - лицензионный номер типа 8; код состояния ISO-3166-2; статус хранения NO, вычисленный от даты вступления в силу / истечения срока действия через isEffectiveOn() (doc 04 §7.3). - LicensingResolver@Component (gated mlos.config.enabled): isTenantLicensed() профиль, состояние, тип) дата-ориентированный; раскрытая юрисдикция => ложный (акт заблокирован). - Базовый шаблон конфигурации: ручной @Id UUID + @Embedded EmbRecordState (НЕТ) BaseUuidEntity — ее временные метки столкнутся; док 04 § 3. 4 LicensingResolverTest Green (TDD). Индексы, объявленные организацией (UNIQUE market id). Отсрочка: **************** Синглтоны; MlosActivation Сервис + Служба безопасности загрузка самоисцеление.

  21. · DaemonService

    DaemonService compliance-timer SLA sweep (удочеритель таймера)

    Первый пользователь таймеров соответствия MLOS: кварцевая работа (каждые 5 минут) ****************, чтобы перевернуть ОСАГО, но в прошлом (AdverseActionTimer) + Часы Reg X (RegXTimer) для ИСПОЛЬЗОВАНИЯ ПОЛУЧШЕННОГО заемщика Мы не можем молча пробить нормативный срок. - ComplianceTimerSweepJob (Quartz Job) + QuartzConfig JobDetail/Trigger; таймер @Autowired (обязательно = ложный) + флаг включения по умолчанию, поэтому работа безопасен независимо от конфигурации. - @EnableJpaRepositories += **************************** - configmap: mlos.compliance.enabled=true (активирует сервис совместного пользования) + **************************** {enabled:true, cron:'0 */5 * * *?'}. Безопасное отсутствие операции, в то время как таблицы таймеров пусты (пока нет таймеров рычагов двигателя).

  22. · kamo-shared-library

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

    Перевернуть каждый ARMED-но-прошлый-срок действия AdverseActionTimer + RegXTimer на EXPIRED (прочный сигнал эскалации на поверхности экрана управляющего; событие) Выброс в очередь соблюдения является последующей мерой. Возвращает счет; пустой таймер Стол - безопасная операция. 2 новых теста (12 ComplianceTimerService) Тест зеленый.

  23. · kamo-shared-library

    Передача лицензии Wire в DecisionSpine (Slice 2b-ii)

    DecisionSpine.record() теперь штемпели StewardTask.assignedMemberId Стюард-Ассигнатор, когда маршрутизированное решение несет юрисдикцию кредита: - DecisionRequest получает факультативный предмет StateCode (ISO-3166-2) + actType (лицензионный акт). Когда оба присутствующих и стюард-ассигнатор бобов существует (mlos.legal.enabled), маршрутизированное задание назначается стюарду, лицензированному в В противном случае он открывается без назначения (управляющий утверждает это). StewardAssigner вводится в качестве опционального врача через ObjectProvider. Позвоночник работает без mlos.legal.enabled. Back-compat 6-arg Конструктор сохранил — 4 существующих DecisionSpineTest проходят без изменений. 29 mlos test green (решение Spine 5, StewardAssigner 5, LegalRegister 9), Комплаенс Таймер 10. Только код — никаких изменений схемы, никакого запуска KamoInitializer.

  24. · kamo-shared-library

    Лицензионная компания StewardAssigner (Slice 2b-ii)

    Добавляет селектор стюарда с лицензией (doc 03 §3.2; doc 01 §6 #9) — выбирает Стюард, чья MLOS StewardLicense действительна сегодня для требуемой лицензии акта тип в состоянии заемщика, сбалансированный до наименьшего открытого StewardTasks Самый низкий член Id; пустой, когда ни один не охватывает юрисдикцию. - StewardAssigner @Component (gated mlos.legal.enabled) over StewardLicense + StewardTask repos — читает реестр ворот MLOS, а не закрытые ядра. Лицензия (не донотмодифицировать deps; избегает член-> (orgId,userId)-> Лицензия присоединиться). StewardLicense.isValidOn (дата) — единственный источник истины для лицензирования на основе даты (вычисляется, никогда не хранится); **************************** Рефакторирован на него. ********************** (кандидатский пул). 5 StewardAssignerTest green; 9 LegalRegister Тест зеленый (всего 14). Никакой схемы Изменение (без запуска KamoInitializer). Substrate-first — проводка в DecisionSpine.record() ROUTE TO HUMAN to stamp assignedMemberId является продолжением.

  25. · InitializerService

    Регистрация mlos.compliance repo pkg (Slice 2c-i)

    Добавить ******************* в @EnableJpaRepositories so KamoInitializer mlos adverse action timer + mlos regx timer. Индексы, объявленные через @Table — SchemaCleanupRunner DDL не требуется.

  26. · kamo-shared-library

    ECOA + подложка таймера Reg X (решающий срез 2c-i)

    Новый пакет **************** (doc 03 §2.8) — принадлежащий Камо Аналоги комплаенс-таймера заблокированного donotmodify. Тридтаймер. Субстрат первый: - AdverseActionTimer (ECOA/Reg B 30-дневные часы; см. Kind ECOA AA/COUNTEROFFER) INCOMPLETE NOA + RegXTimer (функциональное обслуживание; dutyKind) **************************** изменчивый **************** мягкий кредитFileId ref Изоляция жильцов. Индекс нарушения (status, deadline at). - СоответствиеTimerStatus enum + 2 РЕПО с ******************* - ComplianceTimerService @Component (gated mlos.compliance.enabled): таймеры оружия, кодирует нормативные дневные счета (30/36/120/5, заблокированные тестами), КОНКУРЕНЦИЯ Нужен четкий крайний срок, обнаружение нарушений с помощью инъекционных часов, поиск зачисток. 10 ComplianceTimerServiceTest Green (TDD). Индексы, объявленные через @Table. DaemonService SLA-эскалация + BLOCKED->STALE отложена (вызывает поисковиков). Исключено: ComplianceFinding (FK donotmodify). TridTimer, RBPN/FCRA Обстоятельства, измененные обстоятельства.

  27. · InitializerService

    Регистрация mlos.legal repo pkg (Slice 2b)

    Добавить com.kamo.z.shared.mlos.legal на @EnableJpaRepositories so KamoInitializer mlos licensed act registry / mlos ron eligibility / mlos steward license. Все индексы объявляются через @Table — SchemaCleanupRunner DDL не требуется.

  28. · kamo-shared-library

    Осведомленный государством субстрат правового реестра (раздел 2b)

    Новый пакет com.kamo.z.shared.mlos.legal — производитель гринфилда Абсолютная правовая защита DecisionGate (doc 03 §3.2). Подложка первая, нет Усыновитель: - LicensedActRegistry (platform ref, per act+state) - выполняет этот регламентированный акт Юридически требуется лицензированный человек? Уникальный (act type, state code). - RonEligibility (platform ref, per state) - ronAllowed/ipenRequired + Токены правил ввода в эксплуатацию/подписи/выравнивания свойств. - StewardLicense (tenant-scoped, keyed to memberId) - NMLS-by-state licensure. Нет сохраненной колонки состояния: вычисляется с даты вступления в силу<=today<=expiresAt (doc 13 §4.3 исправления реестра переопределяет поле inline статуса doc 03). - LegalRegistry @Component (gated mlos.legal.enabled, default off): Юридически требуетсяHuman / stewardLicensedFor (на основе даты) / ronAllowedIn. StateCode - ISO-3166-2 String (международно-готовый; USStateType - мертвый код). Индексы, объявленные через @Table. 9 Юридический регистр Тестовый пропуск (TDD). Составляет отгруженный DecisionGate по контракту — никаких правок решения / стюарда. Лицензионное задание StewardTask перенесено на следующий кусочек.

  29. · InitializerService

    Регистрация mlos.steward + mlos.orchestration repos; схема Slice-2a

    - KamoInitializerApp @EnableJpaRepositories: добавьте накопленный репо MLOS пакеты **************************** плюс esign/personal loans, поэтому KamoInitializer владеет их схемой. - SchemaCleanupRunner: generic@Enumerated whitelist-CHECK sweep; partial/ Уникальные индексы + FKs для **************** **************************** Индексы Slice-2a теперь (@Table), поэтому блок Slice-2a является комментарием без операции.

  30. · kamo-shared-library

    Slice 2a: OrchestrationState + StewardTask + DecisionSpine

    OrchestrationState (per-loan-stage GREEN/BLOCKED/COMPLETE) + StewardTask enums + DecisionSpine (@ConditionalOnProperty mlos.spine.enabled): составляет отгруженный DecisionGate + AiDecision WORM ledger + транзакционный аутбокс в одном tx — ROUTE TO HUMAN открывает задачу + блокирует этап; разрешает () пишет решение HUMAN OVERRODE + разблокирует. Неизменные государственные образования (нет @PreUpdate). 4/4 Мокито тест зеленый.

Ваша вселенная ждет.

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

Бесплатно навсегда — не требуется кредитная карта