# 聊天会话表: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 恢复完整对话正文;安全追问上下文只来自成功发布的结构化结果。