diff --git a/README.md b/README.md
index ac1aba6..2d6149f 100644
--- a/README.md
+++ b/README.md
@@ -1,167 +1,161 @@
-
-
-
-
-cool-admin(midway版)一个很酷的后台权限管理系统,开源免费,模块化、插件化、极速开发CRUD,方便快速构建迭代后台管理系统,支持serverless、docker、普通服务器等多种方式部署
-到 官网 进一步了解。
-
-
-
-
-
+# 后端项目架构分析报告
## 技术栈
-- 后端:**`node.js` `midway.js` `koa.js` `typescript`**
-- 前端:**`vue.js` `element-plus` `jsx` `pinia` `vue-router`**
-- 数据库:**`mysql` `postgresql` `sqlite`**
+- **框架**: Midway.js 3.x (基于Node.js的企业级框架)
+- **数据库**: MySQL + TypeORM
+- **缓存**: Redis
+- **AI集成**: LangChain
+- **WebSocket**: Socket.IO
+- **TypeScript**: 全栈TypeScript支持
-如果你是前端,后端的这些技术选型对你是特别友好的,前端开发者可以较快速地上手。
-如果你是后端,Typescript 的语法又跟 java、php 等特别类似,一切看起来也是那么得熟悉。
+## 系统架构
-如果你想使用java版本后端,请移步[cool-admin-java](https://cool-js.com/admin/java/introduce.html)
-
-#### 官网
-
-[https://cool-js.com](https://cool-js.com)
-
-
-## 演示
-
-[AI极速编码](https://cool-js.com/ai/introduce.html)
-
-[https://show.cool-admin.com](https://show.cool-admin.com)
-
-- 账户:admin
-- 密码:123456
-
-
-
-
-#### 项目前端
-
-[https://github.com/cool-team-official/cool-admin-vue](https://github.com/cool-team-official/cool-admin-vue)
-
-## 微信群
-
-
-
-## 运行
-
-#### 修改数据库配置,配置文件位于`src/config/config.local.ts`
-
-以Mysql为例,其他数据库请参考[数据库配置文档](https://cool-js.com/admin/node/quick.html#%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE)
-
-Mysql(`>=5.7版本`),建议 8.0,node 版本(`>=16.x`),建议 18.x,首次启动会自动初始化并导入数据
-
-```ts
-// mysql,驱动已经内置,无需安装
-typeorm: {
- dataSource: {
- default: {
- type: 'mysql',
- host: '127.0.0.1',
- port: 3306,
- username: 'root',
- password: '123456',
- database: 'cool',
- // 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
- synchronize: true,
- // 打印日志
- logging: false,
- // 字符集
- charset: 'utf8mb4',
- // 是否开启缓存
- cache: true,
- // 实体路径
- entities: ['**/modules/*/entity'],
- },
- },
- },
+### 1. 目录结构
```
-#### 安装依赖并运行
-
-```bash
-$ npm i
-$ npm run dev
-$ open http://localhost:8001/
+src/
+├── config/ # 配置文件
+├── modules/ # 业务模块
+├── comm/ # 通用工具
+└── plugins/ # 插件系统
```
-注: `npm i`如果安装失败可以尝试使用[cnpm](https://developer.aliyun.com/mirror/NPM?from=tnpm),或者切换您的镜像源,推荐使用[pnpm](https://pnpm.io/)
+### 2. 核心模块
+- 基础服务 (base)
+- 用户管理 (user)
+- 任务调度 (task)
+- 消息服务 (chat)
+- 文件处理 (space)
+- 订单系统 (order)
-## CURD(快速增删改查)
+### 3. 中间件集成
+- 跨域处理 (@midwayjs/cross-domain)
+- 文件上传 (@midwayjs/upload)
+- 数据验证 (@midwayjs/validate)
+- 静态文件服务 (@midwayjs/static-file)
+- 视图渲染 (@midwayjs/view-ejs)
-大部分的后台管理系统,或者 API 服务都是对数据进行管理,所以可以看到大量的 CRUD 场景(增删改查),cool-admin 对此进行了大量地封装,让这块的编码量变得极其地少。
+## 数据层设计
-#### 新建一个数据表
+1. **数据库设计**
+ - TypeORM实体映射
+ - 数据库连接池
+ - 事务管理
+ - 软删除支持
-`src/modules/demo/entity/goods.ts`,项目启动数据库会自动创建该表,无需手动创建
+2. **缓存策略**
+ - Redis缓存集成
+ - 多级缓存架构
+ - 缓存失效策略
-```ts
-import { BaseEntity } from '@cool-midway/core';
-import { Column, Entity, Index } from 'typeorm';
+3. **文件存储**
+ - 本地文件存储
+ - 支持云存储扩展
+ - 文件处理中间件
-/**
- * 商品
- */
-@Entity('demo_app_goods')
-export class DemoAppGoodsEntity extends BaseEntity {
- @Column({ comment: '标题' })
- title: string;
+## API设计
- @Column({ comment: '图片' })
- pic: string;
+1. **REST API**
+ - 标准HTTP方法
+ - 统一响应格式
+ - 版本控制
+ - 参数验证
- @Column({ comment: '价格', type: 'decimal', precision: 5, scale: 2 })
- price: number;
-}
-```
+2. **WebSocket**
+ - 实时消息推送
+ - 房间管理
+ - 心跳检测
+ - 断线重连
-#### 编写 api 接口
+3. **AI服务集成**
+ - LangChain框架集成
+ - OpenAI API对接
+ - ChromaDB向量数据库
-`src/modules/demo/controller/app/goods.ts`,快速编写 6 个 api 接口
+## 安全特性
-```ts
-import { CoolController, BaseController } from '@cool-midway/core';
-import { DemoAppGoodsEntity } from '../../entity/goods';
+1. **认证授权**
+ - JWT认证
+ - 权限管理
+ - 角色控制
+ - 访问控制列表
-/**
- * 商品
- */
-@CoolController({
- api: ['add', 'delete', 'update', 'info', 'list', 'page'],
- entity: DemoAppGoodsEntity,
-})
-export class DemoAppGoodsController extends BaseController {
- /**
- * 其他接口
- */
- @Get('/other')
- async other() {
- return this.ok('hello, cool-admin!!!');
- }
-}
-```
+2. **数据安全**
+ - 参数验证
+ - SQL注入防护
+ - XSS防护
+ - CSRF防护
-这样我们就完成了 6 个接口的编写,对应的接口如下:
+3. **系统安全**
+ - 请求限流
+ - 日志审计
+ - 敏感信息加密
+ - IP黑名单
-- `POST /app/demo/goods/add` 新增
-- `POST /app/demo/goods/delete` 删除
-- `POST /app/demo/goods/update` 更新
-- `GET /app/demo/goods/info` 单个信息
-- `POST /app/demo/goods/list` 列表信息
-- `POST /app/demo/goods/page` 分页查询(包含模糊查询、字段全匹配等)
+## 性能优化
-### 部署
+1. **数据库优化**
+ - 连接池管理
+ - 查询优化
+ - 索引优化
+ - 缓存策略
-[部署教程](https://cool-js.com/admin/node/other/deploy.html)
+2. **应用优化**
+ - 异步处理
+ - 并发控制
+ - 内存管理
+ - 响应压缩
-### 内置指令
+## 运维特性
-- 使用 `npm run lint` 来做代码风格检查。
+1. **部署方案**
+ - PM2进程管理
+ - Docker容器化
+ - 环境配置
+ - 负载均衡
-[midway]: https://midwayjs.org
+2. **监控系统**
+ - 性能监控
+ - 错误追踪
+ - 日志收集
+ - 告警机制
-### 低价服务器
+## 待优化点
-[阿里云、腾讯云、华为云低价云服务器,不限新老](https://cool-js.com/ad/server.html)
+1. **架构优化**
+ - 服务拆分
+ - 微服务改造
+ - 队列系统
+ - 分布式架构
+
+2. **性能提升**
+ - 缓存策略优化
+ - 数据库性能
+ - 并发处理
+ - 响应时间
+
+3. **可维护性**
+ - 单元测试覆盖
+ - 文档完善
+ - 代码规范
+ - 错误处理
+
+## 建议改进
+
+1. **技术升级**
+ - 引入消息队列
+ - 完善监控系统
+ - 优化日志体系
+ - 增强安全机制
+
+2. **架构改进**
+ - 服务解耦
+ - API网关
+ - 服务发现
+ - 容器编排
+
+3. **开发流程**
+ - 自动化测试
+ - CI/CD完善
+ - 代码审查
+ - 版本管理
\ No newline at end of file
diff --git a/src/modules/flow/nodes/llm/config.ts b/src/modules/flow/nodes/llm/config.ts
index 81f52b5..d7e3c3e 100644
--- a/src/modules/flow/nodes/llm/config.ts
+++ b/src/modules/flow/nodes/llm/config.ts
@@ -171,4 +171,45 @@ export const ConfigLLM: { [key in LLMModelType]?: any } = {
},
],
},
+ // deepseek
+ deepseek: {
+ // 通用配置
+ comm: {
+ apiKey: 'API密钥',
+ baseURL: 'https://api.deepseek.com/v1',
+ },
+ // 专有配置
+ options: [
+ {
+ field: 'model',
+ title: 'Deepseek',
+ select: [
+ 'deepseek-chat',
+ 'deepseek-coder',
+ 'deepseek-chat-v1',
+ ],
+ default: 'deepseek-chat',
+ },
+ {
+ field: 'temperature',
+ type: 'number',
+ title: '温度',
+ default: 0.7,
+ enable: true,
+ max: 1,
+ min: 0.1,
+ supports: [],
+ },
+ {
+ field: 'maxTokens',
+ type: 'number',
+ title: '最大token',
+ default: 2048,
+ enable: true,
+ max: 8192,
+ min: 1,
+ supports: [],
+ },
+ ],
+ },
};
diff --git a/src/modules/flow/nodes/llm/model.ts b/src/modules/flow/nodes/llm/model.ts
index ac0e71f..36beff4 100644
--- a/src/modules/flow/nodes/llm/model.ts
+++ b/src/modules/flow/nodes/llm/model.ts
@@ -4,6 +4,7 @@ import { ChatZhipuAI } from '@langchain/community/chat_models/zhipuai';
import { Provide } from '@midwayjs/core';
import { ChatOpenAI } from '@langchain/openai';
import { ChatOllama } from '@langchain/community/chat_models/ollama';
+import { ChatDeepseek } from './models/deepseek';
/**
* 模型类型
@@ -19,6 +20,8 @@ export const CommModel = {
zhipu: ChatZhipuAI,
// ollama 本地大模型
ollama: ChatOllama,
+ // deepseek
+ deepseek: ChatDeepseek,
};
// LLM类型键
@@ -34,9 +37,7 @@ export class NodeLLMModel {
* @param name
* @returns
*/
- async getModel(
- name: string
- ): Promise {
+ async getModel(name: string) {
return CommModel[name];
}
}
diff --git a/src/modules/flow/nodes/llm/models/deepseek.ts b/src/modules/flow/nodes/llm/models/deepseek.ts
new file mode 100644
index 0000000..dd5f7df
--- /dev/null
+++ b/src/modules/flow/nodes/llm/models/deepseek.ts
@@ -0,0 +1,83 @@
+import { BaseChatModel } from "@langchain/core/language_models/chat_models";
+import { BaseChatModelParams } from "@langchain/core/language_models/chat_models";
+import { BaseMessage, AIMessage } from "@langchain/core/messages";
+import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
+import { ChatCompletionResponse } from "./types";
+
+/**
+ * Deepseek模型参数接口
+ */
+export interface DeepseekInput extends BaseChatModelParams {
+ apiKey: string;
+ baseURL?: string;
+ temperature?: number;
+ maxTokens?: number;
+ modelName?: string;
+}
+
+/**
+ * Deepseek聊天模型实现
+ */
+export class ChatDeepseek extends BaseChatModel {
+ apiKey: string;
+ baseURL: string;
+ temperature: number;
+ maxTokens: number;
+ modelName: string;
+
+ constructor(fields?: Partial) {
+ super(fields ?? {});
+
+ this.apiKey = fields?.apiKey ?? "";
+ this.baseURL = fields?.baseURL ?? "https://api.deepseek.com/v1";
+ this.temperature = fields?.temperature ?? 0.7;
+ this.maxTokens = fields?.maxTokens ?? 2048;
+ this.modelName = fields?.modelName ?? "deepseek-chat";
+ }
+
+ /**
+ * 生成聊天补全
+ */
+ async _generate(
+ messages: BaseMessage[],
+ options: this["ParsedCallOptions"],
+ runManager?: CallbackManagerForLLMRun
+ ) {
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ "Authorization": `Bearer ${this.apiKey}`,
+ },
+ body: JSON.stringify({
+ model: this.modelName,
+ messages: messages.map(message => ({
+ role: message._getType() === "human" ? "user" : "assistant",
+ content: message.content,
+ })),
+ temperature: this.temperature,
+ max_tokens: this.maxTokens,
+ stream: false,
+ }),
+ });
+
+ if (!response.ok) {
+ throw new Error(`Deepseek API 请求失败: ${response.statusText}`);
+ }
+
+ const data = await response.json() as ChatCompletionResponse;
+ const text = data.choices[0].message.content;
+
+ return {
+ generations: [{
+ text,
+ message: new AIMessage(text),
+ }],
+ };
+ }
+
+ /** 获取默认参数 */
+ _llmType(): string {
+ return "deepseek";
+ }
+}
\ No newline at end of file
diff --git a/src/modules/flow/nodes/llm/models/types.ts b/src/modules/flow/nodes/llm/models/types.ts
new file mode 100644
index 0000000..df854f4
--- /dev/null
+++ b/src/modules/flow/nodes/llm/models/types.ts
@@ -0,0 +1,19 @@
+export interface ChatCompletionResponse {
+ id: string;
+ object: string;
+ created: number;
+ model: string;
+ choices: {
+ message: {
+ role: string;
+ content: string;
+ };
+ finish_reason: string;
+ index: number;
+ }[];
+ usage: {
+ prompt_tokens: number;
+ completion_tokens: number;
+ total_tokens: number;
+ };
+}
\ No newline at end of file