Bladeren bron

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

xieke 1 week geleden
bovenliggende
commit
2ae920a798
4 gewijzigde bestanden met toevoegingen van 587 en 4 verwijderingen
  1. 112
    0
      README.md
  2. 293
    0
      docs/deployment-guide.md
  3. 178
    0
      dsl/app-config.yaml
  4. 4
    4
      tasks.md

+ 112
- 0
README.md Bestand weergeven

@@ -0,0 +1,112 @@
1
+# 云美企业知识库
2
+
3
+> 西安云美电子科技有限公司 - 基于 Dify + DeepSeek 的企业内部知识库
4
+
5
+## 项目简介
6
+
7
+本项目为云美电子科技搭建企业内部知识库系统,员工可通过对话式 AI 快速检索公司文档、获取智能问答。基于 **Dify 社区版(Docker 自部署)** + **DeepSeek 大模型** 构建。
8
+
9
+## 技术栈
10
+
11
+| 组件 | 说明 |
12
+|------|------|
13
+| Dify | AI 应用开发平台(社区版 Docker 部署) |
14
+| DeepSeek | 大语言模型(deepseek-chat) |
15
+| PostgreSQL | 关系数据库 |
16
+| Redis | 缓存与消息队列 |
17
+| Qdrant | 向量数据库 |
18
+| Nginx | 反向代理 |
19
+
20
+## 项目结构
21
+
22
+```
23
+dify-app/
24
+├── docker/                      # Docker 部署配置
25
+│   ├── docker-compose.yml       # 服务编排
26
+│   ├── .env.example             # 环境变量模板
27
+│   ├── .env.docker              # Docker 内部变量
28
+│   └── README.md                # Docker 部署说明
29
+│
30
+├── docs/                        # 项目文档
31
+│   ├── knowledge-base-structure.md   # 知识库结构设计
32
+│   ├── performance-baseline.md      # 性能基线指标
33
+│   ├── api-integration.md           # API 集成指南
34
+│   └── deployment-guide.md          # 完整部署指南
35
+│
36
+├── prompts/                     # 提示词
37
+│   └── system-prompt.md        # 系统提示词与对话策略
38
+│
39
+├── tests/                       # 测试
40
+│   └── test-cases.md            # 功能/安全测试用例
41
+│
42
+├── dsl/                         # Dify 应用配置
43
+│   └── app-config.yaml          # 应用 DSL 配置模板
44
+│
45
+├── tasks.md                     # 任务清单
46
+├── .gitignore                   # Git 忽略规则
47
+└── README.md                    # 本文件
48
+```
49
+
50
+## 快速开始
51
+
52
+```bash
53
+# 1. 克隆项目
54
+git clone http://git.xayunmei.com/yunmei/dify-app.git
55
+cd dify-app
56
+git checkout feature/dev
57
+
58
+# 2. 配置环境变量
59
+cd docker
60
+cp .env.example .env
61
+# 编辑 .env 填写 SECRET_KEY、数据库密码、DeepSeek API Key
62
+
63
+# 3. 启动服务
64
+docker compose up -d
65
+
66
+# 4. 访问
67
+# 浏览器打开 http://<服务器IP>:80
68
+```
69
+
70
+详细部署步骤请参考 [部署指南](docs/deployment-guide.md)。
71
+
72
+## 知识库分类
73
+
74
+| 分类 | 内容 |
75
+|------|------|
76
+| 📋 公司概况 | 公司简介、组织架构、联系方式 |
77
+| 🔧 产品技术 | 产品手册、技术规范、技术方案 |
78
+| ✅ 质量管理 | 质量体系、检测标准、计量规程 |
79
+| 📄 制度流程 | 管理制度、审批流程、操作规程 |
80
+| 📚 培训学习 | 培训材料、学习资源 |
81
+| 📁 项目档案 | 项目文档、合同模板 |
82
+| ❓ 常见问题 | IT支持、行政事务、售后FAQ |
83
+
84
+## API 文档
85
+
86
+知识库对话、文档管理等 API 接口文档:[API 集成指南](docs/api-integration.md)
87
+
88
+## 测试
89
+
90
+功能测试用例(37 个):[测试用例](tests/test-cases.md)
91
+
92
+## Git 分支策略
93
+
94
+| 分支 | 用途 |
95
+|------|------|
96
+| `main` | 生产发布分支 |
97
+| `feature/dev` | 开发分支(日常开发在此分支) |
98
+
99
+## 相关文档
100
+
101
+| 文档 | 说明 |
102
+|------|------|
103
+| [知识库结构设计](docs/knowledge-base-structure.md) | 分类体系、分段策略、维护规范 |
104
+| [性能基线指标](docs/performance-baseline.md) | 响应时间、准确率、并发指标 |
105
+| [API 集成指南](docs/api-integration.md) | RESTful API、代码示例 |
106
+| [完整部署指南](docs/deployment-guide.md) | 从服务器到上线的全流程 |
107
+| [系统提示词设计](prompts/system-prompt.md) | 角色定义、回答规范、推荐问题 |
108
+| [Dify 应用配置](dsl/app-config.yaml) | DSL 模板(可导入 Dify) |
109
+
110
+---
111
+
112
+**西安云美电子科技有限公司** © 2026

+ 293
- 0
docs/deployment-guide.md Bestand weergeven

@@ -0,0 +1,293 @@
1
+# 完整部署指南
2
+
3
+> 西安云美电子科技有限公司 - 企业知识库
4
+> 版本:v1.0 | 创建时间:2026-06-06
5
+
6
+---
7
+
8
+## 部署架构概览
9
+
10
+```
11
+                        ┌─────────────────────┐
12
+                        │    用户 (浏览器)     │
13
+                        └──────────┬──────────┘
14
+                                   │
15
+                        ┌──────────▼──────────┐
16
+                        │  Nginx (反向代理)    │  :80 / :443
17
+                        │  SSL 终止 / 负载均衡  │
18
+                        └──────────┬──────────┘
19
+                                   │
20
+                   ┌───────────────┼───────────────┐
21
+                   │               │               │
22
+            ┌──────▼──────┐ ┌─────▼─────┐ ┌──────▼──────┐
23
+            │ Dify Web    │ │ Dify API  │ │ SSRF Proxy  │
24
+            │ (React SPA) │ │ (Flask)   │ │ (Squid)     │
25
+            │ :3000       │ │ :5001     │ │ :3128       │
26
+            └─────────────┘ └─────┬─────┘ └─────────────┘
27
+                                 │
28
+                    ┌────────────┼────────────┐
29
+                    │            │            │
30
+             ┌──────▼──────┐ ┌──▼────┐ ┌─────▼──────┐
31
+             │ PostgreSQL  │ │ Redis │ │  Qdrant    │
32
+             │ :5432      │ │ :6379 │ │  :6333     │
33
+             └─────────────┘ └───────┘ └────────────┘
34
+```
35
+
36
+---
37
+
38
+## 第一步:服务器准备
39
+
40
+### 1.1 系统要求
41
+
42
+- Ubuntu 22.04 LTS(推荐)
43
+- 最低 4 核 CPU / 8 GB RAM / 50 GB SSD
44
+- 推荐 8 核 CPU / 16 GB RAM / 100 GB SSD
45
+
46
+### 1.2 安装 Docker
47
+
48
+```bash
49
+# 更新系统
50
+sudo apt update && sudo apt upgrade -y
51
+
52
+# 安装 Docker
53
+curl -fsSL https://get.docker.com | sh
54
+
55
+# 安装 Docker Compose(如未自带)
56
+sudo apt install docker-compose-plugin -y
57
+
58
+# 验证安装
59
+docker --version
60
+docker compose version
61
+
62
+# 将当前用户加入 docker 组
63
+sudo usermod -aG docker $USER
64
+# 重新登录生效
65
+```
66
+
67
+---
68
+
69
+## 第二步:部署 Dify
70
+
71
+### 2.1 克隆项目
72
+
73
+```bash
74
+git clone http://git.xayunmei.com/yunmei/dify-app.git
75
+cd dify-app
76
+git checkout feature/dev
77
+```
78
+
79
+### 2.2 配置环境变量
80
+
81
+```bash
82
+cd docker
83
+
84
+# 复制模板
85
+cp .env.example .env
86
+
87
+# 生成 SECRET_KEY
88
+SECRET_KEY=$(openssl rand -hex 32)
89
+echo "生成的 SECRET_KEY: $SECRET_KEY"
90
+
91
+# 编辑 .env,填入实际值
92
+nano .env
93
+```
94
+
95
+**必须修改的配置项**:
96
+
97
+| 变量 | 说明 | 操作 |
98
+|------|------|------|
99
+| `SECRET_KEY` | 安全密钥 | 使用上面生成的值 |
100
+| `POSTGRES_PASSWORD` | 数据库密码 | 设置强密码 |
101
+| `REDIS_PASSWORD` | Redis 密码 | 设置强密码 |
102
+| `DEEPSEEK_API_KEY` | DeepSeek API Key | 从 DeepSeek 平台获取 |
103
+
104
+### 2.3 启动服务
105
+
106
+```bash
107
+# 拉取镜像
108
+docker compose pull
109
+
110
+# 启动所有服务
111
+docker compose up -d
112
+
113
+# 查看状态
114
+docker compose ps
115
+
116
+# 等待所有服务健康(约 30-60 秒)
117
+docker compose ps --format "table {{.Name}}\t{{.Status}}"
118
+```
119
+
120
+### 2.4 验证部署
121
+
122
+```bash
123
+# 检查 API 服务
124
+curl http://localhost:5001/health
125
+
126
+# 检查 Web 服务
127
+curl -I http://localhost:80
128
+```
129
+
130
+---
131
+
132
+## 第三步:初始化 Dify
133
+
134
+### 3.1 创建管理员账号
135
+
136
+1. 浏览器访问 `http://<服务器IP>:80`
137
+2. 首次访问进入设置向导
138
+3. 填写邮箱和密码,创建管理员账号
139
+4. 设置管理员姓名
140
+
141
+### 3.2 配置模型提供者
142
+
143
+1. 进入 Dify 控制台
144
+2. 导航到 **设置 → 模型提供者**
145
+3. 添加 **DeepSeek**:
146
+   - API Base: `https://api.deepseek.com`
147
+   - API Key: 填入实际的 DeepSeek API Key
148
+4. 验证连接成功
149
+
150
+### 3.3 创建知识库
151
+
152
+按 `docs/knowledge-base-structure.md` 中的结构创建知识库:
153
+
154
+| 知识库名称 | 说明 |
155
+|-----------|------|
156
+| KB-COMP-公司概况 | 公司简介、组织架构 |
157
+| KB-PROD-产品技术 | 产品手册、技术规范 |
158
+| KB-QUAL-质量管理 | 质量体系、检测标准 |
159
+| KB-RULE-制度流程 | 管理制度、审批流程 |
160
+| KB-TRAIN-培训学习 | 培训材料 |
161
+| KB-PROJ-项目档案 | 项目文档 |
162
+| KB-FAQ-常见问题 | FAQ |
163
+
164
+**每个知识库的分段配置**:
165
+- 分段模式:自动
166
+- 最大分段长度:500 tokens
167
+- 重叠长度:50 tokens
168
+
169
+### 3.4 上传文档
170
+
171
+1. 准备各部门的知识库文档(PDF/Word/Markdown)
172
+2. 按分类上传到对应知识库
173
+3. 等待索引完成
174
+4. 测试检索效果
175
+
176
+---
177
+
178
+## 第四步:配置对话应用
179
+
180
+### 4.1 创建聊天应用
181
+
182
+1. Dify 控制台 → **创建应用 → 聊天助手**
183
+2. 应用名称:**云美知识助手**
184
+3. 导入 DSL 配置(可选):
185
+   - 应用设置 → 右上角 → **导入 DSL**
186
+   - 上传 `dsl/app-config.yaml`
187
+4. 或手动配置(参考 `dsl/app-config.yaml` 中的参数)
188
+
189
+### 4.2 配置提示词
190
+
191
+复制 `prompts/system-prompt.md` 中的系统提示词到应用配置。
192
+
193
+### 4.3 关联知识库
194
+
195
+在应用的「知识库」设置中,关联已创建的所有知识库。
196
+
197
+### 4.4 配置推荐问题
198
+
199
+复制 `prompts/system-prompt.md` 中的推荐问题到应用配置。
200
+
201
+### 4.5 测试应用
202
+
203
+使用 Dify 内置的调试界面进行测试:
204
+
205
+```
206
+测试问题1:公司的组织架构是怎样的?
207
+测试问题2:差旅报销的标准和流程是什么?
208
+测试问题3:质量管理体系审核周期是多久?
209
+```
210
+
211
+对照 `tests/test-cases.md` 执行完整测试。
212
+
213
+---
214
+
215
+## 第五步:发布与接入
216
+
217
+### 5.1 发布应用
218
+
219
+1. 点击应用右上角 **发布**
220
+2. 选择 **运行环境**(生产环境)
221
+3. 确认发布
222
+
223
+### 5.2 获取 API Key
224
+
225
+1. 应用 → **访问 API**
226
+2. 创建 API Key
227
+3. 保存 Key(只显示一次)
228
+
229
+### 5.3 接入企业微信(可选)
230
+
231
+参考 `docs/api-integration.md` 中的企业微信集成示例。
232
+
233
+### 5.4 配置 Nginx SSL(生产环境必做)
234
+
235
+```bash
236
+# 将 SSL 证书放入 nginx/ssl/ 目录
237
+mkdir -p nginx/ssl
238
+
239
+# 编辑 Nginx 配置,启用 HTTPS
240
+# 修改 .env 中的 NGINX_SSL_PORT
241
+```
242
+
243
+---
244
+
245
+## 日常运维
246
+
247
+### 备份
248
+
249
+```bash
250
+# 数据库备份(建议设置 cron 每日执行)
251
+docker compose exec db pg_dump -U postgres dify > /backup/dify_$(date +%Y%m%d).sql
252
+
253
+# 向量库备份
254
+docker compose exec qdrant curl -X POST http://localhost:6333/snapshots
255
+```
256
+
257
+### 更新
258
+
259
+```bash
260
+cd docker
261
+docker compose pull
262
+docker compose up -d
263
+```
264
+
265
+### 监控
266
+
267
+```bash
268
+# 查看服务状态
269
+docker compose ps
270
+
271
+# 查看日志
272
+docker compose logs -f --tail=100 api
273
+docker compose logs -f --tail=100 worker
274
+
275
+# 查看资源占用
276
+docker stats --no-stream
277
+```
278
+
279
+---
280
+
281
+## 故障排查速查
282
+
283
+| 现象 | 排查命令 | 常见原因 |
284
+|------|---------|---------|
285
+| 页面打不开 | `docker compose ps` | 服务未启动 |
286
+| 模型不回复 | `docker compose logs api` | API Key 无效/过期 |
287
+| 知识库不检索 | `docker compose logs worker` | Worker 异常/索引未完成 |
288
+| 数据库连接失败 | `docker compose logs db` | 密码不一致 |
289
+| 磁盘空间不足 | `df -h` | 日志/数据膨胀 |
290
+
291
+---
292
+
293
+_最后更新: 2026-06-06_

+ 178
- 0
dsl/app-config.yaml Bestand weergeven

@@ -0,0 +1,178 @@
1
+# Dify Application DSL Configuration
2
+# 西安云美电子科技有限公司 - 企业知识库
3
+# 
4
+# 导入方法:Dify 控制台 → 应用 → 导入 DSL
5
+# 或通过 API:POST /v1/apps/import
6
+#
7
+# 注意:导入前需在 Dify 控制台中配置好 DeepSeek 模型提供者
8
+
9
+app:
10
+  name: 云美知识助手
11
+  description: 西安云美电子科技有限公司企业内部知识库对话助手,帮助员工快速检索公司文档和获取智能问答
12
+  mode: chat
13
+  icon: 🤖
14
+  icon_background: "#4F46E5"
15
+
16
+model_config:
17
+  # 使用 DeepSeek 模型
18
+  model:
19
+    provider: deepseek
20
+    name: deepseek-chat
21
+    mode: chat
22
+    completion_params:
23
+      temperature: 0.3          # 低温度,提高回答准确性
24
+      top_p: 0.8
25
+      max_tokens: 2048
26
+      presence_penalty: 0.0
27
+      frequency_penalty: 0.0
28
+
29
+  # 知识库检索配置
30
+  retriever_resource:
31
+    enabled: true
32
+    query_variable: query
33
+
34
+  # 知识库引用
35
+  dataset_query_variable: query
36
+
37
+  # 提示词配置
38
+  prompt_template:
39
+    - id: system-prompt
40
+      role: system
41
+      template: |
42
+        你是"云美知识助手",西安云美电子科技有限公司的内部 AI 助手。你的职责是帮助员工快速、准确地从公司知识库中检索信息并回答问题。
43
+
44
+        ## 身份与职责
45
+
46
+        - 你是云美电子科技的企业知识库助手
47
+        - 你负责帮助员工查找公司制度、产品技术、质量管理、培训资料等各类文档信息
48
+        - 你的回答必须基于知识库中的实际内容,不编造信息
49
+
50
+        ## 回答规范
51
+
52
+        1. **基于事实**:所有回答必须基于知识库文档中的内容,不得凭空编造或猜测
53
+        2. **标注来源**:回答时请注明信息来源的文档名称或分类(如"根据《XX产品手册》...")
54
+        3. **简洁清晰**:回答要直接、有条理,使用要点列表格式,避免冗长
55
+        4. **分类引导**:如果用户的问题涉及多个知识库分类,请分类回答
56
+        5. **不确定时说明**:如果知识库中没有相关信息,请明确告知用户"当前知识库中未找到相关信息",并建议联系对应部门
57
+
58
+        ## 知识库分类参考
59
+
60
+        - 📋 **公司概况**:公司简介、组织架构、联系方式
61
+        - 🔧 **产品技术**:产品手册、技术规范、技术方案
62
+        - ✅ **质量管理**:质量体系、检测标准、计量规程
63
+        - 📄 **制度流程**:管理制度、审批流程、操作规程
64
+        - 📚 **培训学习**:培训材料、学习资源
65
+        - 📁 **项目档案**:项目文档、合同模板
66
+        - ❓ **常见问题**:IT支持、行政事务、售后FAQ
67
+
68
+        ## 语气与风格
69
+
70
+        - 亲切但不随意,专业但不生硬
71
+        - 使用"您"称呼
72
+        - 适当使用 Emoji 增加可读性
73
+        - 回答控制在合理长度,避免大段文字堆砌
74
+
75
+    - id: user-query
76
+      role: user
77
+      template: "{{query}}"
78
+
79
+  # 知识库设置
80
+  dataset_configs:
81
+    # 参考的知识库列表(导入后需关联实际知识库)
82
+    datasets:
83
+      - name: KB-COMP-公司概况
84
+        description: 公司简介、组织架构、发展历程
85
+      - name: KB-PROD-产品技术
86
+        description: 产品手册、技术规范、研发文档
87
+      - name: KB-QUAL-质量管理
88
+        description: 质量体系、检测标准、计量规程
89
+      - name: KB-RULE-制度流程
90
+        description: 管理制度、审批流程、操作规程
91
+      - name: KB-TRAIN-培训学习
92
+        description: 培训材料、学习资源
93
+      - name: KB-PROJ-项目档案
94
+        description: 项目文档、合同模板
95
+      - name: KB-FAQ-常见问题
96
+        description: IT支持、行政事务、售后FAQ
97
+
98
+    # 检索参数
99
+    retrieval_model: vector      # vector / keyword / hybrid
100
+    top_k: 5                     # 检索返回的文档段落数
101
+    score_threshold: 0.5         # 相关性分数阈值
102
+    reranking_model: ""         # 预留重排序模型(可选)
103
+
104
+  # 对话配置
105
+  conversation:
106
+    # 开场白
107
+    opening_statement: |
108
+      👋 您好!我是**云美知识助手**,可以帮您查找公司各类文档和信息。
109
+
110
+      您可以直接提问,例如:
111
+      - "差旅报销的流程是什么?"
112
+      - "XX产品的技术参数是什么?"
113
+      - "质量管理体系的审核周期是多久?"
114
+
115
+      请问有什么可以帮您?
116
+
117
+    # 推荐问题
118
+    suggested_questions:
119
+      - 公司的组织架构是怎样的?
120
+      - 差旅报销的标准和流程是什么?
121
+      - 主要产品的技术参数在哪里可以查到?
122
+      - 质量管理体系文件如何获取?
123
+      - 新员工入职培训需要了解什么?
124
+      - IT 系统使用有问题怎么办?
125
+
126
+    # 下一步问题建议
127
+    suggested_questions_after_answer:
128
+      enabled: true
129
+
130
+    # 对话历史轮数
131
+    context_count: 10
132
+
133
+  # 功能配置
134
+  features:
135
+    # 文件上传(允许用户上传文件辅助提问)
136
+    file_upload:
137
+      image:
138
+        enabled: true
139
+        allowed_extensions:
140
+          - jpg
141
+          - jpeg
142
+          - png
143
+          - gif
144
+          - webp
145
+        max_size_mb: 10
146
+      document:
147
+        enabled: false
148
+
149
+    # 对话标题自动生成
150
+    conversation_title_auto_generate: true
151
+
152
+    # 敏感词过滤
153
+    sensitive_word_avoidance:
154
+      enabled: true
155
+      type: "keyword"          # keyword / regex
156
+      config:
157
+        - "密码"
158
+        - "薪资"
159
+        - "工资"
160
+        - "薪资标准"
161
+      canned_response: "抱歉,该问题涉及敏感信息,请通过正规渠道查询。"
162
+
163
+    # Token 限制
164
+    token_limit:
165
+      enabled: true
166
+      max_input_tokens: 3000
167
+      max_output_tokens: 2048
168
+
169
+    # 引用展示
170
+    citation:
171
+      enabled: true
172
+      position: "end"          # start / end
173
+
174
+# 环境变量引用说明
175
+# 导入 DSL 后,需要在 Dify 控制台手动配置以下内容:
176
+# 1. 模型提供者:添加 DeepSeek API Key
177
+# 2. 关联知识库:将 datasets 列表中的知识库关联到实际创建的知识库
178
+# 3. 确认提示词:检查 system-prompt 是否正确加载

+ 4
- 4
tasks.md Bestand weergeven

@@ -48,10 +48,10 @@
48 48
 
49 49
 ## M6: 应用配置导出与最终整理
50 50
 
51
-- [ ] M6.1.1 编写 `dsl/app-config.yaml`(Dify 应用 DSL 配置模板)
52
-- [ ] M6.1.2 编写 `docs/deployment-guide.md`(完整部署指南)
53
-- [ ] M6.1.3 创建项目 README.md
54
-- [ ] M6.1.4 整理最终目录结构,确保所有文件就绪
51
+- [x] M6.1.1 编写 `dsl/app-config.yaml`(Dify 应用 DSL 配置模板)
52
+- [x] M6.1.2 编写 `docs/deployment-guide.md`(完整部署指南)
53
+- [x] M6.1.3 创建项目 README.md
54
+- [x] M6.1.4 整理最终目录结构,确保所有文件就绪
55 55
 - [ ] M6.1.5 创建最终 Tag(v1.0.0)
56 56
 
57 57
 ---