CLEANUP_SUMMARY.md 4.3 KB

数据库表结构清理总结

执行时间

2026-02-12 16:26

清理目标

统一使用新表结构,移除旧的 sys_* 表逻辑,避免表结构冗余和混乱。

已删除的旧表

用户和权限相关

  • sys_users - 旧用户表(已迁移到 users
  • sys_sessions - 旧会话表(已迁移到 sessions
  • sys_roles - 角色表
  • sys_permissions - 权限表
  • sys_user_roles - 用户角色关联表
  • sys_role_permissions - 角色权限关联表

日志和配置相关

  • sys_login_logs - 登录日志表
  • sys_operation_logs - 操作日志表
  • sys_configs - 系统配置表
  • sys_dict_types - 字典类型表
  • sys_dict_items - 字典项表
  • sys_files - 文件表
  • sys_tasks - 任务表

保留的新表结构

核心业务表

  • users - 用户表(统一使用)
  • sessions - 会话表(统一使用)
  • documents - 文档表
  • templates - 模板表
  • nodes - 图谱节点表
  • edges - 图谱边表
  • rules - 规则表
  • embeddings - 向量嵌入表(支持 pgvector)

管理员账号初始化

已在 users 表中初始化管理员账号:

INSERT INTO users (
    id: '1',
    username: 'admin',
    email: 'admin@lingyue.com',
    password_hash: '$2a$10$0AUCG2mG7a6JXErOTI.Pg.Q/R04plOXvc.TDMeWzwwZQ23ZmrtJxC',
    display_name: '管理员',
    role: 'admin',
    is_active: true
)

登录信息

  • 用户名: admin
  • 密码: admin123

文件变更

1. init_mock.sql

  • 变更前: 1932 行(包含所有 sys_* 表定义和数据)
  • 变更后: 588 行(仅包含核心业务表)
  • 移除内容:
    • 所有 CREATE TABLE sys_* 定义(13 个表)
    • 所有 INSERT INTO sys_* 数据
    • 旧的权限和角色初始化逻辑
  • 新增内容:
    • 管理员账号初始化(使用正确的 bcrypt 密码哈希)

2. 清理脚本

创建了 database/migrations/001_cleanup_old_tables.sql 用于清理现有数据库。

数据库验证

执行清理后的验证结果:

-- 检查剩余的 sys_* 表
SELECT tablename FROM pg_tables 
WHERE schemaname = 'public' AND tablename LIKE 'sys_%';
-- 结果: 0 行(所有 sys_* 表已删除)

-- 检查用户表数据
SELECT id, username, email, display_name, role, is_active FROM users;
-- 结果: 1 行(管理员账号已正确初始化)

影响范围

后端服务

  • AuthService: 已使用 users 表,无需修改
  • DocumentService: 使用 documents 表,无影响
  • ExtractService: 使用 templates, rules 等表,无影响
  • GraphService: 使用 nodes, edges 等表,无影响

前端

  • ✅ 前端 API 调用不受影响(使用 /auth/login 等接口)
  • ✅ 登录功能正常工作

后续建议

1. 权限管理系统(可选)

如果需要完整的权限管理功能,建议:

  • users 表中使用 role 字段(简单权限)
  • 或者重新设计轻量级的权限表结构

2. 日志系统(可选)

如果需要操作日志功能,建议:

  • 创建简单的 audit_logs
  • 记录关键操作的审计信息

3. 系统配置(可选)

如果需要动态配置功能,建议:

  • 创建简单的 settings
  • 或使用配置文件管理

重新初始化数据库

如果需要重新初始化数据库,执行:

# 删除并重建数据库
psql -U postgres -c "DROP DATABASE IF EXISTS lingyue_zhibao;"
psql -U postgres -c "CREATE DATABASE lingyue_zhibao;"

# 执行新的初始化脚本
psql -U postgres -d lingyue_zhibao -f 0211docs/init_mock.sql

验证清理结果

# 1. 检查表结构
psql -U postgres -d lingyue_zhibao -c "\dt"

# 2. 验证管理员账号
psql -U postgres -d lingyue_zhibao -c "SELECT * FROM users WHERE username='admin';"

# 3. 测试登录
curl -X POST http://localhost:18520/auth/login \
  -H "Content-Type: application/json" \
  -d '{"usernameOrEmail":"admin","password":"admin123"}'

清理完成 ✅

  • ✅ 所有旧的 sys_* 表已删除
  • ✅ 数据库表结构已统一
  • ✅ 管理员账号已正确初始化
  • ✅ 登录功能正常工作
  • ✅ 所有后端服务正常运行

数据库现在使用统一的新表结构,代码更清晰,维护更简单!