在清理前写入 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...
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...
