ContentJson/contentPlainText 에 대한 빈 문자열 대신 null을 kb 문서 생성
빈 문자열은 JSONB 열 유형에 대해 유효하지 않습니다. DB 오류가 발생하면 내용이 없습니다.
Properly는 단계 전환에 Capcha 사건 청취자를 청소합니다
RemoveEventListener 호출은 setTimeout 콜백 내부였습니다. 반환 값, 이는 JavaScript 무시. 이 발생 핸들러 모든 user→pass 단계 전환에 축적, performLogin 만들기 Capcha가 확인되었을 때 여러 번 화재. 고정 by 추적 setTim...
UPSERT SYSTEM email template rows on every run
Previously the seed runner only inserted rows that didn't exist, so canonical HTML changes never propagated to the DB. Now existing SYSTEM rows have their bodyH...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
{{logoUrl}} placeholders를 사용하여 이메일 일치 미리보기를 보냈습니다
serializeFullEmailHtml 지금 상점 *************** 대신 bodyHtml에 있는 placeholders. EmailTemplate서비스 이미 전송 시간에 절대 로고 URL을 주사 (org 도메인에서). 더 보기 클라이언트 측면 미리보기는 표시를 위한 로컬 테...
전체 브랜드 디자인을 가진 모든 canonical 템플릿을 다시 작성
이제 모든 5 템플릿은 일관성있는 외부 테이블 구조를 사용합니다 (600px, 둥근 블록 편집기의 serializeFullEmailHtml와 일치하는 카드, 회색 header/footer) 산출. 헤더와 발러는 {{logoUrl}} / {{logoSimpleUrl}}을 포함합니다. Em...
Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
미리보기 및 편집기를 단일 coherent 시스템에 통합
- DOMParser를 통해 시스템 템플릿 콘텐츠를 추출 <td> 셀, emailFrame이 블록을 재축일할 때 더블 위핑 방지 - 백엔드 미리보기 라운드 트립을 클라이언트 사이드 프리뷰로 교체 serializeFullEmailHtml (블록) 그래서 미리는 항상 라이브 편집기 일치 -...
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
등록 후 Avatar Creator avatar를 서버로 업로드
Avatar Creator avatars는 로컬 양식의 SVG 데이터 URL로만 저장되었습니다. 서버로 전송하지 않고, avatar 설정 없이 새로운 사용자를 떠난다. 제출 시간에 SVG를 PNG blobs로 변환하고 업로드 기존의 register-photo endpoint 그래서 av...
Use core NATS pub/sub for email-verified SSE fan-out
Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...
수정 센터 스크롤 및 시스템 템플릿 블록 로딩
- 고도를 제거하십시오: EmailFrame에서 100% 이렇게 내용은 자연적으로 성장하고 일폭은 작동합니다 - 완전한 HTML 시스템 템플릿에서 <body> 콘텐츠 추출
블록 편집기에서 로딩 할 때 canonical HTML에서 내부 내용을 추출
BodyBlocks가 null과 bodyHtml가 <!DOCTYPE로 시작되면 추출 main content <td> 으로 초기 HTML 블록 그래서 사용자가 기존을 볼 수 빈 편집기 대신 콘텐츠.
Use avatarType field + JDBC for photo URL generation to handle Hibernate proxies
**************** previously used instanceof AvatarPhoto to determine avatar type and cast to read fileExtension. When Hibernate returns a base-class proxy (e.g....
Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
블록 디자이너에 있는 Full-document bodyHtml의 double-wrapping
BodyBlocks가 null이고 bodyHtml는 전체 <!DOCTYPE html> 문서입니다. (예 : canonical Seeded Templates), 단일 블록으로 가져 오기 serializeFullEmailHtml는 두번째 <!DOCTYPE html> 포탄에서 그것을 감싸기 ...
검색 결과를 찾을 수 없음 한국어 사전에
MUI Box는 수치 폭/높이 값 0–1을 비율로 해석하므로 width:1 숨겨진 입력 커버 전체 카드. 0으로 변경 입력은 보이지 않지만 레이아웃을 방해하지 않습니다.
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
토큰 링크 자동 검증 및 로그인으로 리디렉션; 코드 초점 표시 추가
- /verification?token=xxx 지금 호출 확인EmailByToken 마운트 및 성공에 로그인하는 리디렉션; 실패에 대한 코드 입력으로 돌아갑니다 - Active code box는 파란색 링을 보여주기 때문에 사용자가 입력한 위치를 알고 있습니다. - InitialErro...
Lift *** 위젯 위 click-to-focus 오버레이 (z-index)
오버레이 (위치:absolute, z-index:0)는 Capcha를 덮었습니다. 나중에 DOM 순서에 나타나기 때문에 위젯. z-index를 추가: *** 콘테이너는 포인터 사건이 그것을 도달합니다.
Remove nonexistent postfix-lmdb package, install lmdb library instead
postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.
Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory
- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...
Switch Postfix sasl_passwd from hash to lmdb format
Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...
렌더링 인라인 대신 등록 후 /verification로 이동합니다
URL을 정확하게 유지 - 브라우저는 /verification /member를 보여줍니다.
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Populate all EMAIL_VERIFICATION template variables
Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Use subdomain-aware SQL to match findByDomain JPQL logic
Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...
Host/X-Forwarded-Host를 설정하면 APIService가 올바른 org를 해결합니다
APIService overwrites X-Forwarded-Host with request.getServerName(), 이는 읽기 호스트 헤더에서. 명시된 호스트 헤더 없이 K8s 내부 서비스 hostname은 SecurityService에 전달되었습니다. org는 아무것도 돌려보내...
Correct EmailService URL port in configmap (4203 -> 80)
EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.
Bypass JPA org lookup to avoid Hibernate cascade flush error
**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...
Cascade orphanRemoval 오류를 피하기 위해 in-place를 수집합니다
Org.setFeatures(newList) 호출은 Hibernate-tracked persistent를 대체합니다. 수집, JpaSystemException 어떤 쿼리 트리거 자동-플래시 열린 EntityManager 세션에서 (OpenEntityManagerInView). 관련 기사...
Use getReferenceById to avoid cascade orphanRemoval flush error on registration
Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...
