feat(M6): 应用配置DSL、部署指南、项目README、最终整理

This commit is contained in:
xieke
2026-06-06 06:31:21 +08:00
parent b0a070ddd3
commit 2ae920a798
4 changed files with 587 additions and 4 deletions
+112
View File
@@ -0,0 +1,112 @@
# 云美企业知识库
> 西安云美电子科技有限公司 - 基于 Dify + DeepSeek 的企业内部知识库
## 项目简介
本项目为云美电子科技搭建企业内部知识库系统,员工可通过对话式 AI 快速检索公司文档、获取智能问答。基于 **Dify 社区版(Docker 自部署)** + **DeepSeek 大模型** 构建。
## 技术栈
| 组件 | 说明 |
|------|------|
| Dify | AI 应用开发平台(社区版 Docker 部署) |
| DeepSeek | 大语言模型(deepseek-chat) |
| PostgreSQL | 关系数据库 |
| Redis | 缓存与消息队列 |
| Qdrant | 向量数据库 |
| Nginx | 反向代理 |
## 项目结构
```
dify-app/
├── docker/ # Docker 部署配置
│ ├── docker-compose.yml # 服务编排
│ ├── .env.example # 环境变量模板
│ ├── .env.docker # Docker 内部变量
│ └── README.md # Docker 部署说明
│
├── docs/ # 项目文档
│ ├── knowledge-base-structure.md # 知识库结构设计
│ ├── performance-baseline.md # 性能基线指标
│ ├── api-integration.md # API 集成指南
│ └── deployment-guide.md # 完整部署指南
│
├── prompts/ # 提示词
│ └── system-prompt.md # 系统提示词与对话策略
│
├── tests/ # 测试
│ └── test-cases.md # 功能/安全测试用例
│
├── dsl/ # Dify 应用配置
│ └── app-config.yaml # 应用 DSL 配置模板
│
├── tasks.md # 任务清单
├── .gitignore # Git 忽略规则
└── README.md # 本文件
```
## 快速开始
```bash
# 1. 克隆项目
git clone http://git.xayunmei.com/yunmei/dify-app.git
cd dify-app
git checkout feature/dev
# 2. 配置环境变量
cd docker
cp .env.example .env
# 编辑 .env 填写 SECRET_KEY、数据库密码、DeepSeek API Key
# 3. 启动服务
docker compose up -d
# 4. 访问
# 浏览器打开 http://<服务器IP>:80
```
详细部署步骤请参考 [部署指南](docs/deployment-guide.md)。
## 知识库分类
| 分类 | 内容 |
|------|------|
| 📋 公司概况 | 公司简介、组织架构、联系方式 |
| 🔧 产品技术 | 产品手册、技术规范、技术方案 |
| ✅ 质量管理 | 质量体系、检测标准、计量规程 |
| 📄 制度流程 | 管理制度、审批流程、操作规程 |
| 📚 培训学习 | 培训材料、学习资源 |
| 📁 项目档案 | 项目文档、合同模板 |
| ❓ 常见问题 | IT支持、行政事务、售后FAQ |
## API 文档
知识库对话、文档管理等 API 接口文档:[API 集成指南](docs/api-integration.md)
## 测试
功能测试用例(37 个):[测试用例](tests/test-cases.md)
## Git 分支策略
| 分支 | 用途 |
|------|------|
| `main` | 生产发布分支 |
| `feature/dev` | 开发分支(日常开发在此分支) |
## 相关文档
| 文档 | 说明 |
|------|------|
| [知识库结构设计](docs/knowledge-base-structure.md) | 分类体系、分段策略、维护规范 |
| [性能基线指标](docs/performance-baseline.md) | 响应时间、准确率、并发指标 |
| [API 集成指南](docs/api-integration.md) | RESTful API、代码示例 |
| [完整部署指南](docs/deployment-guide.md) | 从服务器到上线的全流程 |
| [系统提示词设计](prompts/system-prompt.md) | 角色定义、回答规范、推荐问题 |
| [Dify 应用配置](dsl/app-config.yaml) | DSL 模板(可导入 Dify) |
---
**西安云美电子科技有限公司** © 2026
+293
View File
@@ -0,0 +1,293 @@
# 完整部署指南
> 西安云美电子科技有限公司 - 企业知识库
> 版本:v1.0 | 创建时间:2026-06-06
---
## 部署架构概览
```
┌─────────────────────┐
│ 用户 (浏览器) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Nginx (反向代理) │ :80 / :443
│ SSL 终止 / 负载均衡 │
└──────────┬──────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌──────▼──────┐ ┌─────▼─────┐ ┌──────▼──────┐
│ Dify Web │ │ Dify API │ │ SSRF Proxy │
│ (React SPA) │ │ (Flask) │ │ (Squid) │
│ :3000 │ │ :5001 │ │ :3128 │
└─────────────┘ └─────┬─────┘ └─────────────┘
│
┌────────────┼────────────┐
│ │ │
┌──────▼──────┐ ┌──▼────┐ ┌─────▼──────┐
│ PostgreSQL │ │ Redis │ │ Qdrant │
│ :5432 │ │ :6379 │ │ :6333 │
└─────────────┘ └───────┘ └────────────┘
```
---
## 第一步:服务器准备
### 1.1 系统要求
- Ubuntu 22.04 LTS(推荐)
- 最低 4 核 CPU / 8 GB RAM / 50 GB SSD
- 推荐 8 核 CPU / 16 GB RAM / 100 GB SSD
### 1.2 安装 Docker
```bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 安装 Docker Compose(如未自带)
sudo apt install docker-compose-plugin -y
# 验证安装
docker --version
docker compose version
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 重新登录生效
```
---
## 第二步:部署 Dify
### 2.1 克隆项目
```bash
git clone http://git.xayunmei.com/yunmei/dify-app.git
cd dify-app
git checkout feature/dev
```
### 2.2 配置环境变量
```bash
cd docker
# 复制模板
cp .env.example .env
# 生成 SECRET_KEY
SECRET_KEY=$(openssl rand -hex 32)
echo "生成的 SECRET_KEY: $SECRET_KEY"
# 编辑 .env,填入实际值
nano .env
```
**必须修改的配置项**:
| 变量 | 说明 | 操作 |
|------|------|------|
| `SECRET_KEY` | 安全密钥 | 使用上面生成的值 |
| `POSTGRES_PASSWORD` | 数据库密码 | 设置强密码 |
| `REDIS_PASSWORD` | Redis 密码 | 设置强密码 |
| `DEEPSEEK_API_KEY` | DeepSeek API Key | 从 DeepSeek 平台获取 |
### 2.3 启动服务
```bash
# 拉取镜像
docker compose pull
# 启动所有服务
docker compose up -d
# 查看状态
docker compose ps
# 等待所有服务健康(约 30-60 秒)
docker compose ps --format "table {{.Name}}\t{{.Status}}"
```
### 2.4 验证部署
```bash
# 检查 API 服务
curl http://localhost:5001/health
# 检查 Web 服务
curl -I http://localhost:80
```
---
## 第三步:初始化 Dify
### 3.1 创建管理员账号
1. 浏览器访问 `http://<服务器IP>:80`
2. 首次访问进入设置向导
3. 填写邮箱和密码,创建管理员账号
4. 设置管理员姓名
### 3.2 配置模型提供者
1. 进入 Dify 控制台
2. 导航到 **设置 → 模型提供者**
3. 添加 **DeepSeek**:
- API Base: `https://api.deepseek.com`
- API Key: 填入实际的 DeepSeek API Key
4. 验证连接成功
### 3.3 创建知识库
按 `docs/knowledge-base-structure.md` 中的结构创建知识库:
| 知识库名称 | 说明 |
|-----------|------|
| KB-COMP-公司概况 | 公司简介、组织架构 |
| KB-PROD-产品技术 | 产品手册、技术规范 |
| KB-QUAL-质量管理 | 质量体系、检测标准 |
| KB-RULE-制度流程 | 管理制度、审批流程 |
| KB-TRAIN-培训学习 | 培训材料 |
| KB-PROJ-项目档案 | 项目文档 |
| KB-FAQ-常见问题 | FAQ |
**每个知识库的分段配置**:
- 分段模式:自动
- 最大分段长度:500 tokens
- 重叠长度:50 tokens
### 3.4 上传文档
1. 准备各部门的知识库文档(PDF/Word/Markdown)
2. 按分类上传到对应知识库
3. 等待索引完成
4. 测试检索效果
---
## 第四步:配置对话应用
### 4.1 创建聊天应用
1. Dify 控制台 → **创建应用 → 聊天助手**
2. 应用名称:**云美知识助手**
3. 导入 DSL 配置(可选):
- 应用设置 → 右上角 → **导入 DSL**
- 上传 `dsl/app-config.yaml`
4. 或手动配置(参考 `dsl/app-config.yaml` 中的参数)
### 4.2 配置提示词
复制 `prompts/system-prompt.md` 中的系统提示词到应用配置。
### 4.3 关联知识库
在应用的「知识库」设置中,关联已创建的所有知识库。
### 4.4 配置推荐问题
复制 `prompts/system-prompt.md` 中的推荐问题到应用配置。
### 4.5 测试应用
使用 Dify 内置的调试界面进行测试:
```
测试问题1:公司的组织架构是怎样的?
测试问题2:差旅报销的标准和流程是什么?
测试问题3:质量管理体系审核周期是多久?
```
对照 `tests/test-cases.md` 执行完整测试。
---
## 第五步:发布与接入
### 5.1 发布应用
1. 点击应用右上角 **发布**
2. 选择 **运行环境**(生产环境)
3. 确认发布
### 5.2 获取 API Key
1. 应用 → **访问 API**
2. 创建 API Key
3. 保存 Key(只显示一次)
### 5.3 接入企业微信(可选)
参考 `docs/api-integration.md` 中的企业微信集成示例。
### 5.4 配置 Nginx SSL(生产环境必做)
```bash
# 将 SSL 证书放入 nginx/ssl/ 目录
mkdir -p nginx/ssl
# 编辑 Nginx 配置,启用 HTTPS
# 修改 .env 中的 NGINX_SSL_PORT
```
---
## 日常运维
### 备份
```bash
# 数据库备份(建议设置 cron 每日执行)
docker compose exec db pg_dump -U postgres dify > /backup/dify_$(date +%Y%m%d).sql
# 向量库备份
docker compose exec qdrant curl -X POST http://localhost:6333/snapshots
```
### 更新
```bash
cd docker
docker compose pull
docker compose up -d
```
### 监控
```bash
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f --tail=100 api
docker compose logs -f --tail=100 worker
# 查看资源占用
docker stats --no-stream
```
---
## 故障排查速查
| 现象 | 排查命令 | 常见原因 |
|------|---------|---------|
| 页面打不开 | `docker compose ps` | 服务未启动 |
| 模型不回复 | `docker compose logs api` | API Key 无效/过期 |
| 知识库不检索 | `docker compose logs worker` | Worker 异常/索引未完成 |
| 数据库连接失败 | `docker compose logs db` | 密码不一致 |
| 磁盘空间不足 | `df -h` | 日志/数据膨胀 |
---
_最后更新: 2026-06-06_
+178
View File
@@ -0,0 +1,178 @@
# Dify Application DSL Configuration
# 西安云美电子科技有限公司 - 企业知识库
#
# 导入方法:Dify 控制台 → 应用 → 导入 DSL
# 或通过 API:POST /v1/apps/import
#
# 注意:导入前需在 Dify 控制台中配置好 DeepSeek 模型提供者
app:
name: 云美知识助手
description: 西安云美电子科技有限公司企业内部知识库对话助手,帮助员工快速检索公司文档和获取智能问答
mode: chat
icon: 🤖
icon_background: "#4F46E5"
model_config:
# 使用 DeepSeek 模型
model:
provider: deepseek
name: deepseek-chat
mode: chat
completion_params:
temperature: 0.3 # 低温度,提高回答准确性
top_p: 0.8
max_tokens: 2048
presence_penalty: 0.0
frequency_penalty: 0.0
# 知识库检索配置
retriever_resource:
enabled: true
query_variable: query
# 知识库引用
dataset_query_variable: query
# 提示词配置
prompt_template:
- id: system-prompt
role: system
template: |
你是"云美知识助手",西安云美电子科技有限公司的内部 AI 助手。你的职责是帮助员工快速、准确地从公司知识库中检索信息并回答问题。
## 身份与职责
- 你是云美电子科技的企业知识库助手
- 你负责帮助员工查找公司制度、产品技术、质量管理、培训资料等各类文档信息
- 你的回答必须基于知识库中的实际内容,不编造信息
## 回答规范
1. **基于事实**:所有回答必须基于知识库文档中的内容,不得凭空编造或猜测
2. **标注来源**:回答时请注明信息来源的文档名称或分类(如"根据《XX产品手册》...")
3. **简洁清晰**:回答要直接、有条理,使用要点列表格式,避免冗长
4. **分类引导**:如果用户的问题涉及多个知识库分类,请分类回答
5. **不确定时说明**:如果知识库中没有相关信息,请明确告知用户"当前知识库中未找到相关信息",并建议联系对应部门
## 知识库分类参考
- 📋 **公司概况**:公司简介、组织架构、联系方式
- 🔧 **产品技术**:产品手册、技术规范、技术方案
- ✅ **质量管理**:质量体系、检测标准、计量规程
- 📄 **制度流程**:管理制度、审批流程、操作规程
- 📚 **培训学习**:培训材料、学习资源
- 📁 **项目档案**:项目文档、合同模板
- ❓ **常见问题**:IT支持、行政事务、售后FAQ
## 语气与风格
- 亲切但不随意,专业但不生硬
- 使用"您"称呼
- 适当使用 Emoji 增加可读性
- 回答控制在合理长度,避免大段文字堆砌
- id: user-query
role: user
template: "{{query}}"
# 知识库设置
dataset_configs:
# 参考的知识库列表(导入后需关联实际知识库)
datasets:
- name: KB-COMP-公司概况
description: 公司简介、组织架构、发展历程
- name: KB-PROD-产品技术
description: 产品手册、技术规范、研发文档
- name: KB-QUAL-质量管理
description: 质量体系、检测标准、计量规程
- name: KB-RULE-制度流程
description: 管理制度、审批流程、操作规程
- name: KB-TRAIN-培训学习
description: 培训材料、学习资源
- name: KB-PROJ-项目档案
description: 项目文档、合同模板
- name: KB-FAQ-常见问题
description: IT支持、行政事务、售后FAQ
# 检索参数
retrieval_model: vector # vector / keyword / hybrid
top_k: 5 # 检索返回的文档段落数
score_threshold: 0.5 # 相关性分数阈值
reranking_model: "" # 预留重排序模型(可选)
# 对话配置
conversation:
# 开场白
opening_statement: |
👋 您好!我是**云美知识助手**,可以帮您查找公司各类文档和信息。
您可以直接提问,例如:
- "差旅报销的流程是什么?"
- "XX产品的技术参数是什么?"
- "质量管理体系的审核周期是多久?"
请问有什么可以帮您?
# 推荐问题
suggested_questions:
- 公司的组织架构是怎样的?
- 差旅报销的标准和流程是什么?
- 主要产品的技术参数在哪里可以查到?
- 质量管理体系文件如何获取?
- 新员工入职培训需要了解什么?
- IT 系统使用有问题怎么办?
# 下一步问题建议
suggested_questions_after_answer:
enabled: true
# 对话历史轮数
context_count: 10
# 功能配置
features:
# 文件上传(允许用户上传文件辅助提问)
file_upload:
image:
enabled: true
allowed_extensions:
- jpg
- jpeg
- png
- gif
- webp
max_size_mb: 10
document:
enabled: false
# 对话标题自动生成
conversation_title_auto_generate: true
# 敏感词过滤
sensitive_word_avoidance:
enabled: true
type: "keyword" # keyword / regex
config:
- "密码"
- "薪资"
- "工资"
- "薪资标准"
canned_response: "抱歉,该问题涉及敏感信息,请通过正规渠道查询。"
# Token 限制
token_limit:
enabled: true
max_input_tokens: 3000
max_output_tokens: 2048
# 引用展示
citation:
enabled: true
position: "end" # start / end
# 环境变量引用说明
# 导入 DSL 后,需要在 Dify 控制台手动配置以下内容:
# 1. 模型提供者:添加 DeepSeek API Key
# 2. 关联知识库:将 datasets 列表中的知识库关联到实际创建的知识库
# 3. 确认提示词:检查 system-prompt 是否正确加载
+4 -4
View File
@@ -48,10 +48,10 @@
## M6: 应用配置导出与最终整理 ## M6: 应用配置导出与最终整理
- [ ] M6.1.1 编写 `dsl/app-config.yaml`(Dify 应用 DSL 配置模板) - [x] M6.1.1 编写 `dsl/app-config.yaml`(Dify 应用 DSL 配置模板)
- [ ] M6.1.2 编写 `docs/deployment-guide.md`(完整部署指南) - [x] M6.1.2 编写 `docs/deployment-guide.md`(完整部署指南)
- [ ] M6.1.3 创建项目 README.md - [x] M6.1.3 创建项目 README.md
- [ ] M6.1.4 整理最终目录结构,确保所有文件就绪 - [x] M6.1.4 整理最终目录结构,确保所有文件就绪
- [ ] M6.1.5 创建最终 Tag(v1.0.0) - [ ] M6.1.5 创建最终 Tag(v1.0.0)
--- ---