# 数据库表结构清理总结 ## 执行时间 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` 表中初始化管理员账号: ```sql 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` 用于清理现有数据库。 ## 数据库验证 执行清理后的验证结果: ```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` 表 - 或使用配置文件管理 ## 重新初始化数据库 如果需要重新初始化数据库,执行: ```bash # 删除并重建数据库 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 ``` ## 验证清理结果 ```bash # 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_*` 表已删除 - ✅ 数据库表结构已统一 - ✅ 管理员账号已正确初始化 - ✅ 登录功能正常工作 - ✅ 所有后端服务正常运行 **数据库现在使用统一的新表结构,代码更清晰,维护更简单!**