QQ 对成员类型使用实例
休眠 TYPE( m) = : 类型在被绑入底部时返回 0 个结果 JOINED继承中的成员阶级. 对于成员类型,获取全部和 使用过滤器 ! (M example of Team Member) 代替 .
解析由于 Hibernate TYPE () 基础类发行而显示空的成员标签
Hibernate 的 TYPE( m) = : 类型 JPQL 过滤器在绑定时返回 0 个结果 参数是基础成员类(JOINED继承). 这影响到 成员-订阅者的终点。 已替换为 findByOrganizationId() + Java 中Team Member 过滤器的例子, 它正确地返回了基础成员 。 还返回临时...
启用 Hibernate SQL 记录以诊断成员查询返回 0
暂时允许 org.hibernate.SQL=DEBUG 查看 TYPE () 的 SQL 类型 JPQL 查询为成员-订阅者端点生成.
在票头显示访客旗、 国家、 IP
- 添加访问者 IpAddress、 访问者国家代码、 访问者国家Name 到支持TicketDTO 类型 - 公用聊天票的票子上标出旗帜的emoji+国名+IP地址行
在支持票头显示访客旗和位置
- 注入公共图片存储器和地理图片存储器 - 通过地理检索传播访问者信息、访问者国家代码、访问者国家Name - GeoLookupService 已经为访问者提供访问。 国家代码在会话创建时
添加诊断日志以获取 Members AndSublicers 端点
日志 orgId, 查询结果计数, 以及每个成员为帮助的代理状态 解析为什么成员标签会显示空列表.
将访问者信件标记为 VISTOR MESSAGE 类型, 添加发送者Name 以获取信件
- PublicChatService: 设置消息Type=VISITOR MESSAGE 这样前端可以区分 访问者回应代理商对STOMP专题的回应 - 媒体管理员。 名称字段, 使代理员看到是谁发送的 在 TicketChat 中装入聊天历史时每封消息
将 VISITOR MESAGE 类型视为在 TicketChat 中总是从它们开始
通过PublicChatService发布的访问者信息携带了消息Type=VISITOR MESSAGE. 明确标记这些是作者='they' 无论成员Id,所以他们总是 出现在左侧,即使代理的会员ID与系统会员匹配.
跳过 VISITOR MESSAGE 在 LivePresidenel STOMP 处理器中的回声
访问者信件现在由后端标记为Type=VISITOR MESSAGE 。 在 STOMP 订阅中跳过这些, 以免访客自己的留言 重新出现在左侧,仿佛是支持反应.
将本地 WebSocket 替换为 STOMP/ SockJS 的 Live 支持面板
- 添加@stomp/stompjs和sockjs-客户包 - 通过SockJS+STOMP连接到媒体.{域}/ws/公共聊天,而不是 原始 WebSocket 到 api.{domain} 错误的主机和错误的协议 - 在STOMP连接后,订阅/专题/聊天/会话/{guid}和 通过/app/chat/订阅通知后端以激...
通过STOMP/NATS实时修复端到端的公共聊天
- 从公共聊天网中取消内部认证要求 因此访问者只能使用会话Token直接连接 - 在 ChatMessageDto 代理中包含访客显示Name 作为发送者Name 看看谁在给她们发短信 - 在 STOMP 信件中包含发送者Name 从 NATS 订阅中传送的 Map 因此,代理和访客都会在实时消息中看到发送者姓名
连接状态过滤器和列表中所需的自动种子模板
- 电子邮件Template Control.list() 现在接受? status=param和过滤器 使用现有的 findByOrgIdAnd status 查询 - 需要为错过初始播种的兽人提供自动种子模板 (种子 ForOrg 如果错过检查 REQUIRED 计数,只有种子如果零) - 修补种子前创建鼠标时显示...
NEW TIKET NATS 通知时自动打开支持票弹出
当新的支持票到来时,后端现在发送了New TICKET 除了PENDING COUNT,还有STOMP消息. 支持协议 通过发送工具( 打开) 来处理它 。 自动不需要代理导航到/支持.
Three support/chat issues — NATS relay, auto-popup, topic fallback
1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
Write contact form description as chat message on public ticket creation
The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...
票号/条条与票头标题分开
标题是分享一个现成的花花一行 与票号和两个 徽章,导致被切断. 现在车票号码和车牌被占用了 他们自己的紧凑行,标题得到一个全宽行,最多 两行包装.
与动画英雄、时间线和 CTAs 添加/接触确认页面
将联系表中的成功信息替换为专用溢价 确认页面: 动画 SVG 有粒子破裂的检查标记, “ What happens” 下一个是三步制,还有"当你等待"CTA卡片 所有23个地方文件 以新联系方式更新 Confirmed i18n keys.
在支持票单中处理票钥
MediaService 返回 {票: [...], 共 Elements } 但前端 仅检查数据。 内容,使列表总是变为空 .
Add PATCH /org/{id}/colors endpoint to safely update only color palette fields
正确 MEDIASERVICE URL 端口从 443 个到 80 个联系方式
集群IP服务只曝光端口 80;使用443与 http 导致 连接Timeout Error 在提交每个联系表时都会有错误 .
重新设计标签管理器 – 内置部分编辑, 修正已断开的保存, 仅读默认
重写有分节读取/编辑模式的LabelManager.tsx. 修复已损坏的保存 按钮( 由于联系人/ 公司字段从未被覆盖而封存) 从API). 删除全局窗体提交、验证格式、错误状态、预览模式和 分散保存按钮 。 每个区域现在从挂载的 API 中装入数据, 显示干净 默认情况下只读行,并有内置编辑/保存/取消流。 所有七...
Add KamoMail domain validator to block cross-tenant email addresses
Introduces KamoMailDomainValidator component that checks, at service layer, whether the submitted email domain matches the org's verified default domain when Ka...
强制卡莫迈尔域名对邮箱,别名的限制,共享邮箱创建
当KamoMail是电子邮件提供者时,成员只能创建邮箱, 化名,以及使用已验证的 Org 默认域的共享邮箱。 三层独立执行: 前端 UI( 前缀+ 锁定域) 当没有域时输入已禁用状态, Next.js 代理(并行提供者) + 转发前的安全域检查),和Java服务层.
奥尔格主题提供 — WebSocket hook, 提供面板, LabelManager 接线, DNS 触发器, bg 调整大小,主题上下文
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
Use memberID session key and include creatorType in creatable branch-types response
向组织仓库添加查找ByBranchTypeID衍生查询
支持安全服务中新的/分支类型/{id}/使用端点 用于在删除前检查分支类型是否有活动子类.
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns th...
守护分支类型删除当前 Org 用途
在移除分支类型芯片之前,前端现在呼叫 **************** 如果有猩猩存在 就会显示 列出它们的信息对话框,并指示管理员 禁用类型而不是删除.
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...