42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
# 聊天会话表:chat_session
|
||
|
||
**状态**:当前会话目录表
|
||
**来源**:`V011__add_session_run_isolation.sql`、`ChatSession`
|
||
|
||
## 定位
|
||
|
||
`chat_session` 保存 Chat 会话目录元数据,用于把同一个 `sessionId` 下的多次运行组织在一起。它不保存完整对话历史;当前多轮只从最近一次安全发布的 `diagnosis_run.published_result` 构造有界 `PreviousTurn`,不再使用 Redis `SessionContext`。
|
||
|
||
## 字段
|
||
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---|---|
|
||
| `id` | BIGINT | 是 | 自增主键 |
|
||
| `session_id` | VARCHAR(64) | 是 | 会话目录 ID,外部 API 仍通过它定位会话 |
|
||
| `status` | VARCHAR(16) | 否 | `ACTIVE`、`EXPIRED`、`CLOSED` |
|
||
| `message_pair_count` | INT | 否 | 历史兼容计数;当前运行不依赖它恢复消息正文 |
|
||
| `created_at` | DATETIME | 是 | 创建时间 |
|
||
| `last_active_at` | DATETIME | 否 | 最近活跃时间 |
|
||
| `expires_at` | DATETIME | 否 | 会话目录过期元数据,可为空 |
|
||
|
||
## 索引
|
||
|
||
| 索引 | 字段 | 用途 |
|
||
|---|---|---|
|
||
| `session_id` unique | `session_id` | 会话目录唯一约束 |
|
||
| `idx_chat_session_last_active` | `last_active_at` | 最近会话列表和排查 |
|
||
| `idx_chat_session_status` | `status` | 按状态筛选 |
|
||
| `idx_chat_session_expires_at` | `expires_at` | 过期目录排查 |
|
||
|
||
## 关系
|
||
|
||
- `diagnosis_run.session_id` 逻辑关联 `chat_session.session_id`。
|
||
- 当前不强制数据库外键,服务层校验 run/session ownership。
|
||
- 一个 `chat_session` 可以拥有多个 `diagnosis_run`。
|
||
|
||
## 注意点
|
||
|
||
- `chat_session` 是会话元数据,不是诊断执行记录。
|
||
- 不要把 query、answer、self_evaluation、feedback 写入该表;这些属于 `diagnosis_run`。
|
||
- 不要从该表或 Redis 恢复完整对话正文;安全追问上下文只来自成功发布的结构化结果。
|