76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
"""
|
||
Database Migration: User Memories Table.
|
||
[AC-IDMP-14] 用户级记忆滚动摘要表
|
||
|
||
创建时间: 2025-03-08
|
||
变更说明:
|
||
- 新增 user_memories 表用于存储滚动摘要与事实/偏好/未解决问题
|
||
|
||
执行方式:
|
||
- SQLModel 会自动创建表(通过 init_db)
|
||
- 此脚本用于手动迁移或回滚
|
||
|
||
SQL DDL:
|
||
```sql
|
||
CREATE TABLE user_memories (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id VARCHAR NOT NULL,
|
||
user_id VARCHAR NOT NULL,
|
||
summary TEXT,
|
||
facts JSON,
|
||
preferences JSON,
|
||
open_issues JSON,
|
||
summary_version INTEGER NOT NULL DEFAULT 1,
|
||
last_turn_id VARCHAR,
|
||
expires_at TIMESTAMP,
|
||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX ix_user_memories_tenant_user ON user_memories(tenant_id, user_id);
|
||
CREATE INDEX ix_user_memories_tenant_user_updated ON user_memories(tenant_id, user_id, updated_at);
|
||
```
|
||
|
||
回滚 SQL:
|
||
```sql
|
||
DROP TABLE IF EXISTS user_memories;
|
||
```
|
||
"""
|
||
|
||
USER_MEMORIES_DDL = """
|
||
CREATE TABLE IF NOT EXISTS user_memories (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id VARCHAR NOT NULL,
|
||
user_id VARCHAR NOT NULL,
|
||
summary TEXT,
|
||
facts JSON,
|
||
preferences JSON,
|
||
open_issues JSON,
|
||
summary_version INTEGER NOT NULL DEFAULT 1,
|
||
last_turn_id VARCHAR,
|
||
expires_at TIMESTAMP,
|
||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||
);
|
||
"""
|
||
|
||
USER_MEMORIES_INDEXES = """
|
||
CREATE INDEX IF NOT EXISTS ix_user_memories_tenant_user ON user_memories(tenant_id, user_id);
|
||
CREATE INDEX IF NOT EXISTS ix_user_memories_tenant_user_updated ON user_memories(tenant_id, user_id, updated_at);
|
||
"""
|
||
|
||
USER_MEMORIES_ROLLBACK = """
|
||
DROP TABLE IF EXISTS user_memories;
|
||
"""
|
||
|
||
|
||
async def upgrade(conn):
|
||
"""执行迁移"""
|
||
await conn.execute(USER_MEMORIES_DDL)
|
||
await conn.execute(USER_MEMORIES_INDEXES)
|
||
|
||
|
||
async def downgrade(conn):
|
||
"""回滚迁移"""
|
||
await conn.execute(USER_MEMORIES_ROLLBACK)
|