콘텐츠로 건너뛰기
KAMOUniverse

변경 로그

무슨 일이야?

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

  1. · SecurityService

    Add AccountSettingsController + Service for phone + security questions (SP3)

    Allows logged-in users to set/verify phone and configure 3 security questions. Routes to /api/account/* (session-authenticated via KSESSION_DATA).

  2. · SecurityService

    Add BulkTextSmsClient + EmailTemplateServiceClient + PasswordRecoveryController (SP3)

    Full password recovery flow: email-link, SMS OTP, security questions, seed phrase. Routes to /api/recover/* (unauthenticated). Uses SP1 email pipeline + VOIPService SMS.

  3. · VOIPService

    Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)

  4. · kamo-shared-library

    복구 entities + 저장소 추가; 1.3.0 (SP3)에 범프

    비밀번호 재설정 토큰, SmsOtp, RecoverySession, AccountVerificationCode 추가 SP3 복구 흐름에 대한 대응 저장소와 JPA entities.

  5. · kamo-shared-library

    SecurityQuestionCatalog enum + sq1/2/3 + SeedPhraseHash를 사용자 (SP3)에 추가하십시오

  6. · InitializerService

    Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner

  7. · kamo-internal

    Browser의 backend-rendered modal을 통해 경로 미리보기 (SP2)

    EmailTemplateBrowser는 이제 미리보기 모드를 직접 소유하므로 Manager no longer needs intercept 행 레벨 미리보기 요청 및 모드를 수정합니다.

  8. · kamo-internal

    철사 emailTemplateEdit에 진짜 API

    TemplateApi.get에서 Hydrates, TemplateApi.update를 통해 저장합니다. (주) dropdown는 인라인 카테고리 생성 감당성으로 API 구동됩니다. 변수 picker는 variableContracts.ts (ReQUIRED에 대한 선언 계약 템플릿 키; CUSTOM의 일반적인 세트. REQUIRED / 시스템 행 편집 적절한 경고 배너를 보여줍니다. 미리보기 버튼이 열립니다. 이메일TemplatePreview modal. SP2의 부분.

  9. · kamo-internal

    Wire EmailTemplateBrowser to real API + 시스템 기본 탭 추가

    TemplateApi.list() 호출을 가진 모성 데이터의 ~140 줄을 대체합니다. (주) 다섯 번째 탭 '시스템 디폴트'는 top-level-org 관리자 및 렌더링에만 나타납니다 response.systemTemplates에서. 카테고리에서 팝업 필터Api.list(). 모든 행 작업 *********** 실제 히트 반환 끝점. handleApiError toast helper를 통해 경로를 변경합니다. SP2의 부분.

  10. · kamo-internal

    EmailTemplateDuplicateDialog 추가 (SP2)

  11. · kamo-internal

    EmailTemplateCategoryManager modal 추가 (SP2)

  12. · kamo-internal

    EmailTemplatePreview modal 추가하기

    행 액션 미리보기를 엽니다. TemplateApi.p (review);를 통해 백엔드 렌더링 style isolation의 sandboxed iframe에 표시된 결과. 일치하기 사용하는 정확한 코드 경로, 그래서 당신이 미리보기는 어떤 수신자가 얻을. SP2의 부분.

  13. · kamo-internal

    TemplateApi + categoryApi + variableContracts 클라이언트 모듈 추가

    SP1의 /api/email/templates/* 및 *********** Typed TypeScript 헬퍼와 엔드포인트. variableContracts 미러 SP1 TemplateKeys Javadoc 그래서 편집기의 변수 피커는 선언 REQUIRED 템플릿에 대한 계약. SP2의 부분.

  14. · SecurityService

    Wire EmailTemplateSeedClient into ****************

    Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws OrgProvisioningException and rolls back the surrounding @Transactional so the org + owner-TeamMember save is undone (per SP1 spec). Mirrors the existing TranslateServiceClient X-Internal-Auth pattern. k8s/configmap.yaml adds: email.service.url (EmailService internal URL) internal.auth.secret (cluster-wide X-Internal-Auth header value) pom.xml bumps kamo-shared-library 1.1.0 → 1.2.0. Part of SP1.

  15. · EmailService

    Add EmailTemplateCategoryController REST endpoints

    **************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Session context read via the same **************** pattern as other EmailService controllers. Part of SP1.

  16. · EmailService

    Add EmailTemplateController REST endpoints + DTOs

    Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) additionally see systemTemplates in the list response. Service-to-service endpoints are protected by the existing InternalAuthFilter. Session context (orgID, memberID) read from OTKPreAuthFilter's REQ_ATTR_SESSION attribute — the same pattern already used by AliasController / MailboxController. Part of SP1.

  17. · EmailService

    Service-to-service endpoint에 대한 InternalAuthFilter 추가

    /api/email/templates/send에 X-Internal-Auth 헤더를 유효성 검사합니다. /api/email/templates/seed-org/* 경로. 다른 경로 우회 이 필터 (사용자 세션 auth 그들을 처리). 비밀은 INTERNAL AUTH SECRET에서 온다 카테고리 또한 Transactional.smtp.user / transactional.smtp.pass를 추가합니다. config stubs 소모 by EmailTemplateService — 모든 세 소스 k8s configmap 에서 생산. SP1의 부분.

  18. · EmailService

    EmailTemplateCategoryService 추가 — CRUD for org-scoped 카테고리

    Case-insensitive name uniqueness per org 서비스 레이어에 강제 (DB의 일부 고유 인덱스를 매칭). 삭제 null 카테고리 id 범주를 제거하기 전에 영향을받는 템플릿에. SP1의 부분.

  19. · EmailService

    Add EmailTemplateService — CRUD + send + seed + reset-to-default

    거래 이메일의 핵심 오케스트라. sendToUser는 템플릿을 해결합니다. 제목/체를 렌더링, 조직에서 org의 기본 도메인을 선택합니다. 도메인, noReply@{org.domain} 으로 이메일 보내기SmtpService 를 호출합니다. SeedForOrg for new-org Lifecycle Hook 및 resetToDefault를 포함합니다. 시스템 행의 내용을 per-org REQUIRED 행에 복사합니다. Auth for the send uses cluster-wide 거래 SMTP 서비스 자격 (transactional.smtp.user / Transactional.smtp.pass)는 per-member 보다는 오히려 공급자 결의자 - 거래는 행동 회원이 없습니다. SP1의 부분.

  20. · EmailService

    Add NoReplySenderService for 'NoReply@{domain}' from-address

    주소에서 거래 이메일에 대한 진실의 단일 소스. 지원하다 도메인 문자열, lowcase-normalizes, 반환 "NoReply@<domain>". Callers는 org의 도메인을 해결해야합니다 ( Organization.domains lookup 또는 유사) 그리고 그것을 안으로 전달하십시오. SP1의 부분.

  21. · EmailService

    TemplateRenderer를 {{var}} 대용 추가하기

    Stateless regex 기반 렌더링기. Missing vars 대체 빈 문자열 및 템플릿키 + orgId로 WARN 로그를 방출합니다. HTML escaping 없음 v1 - 값은 서버 제어입니다. SP1의 부분.

  22. · InitializerService

    Add EmailTemplateSeedRunner for SYSTEM + per-org seeding

    Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills per-org rows for every org that doesn't yet have them. Idempotent — safe to re-run on every startup. Part of SP1.

  23. · InitializerService

    Add partial unique indexes + CHECK constraints for email_templates

    Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern after Hibernate creates the base tables from the new entities. Part of SP1.

  24. · kamo-shared-library

    CanonicalTemplateLoader + CanonicalTemplate 기록을 추가하십시오

    3개의 필요한 템플릿(WELCOME, PASSWORD RESET, EMAIL VERIFICATION) 클래스 경로 리소스에서 *************** 제출하기 KamoInitializer System-row 묘종 서비스. SP1의 부분.

  25. · kamo-shared-library

    WELCOME, PASSWORD RESET, EMAIL VERIFICATION에 대한 canonical HTML + JSON 추가

    시스템 행에 대한 Source-of-truth 내용. KamoInitializerService에서 로드됨 CanonicalTemplateLoader 및 UPSERTed의 시작은 email templates로 발송됩니다. SP1의 부분.

  26. · kamo-shared-library

    EmailTemplate entity + 저장소 추가

    Template key (org id NULL, is system TRUE)에 대한 하나의 시스템 행 저장 Template key 당 org 당 한 clone. 소프트 환경 org id/category id. 사이트맵 driven timestamps; body blocks 및 태그에 대한 JSONB. Repository 제공 org-scoped lookups, 원자 사용 카운터 증가 및 카테고리 저장소 nullifyCategoryForOrg를 통해 정리합니다. SP1의 부분.

  27. · kamo-shared-library

    EmailTemplateCategory entity + 저장소 추가

    Org-scoped 카테고리 이메일 템플릿. 소프트 BIGINT org id (FK 없음) 기존 패턴 일치. Case-insensitive 이름 고유성 per-org는 KamoInitializerService에 추가된 부분 인덱스를 통해 시행됩니다. SP1의 부분.

  28. · kamo-shared-library

    TemplateStatus enum + TemplateKeys 거래 템플릿에 대한 상수

    REQUIRED/CUSTOM/ARCHIVED 수명주기 상태를 선언하고 3 필요한 템플릿 키 (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). 각 REQUIRED 템플릿에 대한 가변 계약은 Javadoc으로 문서화 일정 클래스; SP3 및 SP4 콜러 참조. SP1의 부분.

  29. · InitializerService

    Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs

    The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAgeReqUpdateRunner which handles existing deployments via a conditional UPDATE. Completes SP5.

  30. · InitializerService

    Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE

    Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — startup must not block on this non-critical migration. Part of SP5. Pairs with the DataLoader edit in the next commit that makes fresh installs seed the new value directly.

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

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

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