AskaEth
e8eccd2bb2
feat(history,gateway): D4 会话未读/已读游标 — unreadCount + POST /sessions/{id}/read + session_read 广播
- chat_sessions 增 read_at(毫秒,与 chat_messages.created_at 同单位);迁移 0010 并把既有会话回填为各自最新消息时间(升级当天不误报)
- ListSessions 单查询派生 unreadCount(无 N+1,复用 idx_chat_msgs_session_created 覆盖索引)
- MarkSessionRead 只前进 MAX(read_at, ?);未知会话 ErrSessionNotFound;游标方法挂在网关消费侧窄接口(沿用 GetMessage/messageLookup 先例,避免污染 runtime 接口与其 fake)
- POST /api/v1/sessions/{id}/read:writeAuth + 400/404/501,成功广播 session_read、失败路径不广播
- Docs/api-client v0.37(§1 unreadCount / 新行 8a / §3.9 session_read / §4.2 用法)
- 含迁移回填测试、store/handler 测试与变异验证;顺带把 migrate_pinned_test 的「回退一步=0009」硬编码改为对迁移数量免疫
2026-10-03 16:47:55 +08:00
..
2026-09-07 18:19:31 +08:00
2026-09-07 18:19:31 +08:00
2026-09-08 02:53:01 +08:00
2026-09-08 02:53:01 +08:00
2026-09-09 00:08:29 +08:00
2026-09-08 23:20:12 +08:00
2026-09-08 23:20:12 +08:00
2026-09-09 00:08:29 +08:00
2026-09-07 13:57:36 +08:00
2026-09-08 21:45:00 +08:00
2026-09-07 16:21:49 +08:00
2026-09-07 20:58:48 +08:00
2026-09-09 00:08:29 +08:00
2026-09-08 23:47:09 +08:00
2026-09-09 00:08:29 +08:00
2026-09-09 00:08:29 +08:00
2026-09-08 23:20:12 +08:00
2026-09-08 23:47:09 +08:00
2026-09-09 00:08:29 +08:00
2026-09-08 06:48:15 +08:00
2026-09-08 21:23:12 +08:00
2026-09-07 05:13:36 +08:00
2026-09-08 21:45:00 +08:00
2026-09-08 21:45:00 +08:00
2026-09-30 11:58:49 +08:00
2026-10-03 16:47:55 +08:00
2026-09-30 11:58:49 +08:00
2026-10-03 16:08:52 +08:00
2026-09-07 16:01:47 +08:00
2026-09-07 03:52:43 +08:00
2026-09-08 21:49:12 +08:00
2026-09-08 21:13:36 +08:00
2026-09-08 21:17:26 +08:00
2026-09-08 23:59:13 +08:00
2026-09-30 11:58:49 +08:00
2026-09-30 11:58:49 +08:00
2026-10-03 16:47:55 +08:00
2026-09-08 21:24:36 +08:00
2026-09-30 08:51:38 +08:00
2026-09-30 09:03:16 +08:00
2026-09-30 09:03:16 +08:00
2026-09-06 21:02:46 +08:00
2026-10-03 15:22:03 +08:00
2026-10-03 15:22:03 +08:00
2026-09-06 21:02:46 +08:00
2026-09-06 21:02:46 +08:00
2026-10-03 15:22:03 +08:00
2026-09-07 19:43:48 +08:00
2026-09-07 19:43:48 +08:00
2026-09-08 21:45:00 +08:00
2026-10-03 16:47:55 +08:00
2026-09-30 11:58:49 +08:00
2026-10-03 16:47:55 +08:00
2026-09-08 21:05:50 +08:00
2026-09-30 08:51:38 +08:00
2026-10-03 16:47:55 +08:00
2026-10-03 16:47:55 +08:00
2026-09-06 20:40:49 +08:00
2026-09-08 21:36:03 +08:00
2026-09-08 21:36:03 +08:00
2026-09-08 21:23:12 +08:00
2026-09-08 21:23:12 +08:00
2026-09-06 16:31:28 +08:00
2026-09-07 03:52:43 +08:00
2026-10-03 15:19:57 +08:00
2026-10-03 15:19:57 +08:00
2026-10-03 15:19:57 +08:00
2026-10-03 16:08:52 +08:00
2026-10-03 16:08:52 +08:00
2026-10-03 15:19:57 +08:00
2026-09-06 21:54:40 +08:00