Compare commits
12 Commits
808d285888
...
main
Author | SHA1 | Date | |
---|---|---|---|
c7505179bb | |||
19e8d21620 | |||
671dc90b61 | |||
0ccef5f290 | |||
ae97005a7c | |||
fb2ee66b5b | |||
5ef521438a | |||
e6e1bee8df | |||
d3c81412b9 | |||
ed4cd0643a | |||
02538ef4f4 | |||
d219fbc92a |
412
lib/数据库存档文件.md
Normal file
412
lib/数据库存档文件.md
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
### 零、数据库测试表(test_simple)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:仅供创建数据库时,测试是否连接成功
|
||||||
|
|
||||||
|
负责人:宁欢
|
||||||
|
|
||||||
|
创建时间:2025-05-13
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 字段名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | ---------- | -------------- | ------------- |
|
||||||
|
| 1 | id | id(唯一主键) | Int |
|
||||||
|
| 2 | name | 名称 | VARCHAR(255) |
|
||||||
|
| 3 | created_at | 创建时间 | LocalDateTime |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建极简测试表
|
||||||
|
CREATE TABLE IF NOT EXISTS `test_simple` (
|
||||||
|
`id` INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
`name` VARCHAR(20) NOT NULL,
|
||||||
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 插入测试数据
|
||||||
|
INSERT INTO `test_simple` (`name`) VALUES ('测试数据');
|
||||||
|
|
||||||
|
-- 查询验证
|
||||||
|
SELECT * FROM `test_simple`;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------- |
|
||||||
|
| v1.0 | 2025-05-13 | nh | 初始创建 |
|
||||||
|
|
||||||
|
### 一、模型信息表(model_info)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:宁欢
|
||||||
|
|
||||||
|
创建时间: 2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 数据表名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | ---------- | ------------------ | ------------ |
|
||||||
|
| 1 | id | 模型id(唯一主键) | Long |
|
||||||
|
| 2 | model_name | 模型名称 | VARCHAR(255) |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
CREATE TABLE model_info (
|
||||||
|
id BIGINT PRIMARY KEY COMMENT '模型id(唯一主键)',
|
||||||
|
model_name VARCHAR(255) COMMENT '模型名称'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- 1. 删除现有主键约束
|
||||||
|
ALTER TABLE model_info DROP CONSTRAINT IF EXISTS model_info_pkey;
|
||||||
|
-- 2. 创建序列(如果不存在)
|
||||||
|
CREATE SEQUENCE IF NOT EXISTS model_info_id_seq;
|
||||||
|
-- 3. 将 id 字段设置为使用序列自增
|
||||||
|
ALTER TABLE model_info
|
||||||
|
ALTER COLUMN id SET DEFAULT nextval('model_info_id_seq');
|
||||||
|
-- 4. 重新添加主键约束
|
||||||
|
ALTER TABLE model_info ADD PRIMARY KEY (id);
|
||||||
|
-- 5. 将序列的当前值设置为表中现有最大 id 值 +1(确保不自增冲突)
|
||||||
|
SELECT setval('model_info_id_seq', COALESCE((SELECT MAX(id)+1 FROM model_info), 1), false);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | ---------------------- |
|
||||||
|
| v1.0 | 2025-05-13 | 宁欢 | 初始创建 |
|
||||||
|
| v1.1 | 2025-05-20 | 宁欢 | 将主键约束条件改为自增 |
|
||||||
|
|
||||||
|
### 二、日志表(model_log)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:宁欢
|
||||||
|
|
||||||
|
创建时间:2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 数据表名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | ---------------- | --------------------- | ------------- |
|
||||||
|
| 1 | id | 日志id(唯一主键) | Long |
|
||||||
|
| 2 | model_version_id | 关联模型版本id | Long |
|
||||||
|
| 3 | log_type | 日志类型(1,2,3...) | Int |
|
||||||
|
| 4 | log_path | 日志存储路径 | VARCHAR(255) |
|
||||||
|
| 5 | log_time | 日志生成时间 | LocalDateTime |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建model_log表
|
||||||
|
CREATE TABLE model_log (
|
||||||
|
id BIGINT PRIMARY KEY COMMENT '日志id(唯一主键)',
|
||||||
|
model_id BIGINT COMMENT '关联模型id',
|
||||||
|
log_type INT COMMENT '日志类型(1,2,3...)',
|
||||||
|
log_path VARCHAR(255) COMMENT '日志存储路径',
|
||||||
|
log_time TIMESTAMP COMMENT '日志生成时间'
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | ------------------------------------------ |
|
||||||
|
| v1.0 | 2025-05-14 | 宁欢 | 初始创建 |
|
||||||
|
| v2.0 | 2025-06-30 | 宁欢 | 模型日志修改成绑定模型版本id,而不是模型id |
|
||||||
|
|
||||||
|
### 三、模型评估记录表(model_evaluation)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:宁欢
|
||||||
|
|
||||||
|
创建时间:2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 数据表名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | ----------------- | ---------------------- | ------------- |
|
||||||
|
| 1 | id | 评估记录id(唯一主键) | Long |
|
||||||
|
| 2 | model_id | 关联模型id | Long |
|
||||||
|
| 3 | evaluation_time | 评估时间 | LocalDateTime |
|
||||||
|
| 4 | evaluation_result | 评估结果 | VARCHAR(255) |
|
||||||
|
| 5 | operator | 评估操作人员 | VARCHAR(255) |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建model_evaluation表
|
||||||
|
CREATE TABLE model_evaluation (
|
||||||
|
id BIGINT PRIMARY KEY COMMENT '评估记录id(唯一主键)',
|
||||||
|
model_id BIGINT COMMENT '关联模型id',
|
||||||
|
evaluation_time TIMESTAMP COMMENT '评估时间',
|
||||||
|
evaluation_result VARCHAR(255) COMMENT '评估结果',
|
||||||
|
operator VARCHAR(255) COMMENT '评估操作人员'
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------- |
|
||||||
|
| v1.0 | 2025-05-14 | 宁欢 | 初始创建 |
|
||||||
|
|
||||||
|
### 四、模型版本信息(model_version)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:宁欢
|
||||||
|
|
||||||
|
创建时间:2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 数据表名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | --------------------- | ---------------------------------- | ------------- |
|
||||||
|
| 1 | id | 版本信息表id(唯一主键) | Long |
|
||||||
|
| 2 | model_id | 关联模型id | Long |
|
||||||
|
| 3 | version | 模型版本 | VARCHAR(255) |
|
||||||
|
| 4 | dataset_id | 数据集id | Int |
|
||||||
|
| 5 | model_config | 模型配置信息 | VARCHAR(255) |
|
||||||
|
| 6 | model_path | 模型存储路径 | VARCHAR(255) |
|
||||||
|
| 7 | status | 模型状态(1代表上线,0代表不上线) | Int |
|
||||||
|
| 8 | create_time | 创建时间 | LocalDateTime |
|
||||||
|
| 9 | update_time | 更新时间 | LocalDateTime |
|
||||||
|
| 10 | model_size | 模型大小 | Integer |
|
||||||
|
| 11 | data_pre_handle_file | 数据预处理文件存储路径 | VARCHAR(255) |
|
||||||
|
| 12 | model_super_args | 模型超参数 | VARCHAR(255) |
|
||||||
|
| 13 | model_args_size | 模型参数量 | VARCHAR(255) |
|
||||||
|
| 14 | model_source_code_url | 模型源代码路径 | VARCHAR(255) |
|
||||||
|
| 15 | model_file | 模型文件存储路径 | VARCHAR(255) |
|
||||||
|
| 16 | model_design_document | 模型设计文档存储路径 | VARCHAR(255) |
|
||||||
|
| 17 | life_cycle | 模型生命周期 | VARCHAR(255) |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建model_version表
|
||||||
|
CREATE TABLE model_version (
|
||||||
|
id BIGINT PRIMARY KEY COMMENT '版本信息表id(唯一主键)',
|
||||||
|
model_id BIGINT COMMENT '关联模型id',
|
||||||
|
version VARCHAR(255) COMMENT '模型版本',
|
||||||
|
dataset_id INT COMMENT '数据集id',
|
||||||
|
model_config VARCHAR(255) COMMENT '模型配置信息',
|
||||||
|
model_path VARCHAR(255) COMMENT '模型存储路径',
|
||||||
|
status INT COMMENT '模型状态(1代表上线,0代表不上线)',
|
||||||
|
create_time TIMESTAMP COMMENT '创建时间'
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 添加更新时间字段,类型为TIMESTAMP与Java的LocalDateTime对应
|
||||||
|
ALTER TABLE model_version ADD COLUMN update_time TIMESTAMP COMMENT '更新时间';
|
||||||
|
-- 添加模型大小字段,类型用INT与Java的Integer对应
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_size INT COMMENT '模型大小';
|
||||||
|
-- 数据预处理文件存储路径,用VARCHAR存储路径信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN data_pre_handle_file VARCHAR(255) COMMENT '数据预处理文件存储路径';
|
||||||
|
-- 模型超参数,用VARCHAR存储文本信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_super_args VARCHAR(255) COMMENT '模型超参数';
|
||||||
|
-- 模型参数量,用VARCHAR存储文本格式的数量信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_args_size VARCHAR(255) COMMENT '模型参数量';
|
||||||
|
-- 模型源代码路径,用VARCHAR存储路径信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_source_code_url VARCHAR(255) COMMENT '模型源代码路径';
|
||||||
|
-- 模型文件存储路径,用VARCHAR存储路径信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_file VARCHAR(255) COMMENT '模型文件存储路径';
|
||||||
|
-- 模型设计文档存储路径,用VARCHAR存储路径信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN model_design_document VARCHAR(255) COMMENT '模型设计文档存储路径';
|
||||||
|
-- 模型生命周期,用VARCHAR存储文本信息
|
||||||
|
ALTER TABLE model_version ADD COLUMN life_cycle VARCHAR(255) COMMENT '模型生命周期';
|
||||||
|
|
||||||
|
-- 1. 删除现有主键约束
|
||||||
|
ALTER TABLE model_version DROP CONSTRAINT IF EXISTS model_version_pkey;
|
||||||
|
-- 2. 创建序列(如果不存在)
|
||||||
|
CREATE SEQUENCE IF NOT EXISTS model_version_id_seq;
|
||||||
|
-- 3. 将 id 字段设置为使用序列自增
|
||||||
|
ALTER TABLE model_version
|
||||||
|
ALTER COLUMN id SET DEFAULT nextval('model_version_id_seq');
|
||||||
|
-- 4. 重新添加主键约束
|
||||||
|
ALTER TABLE model_version ADD PRIMARY KEY (id);
|
||||||
|
-- 5. 将序列的当前值设置为表中现有最大 id 值 +1(确保不自增冲突)
|
||||||
|
SELECT setval('model_version_id_seq', COALESCE((SELECT MAX(id)+1 FROM model_version), 1), false);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------------------------------------------------- |
|
||||||
|
| v1.0 | 2025-05-14 | 宁欢 | 初始创建 |
|
||||||
|
| v1.1 | 2025-05-20 | 宁欢 | 新增了一些字段(从update_time到life_cycle共9个字段) |
|
||||||
|
| v1.3 | 2025-05-20 | 宁欢 | 将主键约束条件改为自增 |
|
||||||
|
|
||||||
|
### 五、数据集表(dataset )
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:胡楷沅
|
||||||
|
|
||||||
|
创建时间:2025-05-13
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 序号 | 数据表名 | 中文名称 | 数据类型 |
|
||||||
|
| ---- | -------------- | ---------------------------------------------------- | ------------ |
|
||||||
|
| 1 | dataset_id | 数据集id(唯一主键) | Int |
|
||||||
|
| 2 | dataset_name | 数据集名称 | VARCHAR(255) |
|
||||||
|
| 3 | dataset_type | 数据集类型(0 表示用户上传,1 表示来源于数据库) | Int |
|
||||||
|
| 4 | dataset_status | 数据集状态(0 表示停用,1 表示启用) | Int |
|
||||||
|
| 5 | ds_path | 分布式存储路径(存入分布式文件系统的路径) | VARCHAR(255) |
|
||||||
|
| 6 | args | 过滤参数(存储为 JSON 格式对应 Map<String, String>) | JSON |
|
||||||
|
| 7 | create_time | 创建时间 | TIMESTAMP |
|
||||||
|
| 8 | update_time | 更新时间 | TIMESTAMP |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
CREATE TABLE dataset (
|
||||||
|
dataset_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '数据集ID',
|
||||||
|
dataset_name VARCHAR(255) COMMENT '数据集名称',
|
||||||
|
dataset_type INT COMMENT '数据集类型,0表示用户上传,1表示来源于数据库',
|
||||||
|
dataset_status INT COMMENT '数据集状态,0表示停用,1表示启用',
|
||||||
|
ds_path VARCHAR(255) COMMENT '分布式存储路径,存入分布式文件系统的路径',
|
||||||
|
args JSON COMMENT '过滤参数,存储为JSON格式对应Map<String, String>',
|
||||||
|
create_time TIMESTAMP COMMENT '创建时间',
|
||||||
|
update_time TIMESTAMP COMMENT '更新时间'
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------- |
|
||||||
|
| v1.0 | 2025-05-13 | 胡楷沅 | 初始创建 |
|
||||||
|
|
||||||
|
### 六、GPU资源表(gpu_resource)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:杜冲
|
||||||
|
|
||||||
|
创建时间:2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 字段名 | 数据类型 | 约束 | 字段描述 |
|
||||||
|
| :-----------: | :---------: | :--------: | :-------------------: |
|
||||||
|
| GPUId | BIGINT | 主键,自增 | GPU的ID,全局唯一标识 |
|
||||||
|
| GPUModel | VARCHAR(64) | NOT NULL | GPU的型号 |
|
||||||
|
| GPUMemorySize | INT | NOT NULL | GPU内存大小 |
|
||||||
|
| Ip | VARCHAR(15) | NOT NULL | GPU所在ip |
|
||||||
|
| CreatedTime | DATETIME | NULL | GPU添加时间,可为空 |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建gpu_resource表
|
||||||
|
CREATE TABLE gpu_resource (
|
||||||
|
|
||||||
|
GPUId BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
|
||||||
|
GPUModel VARCHAR(64) NOT NULL,
|
||||||
|
|
||||||
|
GPUMemorySize INT NOT NULL,
|
||||||
|
|
||||||
|
Ip VARCHAR(15) NOT NULL CHECK (Ip ~ '^\\d+\\.\\d+\\.\\d+\\.\\d+$'),
|
||||||
|
|
||||||
|
CreatedTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------- |
|
||||||
|
| v1.0 | 2025-05-14 | 杜冲 | 初始创建 |
|
||||||
|
|
||||||
|
### 七、算法基础信息表(algorithm_info)
|
||||||
|
|
||||||
|
#### 1.基本信息
|
||||||
|
|
||||||
|
所属模块:智能应用服务管理
|
||||||
|
|
||||||
|
负责人:孙一城
|
||||||
|
|
||||||
|
创建时间:2025-05-14
|
||||||
|
|
||||||
|
#### 2.表结构
|
||||||
|
|
||||||
|
| 字段名 | 类型 | 是否为空 | 默认值 | 说明 |
|
||||||
|
| -------------- | ------------ | -------- | --------------------------- | -------------- |
|
||||||
|
| id | BIGINT | NOT NULL | AUTO_INCREMENT | 算法ID |
|
||||||
|
| algorithm_name | VARCHAR(100) | NOT NULL | | 算法名称(唯一) |
|
||||||
|
| algorithm_file | VARCHAR(255) | NOT NULL | | 算法文件路径 |
|
||||||
|
| algorithm_type | VARCHAR(50) | NOT NULL | | 算法分类 |
|
||||||
|
| description | TEXT | NULL | | 算法描述 |
|
||||||
|
| created_by | VARCHAR(50) | NOT NULL | | 创建人 |
|
||||||
|
| create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 |
|
||||||
|
| update_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP ON UPDATE | 更新时间 |
|
||||||
|
| file_size | BIGINT | NULL | | 文件大小(字节) |
|
||||||
|
|
||||||
|
#### 3.SQL脚本
|
||||||
|
|
||||||
|
```
|
||||||
|
-- 创建算法信息表(Kingbase 兼容版)
|
||||||
|
CREATE TABLE algorithm_info (
|
||||||
|
id BIGSERIAL PRIMARY KEY, -- 自增主键
|
||||||
|
algorithm_name VARCHAR(100) NOT NULL, -- 算法名称
|
||||||
|
algorithm_file VARCHAR(255) NOT NULL, -- 算法文件路径
|
||||||
|
algorithm_type VARCHAR(50) NOT NULL, -- 算法分类
|
||||||
|
description TEXT, -- 算法描述
|
||||||
|
created_by VARCHAR(50) NOT NULL, -- 创建人
|
||||||
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||||
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间(需触发器自动更新)
|
||||||
|
file_size BIGINT -- 文件大小(字节)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 添加唯一约束
|
||||||
|
ALTER TABLE algorithm_info ADD CONSTRAINT uk_algorithm_name UNIQUE (algorithm_name);
|
||||||
|
|
||||||
|
-- 这部份没有成功运行,存在问题
|
||||||
|
-- 为 update_time 添加自动更新触发器
|
||||||
|
CREATE OR REPLACE FUNCTION update_modified_column()
|
||||||
|
RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
NEW.update_time = NOW(); -- 语句以分号结尾
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql; -- 美元引号正确闭合
|
||||||
|
|
||||||
|
-- 创建触发器
|
||||||
|
CREATE TRIGGER update_algorithm_info_modtime
|
||||||
|
BEFORE UPDATE ON algorithm_info
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_modified_column();
|
||||||
|
|
||||||
|
-- 创建索引(语法与 MySQL 相同,无需修改)
|
||||||
|
CREATE INDEX idx_algorithm_type ON algorithm_info(algorithm_type);
|
||||||
|
CREATE INDEX idx_created_by ON algorithm_info(created_by);
|
||||||
|
CREATE INDEX idx_create_time ON algorithm_info(create_time);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.变更记录
|
||||||
|
|
||||||
|
| 版本 | 变更时间 | 变更人 | 变更内容 |
|
||||||
|
| ---- | ---------- | ------ | -------- |
|
||||||
|
| v1.0 | 2025-05-14 | 孙一城 | 初始创建 |
|
@ -102,5 +102,31 @@ public class ModelController {
|
|||||||
return OptResult.success(datasetList);
|
return OptResult.success(datasetList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "获取模型训练信息")
|
||||||
|
@GetMapping("/getModelTrainInfo")
|
||||||
|
public OptResult getModelTrainInfo(Long id){
|
||||||
|
log.info("获取模型训练信息");
|
||||||
|
ModelTrainInfoVO modelTrainInfo = modelService.getModelTrainInfo(id);
|
||||||
|
return OptResult.success(modelTrainInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "模型修改成训练中")
|
||||||
|
@PutMapping("/updateModelTrain")
|
||||||
|
public OptResult updateModelTrain(Long id){
|
||||||
|
log.info("模型修改成训练中");
|
||||||
|
modelService.updateModelTrain(id);
|
||||||
|
return OptResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "模型更新小版本")
|
||||||
|
@PutMapping("/updateModelVersionMinor")
|
||||||
|
public OptResult updateModelVersionMinor(@RequestBody ModelVersionDTO dto){
|
||||||
|
log.info("模型更新小版本");
|
||||||
|
modelService.updateModelVersionMinor(dto);
|
||||||
|
return OptResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
package com.bipt.intelligentapplicationorchestrationservice.controller;
|
package com.bipt.intelligentapplicationorchestrationservice.controller;
|
||||||
|
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.config.IpConfig;
|
import com.bipt.intelligentapplicationorchestrationservice.config.IpConfig;
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.entity.DeployRequest;
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.entity.ModelSelectVO;
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.mapper.ModelMapper;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.*;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.*;
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.service.ModelDeployer;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.service.PublishService;
|
import com.bipt.intelligentapplicationorchestrationservice.service.PublishService;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil;
|
import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -27,17 +32,29 @@ public class PublishController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private NacosServiceUtil nacosServiceUtil;
|
private NacosServiceUtil nacosServiceUtil;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelMapper modelMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IpConfig ipConfig;
|
private IpConfig ipConfig;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelDeployer modelDeployer;
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@Operation(summary ="新增发布请求")
|
@Operation(summary ="新增发布请求")
|
||||||
@Transactional
|
@Transactional
|
||||||
public OptResult<List<ServicePublishVO>> save(@RequestBody ServicePublishDTO servicePublishDTO) {
|
public OptResult<List<ServicePublishVO>> save(@RequestBody ServicePublishDTO servicePublishDTO) {
|
||||||
log.info("模型发布请求:{}", servicePublishDTO);
|
log.info("模型发布请求:{}", servicePublishDTO);
|
||||||
publishService.save(servicePublishDTO);
|
publishService.save(servicePublishDTO);
|
||||||
//todo 调用模型部署
|
//调用模型部署
|
||||||
|
DeployRequest request = new DeployRequest();
|
||||||
|
Long modelId = servicePublishDTO.getModelId();
|
||||||
|
ModelVersion modelVersion = modelMapper.selectByModelId(modelId);
|
||||||
|
String modelConfig = modelVersion.getModelConfig();
|
||||||
|
//假设modelConfig只存GPU数据
|
||||||
|
request.setModelId(String.valueOf(modelId));
|
||||||
|
request.setRequiredMemory(Integer.parseInt(modelConfig));
|
||||||
|
modelDeployer.deploy(request);
|
||||||
// 获取前端传来的IP字符串
|
// 获取前端传来的IP字符串
|
||||||
String ipListStr = servicePublishDTO.getIp();
|
String ipListStr = servicePublishDTO.getIp();
|
||||||
if (ipListStr == null || ipListStr.trim().isEmpty()) {
|
if (ipListStr == null || ipListStr.trim().isEmpty()) {
|
||||||
@ -91,4 +108,10 @@ public class PublishController {
|
|||||||
log.info("返回列表;{}",ips);
|
log.info("返回列表;{}",ips);
|
||||||
return OptResult.success(ips);
|
return OptResult.success(ips);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/config/ids")
|
||||||
|
public OptResult<List<ModelSelectVO>> getModelNames(){
|
||||||
|
List<ModelSelectVO> modelSelectVOS = publishService.getModelNames();
|
||||||
|
log.info("获取到模型列表:{}",modelSelectVOS);
|
||||||
|
return OptResult.success(modelSelectVOS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package com.bipt.intelligentapplicationorchestrationservice.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ModelSelectVO {
|
||||||
|
private Long modelId; // 模型ID(即modelId,对应ModelVersion的id)
|
||||||
|
private String modelName; // 模型名称(如"图像识别模型")
|
||||||
|
private String version; // 版本信息(如"v1.0.0")
|
||||||
|
}
|
@ -5,14 +5,14 @@ import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO;
|
|||||||
public interface EvaluationMapper {
|
public interface EvaluationMapper {
|
||||||
/*
|
/*
|
||||||
* 查询模型评估日志详情
|
* 查询模型评估日志详情
|
||||||
* @param id 模型评估日志id
|
* @param id 模型版本id
|
||||||
* @return 模型评估日志详情
|
* @return 模型评估日志详情
|
||||||
*/
|
*/
|
||||||
ModelLogVO selectLogDetail(Long id);
|
ModelLogVO selectLogDetail(Long id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 更新模型评估日志状态(评估通过则上线)
|
* 更新模型评估日志状态(评估通过则上线)
|
||||||
* @param id 模型评估日志id
|
* @param id 模型版本id
|
||||||
* @param status 模型评估日志状态
|
* @param status 模型评估日志状态
|
||||||
*/
|
*/
|
||||||
void update(Long id, Integer status);
|
void update(Long id, Integer status);
|
||||||
|
@ -76,4 +76,15 @@ public interface ModelMapper {
|
|||||||
*/
|
*/
|
||||||
@Select("select dataset_id,dataset_name from dataset")
|
@Select("select dataset_id,dataset_name from dataset")
|
||||||
List<DatasetEntity> listDataset();
|
List<DatasetEntity> listDataset();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模型训练信息
|
||||||
|
* @param id 模型版本表id
|
||||||
|
* 返回模型训练信息
|
||||||
|
*/
|
||||||
|
ModelTrainInfoVO getModelTrainInfo(Long id);
|
||||||
|
|
||||||
|
|
||||||
|
ModelVersion selectByModelId(Long modelId);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.bipt.intelligentapplicationorchestrationservice.mapper;
|
package com.bipt.intelligentapplicationorchestrationservice.mapper;
|
||||||
|
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
|
import com.bipt.intelligentapplicationorchestrationservice.entity.ModelSelectVO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@ -19,4 +19,11 @@ public interface PublishMapper {
|
|||||||
|
|
||||||
@Select("SELECT model_id,api_url,ip FROM service_publish")
|
@Select("SELECT model_id,api_url,ip FROM service_publish")
|
||||||
List<ServicePublishVO> listPublishedServices();
|
List<ServicePublishVO> listPublishedServices();
|
||||||
|
@Select("SELECT " +
|
||||||
|
"mv.model_id AS modelId, " +
|
||||||
|
"m.model_name AS modelName, " +
|
||||||
|
"mv.version AS version " +
|
||||||
|
"FROM model_version mv " +
|
||||||
|
"LEFT JOIN model_info m ON mv.model_id = m.id")
|
||||||
|
List<ModelSelectVO> selectModelSelectList();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ import java.time.LocalDateTime;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ModelEvaluation implements Serializable {
|
public class ModelEvaluation implements Serializable {
|
||||||
private Long id; // 评估记录id
|
private Long id; // 评估记录id
|
||||||
private Long modelId; // 关联模型id
|
private Long modelVersionId; // 关联模型id,后续修改成了模型版本id
|
||||||
private LocalDateTime evaluationTime; // 评估时间
|
private LocalDateTime evaluationTime; // 评估时间
|
||||||
private String evaluationResult; // 评估结果
|
private String evaluationResult; // 评估结果
|
||||||
private String operator; // 评估操作人员
|
private String operator; // 评估操作人员
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.bipt.intelligentapplicationorchestrationservice.pojo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class ModelTrainInfoVO {
|
||||||
|
private Long id;
|
||||||
|
private Integer datasetId; // 数据集id
|
||||||
|
private String modelConfig; // 模型配置信息
|
||||||
|
private String dsPath;// 版本信息表id
|
||||||
|
private String dataPreHandleFile; // 数据预处理文件存储路径
|
||||||
|
}
|
@ -12,6 +12,7 @@ import java.time.LocalDateTime;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ModelVersionDTO {
|
public class ModelVersionDTO {
|
||||||
private Long id; // 模型版本id
|
private Long id; // 模型版本id
|
||||||
|
private Long modelId; // 模型id
|
||||||
private String version; // 模型版本
|
private String version; // 模型版本
|
||||||
private Integer datasetId; // 数据集id
|
private Integer datasetId; // 数据集id
|
||||||
private String modelConfig; // 模型配置信息
|
private String modelConfig; // 模型配置信息
|
||||||
|
@ -3,8 +3,10 @@ package com.bipt.intelligentapplicationorchestrationservice.service;
|
|||||||
import com.bipt.intelligentapplicationorchestrationservice.mapper.GpuResourceDao;
|
import com.bipt.intelligentapplicationorchestrationservice.mapper.GpuResourceDao;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.exception.CacheInitException;
|
import com.bipt.intelligentapplicationorchestrationservice.exception.CacheInitException;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.entity.GpuResource;
|
import com.bipt.intelligentapplicationorchestrationservice.entity.GpuResource;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.redis.RedisConnectionFailureException;
|
import org.springframework.data.redis.RedisConnectionFailureException;
|
||||||
@ -18,7 +20,6 @@ import java.util.List;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
@Transactional // 添加类级别事务管理
|
|
||||||
@Component
|
@Component
|
||||||
public class CacheManager {
|
public class CacheManager {
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -27,6 +28,9 @@ public class CacheManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private GpuResourceDao gpuResourceDao;
|
private GpuResourceDao gpuResourceDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ObjectMapper objectMapper; // 注入ObjectMapper用于类型转换
|
||||||
|
|
||||||
private final ReentrantLock lock = new ReentrantLock();
|
private final ReentrantLock lock = new ReentrantLock();
|
||||||
|
|
||||||
@Value("${cache.redis-key-prefix:gpu:}")
|
@Value("${cache.redis-key-prefix:gpu:}")
|
||||||
@ -38,9 +42,9 @@ public class CacheManager {
|
|||||||
@Value("${cache.init-batch-size:500}")
|
@Value("${cache.init-batch-size:500}")
|
||||||
private int initBatchSize;
|
private int initBatchSize;
|
||||||
|
|
||||||
private static final Logger log = org.slf4j.LoggerFactory.getLogger(CacheManager.class);
|
private static final Logger log = LoggerFactory.getLogger(CacheManager.class);
|
||||||
|
|
||||||
// 全量加载(带分页和分布式锁)
|
// 全量加载(带分页和分布式锁)
|
||||||
@Transactional(propagation = Propagation.REQUIRED) // 方法级别覆盖
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void loadFullCache() {
|
public void loadFullCache() {
|
||||||
if (tryLock()) {
|
if (tryLock()) {
|
||||||
@ -82,16 +86,12 @@ public class CacheManager {
|
|||||||
// 带随机TTL的缓存设置
|
// 带随机TTL的缓存设置
|
||||||
private void setCacheWithTTL(GpuResource entity) {
|
private void setCacheWithTTL(GpuResource entity) {
|
||||||
String key = buildKey(entity.getGPUId().toString());
|
String key = buildKey(entity.getGPUId().toString());
|
||||||
GpuResource cached = (GpuResource) redisTemplate.opsForValue().get(key);
|
|
||||||
|
|
||||||
// 保留原有内存字段值
|
// 直接存储实体对象,确保类型一致性
|
||||||
if (cached != null && cached.getGPUMemorySize() != null) {
|
|
||||||
entity.setGPUMemorySize(cached.getGPUMemorySize());
|
|
||||||
}
|
|
||||||
redisTemplate.opsForValue().set(
|
redisTemplate.opsForValue().set(
|
||||||
key,
|
key,
|
||||||
entity,
|
entity,
|
||||||
ttlBase + (int)(Math.random() * 600), // 随机TTL防止雪崩
|
ttlBase + (int)(Math.random() * 600),
|
||||||
TimeUnit.SECONDS
|
TimeUnit.SECONDS
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -114,6 +114,7 @@ public class CacheManager {
|
|||||||
private void unlock() {
|
private void unlock() {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页加载入口
|
// 分页加载入口
|
||||||
public void loadFullCache(int batchSize) {
|
public void loadFullCache(int batchSize) {
|
||||||
int page = 0;
|
int page = 0;
|
||||||
@ -121,12 +122,11 @@ public class CacheManager {
|
|||||||
List<GpuResource> batch = gpuResourceDao.findByPage(page * batchSize, batchSize);
|
List<GpuResource> batch = gpuResourceDao.findByPage(page * batchSize, batchSize);
|
||||||
if (batch.isEmpty()) break;
|
if (batch.isEmpty()) break;
|
||||||
|
|
||||||
batch.forEach(this::refreshWithRetry); // 带重试的刷新逻辑
|
batch.forEach(this::refreshWithRetry);
|
||||||
page++;
|
page++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 带重试机制的缓存刷新
|
// 带重试机制的缓存刷新
|
||||||
public void refreshWithRetry(GpuResource entity) {
|
public void refreshWithRetry(GpuResource entity) {
|
||||||
try {
|
try {
|
||||||
@ -135,7 +135,7 @@ public class CacheManager {
|
|||||||
// 3次重试逻辑
|
// 3次重试逻辑
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
try {
|
try {
|
||||||
log.info("重试第 {} 次", i + 1); // 添加日志
|
log.info("重试第 {} 次", i + 1);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
setCacheWithTTL(entity);
|
setCacheWithTTL(entity);
|
||||||
return;
|
return;
|
||||||
@ -148,7 +148,6 @@ public class CacheManager {
|
|||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,8 +161,35 @@ public class CacheManager {
|
|||||||
redisTemplate.delete(key);
|
redisTemplate.delete(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 修改获取缓存的方法,增加类型安全处理
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public GpuResource getFromCache(String gpuId) {
|
public GpuResource getFromCache(String gpuId) {
|
||||||
return (GpuResource) redisTemplate.opsForValue().get("gpu:" + gpuId);
|
String key = buildKey(gpuId);
|
||||||
}
|
Object value = redisTemplate.opsForValue().get(key);
|
||||||
|
|
||||||
}
|
// 处理可能的类型不匹配问题
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 优先尝试直接转换
|
||||||
|
if (value instanceof GpuResource) {
|
||||||
|
return (GpuResource) value;
|
||||||
|
}
|
||||||
|
// 如果是LinkedHashMap,使用ObjectMapper转换
|
||||||
|
else if (value instanceof java.util.LinkedHashMap) {
|
||||||
|
return objectMapper.convertValue(value, GpuResource.class);
|
||||||
|
}
|
||||||
|
// 其他情况尝试序列化后反序列化(适用于JSON存储场景)
|
||||||
|
else {
|
||||||
|
// 先序列化为JSON字符串,再反序列化为对象
|
||||||
|
String json = objectMapper.writeValueAsString(value);
|
||||||
|
return objectMapper.readValue(json, GpuResource.class);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("获取缓存时类型转换失败,key: {}, valueType: {}", key, value.getClass().getName(), e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -72,6 +72,10 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
return modelVOList;
|
return modelVOList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询模型详情
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ModelVersion detail(Long id) {
|
public ModelVersion detail(Long id) {
|
||||||
log.info("查询模型详情");
|
log.info("查询模型详情");
|
||||||
@ -79,13 +83,23 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
return modelVersion;
|
return modelVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新模型
|
||||||
|
* @param dto
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updateModel(ModelVersionDTO dto) {
|
public void updateModel(ModelVersionDTO dto) {
|
||||||
// 更新模型还需要更新操作人和时间
|
// TODO: 更新模型还需要更新操作人和时间
|
||||||
log.info("更新模型");
|
log.info("更新模型");
|
||||||
|
dto.setCreateTime(LocalDateTime.now());
|
||||||
|
dto.setUpdateTime(LocalDateTime.now());
|
||||||
modelMapper.update(dto);
|
modelMapper.update(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除模型版本
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteModelVersion(Long id) {
|
public void deleteModelVersion(Long id) {
|
||||||
log.info("删除模型版本");
|
log.info("删除模型版本");
|
||||||
@ -149,6 +163,9 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
log.info("模型生命周期更新成功,新状态为: {}", targetLifeCycle);
|
log.info("模型生命周期更新成功,新状态为: {}", targetLifeCycle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模型生命周期列表
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, String>> listLifeCycle() {
|
public List<Map<String, String>> listLifeCycle() {
|
||||||
return Arrays.stream(ModelLifecycle.values())
|
return Arrays.stream(ModelLifecycle.values())
|
||||||
@ -159,6 +176,9 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模型数据集列表
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<DatasetEntity> listDataset() {
|
public List<DatasetEntity> listDataset() {
|
||||||
List<DatasetEntity> datasetEntityList = modelMapper.listDataset();
|
List<DatasetEntity> datasetEntityList = modelMapper.listDataset();
|
||||||
@ -166,4 +186,41 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模型训练信息
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ModelTrainInfoVO getModelTrainInfo(Long id) {
|
||||||
|
ModelTrainInfoVO modelTrainInfoVO = modelMapper.getModelTrainInfo(id);
|
||||||
|
return modelTrainInfoVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型训练(把模型修改成训练中)
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void updateModelTrain(Long id) {
|
||||||
|
// 更新当前模型的生命周期为训练中
|
||||||
|
modelMapper.updateLifeCycleById(id, ModelLifecycle.TRAINING.getDbValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型小版本更新
|
||||||
|
* @param dto
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void updateModelVersionMinor(ModelVersionDTO dto) {
|
||||||
|
// 更新模型小版本(其实是新增一个小版本)
|
||||||
|
ModelVersion modelVersion = new ModelVersion();
|
||||||
|
BeanUtils.copyProperties(dto, modelVersion, "id", "modelId");
|
||||||
|
modelVersion.setModelId(dto.getModelId()); // 把模型id设置成该模型版本关联的模型id
|
||||||
|
modelVersion.setCreateTime(LocalDateTime.now());
|
||||||
|
modelVersion.setUpdateTime(LocalDateTime.now());
|
||||||
|
modelVersion.setOperateUser("zs");
|
||||||
|
// TODO: 后续可能还需要更新操作人
|
||||||
|
modelMapper.insertModelVersion(modelVersion);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.bipt.intelligentapplicationorchestrationservice.service.Impl;
|
package com.bipt.intelligentapplicationorchestrationservice.service.Impl;
|
||||||
|
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.entity.ModelSelectVO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.mapper.PublishMapper;
|
import com.bipt.intelligentapplicationorchestrationservice.mapper.PublishMapper;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
||||||
@ -9,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,8 +35,6 @@ public class PublishServiceImpl implements PublishService {
|
|||||||
throw new IllegalArgumentException("请求已存在: " + apiUrl);
|
throw new IllegalArgumentException("请求已存在: " + apiUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo调用服务部署
|
|
||||||
|
|
||||||
publishMapper.insert(servicePublishDTO);
|
publishMapper.insert(servicePublishDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,5 +43,10 @@ public class PublishServiceImpl implements PublishService {
|
|||||||
return publishMapper.listPublishedServices();
|
return publishMapper.listPublishedServices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ModelSelectVO> getModelNames() {
|
||||||
|
return publishMapper.selectModelSelectList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,4 +23,10 @@ public interface ModelService {
|
|||||||
List<Map<String, String>> listLifeCycle();
|
List<Map<String, String>> listLifeCycle();
|
||||||
|
|
||||||
List<DatasetEntity> listDataset();
|
List<DatasetEntity> listDataset();
|
||||||
|
|
||||||
|
ModelTrainInfoVO getModelTrainInfo(Long id);
|
||||||
|
|
||||||
|
void updateModelTrain(Long id);
|
||||||
|
|
||||||
|
void updateModelVersionMinor(ModelVersionDTO dto);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.bipt.intelligentapplicationorchestrationservice.service;
|
package com.bipt.intelligentapplicationorchestrationservice.service;
|
||||||
|
|
||||||
|
import com.bipt.intelligentapplicationorchestrationservice.entity.ModelSelectVO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO;
|
||||||
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO;
|
||||||
|
|
||||||
@ -11,4 +12,6 @@ public interface PublishService {
|
|||||||
|
|
||||||
|
|
||||||
List<ServicePublishVO> listPublishedServices();
|
List<ServicePublishVO> listPublishedServices();
|
||||||
|
|
||||||
|
List<ModelSelectVO> getModelNames();
|
||||||
}
|
}
|
||||||
|
5
src/main/resources/application-dev.properties
Normal file
5
src/main/resources/application-dev.properties
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# 阿里云OSS配置
|
||||||
|
aliyun.oss.endpoint=oss-cn-beijing.aliyuncs.com
|
||||||
|
aliyun.oss.bucketName=ipz-nh
|
||||||
|
aliyun.oss.accessKeyId=LTAI5tBeto7V7BPWBcCjeP7A
|
||||||
|
aliyun.oss.accessKeySecret=bjQGt2G4J5yetxuY5cT5ZnKnIOqe4O
|
@ -9,7 +9,7 @@
|
|||||||
from model_log m1,
|
from model_log m1,
|
||||||
model_info m2,
|
model_info m2,
|
||||||
model_version m3
|
model_version m3
|
||||||
where m1.model_id=m2.id and m3.model_id=m2.id and m1.model_id = #{id}
|
where m1.model_version_id=m3.id and m3.model_id=m2.id and m1.model_version_id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!--更新模型信息(目前只更新模型是否上线,后续如果更多需求可优化>-->
|
<!--更新模型信息(目前只更新模型是否上线,后续如果更多需求可优化>-->
|
||||||
|
@ -30,6 +30,17 @@
|
|||||||
|
|
||||||
<!--查询模型详细信息-->
|
<!--查询模型详细信息-->
|
||||||
<select id="selectById" resultType="com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion">
|
<select id="selectById" resultType="com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion">
|
||||||
|
SELECT
|
||||||
|
t1.model_name, t1.id modelId,
|
||||||
|
t2.version, t2.dataset_id, t2.model_config, t2.id,
|
||||||
|
t2.model_path, t2.status, t2.create_time, t2.update_time, t2.model_size,
|
||||||
|
t2.data_pre_handle_file, t2.model_super_args, t2.model_args_size, t2.model_source_code_url, t2.model_file,
|
||||||
|
t2.model_design_document, t2.life_cycle, t2.operate_user
|
||||||
|
FROM model_info t1 JOIN model_version t2 ON t1.id = t2.model_id
|
||||||
|
where t2.id = #{id}
|
||||||
|
</select>
|
||||||
|
<select id="selectByModelId"
|
||||||
|
resultType="com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion">
|
||||||
SELECT
|
SELECT
|
||||||
t1.model_name,
|
t1.model_name,
|
||||||
t2.version, t2.dataset_id, t2.model_config,
|
t2.version, t2.dataset_id, t2.model_config,
|
||||||
@ -37,7 +48,7 @@
|
|||||||
t2.data_pre_handle_file, t2.model_super_args, t2.model_args_size, t2.model_source_code_url, t2.model_file,
|
t2.data_pre_handle_file, t2.model_super_args, t2.model_args_size, t2.model_source_code_url, t2.model_file,
|
||||||
t2.model_design_document, t2.life_cycle, t2.operate_user
|
t2.model_design_document, t2.life_cycle, t2.operate_user
|
||||||
FROM model_info t1 JOIN model_version t2 ON t1.id = t2.model_id
|
FROM model_info t1 JOIN model_version t2 ON t1.id = t2.model_id
|
||||||
where t2.id = #{id}
|
where t2.model_id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!--更新模型信息-->
|
<!--更新模型信息-->
|
||||||
@ -62,4 +73,15 @@
|
|||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!--获取模型训练信息-->
|
||||||
|
<select id="getModelTrainInfo" resultType="com.bipt.intelligentapplicationorchestrationservice.pojo.ModelTrainInfoVO">
|
||||||
|
select m1.dataset_id,
|
||||||
|
m1.id,
|
||||||
|
m1.model_config,
|
||||||
|
d2.ds_path,
|
||||||
|
m1.data_pre_handle_file
|
||||||
|
from model_version m1,dataset d2
|
||||||
|
where m1.dataset_id=d2.dataset_id and m1.id=#{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
Reference in New Issue
Block a user