chore: initialize qiming workspace repository

This commit is contained in:
Codex
2026-05-29 14:22:48 +08:00
commit bfd67a0f2c
10750 changed files with 1885711 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
# 生态市场模块开发规则
## 模块概述
生态市场模块是一个用于管理和分享插件、模板和MCP的平台支持服务器端和客户端两种模式。服务器端负责集中管理配置和审核客户端负责使用和提交配置。
## 架构设计
### 模式选择
生态市场支持两种模式:
- **服务器模式**:作为中心节点,管理所有配置和审核流程
- **客户端模式**:作为使用节点,从服务器获取配置并提交配置审核
通过配置文件中的 `eco-market.mode.type` 属性设置,可选值为 `server``client`
### 分层结构
遵循DDD设计原则模块分为以下几层
- **领域层**:核心业务逻辑,包括领域模型和领域服务
- **应用层**:应用服务,协调领域服务和外部服务
- **接口层**控制器处理HTTP请求
- **基础设施层**:数据库访问、缓存、外部服务调用等
## 领域服务
### 服务器端领域服务
- **IEcoMarketServerSecretDomainService**:管理客户端密钥,负责注册和验证
- **IEcoMarketServerConfigDomainService**:管理服务器端配置,处理配置的保存、发布、下线和审批
- **IEcoMarketServerPublishConfigDomainService**:管理已发布配置,提供查询和管理功能
### 客户端领域服务
- **IEcoMarketClientSecretService**:管理客户端密钥,与服务器进行通信
- **EcoMarketServerApiService**封装对服务器API的调用处理HTTP请求和响应
## 控制器层
控制器层应保持简洁,主要职责是:
1. 接收HTTP请求
2. 参数校验
3. 调用领域服务
4. 返回响应
不应在控制器中包含业务逻辑,业务逻辑应放在领域服务中。
## 鉴权机制
客户端与服务器之间的通信采用客户端ID和密钥进行鉴权
1. 客户端首次使用时通过服务器端注册接口获取客户端ID和密钥
2. 后续所有请求都需要携带客户端ID和密钥
3. 服务器端验证客户端ID和密钥的有效性
## 配置管理
### 配置类
- **EcoMarketProperties**解析YAML配置
- **EcoMarketConfig**提供配置相关的Bean
- **EcoMarketCondition**:根据模式类型条件化启用不同的服务
- **EcoMarketConfigUtils**:提供静态方法访问配置
- **ConditionalOnEcoMarketMode**:条件化配置注解
## 枚举类型
主要枚举类型包括:
- **EcoMarketShareStatusEnum**:分享状态(草稿、审核中、已发布、已下线、驳回)
- **EcoMarketUseStatusEnum**:使用状态(启用、禁用)
- **EcoMarketOwnedFlagEnum**:拥有标记(是、否)
## 开发规范
1. 控制器只负责请求处理,不包含业务逻辑
2. 业务逻辑应放在领域服务中
3. 应用服务用于协调不同的领域服务
4. 使用枚举类型表示状态和标记
5. 客户端与服务器通信必须使用客户端ID和密钥鉴权

View File

@@ -0,0 +1,128 @@
# 生态市场模块开发规则
## 1. 模块概述
生态市场模块是一个用于管理和分享插件、模板和MCP的平台支持服务器端和客户端两种模式。服务器端负责集中管理配置和审核客户端负责使用和提交配置。
## 2. 架构设计
### 2.1 模式选择
生态市场支持两种模式:
- **服务器模式**:作为中心节点,管理所有配置和审核流程
- **客户端模式**:作为使用节点,从服务器获取配置并提交配置审核
通过配置文件中的 `eco-market.mode.type` 属性设置,可选值为 `server``client`
### 2.2 分层结构
遵循DDD设计原则模块分为以下几层
- **领域层**:核心业务逻辑,包括领域模型和领域服务
- **应用层**:应用服务,协调领域服务和外部服务
- **接口层**控制器处理HTTP请求
- **基础设施层**:数据库访问、缓存、外部服务调用等
## 3. 领域服务
### 3.1 服务器端领域服务
- **IEcoMarketServerSecretDomainService**:管理客户端密钥,负责注册和验证
- **IEcoMarketServerConfigDomainService**:管理服务器端配置,处理配置的保存、发布、下线和审批
- **IEcoMarketServerPublishConfigDomainService**:管理已发布配置,提供查询和管理功能
### 3.2 客户端领域服务
- **IEcoMarketClientSecretService**:管理客户端密钥,与服务器进行通信
- **EcoMarketServerApiService**封装对服务器API的调用处理HTTP请求和响应
## 4. 控制器层
控制器层应保持简洁,主要职责是:
1. 接收HTTP请求
2. 参数校验
3. 调用领域服务
4. 返回响应
不应在控制器中包含业务逻辑,业务逻辑应放在领域服务中。
### 4.1 服务器端控制器
- **EcoMarketServerSecretController**:处理客户端注册和验证
- **EcoMarketServerConfigController**:处理配置的保存、发布、下线和审批
- **EcoMarketServerPublishConfigController**:处理已发布配置的查询
### 4.2 客户端控制器
- **EcoMarketClientConfigController**:处理客户端配置的保存、发布、下线等操作
## 5. 鉴权机制
客户端与服务器之间的通信采用客户端ID和密钥进行鉴权
1. 客户端首次使用时通过服务器端注册接口获取客户端ID和密钥
2. 后续所有请求都需要携带客户端ID和密钥
3. 服务器端验证客户端ID和密钥的有效性
## 6. 配置管理
### 6.1 配置类
- **EcoMarketProperties**解析YAML配置
- **EcoMarketConfig**提供配置相关的Bean
- **EcoMarketCondition**:根据模式类型条件化启用不同的服务
- **EcoMarketConfigUtils**:提供静态方法访问配置
- **ConditionalOnEcoMarketMode**:条件化配置注解
### 6.2 配置示例
```yaml
ecoMarket:
mode:
type: client # 或 server
server:
baseUrl: http://eco-market-server:8080
```
## 7. 枚举类型
### 7.1 分享状态
```java
public enum EcoMarketShareStatusEnum {
DRAFT(1, "草稿"),
REVIEWING(2, "审核中"),
PUBLISHED(3, "已发布"),
OFFLINE(4, "已下线"),
REJECTED(5, "驳回");
}
```
### 7.2 使用状态
```java
public enum EcoMarketUseStatusEnum {
ENABLED(1, "启用"),
DISABLED(2, "禁用");
}
```
### 7.3 拥有标记
```java
public enum EcoMarketOwnedFlagEnum {
NO(0, ""),
YES(1, "");
}
```
## 8. 数据库表
主要数据库表包括:
- eco_market_client_secret客户端密钥表
- eco_market_client_config客户端配置表
- eco_market_client_publish_config客户端已发布配置表
- eco_market_server_secret服务器端密钥表
- eco_market_server_config服务器端配置表
- eco_market_server_publish_config服务器端已发布配置表
详细表结构参见 eco_market.sql 文件。

View File

@@ -0,0 +1,58 @@
create table eco_market_client_secret (
id bigint auto_increment comment '主键id' primary key,
name varchar(128) not null comment '名称',
description varchar(256) null comment '描述',
client_id varchar(128) not null comment '客户端ID,分布式唯一UUID',
client_secret varchar(256) null comment '客户端密钥',
_tenant_id bigint not null comment '租户ID',
created datetime default CURRENT_TIMESTAMP not null comment '创建时间',
creator_id bigint null comment '创建人id',
creator_name varchar(64) null comment '创建人',
modified datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
yn tinyint default 1 null comment '逻辑标记,1:有效;-1:无效',
constraint uk_client_id unique (client_id) comment '客户端ID唯一索引'
) comment '生态市场,客户端端配置';
create table eco_market_client_config (
id bigint auto_increment comment '主键id' primary key,
uid varchar(128) not null comment '唯一ID,分布式唯一UUID',
name varchar(128) not null comment '名称',
description varchar(256) null comment '描述',
data_type tinyint default 1 not null comment '市场类型,默认插件,1:插件;2:模板;3:MCP',
target_type varchar(64) null comment '细分类型,比如: 插件,智能体,工作流',
target_id bigint null comment '具体目标的id,可以智能体,工作流,插件,还有mcp等',
category_code varchar(128) null comment '分类编码,商业服务等,通过接口获取',
category_name varchar(128) null comment '分类名称,商业服务等,通过接口获取',
owned_flag tinyint default 0 not null comment '是否我的分享,0:否(生态市场获取的);1:是(我的分享)',
share_status tinyint default 1 not null comment '分享状态,1:草稿;2:审核中;3:已发布;4:已下线;5:驳回',
use_status tinyint default 2 not null comment '使用状态,1:启用;2:禁用;',
publish_time datetime null comment '发布时间',
offline_time datetime null comment '下线时间',
version_number bigint default 1 not null comment '版本号,自增,发布一次增加1,初始值为1',
author varchar(256) null comment '作者信息',
publish_doc mediumtext null comment '发布文档',
config_param_json json null comment '请求参数配置json',
config_json json null comment '配置json,存储插件的配置信息如果有其他额外的信息保存放这里',
icon varchar(255) null comment '图标图片地址',
_tenant_id bigint not null comment '租户ID',
create_client_id varchar(128) not null comment '创建者的客户端ID',
created datetime default CURRENT_TIMESTAMP not null comment '创建时间',
creator_id bigint null comment '创建人id',
creator_name varchar(64) null comment '创建人',
modified datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
modified_id bigint null comment '最后修改人id',
modified_name varchar(64) null comment '最后修改人',
yn tinyint default 1 null comment '逻辑标记,1:有效;-1:无效',
constraint uk_uid unique (uid) comment 'uid唯一索引'
) comment '生态市场配置';
create table eco_market_client_publish_config like eco_market_client_config;
ALTER TABLE eco_market_client_publish_config COMMENT '生态市场,客户端,已发布配置';
create table eco_market_server_secret like eco_market_client_secret;
ALTER TABLE eco_market_server_secret COMMENT '生态市场,服务器端配置';
create table eco_market_server_config like eco_market_client_config ;
ALTER TABLE eco_market_server_config COMMENT '生态市场,服务器端配置';
create table eco_market_server_publish_config like eco_market_client_config ;
ALTER TABLE eco_market_server_publish_config COMMENT '生态市场,服务器端,已发布配置';