服务启动

This commit is contained in:
2025-12-05 15:34:02 +08:00
parent ab8be1a832
commit a8233ceb72
55 changed files with 2886 additions and 494 deletions

View File

@@ -1,225 +0,0 @@
# 数据库初始化说明
## 概述
本目录包含城市生命线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: 不需要,这些表的数据在系统运行时动态产生
## 联系支持
如有问题,请联系技术支持团队。

View File

@@ -1,11 +1,11 @@
-- 删除已存在的数据库(如果存在)
DROP DATABASE IF EXISTS urban-lifeline;
DROP DATABASE IF EXISTS urban_lifeline;
-- 创建新数据库,使用 UTF8 编码,并设置适合中文的排序规则
-- 使用 template0 确保干净的数据库模板
-- zh_CN.UTF-8 支持中文字符排序和比较
CREATE DATABASE urban-lifeline
CREATE DATABASE urban_lifeline
ENCODING 'UTF8'
TEMPLATE template0
LC_COLLATE 'zh_CN.UTF-8'

View File

@@ -11,7 +11,7 @@ CREATE TABLE config.tb_sys_config (
description VARCHAR(255) NOT NULL, -- 配置描述
re JSON DEFAULT NULL, -- 正则表达式校验规则
options JSON DEFAULT NULL, -- 可选项render_type为select、checkbox、radio时使用
group VARCHAR(255) NOT NULL, -- 配置组
"group" VARCHAR(255) NOT NULL, -- 配置组
module_id VARCHAR(255) NOT NULL, -- 模块id
order_num INT NOT NULL, -- 配置顺序
status INT NOT NULL DEFAULT 0, -- 配置状态 0:启用 1:禁用

View File

@@ -1,89 +1,153 @@
-- ====================================================
-- 定时任务表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_task`;
CREATE TABLE `tb_crontab_task` (
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
`task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
`task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
`meta_id` VARCHAR(64) NOT NULL COMMENT '任务元数据ID',
`default_recipient` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否使用默认接收人0:否 1:是)',
`bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
`method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
`method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
`cron_expression` VARCHAR(100) NOT NULL COMMENT 'Cron表达式',
`status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '任务状态0:暂停 1:运行中)',
`description` VARCHAR(500) DEFAULT NULL COMMENT '任务描述',
`concurrent` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否允许并发执行0:否 1:是)',
`misfire_policy` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '错过执行策略1:立即执行 2:执行一次 3:放弃执行)',
`creator` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
`updater` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0:否 1:是)',
PRIMARY KEY (`id`),
KEY `idx_task_name` (`task_name`),
KEY `idx_bean_name` (`bean_name`),
KEY `idx_status` (`status`),
KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务配置表';
CREATE SCHEMA IF NOT EXISTS crontab;
DROP TABLE IF EXISTS crontab.tb_crontab_task CASCADE;
CREATE TABLE crontab.tb_crontab_task (
id VARCHAR(64) NOT NULL,
task_id VARCHAR(64) NOT NULL,
task_name VARCHAR(100) NOT NULL,
task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT',
meta_id VARCHAR(64) NOT NULL,
default_recipient SMALLINT NOT NULL DEFAULT 0, -- 是否使用默认接收人0:否 1:是)
bean_name VARCHAR(100) NOT NULL,
method_name VARCHAR(100) NOT NULL,
method_params VARCHAR(500) DEFAULT NULL,
cron_expression VARCHAR(100) NOT NULL,
status SMALLINT NOT NULL DEFAULT 0, -- 任务状态0:暂停 1:运行中)
description VARCHAR(500) DEFAULT NULL,
concurrent SMALLINT NOT NULL DEFAULT 0, -- 是否允许并发执行0:否 1:是)
misfire_policy SMALLINT NOT NULL DEFAULT 1, -- 错过执行策略1:立即执行 2:执行一次 3:放弃执行)
creator VARCHAR(64) DEFAULT NULL,
updater VARCHAR(64) DEFAULT NULL,
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
update_time TIMESTAMPTZ DEFAULT NULL,
delete_time TIMESTAMPTZ DEFAULT NULL,
deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除0:否 1:是)
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS idx_task_name ON crontab.tb_crontab_task(task_name);
CREATE INDEX IF NOT EXISTS idx_bean_name ON crontab.tb_crontab_task(bean_name);
CREATE INDEX IF NOT EXISTS idx_status ON crontab.tb_crontab_task(status);
CREATE INDEX IF NOT EXISTS idx_deleted ON crontab.tb_crontab_task(deleted);
COMMENT ON TABLE crontab.tb_crontab_task IS '定时任务配置表';
COMMENT ON COLUMN crontab.tb_crontab_task.id IS '主键ID';
COMMENT ON COLUMN crontab.tb_crontab_task.task_id IS '任务ID';
COMMENT ON COLUMN crontab.tb_crontab_task.task_name IS '任务名称';
COMMENT ON COLUMN crontab.tb_crontab_task.task_group IS '任务分组';
COMMENT ON COLUMN crontab.tb_crontab_task.meta_id IS '任务元数据ID';
COMMENT ON COLUMN crontab.tb_crontab_task.default_recipient IS '是否使用默认接收人0:否 1:是)';
COMMENT ON COLUMN crontab.tb_crontab_task.bean_name IS 'Bean名称';
COMMENT ON COLUMN crontab.tb_crontab_task.method_name IS '方法名称';
COMMENT ON COLUMN crontab.tb_crontab_task.method_params IS '方法参数';
COMMENT ON COLUMN crontab.tb_crontab_task.cron_expression IS 'Cron表达式';
COMMENT ON COLUMN crontab.tb_crontab_task.status IS '任务状态0:暂停 1:运行中)';
COMMENT ON COLUMN crontab.tb_crontab_task.description IS '任务描述';
COMMENT ON COLUMN crontab.tb_crontab_task.concurrent IS '是否允许并发执行0:否 1:是)';
COMMENT ON COLUMN crontab.tb_crontab_task.misfire_policy IS '错过执行策略1:立即执行 2:执行一次 3:放弃执行)';
COMMENT ON COLUMN crontab.tb_crontab_task.creator IS '创建者';
COMMENT ON COLUMN crontab.tb_crontab_task.updater IS '更新者';
COMMENT ON COLUMN crontab.tb_crontab_task.create_time IS '创建时间';
COMMENT ON COLUMN crontab.tb_crontab_task.update_time IS '更新时间';
COMMENT ON COLUMN crontab.tb_crontab_task.delete_time IS '删除时间';
COMMENT ON COLUMN crontab.tb_crontab_task.deleted IS '是否删除0:否 1:是)';
-- ====================================================
-- 定时任务执行日志表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_log`;
CREATE TABLE `tb_crontab_log` (
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
`task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
`task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
`bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
`method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
`method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
`execute_status` TINYINT(1) NOT NULL COMMENT '执行状态0:失败 1:成功)',
`execute_message` TEXT DEFAULT NULL COMMENT '执行结果信息',
`exception_info` TEXT DEFAULT NULL COMMENT '异常信息',
`start_time` DATETIME NOT NULL COMMENT '开始时间',
`end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
`execute_duration` INT DEFAULT NULL COMMENT '执行时长(毫秒)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0:否 1:是)',
PRIMARY KEY (`id`),
KEY `idx_task_id` (`task_id`),
KEY `idx_task_name` (`task_name`),
KEY `idx_execute_status` (`execute_status`),
KEY `idx_start_time` (`start_time`),
KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务执行日志表';
DROP TABLE IF EXISTS crontab.tb_crontab_log CASCADE;
CREATE TABLE crontab.tb_crontab_log (
id VARCHAR(64) NOT NULL,
task_id VARCHAR(64) NOT NULL,
task_name VARCHAR(100) NOT NULL,
task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT',
bean_name VARCHAR(100) NOT NULL,
method_name VARCHAR(100) NOT NULL,
method_params VARCHAR(500) DEFAULT NULL,
execute_status SMALLINT NOT NULL, -- 执行状态0:失败 1:成功)
execute_message TEXT DEFAULT NULL,
exception_info TEXT DEFAULT NULL,
start_time TIMESTAMPTZ NOT NULL,
end_time TIMESTAMPTZ DEFAULT NULL,
execute_duration INT DEFAULT NULL,
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
update_time TIMESTAMPTZ DEFAULT NULL,
delete_time TIMESTAMPTZ DEFAULT NULL,
deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除0:否 1:是)
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS idx_task_id ON crontab.tb_crontab_log(task_id);
CREATE INDEX IF NOT EXISTS idx_log_task_name ON crontab.tb_crontab_log(task_name);
CREATE INDEX IF NOT EXISTS idx_execute_status ON crontab.tb_crontab_log(execute_status);
CREATE INDEX IF NOT EXISTS idx_start_time ON crontab.tb_crontab_log(start_time);
CREATE INDEX IF NOT EXISTS idx_log_deleted ON crontab.tb_crontab_log(deleted);
COMMENT ON TABLE crontab.tb_crontab_log IS '定时任务执行日志表';
COMMENT ON COLUMN crontab.tb_crontab_log.id IS '主键ID';
COMMENT ON COLUMN crontab.tb_crontab_log.task_id IS '任务ID';
COMMENT ON COLUMN crontab.tb_crontab_log.task_name IS '任务名称';
COMMENT ON COLUMN crontab.tb_crontab_log.task_group IS '任务分组';
COMMENT ON COLUMN crontab.tb_crontab_log.bean_name IS 'Bean名称';
COMMENT ON COLUMN crontab.tb_crontab_log.method_name IS '方法名称';
COMMENT ON COLUMN crontab.tb_crontab_log.method_params IS '方法参数';
COMMENT ON COLUMN crontab.tb_crontab_log.execute_status IS '执行状态0:失败 1:成功)';
COMMENT ON COLUMN crontab.tb_crontab_log.execute_message IS '执行结果信息';
COMMENT ON COLUMN crontab.tb_crontab_log.exception_info IS '异常信息';
COMMENT ON COLUMN crontab.tb_crontab_log.start_time IS '开始时间';
COMMENT ON COLUMN crontab.tb_crontab_log.end_time IS '结束时间';
COMMENT ON COLUMN crontab.tb_crontab_log.execute_duration IS '执行时长(毫秒)';
COMMENT ON COLUMN crontab.tb_crontab_log.create_time IS '创建时间';
COMMENT ON COLUMN crontab.tb_crontab_log.update_time IS '更新时间';
COMMENT ON COLUMN crontab.tb_crontab_log.delete_time IS '删除时间';
COMMENT ON COLUMN crontab.tb_crontab_log.deleted IS '是否删除0:否 1:是)';
-- ====================================================
-- 定时任务元数据表(存储爬虫任务的元数据配置)
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_task_meta`;
CREATE TABLE `tb_crontab_task_meta` (
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`meta_id` VARCHAR(64) NOT NULL COMMENT '元数据ID',
`name` VARCHAR(100) NOT NULL COMMENT '任务名称',
`description` VARCHAR(500) DEFAULT NULL COMMENT '任务描述',
`category` VARCHAR(50) NOT NULL COMMENT '任务分类(如:人民日报新闻爬取)',
`bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称执行器类名',
`method_name` VARCHAR(100) NOT NULL COMMENT '执行方法名',
`script_path` VARCHAR(255) DEFAULT NULL COMMENT 'Python脚本路径相对于basePath',
`param_schema` TEXT DEFAULT NULL COMMENT '参数模板JSON格式定义参数名、类型、描述、默认值等',
`auto_publish` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否自动发布',
`sort_order` INT DEFAULT 0 COMMENT '排序号',
`creator` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
`updater` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0:否 1:是)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_meta_id` (`meta_id`),
KEY `idx_category` (`category`),
KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务元数据表';
DROP TABLE IF EXISTS crontab.tb_crontab_task_meta CASCADE;
CREATE TABLE crontab.tb_crontab_task_meta (
id VARCHAR(64) NOT NULL,
meta_id VARCHAR(64) NOT NULL,
name VARCHAR(100) NOT NULL,
description VARCHAR(500) DEFAULT NULL,
category VARCHAR(50) NOT NULL,
bean_name VARCHAR(100) NOT NULL,
method_name VARCHAR(100) NOT NULL,
script_path VARCHAR(255) DEFAULT NULL,
param_schema TEXT DEFAULT NULL,
auto_publish SMALLINT NOT NULL DEFAULT 0, -- 是否自动发布
sort_order INT DEFAULT 0,
creator VARCHAR(64) DEFAULT NULL,
updater VARCHAR(64) DEFAULT NULL,
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
update_time TIMESTAMPTZ DEFAULT NULL,
delete_time TIMESTAMPTZ DEFAULT NULL,
deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除0:否 1:是)
PRIMARY KEY (id),
UNIQUE (meta_id)
);
CREATE INDEX IF NOT EXISTS idx_category ON crontab.tb_crontab_task_meta(category);
CREATE INDEX IF NOT EXISTS idx_meta_deleted ON crontab.tb_crontab_task_meta(deleted);
COMMENT ON TABLE crontab.tb_crontab_task_meta IS '定时任务元数据表';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.id IS '主键ID';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.meta_id IS '元数据ID';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.name IS '任务名称';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.description IS '任务描述';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.category IS '任务分类(如:人民日报新闻爬取)';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.bean_name IS 'Bean名称执行器类名';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.method_name IS '执行方法名';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.script_path IS 'Python脚本路径相对于basePath';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.param_schema IS '参数模板JSON格式定义参数名、类型、描述、默认值等';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.auto_publish IS '是否自动发布';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.sort_order IS '排序号';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.creator IS '创建者';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.updater IS '更新者';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.create_time IS '创建时间';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.update_time IS '更新时间';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.delete_time IS '删除时间';
COMMENT ON COLUMN crontab.tb_crontab_task_meta.deleted IS '是否删除0:否 1:是)';

View File

@@ -73,7 +73,7 @@ CREATE TABLE knowledge.tb_knowledge_document (
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (doc_id),
UNIQUE (optsn),
UNIQUE (optsn)
);
CREATE INDEX idx_doc_kb ON knowledge.tb_knowledge_document(knowledge_id) WHERE deleted = false;
@@ -112,7 +112,7 @@ CREATE TABLE knowledge.tb_knowledge_chunk (
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (chunk_id),
UNIQUE (optsn),
UNIQUE (optsn)
);
CREATE INDEX idx_chunk_doc ON knowledge.tb_knowledge_chunk(doc_id) WHERE deleted = false;

View File

@@ -118,7 +118,7 @@ DROP TABLE IF EXISTS message.tb_message_channel CASCADE;
CREATE TABLE message.tb_message_channel (
optsn VARCHAR(50) NOT NULL, -- 流水号
channel_id VARCHAR(50) NOT NULL, -- 渠道ID
channel_code VARCHAR(20) NOT NULL, -- 渠道编码app/sms/email/wechat/dingtalk等
channel_code VARCHAR(50) NOT NULL, -- 渠道编码app/sms/email/wechat/dingtalk等
channel_name VARCHAR(100) NOT NULL, -- 渠道名称
channel_desc VARCHAR(255) DEFAULT NULL, -- 渠道描述
config JSON DEFAULT NULL, -- 渠道配置如API密钥、服务器地址等

View File

@@ -10,7 +10,8 @@ CREATE TABLE sys.tb_sys_user (
usercode VARCHAR(100) DEFAULT NULL, -- 用户code。sso同步数据获取
password VARCHAR(128) NOT NULL, -- 密码(建议存储 bcrypt/argon2 哈希)
email VARCHAR(100), -- 电子邮件
phone VARCHAR(20), -- 电话号码
phone VARCHAR(500), -- 电话号码
phone_hash VARCHAR(200), -- 电话hash
wechat_id VARCHAR(50), -- 微信ID
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(使用带时区时间)
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)