3f447668b8
1. 启动时不加载历史消息(等第一条消息确定身份后按需恢复) 2. MemoryStore 改为 HashMap<user_id, Vec<mem>>,按用户隔离缓存 3. session.current_user_id 与外部 mutex 同步 4. chat_records.message_id 加 UNIQUE 索引 + ON CONFLICT DO NOTHING
33 lines
1.2 KiB
SQL
33 lines
1.2 KiB
SQL
-- iAs 初始数据库迁移
|
|
-- 认证信息和聊天记录存储
|
|
|
|
-- 应用状态表(key-value 存储,用于认证信息等)
|
|
CREATE TABLE IF NOT EXISTS app_state (
|
|
key TEXT PRIMARY KEY,
|
|
value JSONB NOT NULL,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- 聊天记录表
|
|
CREATE TABLE IF NOT EXISTS chat_records (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
direction TEXT NOT NULL, -- 'inbound' | 'outbound'
|
|
user_id TEXT NOT NULL, -- 微信用户 ID
|
|
account_id TEXT NOT NULL, -- 机器人账号 ID
|
|
text TEXT NOT NULL, -- 消息内容
|
|
source TEXT NOT NULL DEFAULT '', -- 消息来源
|
|
context_token TEXT NOT NULL DEFAULT '', -- 上下文令牌
|
|
message_id TEXT NOT NULL DEFAULT '',
|
|
meta JSONB NOT NULL DEFAULT '{}'::JSONB
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_chat_records_user_created
|
|
ON chat_records (user_id, created_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_chat_records_account_created
|
|
ON chat_records (account_id, created_at DESC);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_chat_records_message_id
|
|
ON chat_records (message_id) WHERE message_id != '';
|