6.8 KiB
6.8 KiB
数据库初始化说明
概述
本目录包含城市生命线AI数智化平台的数据库初始化脚本,用于创建表结构和插入基础数据。
文件说明
表结构创建脚本
| 文件名 | 说明 |
|---|---|
createDB.sql |
创建数据库 |
createTablePermission.sql |
创建权限相关表(部门、角色、权限、视图、ACL等) |
createTableUser.sql |
创建用户相关表(用户、用户信息、登录日志) |
createTableFile.sql |
创建文件管理表 |
createTableMessage.sql |
创建消息通知表 |
createTableLog.sql |
创建日志表 |
createTableConfig.sql |
创建配置管理表 |
createTableKnowledge.sql |
创建知识库表 |
createTableBidding.sql |
创建招投标业务表 |
createTableCustomerService.sql |
创建智能客服表 |
createTableAgent.sql |
创建智能体表(暂不启用) |
数据初始化脚本
| 文件名 | 说明 | 是否必需 |
|---|---|---|
initDataPermission.sql |
初始化权限基础数据(部门、角色、权限、视图、模块) | ✅ 必需 |
initDataUser.sql |
初始化用户数据(管理员账户、演示用户) | ✅ 必需 |
initDataMessage.sql |
初始化消息渠道配置和模板 | ✅ 必需 |
initDataConfig.sql |
初始化系统配置参数 | ✅ 必需 |
总入口脚本
initAll.sql- 一键执行所有建表和初始化脚本
使用方法
方式一:使用总入口脚本(推荐)
# 进入 PostgreSQL 命令行
psql -U postgres
# 执行总初始化脚本
\i /path/to/urbanLifelineServ/.bin/database/postgres/sql/initAll.sql
方式二:分步执行
第一步:创建表结构
# 创建数据库
\i createDB.sql
# 创建各模块表结构
\i createTablePermission.sql
\i createTableUser.sql
\i createTableFile.sql
\i createTableMessage.sql
\i createTableLog.sql
\i createTableConfig.sql
\i createTableKnowledge.sql
\i createTableBidding.sql
\i createTableCustomerService.sql
第二步:初始化基础数据
# 按顺序执行初始化脚本
\i initDataPermission.sql
\i initDataUser.sql
\i initDataMessage.sql
\i initDataConfig.sql
初始化数据说明
1. 权限基础数据 (initDataPermission.sql)
初始化内容:
-
根部门:dept_root
-
全局角色:
- 超级管理员 (role_super_admin) - 拥有所有权限
- 系统管理员 (role_system_admin) - 拥有系统管理权限
- 普通用户 (role_user) - 基础查看和操作权限
- 访客 (role_guest) - 仅查看权限
-
系统模块:
- 系统管理 (mod_system)
- 文件管理 (mod_file)
- 消息通知 (mod_message)
- 配置管理 (mod_config)
- 知识库 (mod_knowledge)
- 招投标 (mod_bidding)
- 智能客服 (mod_customer_service)
-
系统权限:30+ 个基础权限,涵盖用户、角色、部门、权限、文件、消息、配置管理
-
系统视图(菜单):
- 系统管理菜单及其子菜单
- 业务管理菜单框架
2. 用户数据 (initDataUser.sql)
初始化账户:
| 用户 | 账号 | 默认密码 | 角色 | 说明 |
|---|---|---|---|---|
| 系统管理员 | admin | admin123 | 超级管理员 | 拥有所有权限 |
| 演示用户 | demo | admin123 | 普通用户 | 用于演示和测试 |
⚠️ 安全提示:
- 生产环境部署前,必须修改默认密码
- 密码使用 bcrypt 加密存储
- 建议删除演示用户账户
3. 消息渠道配置 (initDataMessage.sql)
初始化内容:
-
消息渠道(默认禁用,需配置后启用):
- 应用内消息 (app) - 默认启用
- 短信通知 (sms)
- 邮件通知 (email)
- 微信公众号 (wechat_official_account)
- 微信小程序 (wechat_applet)
- 钉钉通知 (dingtalk)
-
消息模板:
- 用户注册欢迎
- 密码重置通知
- 系统维护通知
- 工单创建通知
- 招标公告发布
4. 系统配置 (initDataConfig.sql)
初始化配置分组:
- 站点配置:站点名称、Logo、ICP备案
- 国际化:默认语言、时区
- 安全认证:密码策略、JWT过期时间、会话超时、注册开关
- 存储上传:最大上传大小、存储后端、存储路径
- 通知配置:邮件SMTP、短信服务商
- 日志审计:日志级别、审计日志保留天数
- 平台特性:维护模式、ACL策略开关
注意事项
- 执行顺序:必须按照
initAll.sql中的顺序执行,先创建表结构,再插入数据 - 依赖关系:初始化数据脚本有依赖关系,必须按顺序执行
- 数据库权限:执行脚本需要具有创建数据库、创建表、插入数据的权限
- 字符编码:确保数据库使用 UTF-8 编码
- 时区设置:建议数据库时区设置为 Asia/Shanghai 或 UTC
验证初始化结果
执行以下 SQL 验证初始化是否成功:
-- 检查表是否创建成功
SELECT schemaname, tablename
FROM pg_tables
WHERE schemaname IN ('sys', 'file', 'message', 'config')
ORDER BY schemaname, tablename;
-- 检查角色数量
SELECT COUNT(*) as role_count FROM sys.tb_sys_role WHERE deleted = false;
-- 预期结果:4
-- 检查权限数量
SELECT COUNT(*) as permission_count FROM sys.tb_sys_permission WHERE deleted = false;
-- 预期结果:30+
-- 检查用户数量
SELECT COUNT(*) as user_count FROM sys.tb_sys_user WHERE deleted = false;
-- 预期结果:2
-- 检查消息渠道数量
SELECT COUNT(*) as channel_count FROM message.tb_message_channel WHERE deleted = false;
-- 预期结果:6
-- 检查系统配置数量
SELECT COUNT(*) as config_count FROM config.tb_sys_config WHERE deleted = false;
-- 预期结果:20+
重置数据库
如需重新初始化数据库,可以执行以下操作:
-- 删除所有 schema(谨慎操作!)
DROP SCHEMA IF EXISTS sys CASCADE;
DROP SCHEMA IF EXISTS file CASCADE;
DROP SCHEMA IF EXISTS message CASCADE;
DROP SCHEMA IF EXISTS config CASCADE;
DROP SCHEMA IF EXISTS knowledge CASCADE;
DROP SCHEMA IF EXISTS bidding CASCADE;
DROP SCHEMA IF EXISTS customer_service CASCADE;
DROP SCHEMA IF EXISTS log CASCADE;
-- 然后重新执行 initAll.sql
\i initAll.sql
常见问题
Q: 执行初始化脚本报错 "relation already exists"
A: 表已存在,可以选择删除对应的表或 schema 后重新执行
Q: 如何修改管理员默认密码?
A: 修改 initDataUser.sql 中的 password 字段,使用 bcrypt 加密后的密码哈希
Q: 如何自定义初始化数据?
A: 直接修改对应的 initData*.sql 文件,按照现有格式添加或修改数据
Q: 业务表(知识库、招投标、客服)需要初始化数据吗?
A: 不需要,这些表的数据在系统运行时动态产生
联系支持
如有问题,请联系技术支持团队。