Bản ghi thay đổi
Có gì mới không?
Mọi cải tiến cho nền tảng, khi nó được đưa ra.
· 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).
· 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.
· VOIPService
Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)
· kamo-shared-library
Thêm các thực thể phục hồi + repos; va chạm vào 1. 0. 0 (P3)
Thêm mật khẩu ResetToken, SmsOtp, RecoverySession, Tài khoản Các thực thể JPA với các kho dự trữ tương ứng cho dòng chảy phục hồi SP3.
· kamo-shared-library
Thêm Bảo mậtQuseCatalog ensum + vuông1/2/3 + hạt giốngPhrseHash cho người dùng (P3)
· InitializerService
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
· kamo-internal
Xem trước lộ trình thông qua phương pháp điều chỉnh ngược của trình duyệt (một phần của SP2)
Máy quét emailTemBrowser bây giờ sở hữu các sửa đổi xem thử trực tiếp, do đó, Quản lý không còn cần phải ngăn chặn các yêu cầu xem thử hàng và Chuyển sang chế độ chỉnh sửa.
· kamo-internal
Trình soạn thảo biểu đồ điện tử qua email
Thủy thủ từ mẫu Api.get, tiết kiệm qua Mẫu Api.date.up.date. Loại Hạ cánh là hệ thống hỗ trợ trực tiếp cho việc sinh sản. Biến Bộ chọn đọc từ các tập tin & thay đổi Phím mẫu; thường được đặt cho CUSOO). Biên tập hàng SYSTEM cho thấy cờ hiệu cảnh báo thích hợp. Nút xem thử mở Name Một phần của SP2.
· kamo-internal
Wire Thư điện tửTemBrowser thực sự là thanh Mặc định hệ thống
Thay thế các dòng dữ liệu giả lập ~40 dòng với các cuộc gọi mẫu Api.list (). Điều kiện Thẻ thứ năm 'Sostem Mặc định' chỉ xuất hiện cho các quản trị cấp cao-org và trình đơn Từ phản ứng. Bộ lọc phân loại Mọi hành động Đánh thật Kết thúc hậu phương. Lỗi chạy qua bộ xử lý ApiError Một phần của SP2.
· kamo-internal
Thêm thư điện tử (một phần của SP2)
· kamo-internal
Thêm phương pháp quản lý biểu mẫu thư điện tử (một phần của SP2)
· kamo-internal
Thêm phương pháp xem bảng nháp thư điện tử
Mở trên xem thử hành động hàng. Hậu phương- gởi qua Mẫu Api. Preview (); Kết quả hiển thị trong một hộp cát tôi khung cho sự cô lập phong cách. Khớp Chính xác là đường dẫn mã để gửi đi sử dụng, nên cái bạn xem trước là cái mà người nhận nhận có. Một phần của SP2.
· kamo-internal
Thêm MẫuApi + Loại Api + biến mô- đun ứng dụng khách
Dịch bởi Vũ Hạnh, Mai Linh, Nga, Huy Tô, Yuki, Ann, Phương Điểm kết thúc với trợ lý gõ hoa văn biến MẫuKys Javadoc vì vậy bộ chọn biến trình soạn thảo hiển thị tuyên bố Hợp đồng cho mẫu vật. Một phần của SP2.
· 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.
· 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.
· 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.
· EmailService
Thêm bộ nạp nội bộ cho điểm kết thúc dịch vụ
Kiểm tra X-I nội bộ-Auth Header trên / api/email/gatelates/send và Đường dẫn: Các đường dẫn khác đi qua bộ lọc này (người dùng phiên điều khiển họ). Bí mật đến từ InterNAL AUTH SECRT env var. Cũng thêm vào giao dịch.smtp.user / giao dịch.smtp.pass Chu vi cấu trúc được sử dụng bởi thư điện tửTemService — cả ba đều có nguồn từ bản đồ k8s trong sản xuất. Một phần của SP1.
· EmailService
Thêm mục lục địa chỉ email
Name (So sánh chỉ mục một phần duy nhất trong DB). Xoá nhóm d trên mẫu bị ảnh hưởng trước khi gỡ bỏ hàng loại. Một phần của SP1.
· EmailService
Thêm địa chỉ thư
Bộ dàn nhạc lõi cho email giao dịch. Gửi tới Người Dùng Giải quyết mẫu, vẽ đối tượng/cơ thể, chọn miền chính của org từ Tổ chức. miền và đưa tay vào emailSmpService với NoReply @{org.domain} như từ mũ. Bao gồm hạt giống choOrg cho móc kéo sự sống mớiorg và đặt lạiToDefault rằng Sao chép nội dung của một hàng chữ SYSTEM trên một hàng trên 1org. Name ( chuyển giao.smtp.user / giao dịch.smtp.pass) thay vì mỗi chi tiết Nhà cung cấp giải quyết — gửi giao dịch không có thành viên hành động. Một phần của SP1.
· EmailService
Thêm tập tin âm thanh
Một nguồn tin sự thật từ email giao dịch từ địa chỉ. Chấp nhận a Chuỗi miền, bình thường hoá nó, trả lại "NoReply@ <domain>". Người gọi phải giải quyết miền của org (Tổ chức từ thiện. dmais tra cứu hay tương tự) và chuyển nó vào. Một phần của SP1.
· EmailService
Thêm MẫuRenderer cho thay thế{ver}
Trình tạo ra regex không dựa trên trạng thái. Thiếu chuỗi rỗng thay thế vars và phát ra một bản ghi URSN với mẫuKey + orgId cho lời buộc tội. Không thoát khỏi HTML trong v1 - giá trị là điều khiển máy chủ. Một phần của SP1.
· 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.
· 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.
· kamo-shared-library
Thêm hồ sơ chính thống
Đọc được ba mẫu giả (WELCOME, PSSWORD REE, Nhóm Việt hoá KDEEMAIL OF TRANSLATORS (TIẾNG CÒI) Ăn bởi KamoInitor Service cho việc gieo giống SYSTEM-row. Một phần của SP1.
· kamo-shared-library
Thêm HTML chính thống + JSON cho WLCOME, PSSWORD RESE, Nhóm Việt hoá KDE
Nội dung nguồn gốc của sự thật cho hàng chữ SYSTEM. Name Khởi động bởi CanonemTemSlate Loader và USERighted vào email stlates. Một phần của SP1.
· kamo-shared-library
Thêm thực thể bảng biểu thư và kho
Lưu trữ một hàng SYSTEM trên mỗi mẫu key (org d NULL, là hệ thống đúng) cộng với 1 nhân bản trên 1 org 1 mẫu key. Tham chiếu mềm org id/ategory id. DB- đã điều khiển nhãn thời gian; JSONB cho cơ thể chặn và thẻ. Thư mục homeName Tra cứu bằng kính hiển vi org, đếm ngược sử dụng nguyên tử gia tăng, và theo phân loại Làm sạch bằng cách vô hiệu hóa tổ chức. Một phần của SP1.
· kamo-shared-library
Thêm thư điện tử và kho
Phân loại theo kính hiển vi cho mẫu email. Name khớp các mẫu đã có. Tên nhạy cảm với trường hợp độc nhất trên 1-org là Thực hiện qua một chỉ mục được thêm vào trong KamoInitialzerService. Một phần của SP1.
· kamo-shared-library
Thêm MẫuStatus enum + Mẫu Keys hằng số cho mẫu giao dịch
Tuyên bố các trạng thái cuộc sống và ba Cần thiết khóa mẫu (WELCOME, PSSWORD RET, Nhóm Việt hóa KDE). Hợp đồng thay đổi cho mỗi mẫu đã được ghi là Javadoc trên lớp hằng số; SP3 và SP4 cuộc gọi tham khảo này. Một phần của SP1.
· 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.
· 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.

Vũ trụ của anh đang chờ đợi.
Bắt đầu miễn phí trong vài phút. Thêm sản phẩm bất cứ khi nào bạn sẵn sàng — không di chuyển, không đăng nhập mới.
Miễn phí mãi mãi — không cần thẻ tín dụng