Fix NPE in getChatSessions from Map.of() rejecting null nextcoder
java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...
Add GET /sessions/{guid}/members endpoint with display-name priority
Returns member list with name resolved via usernameAlias → fullName → alias → username, matching the same priority as the chat sessions list. This feeds ChatBox...
Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)
Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...
Prefer usernameAlias over User.name in memberDisplayName
Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...
Use split First/After queries for chat sessions paged endpoint
Addresses empty Chats tab by dispatching to ****************
触发重建接取 Kamo-shared-library 094e80d (MediaObj Transit@IdClass) 互联网档案馆的存檔,存档日期2011-12-20
Paged chat list with previews, members, unread counts
that returns ChatListRowDto rows including last message preview, member summaries, per-session unread counts, and ownLastViewedAt.
Imaging proxy with HTTP Range support and per-member download tracking
Raise client read timeout to 120s for long messages
LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...
Cache-only bulk translate, FE handles fills
Bulk message-fetch endpoints now return only translations that are already cached and tag missing rows with needsTranslation:true. The chat UIs (kamo-internal C...
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /transl...
创造就业的货币范围,而不是部署Kubernetes
工作流量一级连通整条管道(包括克贝克特尔) (推出)。 将组移动到构建任务中, 只需从不同位置部署任务 运行可以重叠。 Kluster Services 工作流程下调工作流程货币 并行推动不排队于只部署的任务.
在 Redis 按会话 GUID 跟踪公共支持聊天
销售游客使用/ws/公-聊天-native 没有会员Id;门票仍然 将占位符成员作为请求者。 倍增强度 PUBLIC 公用STOMP连接/断接的密钥,广播会议 并返回成员+来自请求者-snapshot的会话地图。 心跳扩展 TTL 公开会议.
播放等待计数 + 在代理读取的访客发送
- 现在代表到 所以数 反映未读的访客信件和当 特工呼叫马克·阿斯雷德 - 新的公共帮助者。 - 现在(a)重播经纪人的 (b) 调用 帮助器,使导航支持按钮保持同步而不等待 下60年代的民意调查 - 也叫帮手 导航系统在访客发出时会爆炸 导航点数与每行徽章状态一致 在单击和浏览器刷新后.
在创建时将地理存储在票上, 放下 GeoLite 读取
现在捕捉到访客的地表 一次(通过GeoLookupService)和持续p/国家/城市/子分区 支持键本身。 支持Ticket Service.toDTO 直接读取地平面-没有直播 GeoLite 范围扫描, 地理上没有访问者表倒计时( 访问者仍然在) 装入用于最新显示Name, 散装为列表终点 。 没有快照的遗赠票...
大量访问者并跳过列表中的 GeoLite 搜索
/api/support/tickets列表的终点正在运行,每页20行: - 20个QQ电话(N+1) - GeoLookupService有20通电话,每个都有一个范围扫描 相对于 GeoLite 块表(百万行)加一个位置 在巨大的桌子上取出——~40个额外查询,即使访客 记录已经有存储的国家代码 。 修补 : -...
与 SockJS 并列添加 /ws/ public- chat- nature 平地 WebSocket 端点
在/ws/公共-聊天-内语中登记第二个STOMP终点,而不使用SockJS 前端可以与本地的 WebSocket( 经纪人URL) 连接而无需 Sockjs-客户端图书馆,该图书馆登记了违反《公约》规定的卸货处理器。 网站权限政策. 原始/ws/公交SockJS端点保留 为后向相容性.
在访客消息中向代理播放未读数
访问者发出支持信息后,请按最新未读数 所以代理商的票单 徽章和导航计数器实时更新。 显示广播内容 Media Captain.sendMessage 供会员间聊天.
扩展 JPA 仓库扫描以包含商务包
新的 Kamo 共享图书馆带来 QQ 要求 **************** (中文(简体) ). Media Service只扫描了 donofy.dao.repos,所以豆子不见了 而应用程序无法启动 。 镜像更大的扫描 警卫 服务用途.
在 ChatWebSocket 控制器中恢复 HashMap 导入
上一个重构件已删除 HashMap 导入, 但手柄已切换 方法仍然为打字事件有效载荷构建一个 HashMap,导致 以“ 找不到符号: 类 HashMap” 来失败的 Forgejo 构建 .
在会话创建时主动创建NATS消费者,以防止信息丢失
之前,NATS JetStream 推力消费者只在一个STOMP客户端时创建. 发送/应用/聊天/订阅。 执行政策。 新建, 任何信件发布于 消费者的存在是永久的丢失——导致访客留言和姓名更改。 除非代理商碰巧先被订阅,否则绝不会在卡莫内部出现. - 将NATS订阅逻辑摘录到聊天会订阅管理器(专有) 确保订阅,将ID...
从核心 NATS 中继主题提供
匹配安全服务核心发布: 与调度器订阅 security.them.profile.* 而不是 JetStream(流只覆盖聊天).
在访客票上使用 PublicChatVisitor 显示Name 用于请求者Name
访客推出的门票 硬码请求员到Org系统成员,所以 DTO在请求者栏上刻出兽人所有者的名字。 坠落 返回到 PublicChatVisitor.display Name 当可用时,列表会显示 实际访客(匿名或姓名).
曝光城市和游客地理考察分区
- 在城市和分区领域扩大地理结果记录 - 切换支持Ticket Service.toDTO () 以使用 GeoLookup Service(IP级) 而不是国家地理数据库,所以城市和 子分区来自匹配的 GeoLite 块
在 GeoLookupService 中建立错误, 并为代理信件添加 NATS 发布
- 在 QQ 中修复可选 vs 列表类型不匹配 - 向媒体管理员提供新闻服务 - 发布到聊天. session.{guid} 之后代理生成一个消息,所以两者都是 代理和访客在不刷新页面的情况下通过STOMP实时看到
Real-time chat delivery, message sides, notifications, and name sync
- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...
在支持票头显示访客旗和位置
- 注入公共图片存储器和地理图片存储器 - 通过地理检索传播访问者信息、访问者国家代码、访问者国家Name - GeoLookupService 已经为访问者提供访问。 国家代码在会话创建时
将访问者信件标记为 VISTOR MESSAGE 类型, 添加发送者Name 以获取信件
- PublicChatService: 设置消息Type=VISITOR MESSAGE 这样前端可以区分 访问者回应代理商对STOMP专题的回应 - 媒体管理员。 名称字段, 使代理员看到是谁发送的 在 TicketChat 中装入聊天历史时每封消息
通过STOMP/NATS实时修复端到端的公共聊天
- 从公共聊天网中取消内部认证要求 因此访问者只能使用会话Token直接连接 - 在 ChatMessageDto 代理中包含访客显示Name 作为发送者Name 看看谁在给她们发短信 - 在 STOMP 信件中包含发送者Name 从 NATS 订阅中传送的 Map 因此,代理和访客都会在实时消息中看到发送者姓名
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...
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...
