உள்ளடக்கத்திற்குச் செல்லவும்
KAMOUniverse

மாற்று பதிவேடு

என்ன புதிது.

அது கப்பல்கள் போல், தளத்தில் ஒவ்வொரு மேம்பாடு.

  1. · kamo-shared-library

    Add creating-key-hash attribution columns to PublicChatVisitor + SupportTicket

  2. · kamo-shared-library

    Add findOrganizationOwners for per-org public-chat system member

  3. · MediaService

    Mobile push dispatch (FCM data + direct APNs) with presence gate

    chat incoming (MediaController), support ticket (SupportNotificationService), SMS/voicemail (VoipStompRelayController), social **************** Presence-gated like the missed-message email consumer (skip when a live socket is up). Android = data-only high-priority FCM; iOS = direct APNs HTTP/2 via Pushy (no Firebase on iOS); APNS_VOIP reserved for the future CallKit path. Per-conversation rate limit. POST /api/internal/push/dispatch (X-Internal-Auth) for cross-service flows. Senders no-op until FCM service-account + APNs .p8 are provisioned.

  4. · KlusterServices

    Expose AIService /ws/ai-chat via api.* hosts for mobile clients

    IngressRoute (priority 100, websecure, ws-upgrade middleware sans compress) routes wss://api.<domain>/ws/ai-chat to kamowsai-service:80 — same pattern as the media.* WS route. Auth stays ?token=<***> validated by AIService.

  5. · VOIPService

    Accept X-***-Token on REST + signed ?st= stream tokens on audio endpoints

    OTKValidationFilter precedence: X-OTK → X-***-Token → ?st= (GET, audio streaming paths only, verified via shared StreamTokenCodec with internal.auth.secret; claims feed the controllers' existing org/member authorization). Native players can now Range-request recordings/voicemails.

  6. · MediaService

    Accept X-***-Token on REST; slide TTL with per-session timeout

    OTKPreAuthFilter resolves X-***-Token when no X-OTK is present (same call MediaService REST without the BFF. KSessionService now slides the Redis TTL with the session's own sessionTimeoutMinutes instead of the 30-min global.

  7. · SecurityService

    Device-token SSO **************** stream tokens, X-*** header parity

    - DeviceAuthController: durable device credential per (user, device) with rotate-on-exchange + 60s grace; /device/exchange mints a per-org *** via PostAuth***Service (same waterfall/labels/timeouts as login) and returns registry per (device, org). - PostAuth***Service: optional mobile session-timeout floor **************** default 720). - StreamTokenController: mints path-bound HMAC ?st= tokens (10 min) so media players can Range-request recordings without per-request OTKs. - **************** now honors X-***-Token first, giving **************** header parity for cookie-less clients.

  8. · kamo-shared-library

    Device-token + push-registration entities, HMAC stream-token codec

    hashed secret, rotation grace, sliding expiry), push_device_registrations (one push destination per device+org+kind), and StreamTokenCodec — short-lived HMAC tokens so native players can stream audio with plain Range requests.

  9. · SecurityService

    Cache closed-loan docs across passes; retire on solve/exhaust

    The trainer now refines a loan over multiple passes instead of one-and-done: - TrainingDocStore is a PERSISTENT, deterministically-keyed cache (key = hash of org|loan|docId). A document is downloaded from MeridianLink ONCE and reused from MinIO on every later pass — the expensive, rate-limited, vendor-dependent download never repeats. - trainLoan runs one pass: cached-once fetch → extract → diff each mapped field vs the SoR value, UPSERTing one label per loan-field. - A loan is retired when SOLVED (a pass matched every mapped field) or EXHAUSTED (hit training.max-passes-per-loan, default 5); on retire its cached docs are purged so closed-loan PII is cached only while we're still working the loan, never archived.

  10. · kamo-shared-library

    Multi-pass closed-loan training — pass counter + corpus upsert key

    The closed-loan trainer now re-reads a loan on successive passes until its extraction reproduces the loan outcome, so: - LeadLosLink.closedLoanPasses drives a per-loan pass cap (retire as EXHAUSTED if it never fully matches), and closedLoanTrainedAt now means "retired" (SOLVED or EXHAUSTED), not "read once". - ExtractionCorrection.sourceRef (the external loan name) keys a per-loan-field UPSERT — one current label per (org, loan, docType, field), so repeated passes refine the label instead of flooding the corpus with a new row each pass.

  11. · kamo-shared-library

    Status-preserving progress write for the closed-loan trainer

    run is RUNNING, without touching status. An operator pause (status → PAUSED) can no longer be clobbered by a full-row save from the pool thread — the guarded update matches 0 rows, PAUSED stands, and the walk stops on its next check. Also the live heartbeat for stale-run reclaim.

  12. · SecurityService

    Harden closed-loan trainer — concurrency, idempotency, limits

    - Concurrency: in-process activeOrgs guard + the DB claim() so this instance never double-walks an org and two replicas can't overlap; a run whose heartbeat is >10min stale is reclaimable (process died mid-walk). - Idempotency: skip loans already marked closedLoanTrainedAt, and mark a loan only after a real closed-loan training pass (not-yet-closed loans stay unmarked so later passes catch them once they close). - Memory safety: skip documents over 30MB — downloadDocument buffers the whole file and SecurityService is memory-tight. - Signed-URL TTL for training docs is now configurable and defaults to 15min so a slow 15-page vision read can't outrun a 5-min token.

  13. · kamo-shared-library

    Harden closed-loan trainer — run lock + per-loan idempotency

    - ClosedLoanTrainingRun.claim(): atomic conditional UPDATE that takes ownership of a run only when it is not already RUNNING or its heartbeat is stale (previous owner died). Stops two workers — a double-clicked control, run-all overlapping a per-org kick, or a second service replica — from walking the same org's loans at once and duplicating corrections / garbling counters. - **************** a closed loan is ground truth, so once labeled there is nothing to re-learn from re-reading its documents. The trainer skips marked loans, which keeps the repeated passes (that exist to catch newly-closed loans) from duplicating labels and skewing the corpus toward frequently-reprocessed loans.

  14. · kamo-internal

    Closed-loan auto-trainer panel on the platform Document AI tab

    Top-level owners can run + monitor the MeridianLink closed-loan trainer across every tenant from Settings → Platform → Document AI. Per-org rows show status, loans (closed/seen), docs, fields, and match rate, with Run/Resume/Pause controls and a "Train all MeridianLink orgs" action; counters poll live while a run is active. Feeds the same shared corpus as the human QC queue on the same tab.

  15. · SecurityService

    Closed-loan auto-trainer + platform control endpoints

    A closed loan is ground truth: its MeridianLink metadata is the answer key, its documents are the input. ClosedLoanTrainerService walks each MeridianLink org's closed loans, downloads every document, reads it, and diffs the reading against the loan's final values — a match confirms the model, a mismatch labels the SoR value as the correction. Every label is tagged source=CLOSED_LOAN and joins the same cross-tenant corpus the human QC box feeds. No human in the loop. - **************** additive pure read (page loop + vision + deterministic stamps), records nothing — usable by both the app path and the trainer. - TrainingDocStore + TrainingDocPublicController: ephemeral MinIO store + one-shot HMAC-signed serve so the org's vision provider can fetch a training doc (?page=N renders a PDF page), then it's deleted. pause), background pool, guarded @Scheduled auto-tick (off by default). - SystemConfigurationController: top-level-owner status/run-all/run/pause endpoints for the platform monitor.

  16. · kamo-shared-library

    Org-scoped loan roster query for the closed-loan trainer

    **************** gives the trainer every LOS-linked loan for an org+provider, each carrying the externalLoanName it reads status + documents for.

  17. · kamo-shared-library

    Closed-loan auto-trainer foundation (MeridianLink ground truth)

    Foundation for training document extraction against funded loans (the answer key): - ClosedLoanTrainingRun entity+repo — per-org run control + live counters - ExtractionCorrection gains SOURCE (CorrectionSource: HUMAN_QC | CLOSED_LOAN) so the corpus distinguishes auto-trained labels from human QC. - MeridianLinkSoapClient: loadStatus (sStatusT closed/funded read) + EDocs listDocuments/downloadDocument (built pending vendor confirmation of the exact EDocs ops, matching the base integration's pre-live posture). - ClosedLoanFieldMap: extraction-path → LO-XML field-id diff bridge + value normalization (name fields confirmed; income/DOB/address/asset ids pending). Additive + dormant (no writer yet) — the trainer service builds on this next.

  18. · SecurityService

    DOC_REJECTED email carries the plain-language reason

    Both reject paths now pass **************** to the borrower's rejection email instead of the raw enum literal.

  19. · kamo-shared-library

    Plain-language borrower messages for document rejections

    RejectionReasonType was a bare enum (the borrower literally saw "ILLEGIBLE"). Each value now carries a borrowerMessage() remediation string + a messageFor() mapper, so the reject note and the DOC_REJECTED email tell the borrower exactly what to fix in plain language.

  20. · kamo-internal

    Platform review queue on the Document AI tab

    The Document AI tab now hosts the cross-tenant review queue: low-confidence extractions from every lender, lowest-confidence first, with inline confirm/correct/reject. This is the central labeling that trains the one shared model — the per-lender queue is now the secondary "check my own loan" view.

  21. · SecurityService

    Platform QC queue + review endpoints (top-level owners)

    system-config gains a cross-tenant extraction review queue + confirm/correct/reject, gated to top-level owners — the central labeling surface for the shared model.

  22. · kamo-shared-library

    Platform-wide QC review (cross-tenant labeling for the shared model)

    A document is a document — extraction and the model are platform-level, not per lender. Adds a cross-tenant NEEDS_REVIEW queue + QcReviewService.platformReview (org/app derived from the fact, not the caller) so a central ops team can review every tenant's low-confidence extractions into ONE training corpus + ONE model. Tenant self-review (own loans) remains, refactored onto a shared applyReview.

  23. · SecurityService

    Platform extraction config + cross-org corpus/accuracy/export

    system-config GET/PUT now carries extractionAutoApplyConfidence + extractionModelId and reports the platform-wide corpus size + per-doc-type accuracy; adds a cross-org NDJSON training-corpus export (top-level owners). Extraction reads the configured threshold from SystemConfiguration (fallback 0.85) instead of a constant.

  24. · kamo-internal

    Platform "Document AI" configuration tab

    Adds a Document AI tab to **************** the auto-apply confidence threshold, the registered fine-tuned model id, the platform-wide training-corpus size + per-doc-type accuracy, and a cross-org training export. Makes the platform-level extraction system visible and configurable.

  25. · kamo-shared-library

    Platform Document-AI config on SystemConfiguration + cross-org corpus

    Adds **************** (default 0.85) + EXTRACTION_MODEL_ID to the platform SystemConfiguration singleton — the platform-wide levers for the QC gate and the registered fine-tuned model. Adds cross-org corpus/accuracy queries to ExtractionCorrectionRepository for the platform dashboard + training export.

  26. · kamo-internal

    Org-wide "Document QC" steward sub-tab

    Adds a Document QC console to the mortgage steward strip (?sub=docqc): the org-wide queue of low-confidence AI extractions grouped by loan, with inline confirm/correct/reject and a jump into each loan. This is the central place for employees to work QC — complementing the per-loan Document QC section.

  27. · SecurityService

    GET /api/security/mlos/qc/queue — org-wide QC portal endpoint

  28. · kamo-shared-library

    Org-wide QC queue (employee review portal)

    Adds an org-scoped NEEDS_REVIEW query + QcReviewService.orgQueue so employees can work every loan's low-confidence extractions from one portal, not one loan at a time.

  29. · kamo-internal

    Steward Document-QC review box on the application detail

    Adds a "Document QC" section to the loan detail: the queue of low-confidence AI extractions with confirm / correct / reject per field (each decision trains the model and applies confirmed values to the URLA), plus a training-data export. Wires the /api/security/mlos/qc proxy + qcApi client.

  30. · SecurityService

    QC endpoints + confidence-gated extraction + gift/tax reads

    - QcController (/api/security/mlos/qc, LOS_VIEW_PIPELINE): review queue, review action (confirm/correct/reject), NDJSON training-data export, per-doc-type accuracy. - Extraction now stamps confidence + doc type on each fact and gates the QC state (>=0.85 auto-applies; below waits in the QC box). - New extraction prompts: gift letters (amount + donor; kind/source injected), tax return / Schedule C self-employment income (self-employed flag injected).

உங்கள் உலகம் காத்திருக்கிறது.

நிமிடங்களில் இலவசமாகத் தொடங்கவும். நீங்கள் தயாராக இருக்கும் போது பொருட்களை சேர்க்கவும் - எந்த மாற்றமும் இல்லை, புதிய உள்நுழைவுகள் இல்லை.

எப்பொழுதும் இலவசம் — கடன் அட்டை தேவையில்லை