Cleanup の前に globals.css を書く。cleanup async を実行する
再オーダーのprovisionUpdate なので writeConfigFiles (colors, config, manifest) を実行します 背景ファイルクリーンアップの前に。 新鮮な色のためにDBからorgをリロードします。 CleanupExtraBackgrounds を CompletableFt...
コミットされたorg色をMino Globals.cssに適用して下さい
非同期暫定開始時にDBから組織をリロードする writeConfigFiles は PATCH /colors によって保存された色 (Controller スナップショット) を参照します。 屋台はできます)。 Null 安全二次パレット;六角交換マッチ MinIO CSS の 3 および 6 桁の値を引用します。r...
ドメイン API で isDefault として DNS-verified カスタムドメインをマークする
以前は *.kamocrm.com サブドメインがデフォルトでマークされているため、orgs 検証済みのカスタム apex ドメイン (例: kamocrm.com) が常に取得 defaultDomain=null はメールボックスの作成からブロックされました.
ユーザが org オーナー TeamMember のときにブランディングを許可する
テーマのプロビジョニングとロゴ/背景のアップロードのみチェックされた組織。 スタッフ FK;アプリUIは、組織の所有者をTeamMember.isOrganizationOwnerとして扱います, 違います。 両方と認可を合わせ、アップロードの神モードを許可して下さい 仮説のように.
アバター行を削除する前に、ユーザとメンバーのFKをクリア
それがまだアクティブなユーザーアバターやメンバー固有のオーバーライドだったとき、アバターがDB制約に失敗しました。これにより、ユーザーがストールレコードを削除できないMino blobsが壊れました.
厳格なDNS検証なしでテーマフォルダホストを解決する
テーマのプロビジョニングは、すべてのドメインに対して必須のisDnsVerifiedです。 デフォルト kamocrm.com サブドメインは非同期作業を開始しません (400, STOMP なし). アクティブなドメインに戻り、{alias}.kamocrm.com に移動します.
核心NATSに関するテーマ規定の進捗を公開
JetStream CHAT MESSAGES ストリームはチャット用に構成されています。> のみ、公開 へ******************** 失敗したストリーム検証とUI のこぎり 進行しません。 SupportNotificationService のような Connection.publish を使用します...
Wizard create-org で EmbRecordState.isActive を設定すると、orgs.is active は null ではない
Create-org ボディを CreateOrganization にデシリアライズする 団体JsonIdentityを避けるペイロード 情報障害
Parse create-org JSON なし @RequestBody 避ける 415
コンテンツタイプが見つからない場合、または未サポートのメディアタイプを返します。 @RequestBody で受け付けます。 バイトを読み、 ObjectMapper を代わりに使用 APIService/Nextのプロキシは、コンテンツの交渉の失敗をトリガーできません.
会員エンドポイントのリストまたはレガシーCSVとしてセッションの権利を読む
KSessionService および SecurityRoleController は List<String> として保存します。 RoleRightType の名前。 MemberSecurityControllerが文字列にキャストし、文字列を分割 comma は、メンバーシップ タイプとメンバーアクセス PA...
トランザクション中毒DDLを避け、マルチポッドレースを硬化させます
@Transactional syncAll() の内部に DDL を置いた前の自己ヒール。 いつの時 TABLE ADD CONSTRAINTは、既存の制約(最初の後に通常の場合)で消火 ブート、またはマルチポッドのレースでPodを失う)、runIdempotentはJavaを飲みました 例外 — しかし、周囲のDB...
AppAvailabilityでgetOrganizationByIdWithFeaturesを使う インターセプター
/api/security/leads の LazyInitializationException を全て解決 他のCRM/POS関連のパス. org.getFeatures() というインターセプター トランザクションが閉じた後、新しいメソッドは熱心に機能します 読み取り専用トランザクション内の単一のJOIN FET...
Hibernate Type()ベースクラスの問題により、メンバータブが空の表示を解除
HibernateのTYPE(m) = :type JPQLフィルタは、バインド時に0結果を返します パラメータはベースメンバークラス(JOINED継承)です。 これは影響します メンバー登録者エンドポイント。 FindByOrganizationId() +で置換 ベースメンバーを正しく返すJavaのTeamMemb...
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
Add @Transactional to provision-theme for lazy domain loading; remove hardcoded domain from provision request
Add PATCH /org/{id}/colors endpoint to safely update only color palette fields
Use memberID session key and include creatorType in creatable branch-types response
Use correct session key 'memberID' instead of 'MID'
KSessionService stores member ID under key 'memberID' but both **************** and OrganizationController were reading session.get("MID") which always returned...
Exclude master model from models list; add debug log to child-org creation check
SecurityModelController now filters out the org's master model (identified by org.getMasterModelID()) from the /api/security/models response — it is managed exc...
Read session rights as List<String> names, not CSV of integer IDs
Session rights are stored as a JSON array of RoleRightType name strings. Both **************** and OrganizationController were casting them to String (causing C...
Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
Use core NATS pub/sub for email-verified SSE fan-out
Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...
Use avatarType field + JDBC for photo URL generation to handle Hibernate proxies
**************** previously used instanceof AvatarPhoto to determine avatar type and cast to read fileExtension. When Hibernate returns a base-class proxy (e.g....
Populate all EMAIL_VERIFICATION template variables
Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...
Use subdomain-aware SQL to match findByDomain JPQL logic
Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...
Correct EmailService URL port in configmap (4203 -> 80)
EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.
Bypass JPA org lookup to avoid Hibernate cascade flush error
**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...
Use getReferenceById to avoid cascade orphanRemoval flush error on registration
Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...
Align registration field names and response shape with frontend contract
Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...
Add SecurityService and dao.repositories to EnableJpaRepositories scan
UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...
Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
