Перейти до вмісту
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

    Додавання репозицій + репозиції; bump до 1.3.0 (SP3)

    Adds PasswordResetToken, SmsOtp, RecoverySession, AccountVerificationCode JPA суб'єкти з відповідними репозиторійами для відновлення SP3.

  5. · kamo-shared-library

    Додати SecurityQuestionКаталоговий енум + кв1/2/3 + насінняPhraseHash до Користувача (SP3)

  6. · InitializerService

    Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner

  7. · kamo-internal

    Перегляд маршруту за допомогою модуля браузера (частина SP2)

    EmailTemplateBrowser тепер має модальний перегляд, тому Менеджер більше не вимагає перехоплення запитів на попередній перегляд рядків і перенаправлення для редагування режиму.

  8. · kamo-internal

    Дріт EmailTemplateEdit to real API

    Hydrates від TemplateApi.get, зберігає через шаблонApi.update. Категорії випадаючий API-накопичувач з вбудованою категорію-відтворюваною доступністю. Сортування пікіровка читає з зміннихContracts.ts (декларовані контракти для ОБЛАДНАННЯ шаблонні ключі; загальний набір для CUSTOM. ОБЛАДНАННЯ / Монтаж системного ряду показує відповідний прапор попередження. Кнопка перегляду відкриває JavaScript licenses API Веб-сайт Go1.13.8 Частина SP2.

  9. · kamo-internal

    Дріт електронної поштиTemplateBrowser в реальний API + додати вкладку системних за замовчуванням

    Замінює ~140 рядків даних mock з шаблономApi.list() дзвінків. Кондиціонер п'ятий вкладок 'System За замовчуванням' з'являється тільки для адміністраторів верхнього рівня і рендерів від реагування.systemTemplates. Категорія фільтра, що запускається з категоріїApi.list(). Усі дії рядків *********** потрапити реальний Зворотні кінцеві точки. Помилки, що переходять через ручкуApiError toast. Частина SP2.

  10. · kamo-internal

    Додати JavaScriptTemplateDuplicateDialog (частина SP2)

  11. · kamo-internal

    Додати JavaScriptTemplateCategoryManager модальний (частина SP2)

  12. · kamo-internal

    Додати файл

    Відкриється на перегляді рядків. Backend-rendered через шаблонApi.preview(); результат відображається в пісочниці iframe для ізоляції стилю. Відповідає точний шлях коду, який використовує, так що ви попередньо переглядаєте, які одержувачі отримують. Частина SP2.

  13. · kamo-internal

    Додати шаблонApi + КатегоріяApi + зміннаContracts клієнтських модулів

    ************* кінцеві точки з ідентифікаторами TypeScript. змінніДзеркала Contracts SP1 ШаблонKeys Javadoc, щоб редактор змінного пікера показує контракти на шаблони ОБЛАДНАННЯ. Частина 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

    Add InternalAuthFilter for service-to-service endpoints

    Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handles them). Secret comes from INTERNAL_AUTH_SECRET env var. Also adds transactional.smtp.user / transactional.smtp.pass config stubs consumed by EmailTemplateService — all three are sourced from the k8s configmap in production. Part of SP1.

  18. · EmailService

    Додати e-mailTemplateCategoryService — CRUD для категорій org-scoped

    Унікальність унікальності для об'єктів, що використовуються в сервісному шарі (зменшує частковий унікальний індекс в ДБ). Сортування nulls категорії id на уражених шаблонах перед видаленням рядка категорії. Частина ПК1.

  19. · EmailService

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

    Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and hands off to EmailSmtpService with NoReply@{org.domain} as from-address. Includes seedForOrg for new-org lifecycle hook and resetToDefault that copies a SYSTEM row's content over a per-org REQUIRED row. Auth for the send uses cluster-wide transactional SMTP service credentials (transactional.smtp.user / transactional.smtp.pass) rather than the per-member provider resolver — transactional sends have no acting member. Part of SP1.

  20. · EmailService

    Додати NoReplySenderService для 'NoReply@{domain}' з-під меню

    Єдине джерело правди для транзакційної електронної пошти з адрес. Приймає доменний рядок, нижня кришка-normalizes it, повертає "NoReply@<domain>". Дзвінки повинні вирішувати домен org (via Organization.domains lookup або аналогічний) і пропустіть його в. Частина ПК1.

  21. · EmailService

    Додати підписку TemplateRenderer для {{var}}

    Безперервний regex-на основі рендерера. Змішані вари замінюють порожній рядок і випромінює журнал WARN з шаблономKey + orgId для attribution. Немає HTML-розгортання в v1 — значення є керованим сервером. Частина ПК1.

  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 запис

    Переглянути три шаблони (WELCOME, PASSWORD RESET, EMAIL VERIFICATION) від класпатських ресурсів ****************************************************************************************************************************************************************************************************************************************************************************** Сприяти KamoInitializerПослуги для системного висіву. Частина ПК1.

  25. · kamo-shared-library

    Додавання канонічного HTML + JSON для WELCOME, PASSWORD RESET, EMAIL VERIFICATION

    Вихідний вміст для системних рядків. Завантажено в KamoInitializerService Запуск CanonicalTemplateLoader і UPSERTed в електронну пошту templates. Частина ПК1.

  26. · kamo-shared-library

    Додавання електронної пошти

    Магазини один системний ряд за шаблон key (org id NULL, is system TRUE) плюс один клон за шаблон key. Soft-reference org id/category id. ДБ- керовані мітки часу; JSONB для body blocks and tags. Репозиторій надає org-scoped lookups, атомічний захист та категорія-делет Очищення через nullifyCategoryForOrg. Частина ПК1.

  27. · kamo-shared-library

    Додати електронну поштуTemplateCategory + репозиторій

    Org-scoped категорії для шаблонів електронної пошти. М'який BIGINT org id (без FK) відповідає існуючим шаблонам. Унікальність унікальності для об'єктів Case-inensitive name per-org в KamoInitializerService. Частина ПК1.

  28. · kamo-shared-library

    Додати шаблонStatus enum + TemplateKeys константи для транзакційних шаблонів

    Декларує стани життєвого циклу REQUIRED/CUSTOM/ARCHIVED та три необхідні ключі шаблону (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). Змінні контракти для кожного шаблону ОБЛАДНАННЯ, задокументовані як Javadoc Клас постійного струму; SP3 і SP4-розрядники, що посилаються на них. Частина ПК1.

  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.

Твій всесвіт чекає.

Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.

Безкоштовно назавжди — не потрібна кредитна карта