**迁移文件优化**: - 001_users.up.sql: 添加完整表和列注释,说明密码哈希算法 (bcrypt) 和 token 哈希算法 (SHA-256) - 002_messages.up.sql: 收紧 role 字段至 VARCHAR(10),添加 tokens_used 非负约束,补充完整注释 - 003_sessions.up.sql: 收紧 title 字段至 VARCHAR(100) 并添加长度约束 (1-100),详细说明 config JSONB 结构 - 004_user_scenarios.up.sql: 修复 greeting 字段冲突 (VARCHAR(500)),扩大 icon 至 VARCHAR(20) 支持复合 Emoji,prompt 改为 TEXT 无上限,优化约束逻辑 **后端代码修改**: - auth.go: 移除用户名最小长度限制 (3 字符),仅保留最大长度 64 **前端国际化修改**: - 更新三种语言的登录/注册表单 placeholder 文本,移除字符长度要求提示 - zh-CN: "请输入用户名" / "请输入密码" - en-US: "Enter username" / "Enter password" - ja-JP: "ユーザー名を入力" / "パスワードを入力" **删除文件**: - 移除临时修复迁移文件 (005_fix_user_scenarios_description.*) - 删除临时诊断脚本 (fix_user_scenarios.sql, check_constraints.sql) 所有约束修改都是放宽限制,不影响现有数据。
23 lines
1.2 KiB
SQL
23 lines
1.2 KiB
SQL
CREATE TABLE IF NOT EXISTS sessions (
|
||
id UUID PRIMARY KEY,
|
||
user_id UUID NOT NULL,
|
||
title VARCHAR(100) NOT NULL DEFAULT '新对话',
|
||
config JSONB NOT NULL DEFAULT '{}',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
||
CONSTRAINT check_title_length CHECK (char_length(title) >= 1 AND char_length(title) <= 100)
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions (user_id);
|
||
CREATE INDEX IF NOT EXISTS idx_sessions_user_updated ON sessions (user_id, updated_at DESC);
|
||
|
||
-- 表和列注释
|
||
COMMENT ON TABLE sessions IS '会话表,存储用户的对话会话信息';
|
||
COMMENT ON COLUMN sessions.id IS '会话唯一标识符 (UUID)';
|
||
COMMENT ON COLUMN sessions.user_id IS '所属用户 ID,关联 users 表';
|
||
COMMENT ON COLUMN sessions.title IS '会话标题,默认为"新对话",长度 1-100 字符';
|
||
COMMENT ON COLUMN sessions.config IS '会话配置 (JSONB),包含: tts_enabled (布尔), detail_level (''low''/''high''), language (语言代码), scenario (情景 ID)';
|
||
COMMENT ON COLUMN sessions.created_at IS '会话创建时间';
|
||
COMMENT ON COLUMN sessions.updated_at IS '会话最后更新时间';
|