在API中正确应用模型源并规范合规
对 BRANCH TYPE vs MASTER 使用解析器分辨率,而不是从中推断 分支TypeID单独。 规范应用模型中的FALSE/TRUE合规字词 设置 JSON.
在清理前写入 globals.css; 运行清理 async
重排备注 更新后写 ConfigFiles( 颜色、 配置、 显示) 运行 在背景文件清理之前。 重新从 DB 装入新颜色 。 在发布成功后在可完成的未来中运行清理外部背景 慢或卡住的 MinIO 存在/ 删除无法阻挡工作或离开 Global.css 无文. 删除长度@ Transactional on profil...
将已承诺的 Org 颜色应用到 MiNIO Globals.css
在启动 Async 规定时从 DB 重新装入组织 写入 ConfigFiles 显示由 PATCH / 颜色保存的颜色( 控制器快照) 可能有点乏味 无害的二次调色板; 六重置匹配 MinIO CSS 中的3-和6-位数值;引出 regex 元字符和 替换字符串;只有在两个值都存在时才注入暗变量行.
将 DNS 验证的自定义域标记为域名 API 的默认
以前只有 *.kamocrm.com 的子域被标记为 Default, 所以 orgs 拥有已验证的自定义上层域( 如 kamocrm. 默认Domain=null,并被屏蔽无法创建邮箱.
允许用户为 Org 拥有者 Team Member 时使用品牌
主题提供和标志/背景上传仅检查组织。 拥有者 FK; app UI将组织业主视为Team Member. is OrganizationOwner,,. 这可以不同。 将授权与两者对齐, 并允许上传的神模式 喜欢规定主题.
删除外形行前清除用户和成员 FK
在 DB 限制下删除一个变相器失败, 当它仍然是活动的用户变相器或成员特定覆盖, 它匹配了被损坏的 MinIO blobs , 用户无法去除陈旧的记录 .
解析主题文件夹主机而无需严格的 DNS 校验
需要的主题提供为每个域的 DnsVerified, 所以只使用 默认的 kamocrm.com subdomain 从未启动 async 工作( 400, 没有 STOMP) 。 回落到任何活动域,然后{alias}.kamocrm.com.
发布核心NATS的主题提供进度
JetStream CHAT MESAGES 流只配置为聊天. > 因此发布 到 QQ 失败的流验证和 UI 查看 没有进展。 使用 Connection.publish like SupportInformation Service. 请检查url=值 (帮助).
设定 EmbRecord State. isActive on shair create- org so orgs.is active 并非无效
解析创建- org JSON 不包含 @ 要求Body 避免 415
弹簧返回缺少内容类型或不支持的媒体类型 已接受。 读取字节并使用 ObjectMapper 代替 APIService/Next 代理无法触发内容谈判失败.
将会话权限读取为成员端点的列表或遗留 CSV
KSession 服务和安全控制器存储权作为列表 < string > 角色权利Type名. 成员安全主计长投放到字符串和分拆上 逗号,引起ClassCastException 对会员类型和成员访问 PATCH. 添加会话HasRight () 支持列表( enum name 或 id sord) 和遗留的 CSV .
避免交易渗入 DDL 和硬化多孔种族
上一个自愈将 DDL 设置在 @ Transactional syndall () 中 。 当另一边 表ADD CONSTRAINT对一项现有限制(第一次以后的通常情况) 靴子,或者在多波德比赛中丢失的吊舱, runIdempotent吞下爪哇 例外 – 但周围的 DB 交易处于中止状态 。 随后的每次 JPA 呼叫都...
在 AppAvailable 中使用 organizationById with Features 截取器
解决懒惰化问题 其他CRM/POS指定路径。 拦截器名为org.getFeatures() 交易结束后; 新方法急切地获取特性 在一个只读交易中的 JOIN FETCH 查询.
解析由于 Hibernate TYPE () 基础类发行而显示空的成员标签
Hibernate 的 TYPE( m) = : 类型 JPQL 过滤器在绑定时返回 0 个结果 参数是基础成员类(JOINED继承). 这影响到 成员-订阅者的终点。 已替换为 findByOrganizationId() + Java 中Team Member 过滤器的例子, 它正确地返回了基础成员 。 还返回临时...
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
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...