fix(database): add DELETED to conversations status CHECK constraint

用户删除历史对话时报错 conversations_status_check 违反约束,
因为 softDelete() 设置 status='DELETED' 但数据库 CHECK 约束
只允许 ACTIVE/ENDED/ARCHIVED。

修复:
- 新增 migration 修改 CHECK 约束,添加 DELETED 值
- 同步更新 init.sql 以支持全新部署

生产环境需执行:
database/migrations/20260207_add_deleted_status_to_conversations.sql

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-02-06 22:25:31 -08:00
parent ce13c8b770
commit 68ffa6b7eb
2 changed files with 12 additions and 2 deletions

View File

@ -0,0 +1,10 @@
-- Migration: Add 'DELETED' to conversations status CHECK constraint
-- 修复:软删除功能需要 DELETED 状态,但数据库 CHECK 约束未包含该值
-- 导致用户无法删除历史对话QueryFailedError: conversations_status_check
-- 删除旧约束
ALTER TABLE conversations DROP CONSTRAINT IF EXISTS conversations_status_check;
-- 添加包含 DELETED 的新约束
ALTER TABLE conversations ADD CONSTRAINT conversations_status_check
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED', 'DELETED'));

View File

@ -62,9 +62,9 @@ CREATE TABLE conversations (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
-- 所属用户ID
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
-- 对话状态: ACTIVE(进行中), ENDED(已结束), ARCHIVED(已归档)
-- 对话状态: ACTIVE(进行中), ENDED(已结束), ARCHIVED(已归档), DELETED(软删除)
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE'
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED')),
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED', 'DELETED')),
-- 对话标题(自动生成或用户设置)
title VARCHAR(255),
-- 对话摘要AI生成