سجل التغييرات
ما الجديد؟
كل تحسين للمنصة، كما هو الشحن.
· 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
إضافة كيانات الاسترداد + إعادة التصريف؛ وصول إلى 1.3.0 (SP3)
تضاف كلمة السر إلى الرمز SmsOtp, RecoverySession, AccountVerificationCode JPA entities with corresponding repositories for SP3 recovery flow.
· kamo-shared-library
Add SecurityQuestionCatalog enum + sq1/2/3 + seedPhraseHash to User (SP3)
· InitializerService
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
· kamo-internal
استعراض الطريق من خلال طريقة (بروسر) الخلفية
البريد الإلكتروني (تيمبلابروزر) الآن يملك طريقة (بريفيو) مباشرة، لذا لم يعد على المدير أن يعترض على طلبات الاستعراض الأولي على مستوى الصفوف إعادة توجيه إلى طريقة التحرير.
· kamo-internal
Wire Email TemplateEdit to real API
الهادرات من المزاج النباتي تنقذ عن طريق التمثال الفئة وينطلق الانقطاع من مبادرة API إلى جانب التكاليف المحددة للفئة. الفروق المختارون يقرأون من عقود متغيرة (عقود معلنة من أجل المطالبة باسترداد التكاليف) مفاتيح نموذجية؛ مجموعة مشتركة من أجل شركة CUSTOM. / SYSTEM يظهر راية الإنذار المناسبة الزر الجاهز يفتح ميدالية (إيميلت بلات بيرفيو). جزء من SP2.
· kamo-internal
Wire Email TemplateBrowser to real API + add System Default tab
يُستعاض عن 140 خطاً من البيانات المتحركة بمكالمات نموذجية الشروط "الحساب الخامس لـ "مقذوفات سيستم يظهر فقط لـ "الأعلان من المستوى الأول من الاستجابة. تصفية الفئة مأهولة من الفئة Api.list جميع الإجراءات rlm; النهايات الخلفية الرعب تم توجيهه من خلال معالج ApiError الخبز المحمص. جزء من SP2.
· kamo-internal
يضاف إيميل تيمبلت دوبلت ديالوغ (جزء من الخطة الاستراتيجية الثانية)
· kamo-internal
يضاف ميدالية EmailTemplateCategoryManager (part of SP2)
· kamo-internal
ميدالية EmailTemplatePreview
يفتح في الصف الأول مُعَدَّد بالخلف عن طريق المُحَارِجَة نتيجة ظهرت في صندوق رملي لعزلة الموضة تطابق بالضبط الطريق الرمزي الذي يُرسلُ الاستخداماتَ، لذا الذي تَعْرفُ مسبقاً الذي يَحْصلُ على المتلقينِ. جزء من SP2.
· kamo-internal
مضافا إليه النماذج النموذجية " Api + الفئة " + وحدات العملاء في العقود المتغيرة
الـ (بي بي 1) و(إيميل) و(تيميل) و(تيمبل) نقاط نهاية مع مساعدين من النوع متغيرات المقاولات مرآة SP1 تماثيل (جافادوك) لذا عرض المحرر المتغير عقود للنموذجات المطلوبة. جزء من 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
يضاف الصندوق الداخلي لنقاط نهاية الخدمة
/api/email/templates/send and /api/email/templates/seed-org/* paths. مسارات أخرى تتخطى هذا التصفية (دورة مستخدم يتعامل معها) السر يأتي من الإنتربول غطس ويضيف أيضاً المستعمل/المعاملات الثقوب التي يستهلكها EmailTemplateService - وجميعها ثلاثة مصادر مِنْ الـ "ك8" يَكْبحُ في الإنتاجِ. Part of SP1.
· EmailService
مضافا إليها البريد الإلكتروني: TemplateCategoryService - CRUD for org-scoped categories
الاسم الفريد لكل org المنفذ في طبقة الخدمات (يرسم الرقم القياسي الجزئي الفريد في دي بي). إبطال العقوبة on affected templates before removing the category row. Part of SP1.
· EmailService
تضاف EmailTemplateService — CRUD + send + seed + reset todefault
مشرف أساسي لالبريد الإلكتروني أرسل (توزر) يسوي النموذج يجعل الموضوع/الجسد، يختار المجال الرئيسي org من المنظمة. مجالات، ويرفعون أيديهم إلى EmailSmtpService with NoReply@{org.domain} as from-address. بما في ذلك بذور فورد أورغ لخطاف دورة الحياة الجديدة وإعادة تصميمها نُسخُ محتوى صفّ SYSTEM على a صفّ لكلّ مرّة. في وقت الإرسال استخدامات وثائق تفويض الخدمات على نطاق المجموعة (النقل/المستعمل/المعاملات) بدلا من العضو الواحد مصمم المورد - ليس لدى المرسلين المتعاملين أي عضو متصرف. Part of SP1.
· EmailService
أضف لا ريبليزندر سيرفيت ل ' لا ريبلي {تظل }
مصدر واحد للحقيقة من عناوين البريد الإلكتروني قبول(أ) سلسله، تُقلّلُها، تُعيدُ " NoReply@domain".". يجب أن يُحلّ المُكالِمون مجال (يورغ) (عن طريق المنظمة. متشابهة Part of SP1.
· EmailService
Add TemplateRenderer for {var}} substitution
صانعة غير متحيزة زهرة مفقودة تحل محل الخيط الفارغ يُصدرُ a سجل WARN مَع النموذجِ + orgId للإسنادِ. No HTML escap في الفئة " ف-1 " - تتحكم القيم في الخادم. Part of 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
Add CanonicalTemplateLoader + CanonicalTemplate record
يقرأ النماذج الثلاثة المطلوبة EMAIL VERIFICATION) from classpath resources at) لا أعرف استهلكها KamoInitializerService for SYSTEM-row seeding. Part of SP1.
· kamo-shared-library
مضافاً إليها: HTML + JSON من أجل الشبكة العالمية لسواتل الملاحة، باسفور - ريست، إيميل - التحقق
Source-of-truth content for SYSTEM rows. Loaded at KamoInitializerService بدء من قبل (كانونيكا تيمبللادر) و (إف بي سي) في البريد الإلكتروني Part of SP1.
· kamo-shared-library
مضافا إليها: هيئة البريد الإلكتروني: Template
Stores one SYSTEM row per template key (org id NUL, is system TRUE) plus نسخة واحدة لكل org لكل نموذج org id/category id. دي بي مصابيح متحركة، والورقة المشتركة (JONB) للجثث والعلامات. المستودع يوفر org-scoped lookups,tom usage counter increment, and category-delete التنظيف عن طريق إبطال مفعول (كاتيغوري فوروغ) Part of SP1.
· kamo-shared-library
مضافا إليها: الكيان المعني بالمخزون
الفئات المجهولة للأوردة Soft BIGINT org id (no FK) يطابق الأنماط الحالية الاسم الفريد لكل منظمة غير حكومية الذي لا يراعي الحالات تم إنفاذه عن طريق مؤشر جزئي مضاف في شركة KamoInitializerService. Part of SP1.
· kamo-shared-library
مضافا إليه: مواصفات ثابتة لنموذج المعاملات
تعلن عن الدول الثلاث التي تحتاج إليها دورة الحياة مفاتيح النموذج المطلوبة (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). عقود متغيرة لكل نموذج موثق من نماذج " جافادوك " ويُشير إلى هذه الصفات كل من SP3 و SP4. Part of 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.

كونك ينتظرك
ابدأ مجانا في دقائق. أضف المنتجات كلما كنت مستعدا - لا هجرة، لا دخول جديد.
مجانا إلى الأبد - لا حاجة إلى بطاقة ائتمان