Маршрут платных регистраций для проверки после входа
После успешного аута (ручного или автологина) потребляйте apex-домен. Sp checkout plan cookie, оставленный компанией kamo-register и перенаправляемый покупателе...
Провести платный план от регистрации в кассе
Когда подписка участника происходит от платного ценообразования CTA (?план = pro | бизнес), Скачать apex-domain sp checkout plan cookie по завершении. Камо-Логи...
Секреты внутренней безопасности от ***
ESigService теперь проверяет X-Internal-Auth против той же общей тайны APIService представляет **************************** *** секрет k8s, закаливающий програм...
Восстановление для обновления kamo-shared-library (шаблоны электронной почты подписавшего)
Выберите новые канонические шаблоны esign.signer verification + esign.signer invite так что seedForOrg может посеять их при первой отправке.
Canonical e-sign signer templates (верификация + приглашение)
Добавьте два общеплатформенных канонических шаблона электронной почты, посаженных лениво на одну организацию: - esign.signer verification (повышение OTP: {{code...
Регистрировать эсминские репозитории для метрической подачи бобов
EsignMeterSubmissionService нуждается в EsignUsageRepository @EnableJpaRepositories не сканировали com.kamo.z.shared.esign.repos, поэтому контекст Не удалось на...
Измерение использования электронной подписи + проверка самообслуживания потребителей
#4 Измерение: - EsignMeterSubmissionService (@Scheduled daily): агрегаты API-происхождения EsignUsageRecords per org+period; первые 40/period включены, остальны...
Экспозиция API SIGNATURE (E-Signature API)
Добавьте область API E-Signature в менеджер API-ключа, чтобы персонал мог предоставить Бизнес-организации программный доступ к электронной подписи. Использовани...
Публичный программный API шлюз (API SIGNATURE scope)
Добавить /api/public/esign/** в PublicApiController: проверяет ключ API, требует области API SIGNATURE, пределов скорости и пересылается в ESigService Внутрення...
Внутренний программный конверт API (origin=API) для бизнеса
- EsignInternalController (/api/esig/internal/*): X-Internal-Auth + X-Org-Id authed, вызванный APIService после проверки ключа API SIGNATURE; повторно используе...
API SIGNATURE api-key scope + EsignGenericEnvelope.origin
Аддитивный, без перебора версий: - ApiKeyScope.API SIGNATURE - закрывает программный API электронной подписи (бизнес) - EsignGenericEnvelope.origin (EsignUsageO...
Отправка для подписи + статус конверта в редакторе документов
Добавить кнопку «Отправить для подписи» в заголовок редактора шаблона, который открывает диалог для отправки документа получателям и отслеживания статуса подпис...
Генерическая оболочка для создания/отправки двигателя (справочная сторона)
Добавить OTK-authed /api/esig/envelopes API-камо-внутренние диски для отправки документы для подписи, повторное использование одних и тех же общедоступных орган...
Публичная подпись API-движок для sign.sign.pink
Внедрить /api/esig/public/*, подписывая API вызовы приложения kamo-signer, Превращение живого подписчика из предварительного просмотра в рабочий бэкэнд. - подт...
Обратно измеренные дополнительные цены с счетчиком
Stripe (>= 2025-03-31.basil) отвергает устаревшее использование type+aggregate usage Измеренная модель («измеренные цены должны быть подкреплены счетчиками»), п...
Переключение продуктов платформы на вкладке «Организации»
Поверхность платформо-производственного обозначения, где оно находится — Платформа Организации. Добавляет закрытый коммутатор для одной организации (отключен дл...
Управление организацией.isPlatformПродукт с платформы → Органы
PlatformAccountSummary разоблачает платформуПродукт + подписка Рынок; новый *************************** (Platform-admin gated) устанавливает флаг и аннулирует п...
Explicit Organization.isPlatformProduct в качестве основного сигнала
Заменить полученную эвристику «владеет рынком подписки» на явную, Флаг владельца admin-set. Продукт платформы (например, sign.pink) представляет собой белый ярл...
Выберите рынок SUBSCRIPTION для настройки платформы
KamoCRM владеет несколькими рынками ********************** Продукционный рынок должен выбрать тип SUBSCRIPTION (платформенный доступ) Вместо первого активного. ...
Корень продукта = собственный рынок, а не рынок
Клиентская организация (например, BluEleven) владеет собственными бизнес-рынками (RETAIL/MORTGAGE). управлять компанией, оставаясь клиентом платформы KamoCRM; Ч...
Сфера членские права на корень продукта, а не KamoCRM
EntitlementService теперь устраняет корень прав каждого члена EntitlementRootResolver (ближайший рыночный предок) Прогулка до верхнего уровня. Пол свободного ур...
Решить права с помощью организации на основе продукта, а не платформы верхнего уровня
EntitlementRootResolver: ближайший рыночный предок орг (корень продукта), возвращающийся на верхний уровень платформы. Это Отделить * какой продукт вы имеете пр...
Держите список оргов в фоновом режиме; дедупируйте сеансовые вызовы
/network refired fetchNetworks на каждом обновлении фоновой сессии Спрятал весь список на любой ошибке, так что переходный всплеск или застой. HasPlatformAdminA...
Добавить получателя конверта, стоимость поля, субъекты статуса получателя
Проверить модель входного сигнала: EsignEnvelopeRecipient (+repo), EsignFieldValue (+repo), EsignRecipientStatus и обновление ESignSignerType. Аддитивный; нет б...
Добавить EsignUsageRecord для учета использования каждой подписи
Новый объект использования только в приложении (зеркала AiUsageRecord), выпущенный при подписании завершение. Только подписи API-происхождения учитываются в еже...
Обратить адреса кликов по электронной почте, изолировать причину
Пользователь сообщает, что клики по ссылкам на электронную почту все еще ничего не делают и текст Отбор уничтожается в середине драки. Нажмите правой кнопкой мы...
Сохраняйте соотношение сторон, никогда не растягивайте неквадратные логотипы
Кадры Favicon PNG/ICO были изготовлены с использованием KeepAspectRatio (ложное), растяжение любой неквадратный логотип в искаженном квадрате. Расположение лого...
Регенерировать favicons на этикетке сохранить; обнюхать реальный тип логотипа
provisionUpdate (запускается на каждом заказном маркировочном сейфе) пишется config/css/manifest Но никогда не регенерировали фавиконы — они были произведены то...
Seed globals.css из шаблона, когда в папке Org его нет
обновление (запускается на каждом цвете) переписал орг css/globals.css на месте, но этот объект существует только один раз Полностью скопирован из шаблон по умо...
Показать полный логотип с его реальным расширением, а не жестко закодированный .svg
На вкладке брендинга построен логотипFullUrl как logo-full.svg на mount, игнорируя Логотип компании FullExt. Полные логотипы, загруженные как png/jpg/etc. .svg ...
Обновите TLSStore каждый цикл, чтобы новые сертификаты подавались
update tls store() работает только при запуске и на импорте совместного хранения. Серт, недавно выпущенный менеджером сертификации (HTTP-01), был готов с секрет...
Перенаправьте маршрут только для перенаправления, чтобы Traefik v3 мог
Traefik v3 отключает маршрутизатор IngressRoute с помощью сервисов: LetEmptyServices выключен (как здесь), поэтому домен-агностик HTTP->HTTPS редирект роутера в...
Перенаправьте все HTTP-хосты на HTTPS + шлюз авто-сертификатор в реальные домены
Пользовательские домены (например, login.sign.pink) вернули Траефику голый «404 страница не найдена» по простому HTTP: единственный маршрутизатор перенаправлени...
Pre-seed sign.pink + www.sign.pink in STATIC DOMAINS
sign.pink - новый домен apex (бренд электронной подписи потребителя / white-label) Арендатор Камо. Pre-seed apex + www, так что сертификат Let's Encrypt существ...
Persist conversion error вместо молчания
И шаблон, и регулярные конвейеры конверсии загрузки проглочены Docs сбои конверсии (только зарегистрированные), оставляя is converted=false без записи Причина —...
Full-width Enterprise переписывает с живым предварительным просмотром
LoanProductForm представлял собой единую узкую колонку (maxWidth: 880) с жесткой кодировкой. Английский везде. Теперь используется тот же шаблон предприятия, чт...
Двухколонный макет с панелью предварительного просмотра в реальном времени
Страница нового предложения представляла собой высокую узкую колонку на широких экранах — впустую потраченную половину. Смотровая площадка. Теперь используется ...
Перепроектируйте страницу нового предложения как рабочее пространство с двумя колонками + предварительный просмотр в прямом эфире
Вы просили полную недвижимость, современную, полированную — последний рефактор поставил одноколонная форма внутри полноширотной оболочки, которая является именн...
Польская страница нового предложения — пустое состояние, значок LOC, пользовательские условия
Три UX-разрыва на странице предложения после предыдущего рефактора: 1. Пустое состояние. Когда на рынке еще нет кредитных продуктов, используется выпадающий Чт...
Переименовать LoanRepository в PersonalLoanRepository
Spring Data JPA получил название репозитория из интерфейса простое название класса, а не от @Repository("...") квалификационного значения, поэтому Предыдущий об...
Добавить /commerce/personal-loans/new entry + полировать страницу предложения
Акция QuickActionsBar «Новое кредитное предложение» направлена на /commerce/personal-loans/new Но такой страницы не существовало, поэтому Next.js направляется н...
Полномасштабный бизнес-поляк на 10 страницах
Применяет современный шаблон предприятия (заголовок класса + хлебные крошки +) задняя стрелка + полноразмерная гибкая оболочка + содержимое карточек на светло-с...
Триггер реконструируют, чтобы забрать переименованную компанию PersonalLoan
Изображение службы безопасности на 761019b было построено до Share-Lib d14dc54. (который переименовал компанию по займам для личных займов в JPA под названием «...
Экспозиция PERSONAL LOANS в трейдинге и трейдинге
Добавляет PERSONAL LOANS в списки COMMERCE TYPES и EngagementType Новый рынок личных займов KamoLOS может быть создан на новых рынках. Markets/edit pages, surfa...
Избегайте столкновения с кредитом / кредитным репозиторием с ипотечным приложением
KamoInitializerService не удалось загрузить из-за двух классов @Entity «Loan» и два класса репозиториев под названием «LoanRepository» оба хотели получить креди...
T6+T7 frontend polish + org reports + auto-pay UI
Frontend polish (T6): - New lib/format.ts: locale-aware Intl helpers — formatCurrency / formatDate / formatDateTime / formatPercentBps. Replaces hardcoded t...
LoanChargeOffReasonCode (IRS 1099-C box 6) + поиск по аудиту
- New LoanChargeOffReasonCode enum (A BANKRUPTCY..H OTHER) per IRC §6050P - Loan.chargeOffReasonCode - **************** мультифильтр @Query for regulator subpoe...
****************************
Используется **************** для реактивации существующего Вместо того, чтобы создавать дубликат строки, который сирот остановил один.
/api/los proxy HMAC-signs identity headers
When LOS_PROXY_HMAC_SECRET env var is set, the proxy now computes **************** secret) and sends X-Proxy-Signature + X-Proxy-Timestamp alongside the X-Org-I...
Страницы запросов репо + countByStatus для горячих путей
- Кредитный репозиторий: countByStatus / countByOrganization Статус + Страница <Loan> findByStatus(...) ******************* ******************* ****************...