226 lines
6.8 KiB
Markdown
226 lines
6.8 KiB
Markdown
# 数据库初始化说明
|
||
|
||
## 概述
|
||
|
||
本目录包含城市生命线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` - 一键执行所有建表和初始化脚本
|
||
|
||
## 使用方法
|
||
|
||
### 方式一:使用总入口脚本(推荐)
|
||
|
||
```bash
|
||
# 进入 PostgreSQL 命令行
|
||
psql -U postgres
|
||
|
||
# 执行总初始化脚本
|
||
\i /path/to/urbanLifelineServ/.bin/database/postgres/sql/initAll.sql
|
||
```
|
||
|
||
### 方式二:分步执行
|
||
|
||
#### 第一步:创建表结构
|
||
|
||
```bash
|
||
# 创建数据库
|
||
\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
|
||
```
|
||
|
||
#### 第二步:初始化基础数据
|
||
|
||
```bash
|
||
# 按顺序执行初始化脚本
|
||
\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策略开关
|
||
|
||
## 注意事项
|
||
|
||
1. **执行顺序**:必须按照 `initAll.sql` 中的顺序执行,先创建表结构,再插入数据
|
||
2. **依赖关系**:初始化数据脚本有依赖关系,必须按顺序执行
|
||
3. **数据库权限**:执行脚本需要具有创建数据库、创建表、插入数据的权限
|
||
4. **字符编码**:确保数据库使用 UTF-8 编码
|
||
5. **时区设置**:建议数据库时区设置为 Asia/Shanghai 或 UTC
|
||
|
||
## 验证初始化结果
|
||
|
||
执行以下 SQL 验证初始化是否成功:
|
||
|
||
```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+
|
||
```
|
||
|
||
## 重置数据库
|
||
|
||
如需重新初始化数据库,可以执行以下操作:
|
||
|
||
```sql
|
||
-- 删除所有 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: 不需要,这些表的数据在系统运行时动态产生
|
||
|
||
## 联系支持
|
||
|
||
如有问题,请联系技术支持团队。
|