제품 루트 = 자체 SUBSCRIPTION 시장, 어떤 시장
고객 org (e.g. BluEleven)는 OWN 비즈니스 시장을 소유합니다 (RETAIL/MORTGAGE) KamoCRM 플랫폼의 고객 남아있는 동안 회사를 실행하기 위해 - 그것의 회원은 KamoCRM을받을 수 없으며 자신의 뿌리가되지 않습니다. 이전 다음 'owns any act...
배경 refetch에 org 목록을 유지; dedupe 세션 호출
/network re-fired fetchNetworks on 모든 배경 세션 새로 고침 및 모든 fetch 오류에 전체 목록을 숨겨, 그래서 transient blip 또는 stale hasPlatformAdminAccess (wrong-endpoint 403)는 사용자의 떨어질 수 ...
Revert 이메일 링크 클릭 핸들러, isolate 원인
사용자 보고서 이메일 리뷰 링크는 여전히 아무것도하지 않고 텍스트를 클릭 선택은 죽어 죽어. 마우스 오른쪽 버튼과 hover 모두 작동, 그래서 앵커 요소는 intact이고 URL은 유효합니다. 세 가지 시도 클릭 (window.open, useEffect target= blank, 캡...
레테르를 붙이는 득점방해에 재생산 favicons; sniff 진짜 로고 유형
offerUpdate (모든 사용자 정의 라벨링에 실행)는 config/css/manifest를 썼습니다. 하지만 결코 재생 favicons – 그만 프로듀서에 의해 생산 되었다. 이름 * org는 전체 규정없이 씨앗이 빈 favicon / 설정, 그래서 모든 Kamo 사이트 (logi...
Org 폴더가 부족할 때 템플릿의 Seed globals.css
프로비저닝 (모든 색상 저장에서 실행) org의 css/globals.css를 다시 그 객체는 한 번만 제공 전체에서 그것을 copied 기본 템플릿. org는 단지 config+logos로 종종했다, 그래서 다운로드 threw NoSuchKey 및 org의 globals.css - 모...
그것의 진짜 연장을 가진 가득 차있는 로고, hardcoded .svg를 보여주십시오
브랜딩 탭 내장 로고FullUrl 마운트에 로고 full.svg, ignoring org의 로고FullExt. png/jpg/etc로 업로드된 전체 로고 로고 전체.{ext} in MinIO, 그래서 .svg URL 404'd 및 렌더링 된 이미지 ( 로고는 실제로 저장되었습니다). L...
새로 발행된 certs가 TLSStore를 새로 출시했습니다
update tls store() ran at start and on shared-storage imports, 그래서 cert-manager (HTTP-01)가 신선하게 발행 한 cert는 tls-* secret로 준비되었습니다. 하지만 다음 자동 종료까지 TLSStore에 추가하지 ...
리디렉트로만 루트를 backend so Traefik v3를 사용하면
Traefik v3는 IngressRoute 라우터를 서비스로 비활성화합니다. [] 언제 allowEmptyServices는 (이러한대로), 그래서 도메인 aagnostic HTTP->HTTPS 리디렉션 라우터는 "disabled" (서비스가 존재하지 않습니다) 그리고 포트 80 여전히...
모든 HTTP 호스트를 HTTPS + 게이트 auto-cert로 이동 org 도메인
Custom org 도메인(예: login.sign.pink)은 Traefik의 bare를 반환합니다. 일반 HTTP에 "404 페이지": 유일한 port-80 리디렉션 라우터 *.kamocrm.com 및 ***********에 하드 코딩 배포 작업 흐름에 의해 적용되지 않았으므로 클러...
Persist conversion error 대신 침묵의 실패
템플릿과 일반 업로드 변환 파이프라인 모두 삼키는 Docs 변환 실패 (로그인 전용), 떠나 is converted=false없이 기록 이유 - 그래서 doc 관리자는 "Document not transform"을 보여주었다. Docs의 변환 할 때 모든 doc. 이제 실패 이유는 Im...
Docker pruner 단계에서 npm을 통해 터보 설치; 핀 pnpm; .dockerignore 추가
Pruner 단계 ran `pnpm 추가 -g 터보` 전에 어떤 package.json 존재, 그래서 corepack grabbed pnpm 11 and failed with "global bin directory /pnpm/bin not in in 파스". `npm install -g...
기본 빈 STRIPE CONNECT WEBHOOK SECRET 그래서 KamoLOS 부츠
Configmap은 기본값없이 ****************를 참조했습니다. 그래서 스프링의 placeholder 결심자 Java 레벨에 도달하기 전에 *********** 이미 값을 대우하는 옵션으로. KamoLOS 시작은 Stripe Connect webhook에서도 실패했습니다. ...
공유-lib LoanRepository → PersonalLoanRepository 이름 추적
LoanRepository의 모든 가져 오기 및 필드 유형이 PersonalLoanRepository로 업데이트됩니다. 20 KamoLOS 소스 파일 이상 + 1 테스트 (Lombok-injected field name stay as loanRepository - 유형 변경 만). 깨끗...
이름 LoanRepository → PersonalLoanRepository
Spring Data JPA는 인터페이스의 저장소 베란 이름을 파생합니다. @Repository("...")의 간단한 클래스 이름, 그래서 이전에 workaround는 실제로 관련 충돌을 방지하지 않았다. *********************에 모기지 저장소 서비스 스캔 패키지 (Ka...
Add /commerce/personal-loans/new entry + 광택 시장-경쟁적인 제안 페이지
QuickActionsBar "New Loan Offer" 액션은 /commerce/personal-loans/new에 지적했습니다. 그러나 그런 페이지가 존재하지 않습니다. Next.js는 동적 [loanId] 페이지로 옮겼습니다. loanId="new" 과 표면 "Loan not f...
Loan/LoanRepository 충돌을 mortgage 앱으로 피하십시오
KamoInitializerService는 두 개의 @Entity 클래스를 호출하기 때문에 부팅 실패 'Loan'과 'LoanRepository'라는 두 개의 저장소 클래스가 원했습니다. 같은 JPA 엔터티티 이름을 등록하고 같은 물리적 테이블 '로안', 같은 봄 bean 'loanRe...
Tier 1 critical correctness pass
T1.1 Stripe disbursement strategy: TREASURY (stub — requires SDK upgrade or raw HTTP) / CONNECTED_ACCOUNT (Transfer.create — works in SDK 28.2.0) / MA...
포스 메일 링크는 캡처 단계 탐색을 통해 클릭
보고서는 이메일-preview 링크에 대한 클릭을 자동으로 수행하지 않습니다 — hover는 URL, 콘솔 오류가 없지만, 네비게이션은 불이 없습니다. 클릭을 삼키는 업스트림 리스너의 지문점 브라우저의 앞에 예방할 수 있습니다. 캡처 단계 문서 클릭 청취자 만 일하는 것은 이메일 내용...
Native target= blank 새로운 탭을 열고, 드롭 창.open
이전 수정은 클릭을 가로지르고 window.open()라고 합니다. — 하지만 팝업 차단제와 확장은 window.open을 직접 차단할 수 있습니다. 핸들러를 클릭, 그래서 링크를 조용히 열 실패. Native 앵커 클릭 target=" blank" 은 절대 차단되지 않습니다. 클릭 ...
이메일-preview 링크가 새 탭에서 열립니다
Sanitizer는 이미 각 링크에 target=" blank"를 설정하지만, NavigationInterceptor의 문서 레벨 클릭 핸들러는 모든 링크 클릭 — including target=" blank" ones — and Flipping 글로벌 로드 오버레이 on. 현재 탭은 ...
/api/security/mortgage-apps catch-all 프록시 추가 — 404 루트 원인
Kamo-internal 앱 프록시는 각 Java 백엔드 경로에 명시된 Next.js 경로 핸들러 (상급 세그먼트 당 하나: /commerce-markets, /pos, /leads, ...). /api/security/mortgage-apps에는 핸들러가 없습니다. mortgageAp...
/pipeline/{vertical}/{x} 404s - 네임스페이스는 /commerce/로 변경되었습니다
/pipeline 네임스페이스에는 이 앱의 루트가 없습니다. — 모든 링크가 이동 /pipeline/applications/{x}, /pipeline/orders/{x}, /pipeline/engagements/{x}, /pipeline/service/{x}, /pipeline/agre...
/org/domain의 기능 모음 교체하기 전에 Detach
이전 수정은 적용되는 모델 투영을 *********** 하지만 호출 org.setFeatures(projected)는 여전히 관리된 조직에 있습니다. 조직.features @OneToMany에는 cascade=all-delete-orphan가 있습니다. "Catcade='all-dele...
독립 응용 아이콘 제거 - LOS는 상업의 밑에 생활
모기지 신청 파이프라인은 상업 체계의 1개의 수직입니다, 최고 수준의 nav가 아닙니다. Loan Officers, Processors 및 underwriters는 그것을 통해 도달합니다 Commerce → /commerce 페이지의 응용 프로그램, 이미 경로를 통해 PipelineVi...
Resolve ambiguous /org/domain 핸들러 - 상업 nav 사라졌다
SecurityController는 두 번째 ****************를 가지고 있습니다. ****************로 칭함 봄 거부 "Ambiguous handler 방법 mapped" → 500 → kamo-internal 요청 SSR layout은 omits POS를 사용하...
Flatten add-item menu 그래서 Generated Docs는 도달 가능
"Add Generated Doc" submenu 방법은 작동하지 않았습니다. 메뉴 항목을 클릭하면 모호 메뉴를 닫아 둥지 메뉴 전에 메뉴를 고정 할 수 있으므로 두 번째 메뉴가 나타나지 않습니다. 단일 평면 메뉴 (상위의 세퍼터, 디버터 라벨 "Generated Docs", 그 다음 ...
SkyToggle에서 여행 하늘을 운전, 개성 칩에서 unstack
- SkyToggle을 top-14에서 자신의 상단 오른쪽 행으로 이동하여 슬라이더가 중지합니다. overlapping LoGuideChip, 이는 오른쪽에 위치 14 assuming 그것 단지 size-9 SoundToggle를 삭제해야 - Wire JourneyScene + Time...
두 배 부록 렌더링 쿼리 문자열을 중지; 공유 추가 + 메타 대화 상자
수정 렌더링 : - *********** 수동으로 appending ?inline=true to apiPath, 하지만 forwardToApi 이미 들어오는 쿼리 문자열을 보존. 듀플렉스 쿼리 문자열은 스프링이 `true?inline=true`를 인라인 Boolean으로 파고 400을 ...
@EnableJpaRepositories에 com.kamo.z.shared.binder 포함
DocsService boots with the 명시된 basePackages list, not classpath 스캐닝, 그래서 BinderRepository는 발견되지 않았습니다 - 시작은 "BinderRepository"의 자격이없는 bean과 실패하고 새로운 팟은 CrashLoo...
LenderFooter 위의 집 CTA 클러스터 리프트
Bottom-12/sm:bottom-14에 단추는 lender attribution에 의해 입혔습니다 footer (~76px 데스크탑에서 키 큰). Bumped offsets 그래서 클러스터는 그것을 명확하게합니다.
SoundToggle를 덮는 개성 칩을 멈추십시오
LoGuideChip은 JourneyHero의 top-3/right-3에 절대적으로 배치되었습니다. JourneyApplyLayout, app/layout.tsx의 글로벌 SoundToggle과 같은 자리. 칩의 오른쪽 오프셋을 이동하여 36px 사운드 버튼을 지우십시오.
404로 수화 경주 중지 - 실제로 존재하는 로고 URL을 렌더링
Tenant MinIO 물통은 canonical로 로고 full.svg/logo.svg를 붙듭니다 이름; 아무도 -on-dark 변형을 업로드. 우리는 시도했다 Dark-mode URL 첫째, React 수화 전에 브라우저에서 404'ing onError 핸들러를 부착 한 다음 깨진 이...
Unwrap SecurityService의 배열된 색깔 철사 체재 그래서 tenant 상표 vars 실제로 대중
SecurityService는 색상의 조직을 돌려줍니다. EmbColorPalettePair ({ 색상: { colorPri: { colorPri, colorLight, ... } } } 최고의 '#'없이 hex를 저장 - 거울 kamo-internal's Organization.fro...
SSR 패스에 로고 img 렌더링 - 더 많은 wordmark-only 플래시
ThemeLogo의 빈 문자열 초기 로고Src + useEffect-to-fill 패턴 SSR 렌더링이 워드마크를 돌리면 수화 src를 수정했습니다. 그 체인에서 아무것도 hiccuped (그는 않았다 — hostname은 localhost이므로 getThemePath()가 빈과 체인을...
Fake-tenant defaults를 죽이고 실제 org의 브랜딩을 렌더링합니다
Apex Mortgage 데모를 제거하고 Kamo를 추가하지 않아야합니다. "default" fallback 나는 그것을 대체했다. 둘 다 끝났습니다 발명 된 데이터가있는 누락 된 상태. - lib/org/demoOrg.ts 삭제. - public/demo-lender/ 삭제 - fe...
기본 로고를 발송하기 때문에 unbranded 호스트는 실제 잠금을 렌더링
Ported ThemeLogo 떨어졌다 로컬 파일 fallback the kamo-internal 원본이 있었다, 그래서 어떤 호스트 누구 tenant MinIO 버킷은 없었다 규정 (또는 전혀 존재하지 않습니다) 조용히 텍스트로 정렬 워드마크. 기본값은 kamo-internal/pub...
하늘 대기의 측면 비율을 보존하므로 구름 + 태양 + 조류는 초상화에 뻗지 않습니다
CloudsLayer, BirdsLayer 및 SkyLayer의 태양 / 스타 부분이었다 keepAspectRatio="none"를 사용하여 높은 초상화 전화 SVG 동등한 체계는 축선 당 자주적으로 기지개했습니다. 결과: ellipse 구름은 수직으로 파괴, 태양 원형은 키가 큰 타원...
영웅 삽화를 위한 이동할 수 있는 초상화 + 크롬
초상화 전화에서 각 층의 100x60 뷰 박스가 기지개되었습니다. 집과 전경을 만드는 높은 좁은 장방형으로 스쿼시와 이상한. 구조 층을 전환하십시오 (가로, 스카이라인, 가정, xMidYMax 슬라이스에 전경은 종횡비를 유지하고 스트레칭 대신 수평으로 자르기. 하늘, 구름, 그리고 새는...
일러스트 래퍼는 높이가 없었다 — 각 층은 0px 스트립으로 렌더링
JourneyIllustration root div는 `relative overflow-hidden`이 아니었다. 지정된 차원. 그것의 부모는 절대 inset-0를 통해 치수를 잽니다, 그러나 상대 어린이 만 자동 높이 차단했다 - 그리고 모든 후반 이후 절대적 위치, 아무런 흐름 내용...
Sky no longer washes to white — golden-hour default + tuned sky shader
Sky was reading white because: - toneMappingExposure 1.05 + Bloom@0.45 with luminanceThreshold 0.72 was blowing the bright procedural sky into the bloom buffe...
3D 세계 (/journey/persona 그 후 /journey)의 우체국 빌러 토지, 유산 MUI 마법사
보상 게이트 + 자동 이력서는 /journey/persona?app=<uid>, /journey?app=...&persona=..., 그리고 /journey에 /journey에 /journey에 /journey에 /journey에 /journey에 /apply/property 마법사를 ...
Welcome-back gate는 진정한 반송 방문자 만 트리거해야합니다
Brand-new visitors was 타격 the welcome-back gate 그만큼 순간 그들 hasPriorProgress가 현재로 재조정되었기 때문에 이름을 입력 state on every render — 그래서 곧 상태. 이름 * 이름이 설정되었습니다. 대화의 중간에 화재...
과태 흐름 + 견적에 isDone-only 자동 승인 제거
예상치 못한 화면에 착륙한 사용자의 실제 버그 "시작": 흐름 엔진은 DONE을 반환합니다. 유량은 null입니다. (흐름 선택 없음 → 질문 목록 없음 → 반복은 아무것도 → DONE)를 수확합니다. auto-advance 상태 `(isDone ||최소한도용)` 톱 DONE과 set ...
강제 역학 그래서 신선한 배치는 캐시 된 HTML에 의해 마스크되지 않습니다
홈페이지는 statically prerendered (○ / 빌드 출력), 이는 같은 HTML을 의미한다 - 특정 펑크에 내장 된 참조 hashes — indefinitely 에서 브라우저가 재효율 될 때까지. 후 그 배가 고정 (예를 들면, 환영 뒤 문, "시작" 링크), 방문자가 자...
Welcome-back gate + 항상 사용 가능한 "시작"
Persisted IDB 상태와 방문자가 곧 떨어졌다 어떤 단계로 그들은 마지막 도달 - 견적을 포함 화면, 즉 ( 대화 형 리드 업없이) 혼란으로 읽습니다. 따뜻한 대화를 결코 본 적이 없는 사람을 위한 숫자 덤프. 이 변화: 1. persistence 저장소에 resetAndCl...
Kamomarketing 패턴이있는 Align Dockerfile (노드 : 24-alpine, 2 단계)
CI 빌드는 npm 10.8 (bundled) Node 20)는 Next.js의 @swc/helpers 피어Dep (>=0.5.17)를 0.5.21로 해결합니다. 잠금 파일 (현지 npm 11 / 노드 24에서 생성) 0.5.15 기록 다음의 `dependencies` 블록에서. 두 n...
첨부 파일 + 인라인 이미지 fetches를 위한 우회 서비스 노동자
<a download> 첨부 파일 행 대신 파일로 이동 다운로드. 이메일 서비스 노동자는 각을 제외하고 /api/email/* 이진 스트림을 포함하여, 응답을 반환 responseWith — Chrome는 SW 합성 응답을 다르게 취급합니다 download-attribute clicks...
Resolve cid: 서명 플래너를 중지하는 시간을 절약하는 인라인 이미지
Cid: rewriting는 post-commit useEffect에서 일어났습니다, 그래서 sanitized HTML은 리터럴 src="cid:..."과 각 img를 mutated effect로 DOM을 명중합니다. 다음 진드기에. 안HTML (예 : 캐시 대 신선 body fetch...
Subdomain-tenant org 버킷을 자신의 MinIO 폴더로 해결
getThemePath()는 그들 모두를 위해 apex+tld에 hostname을 감소시켰습니다 주인과 물통 폴더, 그래서 subdomain tenants 같이 gnosia.demo.kamocrm.com 대신 부모 apex의 브랜딩을로드 그들의 자신의. 이제 가장 깊은 별칭 (login...