Nenda kwenye maudhui
KAMOUniverse

Mabadiliko

Nini kipya.

Kila kuboresha jukwaa, kama ni meli.

  1. · SecurityService

    P4 member document vault backend (reusable docs across loans)

    - MemberDocumentService: upload a doc ONCE at AccountBorrowerParty scope → ImageService creates an Img in the auto-created imaging-member-vault bucket **************** hashes computed server-side) + MemberDocument catalog row; list by party/account. Fail-closed loan-party guard (isMemberPartyToPartyAccount). - MemberDocumentController /api/security/member-documents (POST upload multipart, GET list): operators manage any party's vault (LOS_VIEW_PIPELINE); a borrower only their own account's parties. The vault Img is the reuse anchor RequirementSatisfier(imgId) points at to satisfy per-loan requirements across many loans (satisfy-wiring is the next slice). Compiles clean; no schema change (P1 entities).

  2. · kamo-internal

    Malipo ya mkopo - orodha kwa kila mpango, sio kwa mkopo (mmiliki req)

    ApplicationsPipelineConsole now lists ONE row per LoanTransaction (its representative loan + any not-yet-grouped legacy loans), with a pinned 'Deal / Status' column showing the derived group status chip, an N-loans chip for multi-loan deals, and a denied-exception flag. Fetches **************** (+ TransactionSummaryDTO type) and joins to the loan rows. Buckets/filters/journey re-based onto the transaction-representative rows.

  3. · kamo-internal

    KamoMLOS portal default-product designation in vendors-products (#11)

    A star toggle on each product designates the org's single KamoMLOS portal auto-assign product (single-active). Gated via GET /lead-vendors/mlos-readiness: shown only when the edited market IS the org's residential-mortgage lead market AND POS + a MORTGAGE commerce market are configured. Reflects/edits the live default via PUT .../products/{id}/mlos-default. (i18n in the P6 sweep.)

  4. · SecurityService

    P3 default-product designation backend (single-active) + operator readiness

    - **************** designates ONE LeadVendorProduct as the org's KamoMLOS portal auto-assign product; single-active (demotes any other, org-scoped, fail-closed) via JPQL bulk updates. - LeadVendorController: PUT **************** and GET /mlos-readiness (which product is default + whether POS + RESIDENTIAL_MORTGAGE lead market + MORTGAGE commerce market are configured) — backs the settings gate + shows current state. Compiles clean; no schema/shared-lib change.

  5. · SecurityService

    P2c leads-first portal backend

    - MortgageVerticalResolver: kutatua org ya RESIDIAL MORTGAGE LeadMarket, MORTGAGE Soko la Biashara, lililochaguliwa la LeadVendorProduct, na POS POS POS POS POSITIVE - moja Utayari wa kuamua kusoma kuunga mkono lango la mipangilio (#11) na lango la bandari (#12). Huduma ya PortalLead: inaongoza-wa kwanza - createOrGetAnonymousLead (iliyowekwa kwenye kidakuzi cha AkauntiGuid, auto-assigned bidhaa default katika soko mikopo, kushindwa-kufungwa juu ya utayari - NO signup, Hakuna njia ya mkato, njia ya mkato na njia ya mkato. Akaunti ya mwanachama + reparents kuongoza (s), mirroring kugawa historia ya LeadAccount anaandika. Udhibiti wa Portal Kwa mfano, *** Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... (kutoka kwa mwenyeji, GUID kutoka kwa kichwa cha kuaminika cha BFF X-Kamo-Guid; kuunganisha ni ***-kufunga. Viungo safi. Njia zisizojulikana hupitisha mnyororo wa filter All (controllers self-gate).

  6. · kamo-internal

    Account-merge admin UI (MERGE_ACCOUNTS)

    AccountManager gains a Merge Accounts action (gated by **************** select exactly two customer accounts, pick the survivor, optionally keep the duplicate's Stripe customer / primary member, then merge — reparents all children onto the survivor and soft-deactivates the duplicate. accountsApi.mergeCustomer() → POST /account/customers/{uid}/merge. (i18n keys to be added in the P6 sweep.)

  7. · SecurityService

    P2a account-merge tool + P2b transaction backend

    P2a — admin account merge (owner requirement A), gated by MERGE_ACCOUNTS: - AccountMergeService: reparents EVERY account_uid child via native UPDATE (bypasses JPA orphanRemoval so the loser's leads/apps survive), dedups the globally-unique account_members + (account,market,target) subscriptions, reconciles stripe_customer_id / primaryMember / pointer FKs (survivor-wins + keep-from-loser overrides), soft-deactivates the loser. Same-org only. - AccountController POST **************** gated by MERGE_ACCOUNTS (or god). P2b — deal-grouping backend: - LoanTransactionService: ensureTransactionForApp (auto single-loan group on create, idempotent), deriveStatus (rolled up from member LoanFileStatus via LoanTransactionStatusDeriver), **************** (TransactionSummaryDTO), isMemberPartyToTransaction (D52 generalized to the group), backfillOrganization. - MortgageAppController: create() now auto-groups the loan; GET /transactions lists per-transaction (operators=org pipeline, borrower=own account). - Register mlos.transaction + mlos.docs repos in SecurityServiceApplication @EnableJpaRepositories. Schema already created by KI (P1). Compiles clean against installed shared-lib.

  8. · kamo-shared-library

    Msingi wa chombo cha P1 - risasi ya kwanza / akaunti-centric / refactored

    Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ... « Wafanyabiashara wa Wafanyabiashara wa Wafanyabiashara wa Wafanyabiashara wa Wafanyabiashara + LoanTransactionStatusDeriver [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) cha kifungu hiki, Tume itakuwa na mamlaka ya kuajiri mtaalamu yeyote kwa ajili ya shughuli maalumu au kwa muda mfupi.[/FONT] AccountGuid (accounts): cookie ya muda mrefu GUID (Account (nullable) kwa mtiririko wa kwanza usiojulikana. - AccountBorrowerParty (uhasibu): utambulisho wa mteja wa mkopo (mteja) + doc-vault muhimu. - Hati ya Mwanachama (mlos.docs): akaunti / ngazi ya wanachama reusable hati vault. Malipo ya dhamana Timeline (+ tukio enum), kubadilishana Kazi (+status/severity enums): pamoja kundi kulisha + kazi. Asante kwa yote hapo juu. Fomu ya maombi (id-stable / ordinal-safe): - MikopoFileStatus.SOLD BOARDED(9) - iliyotumiwa katika mwisho (hifadhi ya ORDINAL); +isTerminal; swichi za kutolea nje. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. Kwa mfano, *** Mipangilio ya jumla (serviceType =null) kwa chombo cha usimamizi wa akaunti. FK safu (nullable, pinned columnDefinition, hakuna default - kipekee rowid /gen random uuid orphan mtego): Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Akaunti guid id, BiasharaMarket.lead market id, ***** Kwa mfano, *** Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Hakuna toleo la bure.

  9. · SecurityService

    Borrower self-service authorization (loan-party IDOR guard)

    A borrower is a plain org Member with no operator LOS rights; they may act on the ONE application they are a party to — and only that one. Layered guard: operator gate first, else a fail-closed loan-party check (isMemberPartyToApp). MortgageAppController: - **************** overloads applied to get, all 23 per-app write endpoints, and the 3 repeating-section helpers. - list: operators see the org pipeline; a borrower sees only owned apps. - create: operator takes app (incl. from-lead); a borrower self-creates their own (ownership-stamped) — the KamoMLOS reward-gate mint. - delete: operator suspend-right OR the owning borrower; lookups: any authenticated session (reference enums the intake needs); journey stays operator-only. MortgageProgramController: closed a pre-existing IDOR on setPersona/setSelectedProgram (org-only check) — now operator-LOS-role OR loan-party. Operators unchanged; borrowers owner-scoped; cross-borrower IDOR closed (D52).

  10. · kamo-shared-library

    Borrower loan-party ownership on AppMortgageService

    Adds the ownership primitives for borrower self-service (a borrower is a plain org Member with no operator LOS rights): - createBlankOwnedByMember(orgId, memberId): createBlank + stamp ownership by attaching (or reusing) an Account whose primaryMember is the borrower. - isMemberPartyToApp(appUid, orgId, memberId): fail-closed loan-party guard — org match AND caller is primaryMember/AccountMember of the app's Account. - listOwnedByMember(orgId, memberId): the borrower's own applications. Ownership is the design-mandated **************** link; Account/ AccountMember already exist, so no schema/KI. Additive only (D52).

  11. · kamo-internal

    Borrower-journey column + intake filter in the loan pipeline

    Sub=pipeline datagrid (Maombi ya PipelineConsole) sasa inaonyesha kabla ya programu-taken maendeleo ya mwandishi wa habari ili wafanyakazi wa org waweze kukagua hali ya maombi kama Mkopaji anakamilisha mkopo wake mwenyewe kupitia bandari ya KamoMLOS. Makala ya "Safari ya Borrower": chip ya hali (Imeanza tu / Jaza katika / Tayari kuwasilisha) + kuamua maendeleo bar + sehemu n / jumla, na vifaa vya vifaa vinavyosubiri; '- Fedha zilizotengwa tayari. - 'Borrower Intake' filter ndoo: mikopo na kuingia kwa safari ya kujitegemea. - ListJourney () mteja wa API + BorrowerJourneyDTO aina + funguo za i18n. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................

  12. · SecurityService

    Pre-app-taken borrower-journey endpoint for the operator pipeline

    New GET **************** (LOS_VIEW_PIPELINE) returns per-DRAFT borrower-intake progress so pipeline stewards can watch a loan take shape while the borrower is still self-serving it through the KamoMLOS portal. BorrowerJourneyService recomputes the portal wizard's section completeness server-side over the canonical AppMortgage graph (tolerant presence checks — the canonical DTOs and the portal client DTOs have diverged field names). State = STARTED / IN_PROGRESS / READY_TO_SUBMIT over 7 pre-submission sections; reverse mortgages skip the financial sections, matching the portal. Nothing persisted; capped at 300 drafts/view. BorrowerJourneyDTO is a SecurityService-side record so donotmodify stays untouched. Part of doc03 pipeline repurpose (D51).

  13. · SecurityService

    Vidhibiti vya kupoteza hukubali vikao vya kila siku *** (doc03 §0.1)

    BaseLosController sasa anatatua kikao cha simu kupitia CallerSessionResolver (X-OTK-kuthibitishwa sifa ya kwanza - waendeshaji / BFF unchanged - kisha chama cha kwanza * * Kukataa kwa kuki) badala ya sifa ya X-OTK. Hii ndio Keystone ambayo inaruhusu bandari ya uingizaji wa KamoMLOS kufikia / api / usalama / programu za kuhifadhi / ** na kikao halisi kwa kila mkulima (mkopaji ni mwanachama wa wazi wa org kupitia kiwango a============================================================================================================================================================================================================================================================== Kwa upande wa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viungo safi.

  14. · SecurityService

    LOE-Core server-authoritative program scorer + /programs/scores (doc03 §9 Phase 2)

    Ports the KamoMLOS client scorer (lib/los/scoring.ts) into SecurityService LOE-Core: LoeCoreScorer scores the org's effective program catalog (baseline deep-merged with org overlay) against a borrower AppSnapshot — identical LTV/DTI/occupancy/reserves/ VA-entitlement/reverse-age checks — returning ProgramScoreDTO in the exact client ProgramScore shape. POST **************** Server-first: this ships before the §9 Phase 3 client-scorer deletion. 3 tests green.

  15. · InitializerService

    Seed the 17 real program rulesets (doc03 §9 Phase 1)

    Migrates the authoritative ProgramRuleset data from the KamoMLOS client ruleset files into **************** (17 codes, extracted faithfully) and replaces ProgramSeederRunner's rulesetJson("{}") placeholder with real per-code rulesets loaded from the classpath. Idempotent: inserts missing programs and upgrades existing "{}" placeholders to real data, never clobbering operator edits. Applied on the next KamoInitializer run (user-run). Prereq for the §9 Phase 2 server scorer that deletes the client scorer.

  16. · kamo-shared-library

    Real deep-merge for org program-ruleset overrides (doc03 §9 Phase 0)

    Replaces the M2 last-write-wins mergeOverlay placeholder (which silently discarded the authoritative baseline on any org override) with a recursive JSON deep-merge: org overrides supply only the keys they change, nested objects recurse, arrays replace wholesale, and a malformed override fails safe to the baseline. Locks the ProgramRuleset contract ahead of the server-authoritative scorer (§9 Phase 2) that will delete the client scorer. Program/ProgramService javadoc repointed. 3 tests green.

  17. · kamo-shared-library

    MlosExtractedCandidate staging entity for the ingestion pipeline (D48)

    The terminal per-field output of MLOSIngestionService's parser: a staged, reviewable extraction candidate (segment/source-doc FK, targetEntity, fieldPath, cellRef, raw/normalized value, DECIMAL(4,3) confidence, reviewStatus). Candidates NEVER promote into canonical catalog entities except through MLOSCatalogService's RateSheetSanityGate + human approval. Completes the ingestion substrate **************** ExtractionTemplate pre-existed). mlos.catalog already in KI scan → table auto-creates on next KI run; services run ddl-auto:none.

  18. · kamo-shared-library

    Isolated best-effort profile write-back for legal-wall paths (D47)

    kuunganishaFactsBestEffort anaendesha utajiri kuandika-nyuma katika shughuli zake mwenyewe (REQUIRES NEW) Kwa hivyo kushindwa hakuwezi kurudisha shughuli ya mpiga simu - salama kuandika nyuma kwa ajili ya uamuzi wa ukuta wa kisheria (AUS / ndani ya sheria) ambao Uamuzi wa mwisho unapaswa kuendelea bila kujali. Kuruka kimya kimya wakati hakuna profile. + 1 Jaribio la pamoja-lib (skip-when-absent / mjumbe-wakati wa sasa).

  19. · kamo-internal

    Sehemu ya Leseni ya Serikali kwa mwanachama wangu

    New SectionCard (NMLS ID + per-state licensed table with actively- providing checkbox and renewal/expiry dates, renewal<=expiry validated). Gated by **************** Adds Next proxy route, TS RoleRightType mirror, and design/plan docs.

  20. · SecurityService

    Mjumbe wa hali ya leseni API + upatikanaji wa leseni

    Ongeza Udhibiti wa Leseni (GET / PUT / api / usalama / wanachama / {id} / Leseni ya serikali) iliyofunguliwa na STATE LICENSING * haki na upande wa seva ^ Tnn., “uhakiki wa hesabu.” Tumia dawa za kuzuia mimba. Muhtasari wa Pop Na gridi ya taifa inayotambulika sasa inaheshimu ustahiki wa leseni ya serikali.

  21. · kamo-shared-library

    State-based member licensing + lead-acceptance gate

    Reuse mlos.legal StewardLicense as the single per-member/per-state NMLS registry (add activelyProvidingBusiness). Add member-level Member.nmlsId. Add General-Permissions rights **************** CreditLeadAssignmentService now skips mortgage-lead candidates whose explicit property state the member is not actively licensed in.

  22. · kamo-internal

    Add Source to the mappable lead fields

    Chanzo cha 'chanzo' kinaonyeshwa kwenye ukurasa wa maelezo ya kuongoza lakini haikuwepo kwenye orodha ya uwanja wa kuagiza; Ongeza (njia 'chanzo') sasa kwamba muuzaji wa nyuma + CreateLeadRequest anaunga mkono.

  23. · SecurityService

    Ramani safu iliyoingizwa kwenye uwanja wa "chanzo" cha kuongoza

    Ongeza "chanzo" cha kuwekaDirectFieldOnCreateRequest ili njia ya ramani 'chanzo' inaheshimiwa.

  24. · kamo-shared-library

    Ongeza uwanja wa "chanzo" wa CreateLeadRequest + unaendelea katika kuundaLead

    The Lead has a free-text `source` (shown/edited on the lead detail page) but it was not importable — CreateLeadRequest had no source field, so createLead never set it. Add it so manual imports can map a file column to the lead's source.

  25. · kamo-shared-library

    Add ScenarioProfileSource.PRICING for scenario-writer FICO/ratio write-back (D45)

  26. · kamo-shared-library

    Canonical scenario-fact spine — genesis deriver + factsJson populate + write-back + overlay matcher (D45)

    D1/D45 broadens BorrowerScenarioProfile consumption. Populates the dormant factsJson and makes it the shared source of truth for borrower/loan facts: - ScenarioFactKeys: single canonical fact-key vocabulary + tier (structural vs enrichment) + normalize(); the D21 whitelist/deriver/consumers reference these. - ScenarioFactDeriver: promotes the D18 LTV/CLTV/HCLTV + categorical derivation out of MLOSPricingService into shared-lib (one home for entity-derived facts). - BorrowerScenarioProfileService: produceFromUrla now populates structural facts (preserving enrichment); resolveFacts() for advisory gap-fill; mergeFacts() write-back that filters to the enrichment tier (genesis owns structural, D45.3). - ScenarioFacts.fillGapsFrom(): advisory merge (request wins, profile fills gaps). - InvestorOverlayMatcher: pure fail-safe matcher (present-and-violating only). No schema/KI change (factsJson column pre-exists). 27 targeted tests green.

  27. · kamo-internal

    Channel Rules tab — completes the §3.2 config surface

  28. · SecurityService

    Channel applicability rules collection CRUD — completes §3.2 config

    createChannelRule/update/delete on the D31 flat-collection spine (profile-level, org fail-closed, WORM change-log); controller /channel-rules GET/POST/PUT (delete via active:false). Scope/channel/outcome required; **************** authority/funding + effective window optional. Last §3.2 config entity.

  29. · kamo-internal

    Product Enablement tab (per-program, versioned)

  30. · SecurityService

    Product enablement config — per-program single-active, effective-dated

    **************** (program-scoped demote-then-insert) + reads; controller /product-enablements GET (active per program) / PUT (publish). Body carries programId, enabled, lifecycleVariant, channelRestriction, effectiveFrom.

Ulimwengu wako unasubiri.

Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.

Bure milele - hakuna kadi ya mkopo inahitajika