콘텐츠로 건너뛰기
KAMOUniverse

변경 로그

무슨 일이야?

플랫폼에 대한 모든 개선 사항, 그것이 선적.

  1. · kamo-internal

    P1 프론트 엔드 - 충전 할 수 + 감사 타임 라인

    - losApi : 충전오프쿼시 / 확인ChargeOff / 감사ByLoan -********** D120 검토 큐 페이지; org 사용자 각 대출을 검토, 이유를 추가, 클릭 확인 → POST /api/los/charge-off /{id}/확인. LoanChargeOffService 백엔드 표면. - 새로운 <LoanAuditTimeline> 구성 요소: 읽기 *************** 전체 LoanAuditEvent 스트림을 렌더링합니다. (actor type, kind, amount, 타임스탬프). org-side 대출 세부 페이지로 연결하도록 설계.

  2. · kamolos

    P1 일괄 처리 - webhooks 사전 상태, crons, 상거래 수직

    돈 운동 (핵 P1): - LoanPaymentPostingService : MarkSucceedAndPost / 마크 실패 / markReturnedAndReverse / markDisbursementSucceeded / markDrawDisbursed. 할당 순서 잠긴: 요금 → 관심사 → 주. 상태 자동 배차 DELINQUENT ↔ ACTIVE ↔ PAID OFF 결과 균형. - StripeWebhookService는 더 이상 로그 전용: payment intent.succeeded / payment failed / Charge.refunded (ACH 반품) / 분쟁.created+closed / payout.paid+failed는 PostingService를 통해 ledger를 전진했습니다. - NachaReturnCode + RetryScheduler : NACHA-compliant R-code 라우팅 - R01/R09는 2×/5 일, R07/R10/R29 전투를 전투합니다, 소진된 retries 플립 LoanPaymentMethod → REQUIRES REVERIFY. 상업 수직 물자화: - *********** 지금 참여 (PERSONAL LOANS, COMMITTED), Commitment (ACTIVE, price+terms JSON 포함) snapshots), 주문 (AUTHORIZED, subtotal=주요), 그리고 그들의 ID를 스레드 Loan.commitmentUid로 돌아가기/Uid/giningOrderUid 동일한 거래. Cron 작업 (실제 논리, stubs): - CoolingOffAdvanceJob : PENDING DISBURSEMENT OUT 결제를 허용 모든 PENDING DISBURSEMENT 냉각 떨어져 탈출하는 대출. - InterestAccrualJob: 주관에 매일 간단한 클립 accrual ACTIVE + DELINQUENT 대출. - StatementGenerationJob: 설치 per-due-date 문, LOC per-cycle ADB 대금 + 연간 수수료 평가 + 자동 지불 관련 기사 - AutoDebitRunJob: 자동선물 + DISBURSEMENT OUT 지급 + idempotency 열쇠를 가진 StripeConnectService를 통해 NACHA retries. - ReconciliationJob : 밤에는 비용 / 주요 / 균형의 재섬 ledger; drift 보정은 + 감사. - ReminderDispatchJob: SCHEDULED 알림을 예약했습니다. 그리고 NotificationDispatchService를 통해 전달합니다. 경고 : -********** 실제 HTTP POST to EmailService (/api/email/transactional/send) 및 VOIPService (/api/voip/sms/send, /api/voip/voice/send), 템플릿키 = "loan.{kind lowercase}". 유효성: - LoanProductValidationService: APR ≤ 상태 모자를 강제하십시오 (종류 당), 금지된 종류, 분/최대 주요 산. 연결하기 LoanProductService.create + 업데이트. 책임 떨어져: - LoanChargeOffService.queue() 목록 D120 대출; .confirm() 플립 상태 CHARGED OFF에 CHARGE OFF RECORDED 감사 이벤트를 작성합니다. - LoanChargeOffController 노출 *************** 감사 검색 : - LoanAuditEventController 노출 ***************

  3. · kamo-internal

    P0 경화 - 형태, 세션 해결, 지불 방법

    양식 (org-side): - *********** 및 /{productUid} 페이지 편집 - 새로운 LoanProductForm : 기본 / 가격 / 제한 / 조건 / 준수 섹션, 종류 인식 필드 (설치 대 LOC), promissory-note 템플릿 UID, 허용 상태 코드 -********** 제품정보 선택 (이 시장에서만 활성 제품), 대여자 회원, 주요, 옵션 용어, 대여 상태, "save draft" vs "send" - /settings/features/lending: org-side Stripe 연동 페이지 (calls **************** 줄무늬로 리디렉션) Borrower 측 강하게 하기: - 새로운 useCurrentSession() 후크는 memberId/orgId를 해결합니다. /api/user-info (canonical *** 경로) - 가짜 KMEMBER/KORG 교체 쿠키는 My Loans, Offer Detail, Loan Detail, Lending Settings에서 읽습니다. PipelineLoanOffersTab, 파이프 라인ActiveLoansTab - 새로운 BorrowerPaymentMethodsCard : 차용자는 ACH 은행 (Stripe)을 연결할 수 있습니다. payment method id + 위임) 또는 카드, 링크 된 방법을 참조, 기본 설정, revoke; /loans/[loanId] 페이지에 내장 - losApi : + startStripeConnectOnboarding 설정 nav (2의 3 메모리 규칙 당 장소): - SettingsStatusWindow는 상공 회의소 + 노선 입장에서 "Loan Products"를 추가합니다. **************에 대한 - (sidebar.tsx에는 POS 항목이 없습니다 - no-op 확인)

  4. · kamolos

    P0 경화 - 줄무늬 연결 엔드 포인트 + PDF flatten

    - EsignClient 가져 오기 : EsignGenericEnvelopeRepository / EsignatureRepository .esign.repos에서 라이브, 아니 .esign 루트 - 새로운 StripeConnectController POST *************** org Custom-account + URL을 반환합니다 (대리석을 지정합니다) 기존 StripeConnectService - MediaServiceClient.fetchBlob: 저장된 blob의 바이트를 잡아 flatten/re-render 워크플로우 - 새로운 PdfFlattenService: E-SIGN 추가 법률 준수 인증 페이지는 각 캡처에 대한 소스 공개 PDF 서명 (유형 이름은 italic에서 렌더링; signer/IP/UA/SHA-256 + 봉투 페이지에 기록된 UID). MediaService를 통해 새로운 평평한 blob 저장 그리고 blob ID + SHA-256을 반환합니다. - EsignClient.submitSignature는 지금 SIGNED를 표시한 후에 평평하게 합니다 뚱 베어 *************** + 서명DocumentSha256. Flatten 실패 로그하지만 서명 자체를 다시 롤하지 않습니다.

  5. · kamo-internal

    /api/los/* 프록시 경로 → k8s DNS를 통해 KamoLOS

    /api/billing/[[...경로]를 미러링 BillingService 프록시: - *** 세션은 Redis를 통해 해결; X-Org-Id + X-Member-Id forwarded - /api/los/webhooks/* 건너뛰기 세션 우 (Stripe Signature-verified at KamoLOS); 줄무늬 신호 머리는 통과됩니다 - 신모드 헤더 패스로 보존 - 상류 실패에 감싸는 502

  6. · kamo-internal

    PERSONAL LOANS 커머스 타입 프론트엔드 추가

    - joinTypeLabels: 참여 확장 유형 조합 + 어휘 - MarketCardGrid: PERSONAL LOANS 색상 (#14b8a6) + 랜드마크 아이콘 + 카운터 - 시장 세부 사항 페이지 : 새로운 탭 (Loan Products / Offers / Active Loans / 국가 규칙) commerceType에 문지르기 === 'PERSONAL LOANS' - losApi.ts: 가득 차있는 DTO 표면 + 얇은 fetch 래퍼 타격 /api/los/* 제품, 제안, 대출, 지불, 드로잉, 문, 지불 방법, 자동 지불, 국가 규칙, ESign 서명 제출 - 새로운 MarketLoanProductsTab / MarketLoanOffersTab / MarketActiveLoansTab / MarketLoanStateRulesTab 구성 요소 - PipelineView: VERTICAL ICONS 개인용 항목 loans - PipelineVerticalSection: hasSubTabs + 렌더링 블록의 PERSONAL LOANS 경로 제공 (intents) + Active Loans (commitments) 하위 탭 - 새로운 PipelineLoanOffersTab / PipelineActiveLoansTab - Borrower (Member) /loans 표면 : 색인, /loans/offers/[offer 한국어 수락 및 서명 흐름 (유형 서명 → ESign 제출 → accept-offer), /loans/[loanId] 균형, 성명, 결제 역사, 지금 지불, draws-for-LOC - 설정/page.tsx: commerce nav 추가 “Loan Products” 항목

  7. · kamolos

    초기 개인 대출 발행 + 서비스

    새로운 스프링 부트 3.1.5 / Java 21 microservice는 BillingService에서 모델링했습니다. 개인 대출 도메인 엔드 투 엔드를 소유 : - REST + DTO 레이어로 LoanProduct / LoanOffer / Loan CRUD - LoanLifecycleService는 Loan + commerce Engagement/Commitment를 재료화합니다. 제안 합격 (1 txn) - LoanPayment + LoanDraw + LoanStatement + LoanPaymentMethod + Loan예약 PaymentPlan 서비스 + 컨트롤러 - 수학: AmortizationEngine (Reg Z Appendix J), InterestAccrualEngine (ACT 365 / ACT 360 + ADB), PaymentAllocator (fees→interest→ 주) - StripeConnectService (Custom-account 온보드, ACH 디버먼트, ACH debit) + StripeWebhook서비스(idempotent via LoanStripeWebhookEvent) + 연결 별 webhook 엔드포인트 - TilaRendererService는 Reg Z Schumer 박스 (설치) /를 렌더링합니다. Open-end disclosure (LOC) PDFBox 를 MinIO로 - StateRuleSelfHealService 부트로드 대출 state rules.json (50-state) 레지스트리 + MLA 캡 + 냉각 오프) - 권리의 재구성 패턴 - EsignClient + EsignSignController는 누락된 회원을 완료합니다. 서명 제출 경로 (EsignGenericEnvelope +를 씁니다) 공유lib의 EsignSignature - dedup-keyed scheduling을 통한 알림서비스 - Cron 작업 : OfferExpiration, StatementGeneration, DelinquencySweep - k8s (configmap / 배포 / 서비스), Dockerfile, Forgejo CI 워크플로우(듀얼 클러스터 K1M1+K2M1) Billing서비스

  8. · kamo-shared-library

    PERSONAL LOANS 커머스 타입 + 엔터티 패키지 추가

    - CommerceType.PERSONAL LOANS + 평행한 EngagementType + 어휘 - BuiltinVendorCategories 개인 로건 공급 업체 항목 - 15 personal loans JPA 엔티티티 (LoanProduct, LoanStateRule, LoanOffer, LoanOfferDecision, Loan, LoanDraw, LoanPayment, LoanPaymentMethod, 로난페이먼트 LoanRecurringPaymentPlan, 대출금, 대출금, 대출금, 대출금, 대출금, LoanAuditEvent, LoanStripeWebhookEvent, LoanNotification) + 15 저장소 - 22개의 personal loans enums (status, 층, 종류, 근원, 수로, 등) - esign EsignGenericEnvelope + EsignSignature + 비-mortgage에 대한 저장소 envelope 작성 및 회원 인터뷰 서명 캡처 - KamoLOS → KamoMLOS 댓글 전용 정제 조직 전체에 업데이트 / CommerceMarketService / 상업 서비스 Schema 관리는 KamoInitializerService로 남아 있습니다. KamoLOS 사용 ddl 자동차: 없음.

  9. · kamo-internal

    Photo-album 의 업로드는 같은 WS 파이프라인을 업로드 탭으로 사용

    Reusable useImagingUploads Hook으로 doc-manager 업로드 파이프라인을 추출합니다. Hook은 per-file state machine, XHR progress, 및 업로드 탭이 사용하는 실시간 변환-progress WebSocket 구독을 소유합니다. 사진 앨범 대화 상자는 Hook을 소비합니다. - 파일 큐는 자동으로 한 번에 처리합니다. - 각 in-flight 파일은 현재 단계 라벨 (Hashing → Checking → Uploading → Converting → Complete)을 선형 프로그레시브, 체크 / 오류 / 스피너 아이콘, 실패 후 재스트 버튼 보여줍니다. - 이제 대화 상자는 실제 서버 오류 메시지 (예를 들어, "MinIO로 업로드" 실패)를 삼키지 만 저장은 여전히 비행 중 차단됩니다. - 성공적으로 업로드된 파일은 앨범에 자동으로 부착됩니다.

  10. · kamolos

    Hide isActive=false 프로그램에서 실시간

    useProgramCatalog 지금 필터 아웃 프로그램 isActive=false 전에 대출 마법사에 그들을 돌려. flag는 서버 측을 준수합니다. (base.isActive 및 override.isActive), 그래서 프로그램을 견인 할 때 Mortgage 프로그램 설정 탭에서 해당 카드가 중지됩니다. in the persona/program selection - 기존 60에 의해 캡핑 staleTime 천장.

  11. · SecurityService

    부팅에 기존 모기지 시장을 위한 Backfill 프로그램 제공

    DataLoader 지금 호출 *************** AppMortgage-engagement 백필 후에. 모든 기존 MORTGAGE를 Sweeps CommerceMarket 및 그 프로그램 제공을 보장합니다. 회사 소개 createMarket-side Hook Landed 전에 만들어진 시장 — 특히이 이전에 Markets & Fields를 통해 추가된 사용자 설치. Idempotent : 완전 부팅 시스템 로그 "모든 시장 이미 제공" 및 건너뛰기.

  12. · kamo-shared-library

    부트 스트랩 모기지 프로그램 제공 시장 만들기 + boot backfill

    사용자가 commerceType=MORTGAGE로 CommerceMarket을 만들 때 Markets & Fields 설정 탭 - 시장은 아래에서 제공하는 프로그램 다운스트림 커머스 표면은 intents를 점합니다. 이전이 만 처음 AppMortgage에 lazily 일어난다, 그래서 새로 추가 된 mortgage 시장 빈 sat 및 KamoLOS 측 관리자는 하나 추가에서 아무런 영향을 보았습니다. - *********** type=MORTGAGE, 호출시 저장 후에 *********** 시장). 관련 제품 시험에서 /catch 그래서 프로그램 참조 실패는 시장 생성을 차단하지 않습니다 (KamoLOS는 프로그램 레지스트리에서 프로그램을 읽습니다, 제공하지 않음). -********** 기타 제품 모든 기존 MORTGAGE 시장은 오퍼링을 보장합니다. SecurityService DataLoader 에 boot 에 사용 하기 전에 생성 된 커버 시장 이 후크 착륙. Idempotent - 정상 상태 부츠는 no-op입니다.

  13. · kamo-internal

    Duplicate binders 그래서 사용자는 원래에 영향을 미치지 않고 포크 할 수 있습니다

    바인더 목록의 컨텍스트 메뉴에서 "Duplicate" 액션을 추가하고 편집기 헤더의 새로운 버튼에서. duplicate는 현재 사용자가 공유하지 않고 소유 한 소스 바인더의 메타 데이터 + 항목 + modifiers에서 시작하며, 즉시 새로운 지점에서 사용자 토지를 자동으로 선택했습니다. 철사: -********** 프록시 경로 - binderApi.ts 및 useBinderStore의 duplicateBinder() - BinderListPanel의 "Duplicate" 메뉴 항목 (모든 눈에 보이는 바인더에 작품 - 소유, 공유 또는 템플릿) - BinderEditor 헤더의 중복 아이콘 버튼 + 스피너

  14. · DocsService

    POST를 추가하십시오 ***********

    Deep-copies는 바인더가 요청자가 소유 한 신선한 바인더로 (주제, 공유 또는 템플릿)를 볼 수 있습니다. 모든 항목 (DOC, SEPARATOR, GENERATED) 주문, 유형, configJson 및 per-instance modifier overrides intact; 복사 binder-wide modifiers; 단독으로 Img 문서를 나뭇잎 (both binders 참조 같은 docs). 복사는 주식 없이 시작하고 isTemplate=false.

  15. · kamo-internal

    Mortgage 프로그램 toggle + MORTGAGE 참여 딥 링크

    - MortgageProgramsPanel은 이제 각 프로그램 카드에 실제 스위치를 발송 낙관적 업데이트 + 실패 롤백. 프로그램 호출 PUT *********** 및 반영 기본 + override에서 효과적인 활성 상태 computed 서버 측. - *********** isActive)는 새로운 엔드포인트를 포장합니다. - /commerce/engagements/[id] 페이지: APPLICATION linkType 현재 경로 /applications/{linkId} (URL 상세 페이지), 누락되지 않음 *************** MORTGAGE 참여 자동직접 /applications/{linkId} 에 로드하기 그래서 URLA 세부 정보의 토지 일반적인 참여 보기 대신.

  16. · SecurityService

    PUT /programs/{code}/active + deprecate 레거시 모기지 POS 엔드포인트

    - MortgageProgramController는 PUT를 얻습니다 **************** body {"isActive": bool}, LOS TAKE APPLICATION에 게이트. 자주 묻는 질문 *********** OrgProgramOverride 행을 업데이트합니다. -********** getMortgageAppById, createMortgageApp, updateMortgageApp, updateMortgageAppStatus 모든 표시된 @Deprecated URLA-fidelity /api/security/mortgage-apps의 javadoc 포인팅 콜러 끝점. 레거시 POS 경로는 back-compat에 대한 기능을 유지.

  17. · kamo-shared-library

    Per-org는 /disable + deprecate 레거시 상거래 전용 모기지 경로 활성화

    -********** OrgProgramOverride 행 recordState.isActive=desired; listForOrg 지금 그리고 기본 프로그램 override's를 가진 활동적인 깃발, 그래서 비활성화 override는 이중을 나릅니다 "이 org는이 프로그램을 명시적으로 비활성화했습니다." - OrgProgramOverrideRepository는 findAllByOrganizationId를 추가하고 *********** upsert + listForOrg 경로에 대한. -********** / 찾기MortgageAppById / *************** / 업데이트MortgageApp / updateMortgageAppStatus는 @Deprecated입니다. 그들은 상업 전용에서 작동 Intents 태그 LOAN APPLICATION 및 만들거나 URLA AppMortgage를 읽지 마십시오 레코드 — back-compat에 대한 유지 *********** 하지만 새로운 코드는 AppMortgageService + /api/security/mortgage-apps를 사용해야 합니다.

  18. · kamolos

    Scrubbable day↔night 주제와 sun-moon SkyToggle

    - 연속 t σ [0,1] 현장 위치 드라이브 ~25 CSS 사용자 정의 속성 에: 온난한 종이 일 사이 선형 RGB interpolation를 통해 뿌리 aurora 밤 앵커 에 lib/scene/palettes.ts - 첫번째 방문에 일의 현지 시각에 과태; 수동 과량은 입니다 쿠키에 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 끈적 - SSR ScenePainter는 첫 번째 페인트 전에 해결 된 팔레트를 구워 반환 방문에 FOUC가 없습니다. 처음에는 자동 모드가 용이합니다. 당일 ~1.4 시까지 - SkyToggle : 태양-moon glyph가 켜지는 점퍼-draggable 엄지 태양과 달 사이 t와 morphs를 가진 순간 - PageGlow + StarField 주변 층 : amber sun-glow 왼쪽 낮, 시원한 달빛 오른쪽 밤에 ~80 씨드 스타 페이드 과거 dusk 과 twinkle via reduce-motion-aware keyframe - t≥0.5 dusk 경계에 MUI 주제 스위치; CssBaseline 몸 색깔 CSS vars에서 읽기 그래서 interpolation은 연속 유지 - 하드 록 된 어두운 클래스 + 색상-scheme을 드롭; 두 가지 수정 long-stale --surface-base (색상 접두사 허용) gradient fallbacks JourneyCrest 및 시상식에서

  19. · kamolos

    박람회 참여/intent/commitment UIDs

    AppMortgageDTO는 이제 commerce-lifecycle 식별자를 수행 SecurityService는 모든 모기지 애플리케이션에 백업합니다. 카테고리 아직 그들을 적극적으로 사용 하지 않습니다, 하지만 그들을 통해 그들을 태워 차입 감당 ("당신의 신청은 투입되었습니다") 할 수 있습니다 URLA 모델을 통해 직접 상거래 레이어를 참조합니다.

  20. · kamo-internal

    Commerce context + 프로그램 설정 탭보기

    - /applications 영웅은 이제 "상업 > 주거 모기지 · URLA 2021"을 읽었습니다. 그래서 직원은 상업 단위의 1개의 수직으로 mortgage를, 아닙니다 독립 파이프라인. - 새로운 Mortgage 프로그램 탭 아래 상업 설정 — read-only 카탈로그의 대출 프로그램 (CONV / FHA / VA / ...) 활성 상태 및 규칙 버전. 설정 nav 모든 세 위치에서 업데이트 (subTopics, 경로, labelFor). - AppMortgageDTO/SummaryDTO + 새로운 ProgramDTO/LoanProgramCode 유형 거울 공유lib 변경 (engagementUid / intentUid / promiseUid). - mortgageAppsApi.listPrograms()는 기존 /programs endpoint를 조회합니다.

  21. · SecurityService

    LOS 권리 + /commerce/engagements 종료

    - MortgageAppController : 이제 모든 엔드포인트는 RoleRightType에 게이트합니다. 지원하다 LOS VIEW PIPELINE가 필요합니다. 새로운 응용 프로그램을 만들기 위해서는 LOS TAKE APPLICATION; 편집은 LOS 작성 역할 (테이크 / 프로세스 / 쓰기 / 닫기 / suspend); 삭제는 LOS SUSPEND OR WITHDRAW가 필요합니다. KamoLOS의 서비스 계정은 이미 전체 LOS를 실행하므로 납세자 여행은 비범한; 직원 사용자는 그들의 역할 당 문질러. - CommerceEngagementController: 새로운 GET *********** (Type/status/date 필터와 목록) 및 GET .../engagements/{uid} (detail), ACCESS COMMERCE에 게이트. 이것은 수직 배경에 반대입니다 mortgage-apps endpoint — 당신이 읽는 동일한 철사 체재 모기지, 소매 주문 또는 대여 예약.

  22. · kamo-shared-library

    철사 URLA 모기지 Engagement/Intent/Commitment로

    Mortgage는 상업 시스템의 한 수직 - 소매, 임대, 서비스, 구독 및 조달. 이 철사 URLA-fidelity 모기지 도메인-agnostic 상거래 라이프 사이클에 스택 그래서 크로스 수직 표면 (pipeline 대시보드, 분석, 고객 포털)는 다른 어떤 것과 같은 모기지 참조 참여. - 신청 : 새로운 참여 id / intent id / promise id FKs (nullable for 유산 행). - *********** 부트 스트랩 org의 MORTGAGE CommerceMarket + 첫 번째 앱에서 LoanProgramCode 당 하나의 오퍼링; 모든 AppMortgage에 Engagement+Intent를 붙입니다; 거울 LoanFile. (주) Intent.status 및 Engagement에. 상태; 재료에 대한 약속 대출 조건 스냅 샷으로 FUNDED. Idempotent 엔드 투 엔드. - AppMortgageService: createBlank/createFromLead는 참여자에게 첨부합니다. setSelectedProgramCode는 Intent의 제안을 새로 고침합니다. - LoanPipelineService.transition 거울 각 전환 후; 상업 미러 실패는 URLA 진행을 차단하지 않습니다 (로그 + 계속). - AppMortgageDTO / AppMortgageSummaryDTO 참여 Uid / 정수 / 감사합니다.

  23. · kamo-internal

    바인더, 분리기, 생성된 docs로 주최자 탭 추가

    Doc 관리자에 주최자 추가 : - 새로운 "주최자"탭 (위치 4) 바인더 목록 + 편집기 분할보기; 기존 탭 이동 오른쪽 - 모든 doc 행에 "주관에 추가"작동은 바인더 피커를 열 수 있습니다 (신호 바인더 또는 새로운 생성) - 바인더 편집기 : 드래그 투-주문 항목 (HTML5 DnD), Add Page Separator (Color + label via ModernColorPicker), add Generated Doc (Cover Page, Contents, Photo Album, Word Count) - Photo Album은 업로드-new-photos (또한 doc manager에 추가) 및 검색-existing 지원 - Binder-wide modifiers 패널은 esign modifier 모양을 재사용합니다 (페이지 번호, 상표, 워터 마크) - per-doc-instance modifier overrides per-item 대화 상자 - 미리보기 모드는 iframe에서 병합 된 PDF를 렌더링합니다. - 다운로드 버튼 /api/docs/binders/{id}/render New Zustand store useBinderStore, REST 클라이언트 앱/utils/binderApi.ts, 그리고 Next.js proxy routes under /api/docs/binders/* 기존의 이미징 프록시 패턴 미러링.

  24. · DocsService

    주최자 백엔드 추가 — CRUD, 렌더링, 생성된 문서

    /api/docs/binders 아래 새로운 REST 표면: - BinderController: CRUD의 품목 add/update/remove/reorder, 공유, 렌더링 - BinderService: org-scoped 액세스 체크, 소유자/share/template 가시성, 항목 위치 관리 - BinderRenderer: 두 패스 병합 (deferred ToC/WordCount), 공유 PdfBuildUtils를 통해 per-instance와 binder-wide modifiers 적용 - Cover Page, Table of Contents, Word Count, Photo Album (이미지 바이트를 위해 MinIO를 사용) 관련 기사 **************** esign-modified docs 및 *********** 에 대한 액세스 제어.

  25. · kamo-shared-library

    Binder/BinderItem/BinderShare entities 및 저장소 추가

    새로운 doc-manager 주최자 기능을 위한 persistence layer 추가: - 바인더 (Long id, owner member, org-scoped, isTemplate, 바인더 넓은 modifierJson) - BinderShare (UUID, 수신자, READ/WRITE 역할) - org-scoped queries와 Spring Data JPA 저장소 및 "회원 가입 가능" 조합 (일반 + 공유 + 템플릿) Schema는 Hibernate의 ddl-auto를 통해 KamoInitializerService에 의해 자동으로 픽업됩니다.

  26. · kamolos

    테스트 배너, 뷰 포트에 맞는, 쿠키 동의를 추가

    - TestModeBanner는 --kamolos-banner-h에 그것의 고도를 간행합니다 globals.css는 min-h-screen에서 이렇게 홈 보기를 뺍니다 더 긴 오버 플로우 배너의 픽셀에 의해 뷰 포트. - 배너는 슬라이딩 amber shimmer + 느린 그림자 펄스를 얻기 때문에 활성 경고로 읽습니다, 마케팅 미리보기 바를 미러링. - 새로운 CookieConsentBanner (모든 것을 받아들이고 / 분석 관리 toggle), 마케팅 버전에서 어두운 사용 aurora 표면 + 영구 --org-primary / --org-gradient.

  27. · kamolos

    표면 SAFE 법 NMLS ID lender + 할당 된 LO

    아바타와 LoContactCard를 추가, 존재 펄스, 확인 된 NMLS 링크, 그리고 전화/이메일/message 영웅의 왼쪽에 행동하고 표면을 적용, 그래서 차용자의 라이센스 대출 기인자 (이름 + NMLS ID)는 항상 하나 SAFE 법 §1503 및 Reg Z §1026.36 (g)에 따라 탭하십시오. 뚱 베어 footer의 NMLS는 "Licensed · NMLS #"신뢰 알약에 승진시키고, useAssignedLO 이제는 대출 파일 LO 할당까지 가짜 데모 LO를 반환 토지. LoGuideChip는 LO가 자신의 표면을 가지고 있기 때문에 목소리로 돌아갑니다.

  28. · kamolos

    데모 lender 자동 로드가 실제 테넌트가 해결되지 않을 때

    "still not branded"- 진짜 tenant org는 존재하지 않습니다. SSR fetch는 null을 반환하고 lender-facing 표면은 번들 Kamo 기본으로 떨어졌다. 더 보기 브랜딩 시스템은 작동했다; 그것은 그냥 브랜드에 아무것도 없었다. 이제는 자동로드가 낙하 될 때 완벽한 데모를 발송합니다. 진짜 fetch 반환 아무것도 과 stubs 허용 *********** 기본). 생산과 stubs 여전히 bare Kamo 디폴트를 통해 떨어지지 않도록 우리는하지 않습니다. "Apex Mortgage"에 실제 대여를 발송했습니다. - lib/org/demoOrg.ts: "Apex Mortgage" - burgundy (#8B1538) 1 차 및 금 (#D4A24C) 이차, aurora에서 멀리 deliberately 상표가 붙은 효력은 unmistakable 입니다. 가득 차있는 populate: tagline (" 3 가정을 얻기의 세대."), NMLS #123456, 지원 전화 + 이메일, 년은 1989년, EHO + EHL 표, 선형 135를 설치했습니다 gradient 방향. 새로운 AssetBasePath: org의 '/demo-lender' type tells ThemeLogo 에 로드 /demo-lender/logo-full. 전 svg MinIO 또는 글로벌 fallback 시도. -********** + Logo.svg: 실제 Apex Mortgage burgundy → gold gradient의 낱말과 산 말 표. 이름 * 단지 wordmark, 실제 잠금. - lib/org/fetchOrganization.ts: 상류가 있을 때 DEMO ORG를 반환합니다. unachable 또는 org는 등록되지 않으며 stubs는 그것을 허용합니다. 실제 호스트 / 현실적인 해결책은 현재 때 이깁니다. - 구성품/theme/ThemeLogo.tsx: useOrg().assetBasePath와 상담 후보 체인의 앞에 접두사를 넣어. 데모 lender의 로고 땅; 진짜 tenants' MinIO 자산은 아직도 첫번째를 때 해결합니다 관련 기사 - app/layout.tsx: <link rel="preload"> 동일한 우선순서를 추적, 그래서 SSR preload는 데모 모드가 될 때 데모 lender의 로고를 대상으로합니다. 이름 * - *********** if org.id === 'demo-apex', 배너는 "Showing the demo lender (No tenant org) 이 호스트를 위해 구성)"그래서 테스터는 브랜드가 그들이 볼 수 있습니다. 32/32, 140 테스트 패스를 빌드합니다. 대출 앱을 다시로드하고 당신은해야합니다 이제 Apex Mortgage 로고 + 헤더의 이름, burgundy 및 CTA와 리본 전체에 금, " Apex Mortgage에 오신 것을 환영합니다." 착륙 영웅, NMLS #123456 + 발기인의 EHL, "Call Apex Mortgage (800) 도움 장에서 555-2739".

  29. · kamolos

    기본 브랜드를 만드는 것은 악센트가 아닙니다

    "Kamo 제품 lender 악센트"에서 차용 앱을 재구성 "lender의 제품, Kamo 엔진으로." 지금 각 표면은로 지도합니다 lender의 정체성. - LenderLockup의 특징 **************** - 원뿔 대출 브랜드 마크는 어디에 사용. 스케일 sm → md → lg → xl → 영웅. 제품 정보 로고 (또는 lender의 기본 색상의 wordmark fallback) lender's name; 아래 옵션 tagline. 모든 표면에 의해 사용하는 "나는 나의 lender's 사이트에 있습니다." - BorrowerHeader - 헤더 바는 h-14/h-16, 로고 + lender name으로 성장합니다. 항상 눈에 띄는 (size="md" forceWordmark), 드롭 그림자 주석 lender의 1 차. 이전 작은 24px 코너 마크가 사라집니다. 새로운 click-to-call 전화 버튼은 lender의 도움 옆에 앉아 1차 국경 + glow; 모바일에서 아이콘 버튼으로 붕괴합니다. 더 보기 악센트 리본은 4px (was 2px)이며 여전히 lender gradient를 팬. - 랜딩 페이지 영웅 - 중심, 영웅에서 레이더 잠금에 의해 지배 강한 유리 카드 안쪽에 가늠자 --org-primary glow. 위시리스트 접은 "{LenderName}에 오신 것을 환영합니다." (Gradient-clipped lender) name is the headline), lender's tagline 와 the subtitle. 착색된 알약은 대신 "{Lender} · Loan onboarding"라고 말합니다. 일반 "Kamoville". CTA 버튼이 커지고 강한 운반 --org-primary 외부 놀. - LenderFooter - 전체 attribution 행 : 이름 + NMLS 소비자 액세스 링크 + 전화 + 이메일 + 웹 사이트 + EHO / EHL 마크. 연락처 "© 2023–2026 {LenderName}를 읽으십시오. 모든 권리 보유." 작은 "카모"신용. 영웅 표면에서 눈에 띄는. - HeroBrandIntro - 스플래시는 3.4 (와 2.4), 첫 방문에 보여줍니다 그리고 매 30 분 아이들 리턴 (한 번의 세션). 로고 카드 성장 size="hero" 내부의 더 강한 유리 카드와 무거운 --org-primary 외부 놀. "{LenderName}에 오신 것을 환영합니다." 헤드 라인입니다. lender의 tagline은 자막입니다. - generateMetadata - Next.js 제목 템플릿은 이제 `%s · {LenderName}`입니다. 기본적으로는 lender 이름만 있습니다. 모든 아이 페이지 읽기 브라우저 탭과 OG 카드의 lender-first. 사이트이름, 제목, 및 org 기록에서 모든 흐름 설명. 32/32, 140 테스트 패스를 빌드합니다. 당신의 tenant config가 populated tagline/nmlsId/phoneSupport/ 있는 경우에 emailSupport / yearEst / colorPri / colorSec / 로고 자산, 사이트 지금 당신의 lender의 제품 같이 unambiguously 보입니다. 아무것도 "Kamo"기본값에 매료되어 있습니다.

  30. · InitializerService

    차용 브랜드의 마이그레이션 + 공개 열

    Kamo-shared-library 조직의 7개의 null을 추가합니다 이제 법인 선언 (TAGLINE / NMLS ID / PHONE SUPPORT / EMAIL SUPPORT / EQUAL HOUSING DISCLOSURE / ON PRIMARY TEXT / GRADIENT DIRECTION 등 kamo-los 납세자 앱은 schema 없이 상표를 붙일 수 있습니다 기존의 orgs 행에 오류. @Order(35) — LogoFullExtMigrationRunner 이후 실행 (30) 전 LeadCompanyColumnRunner (40). ADD COLUMN을 통해 Idempotent는 제외하지 않습니다; 재 실행에 안전. 프로젝트 정책 이 파일은 여기에 실행되지 않습니다 - KamoInitializerService 사용자에 의해 시작된다.

당신의 우주는 기다리고 있습니다.

몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.

영원히 무료 - 신용 카드 필요 없음