応用モデルの正しいソースを修正し、API のコンプライアンスを正規化
BRANCH TYPE と MASTER のリゾルダーのリゾルダーを使って、 BranchTypeID だけ。 応用モデルのFALSE/TRUE準拠文字を正規化 JSONの設定.
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...