Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
Bump kamo-shared-library to 1.4.0
Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...
Применять исправления правильности и качества реализации SP6
C1: использовать NEXT PUBLIC H*** SITE KEY Env var вместо жесткого заполнителя C2: изменить RegisterResponse.userId и все параметры API с номера на строку (Cock...
Рефактор регистра SP6 — разделите PersonalInfo, добавьте реальный API регистрации
- Заменить FormPersonalInfo на FormName (именные поля) и FormAvatar (генератор Avatar Creator с режимами генерации/загрузки/пропуска для 13+) Удалить FormRecove...
SP5 migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Add KamoCRMAgeReqUpdateRunner (order 10) — conditional idempotent UPDATE on startup; WHERE clause checks old value so re-runs are no-ops. Errors are swallowed s...
Address 4 code-review findings in registration and login paths
- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...
Implement SP4 email verification and registration wiring
- Delete legacy email/VerificationEmail.java (hardcoded SMTP stub) - Add **************** (mirrors recovery package pattern) - Add **************** — token gene...
Добавить EmailVerification Субъект токенов + repo + User.alias/emailVerified + запросы UserRepo; бамп 1.4.0 (SP4)
Add SP4 email_verification_tokens DDL + User alias/email_verified columns
Добавить страницы настроек учетной записи для телефона + вопросы безопасности (SP3)
Добавляет **************** с API-проводкой Служба безопасности /api/account/*. Синхронизация nav во всех 3 местах.
Проводите реальные вызовы API на страницу восстановления (SP3)
Заменяет все поддельные заглушки с помощью вызовов RecoveryApi. Добавить SMS OTP проверка фазы, ввод семенной электронной почты, шаг нового пароля и посадка ток...
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).
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 + VOIPSer...
Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)
Добавить восстановительные объекты + репо; удар до 1,3.0 (SP3)
Добавлены PasswordResetToken, SmsOtp, RecoverySession, AccountVerificationCode Субъекты JPA с соответствующими хранилищами для потока восстановления SP3.
Добавить SecurityQuestionCatalog enum + sq1/2/3 + seedPhraseHash Пользователю (SP3)
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
Предварительный просмотр маршрута через модаль Browser (часть SP2)
EmailTemplateBrowser теперь владеет модалем Preview напрямую. Менеджеру больше не нужно перехватывать запросы предварительного просмотра на уровне строк. Перена...
Wire EmailTemplateПравить на реальный API
Гидраты от templateApi.get, сохраняет через templateApi.update. Категория dropdown - это API-ориентированный с встроенной доступностью для создания категорий. П...
Проводите EmailTemplateBrowser до реального API + добавьте вкладку «Системные по умолчанию»
Заменяет ~ 140 строк макетных данных вызовами templateApi.list(). Условный Пятая вкладка «System Defaults» появляется только для администраторов верхнего уровня...
Добавить модаль EmailTemplatePreview
Открывается на предварительном просмотре. Backend-rendered via templateApi.preview(); Результат отображается в песочнице iframe для изоляции стиля. Соответствуе...
Удалить неиспользованный EmailGeneralManager.tsx (~560 строк мертвого кода)
Компонент нигде не импортировался. Его броски (отскок обработки, Отписаться, отслеживать доставку, по умолчанию с электронной почты) не было бэкэнда и Это были ...
Добавить шаблонApi + категорияApi + переменныеКонтракты клиентских модулей
Обертывает /api/email/templates/ и ******************* Конечные точки с набранными помощниками TypeScript. Переменные контракты зеркала SP1 TemplateKeys Javadoc...
Wire EmailTemplateSeedClient into ****************
Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws...
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...
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) addition...
Add InternalAuthFilter for service-to-service endpoints
Проверяет заголовок X-Internal-Auth на /api/email/templates/end и /api/email/templates/seed-org/* Paths. Другие пути обхода этого фильтра (пользовательская сесс...
Добавить EmailTemplateCategoryService — CRUD для категорий, связанных с оргами
Нечувствительная к делу уникальность имени в одной организации, применяемая на уровне обслуживания (соответствует частичному уникальному индексу в DB). Удаление...
Добавить EmailTemplateService — CRUD + send + seed + reset-to-default
Основной оркестратор для транзакционной электронной почты. sendToUser решает шаблон, отображает субъект/тело, выбирает основной домен организации из Организации...
Добавить NoReplySenderService для NoReply@{domain} с адреса
Единый источник правды для транзакционной почты с адресов. Принять a строка домена, нижняя строчка нормализует его, возвращает «NoReply@<domain>». Абоненты долж...
Добавить TemplateRenderer для замены {{var}}
Безгосударственный рендеринг на основе регекса. Недостающие варсы заменяют пустые струны и Издать журнал WARN с помощью templateKey + orgId для атрибуции. HTML ...
Append Z to dateCommitted so JS parses it as UTC
LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...
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 ...
Convert PT midnight cutoff to UTC for today-count query
Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.
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 aft...
Bump kamo-shared-library версия 1.2.0 для дополнений SP1
Добавляет EmailTemplate, EmailTemplateCategory, TemplateStatus, TemplateKeys, CanonicalTemplate, CanonicalTemplateLoader и канонические ресурсы HTML.
Добавить CanonicalTemplateLoader + CanonicalTemplate
Читает три обязательных шаблона (WELCOME, PASSWORD RESET, EMAIL VERIFICATION - от классовых ресурсов **************************** потребляемый KamoInitializerSe...
Добавить канонический HTML + JSON для PASSWORD RESET, EMAIL VERIFICATION
Исходный контент для строк системы. Загрузка в KamoInitializerService Запуск CanonicalTemplateLoader и UPSERTed в email templates. Часть SP1.
Переименовать почтовый ящикId→id и providerStatus→status в ответе списка почтовых ящиков
Выравнивайте имена полей с внешними ожиданиями для списков почтовых ящиков участников.
Добавить EmailTemplate entity + репозиторий
Хранит одну строку SYSTEM для шаблона key (org id NULL, is system TRUE) плюс Один клон в группе на шаблон key. Soft-reference org id/category id. ДБ- Временные ...
Добавить EmailTemplateCategory entity + репозиторий
Org-scoped категории для шаблонов электронной почты. Soft BIGINT org id (без FK) Соответствует существующим моделям. Нечувствительная к делу уникальность имени ...
Добавить TemplateStatus enum + константы TemplateKeys для транзакционных шаблонов
Объявляет требуемые / заказные / приобретенные состояния жизненного цикла и три Требуются ключи шаблона (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). Переменны...
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.