Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-internal
Bangun konsol pengurus hipotek yang akan datang -sebentar lagi
Mengganti stubs dengan real, titik akhir-didukung panel + fix sebuah dead- write bug: - Underwriting: Konsultasi panel (kualifikasi: DTI / PITIA / reserve / LTV + AUS pil) dan Fraud / 4506-C panel (vendor- urutan rel: tempat / list / batalkan / event untuk FRAUD + TAX _ TRANSCRIPT). - Harga: Skenario membandingkan (sisi-oleh-sisi harga berjalan) dan Best-eksekusi Penjelasan (dasar penyesuaian terhadap akhir berjalan + runners- up / tidak dapat diterima alasan); menghapus chip Reverse- LPA basi (sudah dalam Penyesuaian Penyesuaian). - Dokumen: Liveclearability roll-up (pecinta - clearable atas pipeline, kumpulan dibersihkan / blocking / keluar); hapus dumple workflow- penulis Chip (sudah dikirim). - Capital: FIX the capital-marke- Selanjutnya rute - yang POST allowlist hanya diselenggarakan satu jalan, sehingga Loan Sale Desk dikirim / kunci-lifecycle menulis 404' d. Diganti string exact- Set dengan pola RegExp berlabuh Menganggap 9 nyata rute (diverifikasi 1: 1 vs controller), masih fail- tertutup pada apa pun. - Bulletin: sebuah review-gated "Prolect as buletin" card (docType = BULLETIN) dengan id-apposed produk / change- tipe / params, posting ke relay baru. Salinan UI baru adalah string polos (i18n diikuti-up); tsc --noEmit bersih.
· SecurityService
Relay gateway untuk mempromosikan buletin tinjauan
MlosCatalogController / Client gain promote- buletin, miroring promoty- pedoman (God-qualified gate, org server- stamped). Baselen promotor Buletin di unguarded-endpoints test (amated-guard, seperti 14 bersaudara).
· SecurityService
Persist SecurityService PHI mengakses jejak phi _ access _ log
Jejaknya 164.312 (b) menuju ke Slf 4jPhiAccessLogWriter: peron 14 hari Retensi terhadap kewajiban enam tahun, dan tidak ada yang dapat dikueri. The lead baca dan CSV / HMDA ekspor catatan layanan ini adalah akses sebuah Akuntansi 164.528 dirakit dari, jadi jejaknya harus bertahan hidup di meja. Tukar di JpaPhiAccessLogWriter melalui kacang PhiAccessRecorder mengambil melalui ObjectProvider.getIfUnique - tidak ada situs panggilan dalam perubahan PhiAccessAudititor. The pencocokan masukan com.kamo.z.shared.phi.audit dalam @ EnableJpapositories kapal dalam commit yang sama: kacang tidak dapat dibangun tanpa repositori, dan mendeklarasikan satu tanpa yang lain adalah apa yang CrashLooped login sebelumnya hari ini.
· kamo-login
Lengkap sebuah login yang berhenti pada faktor kedua
SecurityService sekarang gerbang login pada faktor kedua (gt 164.312). Ketika salah satu dipinjam itu membuat sesi tetapi menahan satu-waktu kunci, mengembalikan tanda tantangan pendek-hidup sebaliknya - sesi tidak ada yang memegang OTK untuk adalah tidak terjangkau. BFF ini mengharapkan satu TimeKey tanpa syarat, sehingga tantangan MFA jatuh ke "Tidak ada kunci sesi yang diterima" dan muncul ke pengguna sebagai 500. Sekarang Mengakui tantangan dan melewati mfAUred / mfAToken kepada klien. / api / login / mfa melengkapi itu. Dari OTK onward itu reuses login yang ada rute 's handoff verbatim - tettling * * dari Redis, jelas kue basi, mengatur baru satu - karena dua sesi-handoff implementasi akan hanyut dan yang digunakan kurang sering akan menjadi salah satu yang membusuk. Kode yang salah mengembalikan 401 dengan mFAUred masih benar dan mfAToken yang sama: SecurityService sengaja tidak mengkonsumsi tantangan kegagalan, sehingga user mencoba ulang kode daripada kata sandi. Memaksa sandi ulang per satu typo adalah bagaimana orang akhirnya mematikan MFA. Inert sampai seseorang enrols; tidak ada yang memiliki.
· VOIPService
Persist jejak PHI VOIP ke phi _ access _ log
Rekaman panggilan, voicemail audio dan transkrip yang diaudit ke dalam log stream, which keeps 14 days against a six-year # 164.528 duty and cannot akan dikutip oleh sumber daya - jadi "yang mendengarkan panggilan ini" tetap tak terjawab bahkan saat sedang direkam. Wiring JpaPhiAccessLogWriter sebagai penulis kacang memindahkan fallback Slf4j bahwa PhiAccessRecorder menyelesaikan melalui ObjectProvider.getIfUnique, so Calling Recording Auditor 's call site are existing tidak berubah. @ EnableJpapositories entries kapal dalam komit yang sama dengan kebutuhan: kacang membutuhkan PhiAccessLogRepositori, dan daftar eksplisit pemindaian adalah satu-satunya hal yang menciptakannya. Menyatakan satu tanpa startup konteks lain yang gagal.
· AIService
Persist percakapan AI PHI akses jejak ke phi _ access _ log
Perbincangan asisten yang tersimpan setidaknya mampu membeli 14 hari, arus log tidak dapat diquery: modul berada di luar batas kepatuhan, jadi pemohon tentang peminjam terus menerus dan akuntansi 164.528 harus dirakit dari persis jejak ini enam tahun kemudian. RecordDisclosure sudah gagal ditutup pada menulis itu tidak dapat membuat, yang hanya berarti sesuatu setelah menulis tanah suatu tempat tahan lama. Menyatakan kacang JpaPhiAccessLogWriter dan menambahkan com.kamo.z.shared.phi.audit ke @ EnableJpaRepositor dalam commit yang sama. Perpustakaan meninggalkan penulis tidak diganggu sehingga ~ 40 layanan tidak semua konstruksi itu, yang membuat kacang dan scan entri perubahan tunggal - kacang saja daun PhiaccessLogRepositori tanpa definisi kacang dan CrashLoops layanan.
· MediaService
Persist MediaService PHI akses jejak ke phi _ access _ log
Pesan percakapan dibaca direkam melalui penulis baku Slf4j, yang menempatkan track 164.312 (b) dalam 14 hari aliran log terhadap retensi enam tahun kewajiban - dan daun "yang membaca percakapan ini" tidak terjawab, karena log stream tidak dapat diqueried oleh anggota atau sumber daya. The JpaPhiAccessLogWriter bean and the com.kamo.z.share.phi.audit entry in @ EnableJpaRepostation kapal sengaja: @ ComponentScan ("com.kamo") mengambil @ Konfigurasi, tetapi daftar repositori eksplisit, jadi kacang tanpa entri pemindaian berarti PhiAccessLogRepositori tidak memiliki kacang dan konteks gagal untuk memulai. Autitor ChatMesMacessAccessplayer tidak perlu diubah - PhiAccessRecorder memecahkan penulisnya melalui ObjectProvider.getIfUnique, sehingga transfer penulis JPA Slf4j fallback di setiap situs panggilan yang ada.
· SecurityService
Suntikkan kunci enkripsi rahasia TOTP
KAMO _ MFA _ SECRET _ KEY peta ke kamo.mfa.secret-kunci oleh ikatan santai Spring, dan adalah apa yang MfaEnrollments Service gunakan untuk mengenkripsi rahasia TOTP yang tersimpan saat istirahat. Tanpa itu layanan masih mulai - sengaja, sehingga menyebarkan kode dan konfigurasi kunci bukan salah satu operasi atom di platform - tetapi pendaftaran melempar daripada menulis rahasia faktor kedua di jelas. Itu Degradasi fitur, tidak pernah layanan. Kunci yang dihasilkan pada cluster (32 bytes acak, base64) sebagai rahasia 'mf-enc'; nilai hanya ada di Kubernetes dan tidak pernah dicetak atau berkomitmen. Putar invalidates existing enrollments, which is why it is its own secret rather than sedang dilipat menjadi yang ada.
· DocsService
Persist program audit layanan ini ke database
Layanan Dokter melayani byte dokumen, jadi jejaknya adalah apa yang akuntansi disclosues under # 164.528 is actually dirakit from. Itu menulis ke 14-hari log stream terhadap kewajiban enam tahun, tanpa permukaan query. The bean and the @ EnableJpaRepositor entry land in the same commit Dengan sengaja. JpaPhiAccessLogWriter tidak mengganggu di perpustakaan layanan opt dalam satu per satu; mendeklarasikan kacang tanpa pemindaian yang cocok adalah apa yang mengambil setiap login pada platform turun sebelumnya hari ini, dan memisahkan kedua Edits across commits akan mereproduksi kegagalan yang persis.
· kamo-shared-library
Jejak audit durable - tetap akses PHI, tambahkan-saja
Ternyata 164.312 dari garis log menjadi bukti. Lapisan penangkap telah kabel di tujuh layanan untuk sementara waktu, tetapi menulis melalui Slf4jPhiAccessLogWriter - 14 hari penahanan terhadap kewajiban enam tahun, dan tidak dapat dipertanyakan. Kontrol adalah Arsitektur hadir dan tidak berguna. PhiAccessLog adalah tambahan-saja: @ PreUpdate dan @ PreHapus mutasi penolakan, karena audit trail aplikasi dapat mengedit bukan bukti. The database half (REVOKE UPDATE / DELETE) berada dalam migrasi KamoInializer. Ini membawa identifier dan tidak pernah isi, dan tes menegaskan entitas tidak memiliki bidang content- berbentuk. Sebuah jejak yang mereproduksi apa audit telah hanya direlokasi PHII menjadi toko kedua - yang oleh desain tidak pernah dihapus. JpaPhiaccessLogWriter sengaja TIDAK diganggu sebagai kacang. Setiap layanan component-scan com.kamo, so a stereotip would make all ~ 40 construct it, and karena perlu repositori masing-masing kemudian harus menambahkan paket ini ke sendiri eksplisit @ EnableJpapositories list atau gagal untuk memulai. Itu kesalahan yang tepat mengambil setiap login pada platform turun sebelumnya hari ini. Sebuah layanan yang ingin tahan lama audit mendeklarasikan kacang dan menambahkan pemindaian; sisanya menjaga standar Slf4j tidak terpengaruh. Berbagi Keselamatan Bean LibBean Tes memaksakan hal ini. Fields dipotong daripada diizinkan untuk melempar. Pada jenis akses kegagalan tertutup exception here refuse the user 's read, so a patological URL or 4KB user- agent kehilangan baris juga akan menolak akses yang sah - lapisan audit tidak boleh hal yang merusak produk. Tabel sudah ada di cluster (KamoInitializer fb89b3d), jadi tidak ada yang bersenjata.
· InitializerService
Buat phi _ access _ log - jejak audit 164.312 (b)
Sampai sekarang akses PHI direkam hanya untuk aliran log dengan 14 hari penahanan terhadap kewajiban enam tahun, dan tanpa permukaan query. Sebuah akuntansi disclosues under # 164.528 is a query; stdout cannot be query. Indeks dipilih untuk tiga pertanyaan yang sebenarnya menanyakan: segala sesuatu yang menyentuh satu catatan, semua anggota pekerja yang disentuh di jendela, dan segala sesuatu di satu penyewa di jendela (review aktivitas). REVOKE UPDATE / DELETE adalah basis data setengah dari append- saja; @ PreUpdate / @ PreHapus pada entitas adalah setengah aplikasi. Entah saja lemah - penjaga entitas adalah dilewati oleh mentah SQL, hibah dapat ditambahkan - tetapi bersama-sama aplikasi yang berjalan tidak dapat menulis ulang diam-diam sebuah baris audit. CockroachDB memungkinkan pemilik meja mempertahankan hak istimewa, sehingga kegagalan login daripada fatal. Tabel diverifikasi hadir dengan semua 14 kolom dan semua tiga indeks sebelum entitas didorong, sehingga tidak ada layanan dapat membangun terhadap pemetaan tanpa tabel.
· kamo-shared-library
Mint the Universal Loan Identifier (ULI) + store org LEI
Tambahkan HMDA Uli ke ekspor LAR. UliMinter build the ULI = org LEI (20) + nomor pinjaman + dua ISO 7064 MOD 97- 10 cek digits (Mod97CheckDigit - IBAN algoritma, transkripsi dari Reg C 12 CFR 1003 usus buntu C dan disematkan terhadap nya bekerja contoh, TIDAK MERS Luhn varian). Kolom Organisasi Numble Baru. Lei (KI-diterapkan) dengan org- patch menulis path; HmdaLarService memancarkan Uli ketika org memiliki nomor LEI + yang valid, lain DEGRAPES ke nomor pinjaman kosong sehingga Salah bentuk UPI platform CFPB akan menolak tidak pernah ditulis. LoanidenfierType memperoleh UNIVERSAL _ LOAN _ IDENTIFIER (diturunkan: org LEI + LoanFile.loanNumber + check).
· kamo-internal
Set org LEI dalam Info Perusahaan (mengaktifkan HMDA ULI)
Kartu informasi Company memperoleh Identifikasi Hukum (20- char, upper- cased), send through the existed org PUT - Organisasi Controller deserializes itu ke Organisasi. Lei dan Organisasi Layanan berlaku itu. Dengan LEI ditetapkan, HmdaLarService mints the peminjam 's Universal Loan Identifier; tanpa satu itu degrade ke nomor pinjaman kosong, jadi ini adalah apa yang ternyata URI pada per org.
· kamo-internal
Projeksikan sebuah versi pedoman tertelan dari konsol
Untuk dokumen sumber GUIDELINE panel intraffic menunjukkan "Progress as kartu versi "(pilih produk + label revisi). Kartu rate-sheet sekarang tersembunyi untuk dokumen pedoman juga. ingustionApi.promoteGuideline posting ke relay baru.
· SecurityService
Relay gateway untuk mempromosikan sebuah pedoman tertelan ke dalam sebuah versi
MlosCatalogController / Client gain promotore- pedoman, mirroring promot- eligibilitas: gerbang yang memenuhi syarat, server organisasi - dicap melalui write ().
· kamo-register
Masuk otomatis setelah verifikasi email melalui kunci satu-waktu
Ketika / verify-email menanggapi dengan additive otk + autoLoginHost field (diukir oleh SecurityService pada verifikasi pertama), deep- link langsung ke https: / / < host > / validate? otk =... - konsumen yang sama enter- sebagai aliran menggunakan - mendarat anggota segar di rumah internal (FirstOrganCta) alih-alih memantulkan mereka ke bentuk login untuk retype kredensial dan * * * ketiga. - PostCompletionScreen (jalur kode + kartu diverifikasi): auto- session alihkan dengan login-page redirect disimpan sebagai fallback setiap kali OTK tidak hadir; kebakaran email yang ada - diverifikasi peristiwa pertama, plus a auto- session analytics event on the OTK path. - / verifikasi (jalur email-link): respon token- verifikasi adalah salah satu yang membawa OTK, sehingga mengarahkan kembali dengan cara yang sama; register tab watching over SSE keep its login fallback (the OTK is single gunakan dan tinggal di tab link). - registerApi: verifikasi panggilan sekarang diketik sebagai VerifyEmailRespon.
· kamo-marketing
Tahap 3 + 4 - ubah lalu lintas yang sudah tiba
- changelog (# 2 tujuan) mendapat sebuah blok konversi; karir menunjukkan keadaan pembukaan jujur - / langganan halaman: post- pendaftaran rencana niat mendarat di suatu tempat yang nyata (adalah 404 di tujuan pembayaran) - Harga: lifed- harga FindYourPlanQuiz, halaman tengah CTA, strip jaminan, eksternal / internal CTA split, penggunaan kontak perusahaan? topik = Sales (subjek diam-diam dijatuhkan) - homepage: Recently- dikirim strip dari changelog nyata, Features onward link, JumpToBar cocok dengan bagian sebenarnya dan menawarkan sign Up - / mitra menunjuk -pasangan halaman aplikasi; tentang mendapatkan sebuah pendiri / built -in -the- daerah terbuka - SEO: semua canonicals www + lokal - prefixed 200 -serving URL; per- locale hreflepang + x-default pada 4 templat programmatic; tidak diterjemahkan locales noindex; siemap loc / alternates tetap (en + es saja); robots.txt menjatuhkan JSON siemap + / kalkulator blok; metadata blog membaca real terjemahan (setiap posting sebelumnya diindeks sebagai 'Artikel Tidak Ditemukan') - llms.txt / llms-full.txt: harga nyata, URL tertempel UTM (Referrals AI menjadi saluran yang diukur) - Halaman integrasi icewarp diperdalam menjadi halaman pendaratan nyata (entri organik # 2)
· SecurityService
Mint auto-login OTK pada verifikasi email pertama
Melengkapi verifikasi surel wizard register (kode 6- digit atau Sambungan surel) telah membuktikan kepemilikan inbox, namun pengguna baru adalah dibounded ke halaman login untuk mengetikkan kredensial dan memecahkan sepertiga * * *. Gunakan kembali bagian dalam sebagai primitif: pada keberhasilan pertama verifikasi, ketika pengguna diverifikasi memegang keanggotaan yang memenuhi syarat di register mereka org, mint a login- ekuivalen * * * via PostAuth * * Service dan membungkusnya dalam single yang sama - gunakan 180s OTK yang kamo- internal 's / validate halaman sudah mengkonsumsi. - Email Verifikasi Layanan: verifikasi metode sekarang kembali Hasil Verifikasi (uranId, firstVerifikasi) jadi verifikasi ulang dari sebuah akun yang sudah diverifikasi (misalnya setelah pengiriman ulang) tidak pernah dapat re- mint; resolveRootDomain terkena paket-statis untuk resolusi host. - * * * * * * * * * * * * * * * * gagal ditutup pada setiap hilang atau keanggotaan tidak terbaca (register / tim PROSPECT menyimpan login redirect), domain tidak terselesaikan, tidak lengkap pengaturan ketentuan-domain SSL, atau error - verifikasi sukses itu sendiri tidak pernah terpengaruh. - / verify-email menghasilkan pembagian additive otk + autoLoginHost; bentuk tidak berubah ketika minting dilewati.
· kamo-marketing
Terkait-isi modul + sign-up CTA penarik ulang pada templat programmatic
Solusi, integrasinya, alternatif, dan templat mengkilap adalah organik ujung mati: tidak ada link internal dan "Mulai bebas" CTA menunjuk pada / Harga daripada mendaftar. - Barisan Konten Baru (varian kartu / pil) menggunakan I18n Link sehingga lokal diawetkan; setiap link terkait kebakaran related- klik dengan target hint sebagai butir acara. - Solusi: 3-4 saudara industri dari INDUSTRY _ CATEGORIES ditambah sampai 2 Integrasinya, salinan nama industri menurun. - Integration: 3-4 same- kategori integrations, keatas untuk kecil kategori; konversi buram strip di atas footer CTA. - Alternatif: "Juga membandingkan" chip untuk 8 pesaing lainnya, hingga 2 kurator / halaman solusi, migrasi- akhir sudut CTA (switchFrom key), dan strip konversi kabur. - Glossary: istilah terkait diisi ke 3-4 melalui same- kategori fallback ditambah full- glossary link. - Semua Start primer-bebas CTA sekarang memukul Dengan cta-start-free / location instrumentasi; / pricing tetap dapat dicapai sebagai link sekunder-harga pada setiap template.
· SecurityService
Log masuk gerbang pada faktor kedua - 164.312 (d)
Selesai MFA. Inti mendarat di kamo- shared- perpustakaan, ini adalah kawat yang ternyata disimpan konfigurasi ke sebuah gerbang yang sebenarnya. Gerbangnya kecil karena login sudah memiliki bentuk yang tepat: itu menciptakan * * sesi dan menyerahkannya kepada klien Hanya sebagai satu-waktu kunci dalam tubuh respon - tidak cookie diatur di login. Jadi seluruh mekanisme adalah untuk menahan OTK sampai faktor kedua terbukti. Sebuah sesi tidak ada memegang OTK untuk tidak dapat dicapai, yang berarti pembuatan sesi itu sendiri tidak membutuhkan operasi sama sekali. MfChallengeService memegang * * * Id di bawah, buram tunggal - gunakan, 5-menit token. Klien tidak pernah menerima id sesi, dan token tidak berharga tanpa kode. Dengan tujuan singkat: keadaan setengah terotentikasi bertahan dari kompromi kata sandi. POST / api / keamanan / mfa / tantangan melengkapi login, melepaskan OTK sehingga Klien melanjutkan persis aliran itu akan memiliki tanpa MFA. Kode yang salah rilis apa-apa dan - sengaja - TIDAK membakar tantangan, karena memaksa pengguna kembali melalui password melalui salah satu typo adalah bagaimana MFA akan dimatikan. The pendaftar sendiri penguncian menghitung kegagalan tersebut. Sebuah keberhasilan mengkonsumsi tantangan sehingga tidak dapat diputar ulang. Kode pemulihan juga lengkap, dan tidak pernah juga dicoba sebagai TOTP. Pendaftaran titik akhir (/ menggulung, / konfirmasi, / status) memerlukan sebuah sesi - melingkupi faktor adalah aksi terotentikasi pada akun Anda sendiri. / tantangan sengaja tidak bukan, karena penelepon tengah-login menurut definisi. INERT HARI INI: gerbang hanya menyala pada Factor dikonfirmasi, dan tidak ada yang terdaftar, jadi jalur login yang ada adalah byte- identik. Itu adalah titik - ini dapat menyebarkan sebelum setiap klien mendukung itu. Titik akhir ratchet menangkap saya sendiri tiga pendaftar penangan sebagai terjaga. Mereka Dijaga, melalui helper advandFromsession satu metode-dalam-scan tidak bisa mengikuti, sehingga memperbaiki mengajar GUARD yang membantu daripada baseling mereka. Aku juga mendokumentasikan keterbatasan komunikasi pada latihan yang sama: completeChallenge membersihkan pemindaian hanya karena itu terjadi untuk menyentuh kSesi Service.
· kamo-marketing
Tahap 0 + 1 - instrumen saluran nyata, membuka blok cat pertama
- data maju - * props melalui MagneticButton / RippleButton (kejadian tidak pernah mencapai DOM) - instrumen SharedNavigation, Hero, PreviewBanner, bagian CTA;? ref = di setiap link register - hapus mati * * * * * * * * * * * * * * * * * * + 16 komponen yatim lainnya - homepage: tidak ada preloader gerbang, bagian SSR 'd, 16 £10 bagian, harga katalog langsung dalam Harga - Jujur signup: satu daerah email deep-linking register dengan prefill; real terms / privacy link - bunuh 10MB favicon.svg + logo.svg, drop reakt- world- flags (3.7MB) untuk bendera emoji, drop threejs deps - pembuatan statis (tanpa force-dynamic), header long-cache untuk / img / logos / favicon - analitik: data-kinerja vital pada, DNT drop dihapus; chat widget lazyOnload; preconnects - pahlawan: lokal bgs render segera (tema swap non-blocking), Watch Demo Avero / demo, Bicara kepada kami CTA, statistik jujur
· kamo-shared-library
Faktor kedua TOTP - 164.312 (d)
Penilaian kepatuhan yang disebut ketidakhadiran faktor kedua didiskualifikasi sendiri, dan di bawah 2025 Peraturan Keamanan NPRM MFA berhenti yang diakui di Semuanya. Nama pengguna faktor tunggal + sandi adalah satu-satunya path otentikasi interaktif di platform. TOTP diverifikasi terhadap Vektor tes RFC 6238 bukan terhadap nilai implementasi ini dihasilkan. Perbedaan itu adalah seluruh pertandingan: home- grown TOTP yang hanya setuju dengan dirinya sendiri mengotorisasi Google tidak ada Penerjemah, dan kegagalan muncul di rollout dengan setiap pengguna terkunci. Menulis tes tersebut segera tertangkap bahwa saya telah melewati unix detik di mana HMAC ingin counter - off oleh faktor tiga puluh - sehingga generateAt sekarang tidak pembagian dan tidak ada penelepon harus mengingatnya. Properti yang memisahkan nyata MFA dari penampilan itu, masing-masing disematkan oleh tes: - Kode tunggal-gunakan. Sebuah TOTP tetap valid untuk seluruh langkah 30-detik, jadi tanpa menggunakan Timestep terakhir untuk dicegat atau shoulder- kode surfed bekerja lagi di dalam jendelanya sendiri. Langkah awal masih dalam toleransi ditolak Juga, sekali kemudian salah satu telah diterima. - Unconfirmed pendaftaran tidak masuk hitungan. Memulai pendaftaran dan meninggalkannya sebelum membuktikan kerasukan tidak harus memenuhi persyaratan MFA. - Penguncian adalah nyata: kode yang benar ditolak ketika terkunci, jika tidak penguncian dekoratif. - Pendaftaran dimulai menolak untuk menggantikan faktor yang dikonfirmasi. Diam-diam overwriting itu akan membiarkan siapa pun mencapai titik akhir menukar keaslian korban untuk mereka sendiri. - Rahasianya dienkripsi saat istirahat dan dikembalikan tepat sekali; kode pemulihan adalah hashed dan single-use. Baik dapat dipulihkan oleh staf, sehingga perangkat yang hilang berarti pendaftaran ulang - perdagangan yang benar untuk kredensial yang melewati password. - Verifikasi membandingkan dalam waktu konstan. String.equals menghasilkan yang pertama berbeda digit, yang kebocoran berapa banyak angka terkemuka yang benar dan runtuh sebuah 10 ^ 6 ruang ke sekitar 60 tebakan. Kode Pemulihan adalah SHA- 256 daripada b sengaja: 80 bit dari mesin - entropi yang dihasilkan tidak memiliki kamus untuk peregangan terhadap, dan hash lambat hanya akan membeli layanan penolakan pada jalur login. Tabel sudah ada di cluster (KamoInitializer c65a233), jadi tidak ada yang bersenjata dengan dorongan ini. Pendaftaran dan tantangan titik akhir adalah langkah berikutnya; tidak ada panggilan ini belum.
· kamo-login
Tambahkan analisis analitik +? terdaftar = 1 pemberitahuan selamat datang
- Analisis Mount Komponen klien analisa dalam tata letak root: next / script loader untuk analitics.kamocrm.com discoped via data- domain ke login.kamocrm.com hanya (situs berlabel putih; domain penyewa org harus tidak pernah dilacak), dengan dijaga window.analytics? .track typing. - Lacak peristiwa login- sukses tepat sebelum post- login redirect kebakaran. - Handle? terdaftar = 1 dari situs register dengan pemberitahuan sukses Sesungguhnya Allah Maha Mengetahui segala sesuatu. Masuk untuk melanjutkan ".), prefilling bagian email dari? email = - pola yang sama seperti email _ verified / linked.
· InitializerService
Buat tabel faktor-kedua
Backs UserMfaEnroption and MfaRecloveryCode in kamo- shared-library - # 164.312 (d) Otentikasi orang atau Entitas, jeda penilaian kepatuhan yang dipanggil Mendiskualifikasi sendiri. Kedua tabel diverifikasi hadir dalam cluster dengan bentuk yang diharapkan sebelum entitas didorong, sehingga tidak ada layanan dapat membangun terhadap pemetaan yang tabel tidak tidak ada. Tiga rincian tidak layak untuk kehilangan penyederhanaan kemudian: - Rahasia CIA memegang ciphertext. Layanan menolak untuk menulis pendaftaran sama sekali ketika tidak ada kunci yang dikonfigurasi, daripada merendahkan ke teks biasa. - Terakhir kali digunakan _ TIME _ STEP adalah apa yang membuat kode tunggal digunakan. Sebuah TOTP valid untuk ini seluruh langkah 30-detik, jadi tanpa itu sebuah kode dicegat replays di dalam sendiri jendela. - Kode Pemulihan mendapatkan baris masing-masing bukan daftar serialisasi, jadi satu adalah sebuah update ditargetkan daripada sebuah read- modify- tulis atas set - yang di bawah konkurensi persis bagaimana kode "single-use" digunakan dua kali.
· VOIPService
Perlu VIEW _ CALL _ LOGS untuk putar panggilan dalam orgs penanganan PHI-
Rekaman dan rekaman voicemail memeriksa tingkat sepuluh dan tidak ada yang lain: anggota manapun dari yang owning org bisa menarik setiap panggilan di dalamnya, transkrip termasuk, pada ekstensi bahwa bukan milik mereka. Diperlukan VIEW _ CALL _ LOGS langsung bukan sebuah pilihan - sebuah hak dapat Ada di enum dan diberikan kepada siapa pun, jadi beralih untuk setiap orang mengambil softphone menjauh dari anggota yang menggunakannya hari ini. Enforcement adalah scoped ke batas kepatuhan yang membuatnya diperlukan. Untuk org dengan set handlesPhi, rekaman audio, trek per- kaki, voicemail audio dan transkrip yang ada dalam metadata rekaman memerlukan hak; penolakan adalah 403 dan tanah di jalur audit PHI melalui disangkal-path recorder yang ada, jadi Menyelidiki terlihat. Untuk setiap org lainnya - semuanya hari ini - tidak ada perubahan, yang adalah apa yang * * * * * * * * * * * * * * Konsekuensi yang dikenal: sesi sst = rimtoken hanya membawa (orgId, memberId), jadi di bawah seorang PHI penyewa jalur audio-tag gagal ditutup sampai token membawa hibah. Direkam dalam tes daripada dibiarkan ditemukan.
· kamo-internal
Logoff otomatis setelah tidak aktif (HIPAA 164.312 (a) (2) (iii)
Sebuah sesi yang tersisa terbuka pada stasiun kerja tanpa pengawasan tetap dapat digunakan tanpa batas waktu. Ini berakhir setelah 15 menit tidak ada interaksi, dengan peringatan 60 detik sehingga tidak ada yang dibuang mid- tugas. Aturan waktu hidup dalam aplikasi / lib / idleTimeout.ts sebagai pengontrol pure (unit diuji dengan penghitung palsu); komponen hanya sebuah lapisan masukan. Tiga keputusan Layak mengetahui tentang: - Hanya penunjuk, kunci, roda, gulungan, sentuh dan peristiwa visibilitas dihitung sebagai Kehadiran. Frame Websocket, polling dan timer jangan - kamo- layar internal menyegarkan diri terus-menerus, dan memperlakukan bahwa sebagai manusia di meja akan membuat dekoratif kontrol. - Kehadiran diukur di seluruh asal, karena subjek kontrol adalah mesin tanpa pengawasan, bukan tab tanpa pengawasan. Bekerja dalam satu tab menyimpan saudara hidup; ketika setiap tab pergi tenang mereka berakhir bersama-sama, jadi tidak ada pengaturan tab meninggalkan sesi yang dapat digunakan pada layar yang ditinggalkan. - Akhir sesi diumumkan di seluruh tab. The * * * id tinggal di masing-masing Penyimpanan sesi tab lebih dari satu sesi Redis bersama, sehingga saudara yang tidak pernah disimpan menunjukkan area kerja terotentikasi selama sebuah sesi yang tidak lagi Ada. Halaman otomatis dan halaman logoff biasa / log keluar sekarang disiarkan. Penghentian melalui halaman yang ada / log keluar - Layanan SecurityService log out, Penghapusan kunci Redis, kliring cookie, maju ke kamo- login - karena membersihkan klien negara saja meninggalkan sesi server hidup dan bukan omong kosong. Salin dikirim di depan ini dalam kamo- terjemahan - kamus (c39dfb9).
· DocsService
Audit WOPI content endpoints and close the last byte- serving gap
WOPI melayani seluruh dokumen ke dokumen dan tidak merekam apapun. GET / wopi / files / {id} / contents adalah pengungkapan yang sama seperti / download, relayed cara yang sama melalui APIService, tanpa jejak sama sekali - membuka dokumen dalam Editor itu tidak bisa dilacak. Identitas berasal dari token akses WOPI, bukan sebuah sesi * *: DokumentController bermain dengan anggota pembuka org dan ID anggota dan Docs return it on every callback, so those claim are the only identity Titik akhir ini memiliki, dan satu checkFileInfo sudah otorisasi terhadap. audit membawa mereka langsung daripada menyelesaikan anggota dengan cara kedua yang bisa tidak setuju dengan token permintaan itu disahkan oleh. Sebuah token yang tidak dapat membaca catatan terhadap unresold-org sentinel bukan sedang dijatuhkan. Catatan putFile sebagai VIEW, bukan DOWNLOAD: sebuah menyimpan mengirimkan bytes bukan keluar, sehingga menyebutnya pengungkapan akan duad- menghitung GetFile yang membuka sesi, dan VIEW gagal membuka sehingga audit wastafel sakit tidak dapat menghancurkan unsaved Kerja. CheckFileInfo dan operasi penguncian tidak terekam - tidak ada isi, dan Docs memanggil keduanya berulang-ulang melalui satu sesi, yang akan mengubur baris yang berarti byte benar-benar pindah. Sapu untuk sisa jalan melayani menemukan dua lagi: - / api / docs / binders / {id} / render merges setiap dokumen dalam binder ke satu PDF. Ini adalah bulk- download dalam pembungkus yang berbeda dan tidak merekam apa-apa; sekarang satu event per dokumen tertanam, pemisah dan halaman yang dihasilkan tidak termasuk. - * * * * * * * * * * * * * * * hanya menulis sebuah baris ImgLogDownload. Itu adalah sebuah record imagining- domain yang dibaca oleh panel sejarah download-, bukan jejak permukaan - sehingga akuntansi perselisihan menunjukkan sungai, ekspor dan template PDFs ketika mengabaikan paling digunakan byte layanan Jalan. Kedua catatan sekarang ditulis; mereka menjawab pertanyaan yang berbeda. Tidak ada entitas, @ Kolom atau shared- pustaka perubahan.
· kamo-internal
Provinsi sebuah tertelan matriks eligibilitas dari konsol
Untuk dokumen sumber ELIGIBILITY _ MATRIX panel intraffic sekarang menunjukkan "Propinsi sebagai matriks eligibilitas" kartu: memilih produk, tipe batas (MAX _ LTV / CLTV / DTI), pendudukan dan tujuan, dan setiap baris yang disetujui FICO IVI menjadi sel eligibilitas - gerbang yang memungkinkan produk menjadi harga. The Lembar rate- kartu publikasi kini disembunyikan untuk LLPA dan dokumen eligibilitas (masing-masing memiliki dan (malaikat-malaikat) yang mengatur urusan (dunia). IngestionApi.promoteEligibility posting ke relay baru.
· SecurityService
Relay gateway untuk mempromosikan sebuah matriks eligibilitas tertelan
* * * * * * * * * * * * * mendapatkan promotor -eligibility, mirroring promoty- penyesuaian: gerbang yang-memenuhi syarat, server organisasi Id dicap melalui tulis (), hilir 4xx relayed verbatim.
· kamo-internal
Mengelola UI - daftar, penyunting baris-item, manajemen share-link
Selesai sistem quote / estimasi: staf sekarang dapat membangun sebuah kutipan, harga itu, mint link berbagi dan email itu, semua dari baris pipa. app / lib / quotesApi.ts mengetik klien untuk permukaan SecurityService * * * * * * * * * * * * * * * proxy, mirror the POS one (X- * * * -Token passthrough) Filter status + pipelineQuotesTab, kabel sebagai subtab RETAIL rute detail aplikasi / commerce / quotes / [uid] QuoteEditor PipelineRecordLayout dengan rincian / berbagi / tab aktivitas Jaringan butir yang dapat dipakai ulang QuoteLineItemEditor QuoteShareLinkPanel mint, copy, email, dibatalkan, jumlah tilikan QuoteLineItemEditor sengaja komponen sendiri. Pipa sudah dibawa lima baris tangan-digulung terpisah-item penyunting (perintah / baru, OrderEditDialog, kisi perintah langganan, tabel pengadaan, kerja-urutan tenaga / bagian) dengan apa-apa berbagi antara mereka; pekerjaan baru harus membangun pada ini daripada menambahkan keenam. Totalnya editor adalah PREVIEW LOKAL dan diberi label seperti itu saat kotor. Mereka mirror QuoteTotals persis - baris diskon pertama, kemudian diskon tingkat kuota, maka pajak dan pengiriman - sehingga pratilik tidak pernah tidak setuju dengan dokumen yang disimpan, dan respon server menggantikan mereka pada setiap save. Tidak ada di sini dapat mengatur total. Pajak tetap jujur dalam UI juga: mode MESIN render "Tidak dikonfigurasi" daripada sebuah angka buatan, cocok dengan laporan API. Tautan berbagi baru ditampilkan sekali dengan peringatan copy- sekarang, karena hanya nya SHA- 256 bersikeras dan URL benar-benar tidak dapat dipulihkan. Daftar dapat menunjukkan token prefix dan tidak lebih. Rights- gated seluruh: manvage _ QUOTES untuk membuat / edit, SEND _ QUOTES ke mint atau mencabut link. Kutipan terminal * * * * * * * * * * * * * * * kunci editor dan sebaliknya menawarkan revisi. Wired live ke API dari awal - tidak ada fiksasi generate Mock, tidak seperti beberapa tab pipa sibling. Bila tabel kutipan belum ada namun galat muncul Jujur daripada menjadi bertopeng oleh placeholder baris.

Alam semestamu menunggu.
Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.
Gratis selamanya — tidak diperlukan kartu kredit