From 289681743551c1f9c350d9e15c0d7620ae47b57e Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Fri, 16 Jan 2026 08:49:46 +0800
Subject: [PATCH] =?UTF-8?q?chore:=20=E5=88=A0=E9=99=A4=E4=B8=8D=E9=9C=80?=
=?UTF-8?q?=E8=A6=81=E7=9A=84=E9=A1=B5=E9=9D=A2=E5=8F=8Ademo=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
components/ai-chat-message/README.md | 271 ---------
components/ai-chat-message/demo.vue | 288 ----------
components/wxwork-contact/CHANGELOG.md | 66 ---
components/wxwork-contact/README.md | 484 ----------------
pages/dify-chat/dify-chat.vue | 20 -
pages_tool/kefu-demo/index.json | 6 -
pages_tool/kefu-demo/index.vue | 704 ------------------------
scripts/iconfontcss-generate-preview.js | 57 --
8 files changed, 1896 deletions(-)
delete mode 100644 components/ai-chat-message/README.md
delete mode 100644 components/ai-chat-message/demo.vue
delete mode 100644 components/wxwork-contact/CHANGELOG.md
delete mode 100644 components/wxwork-contact/README.md
delete mode 100644 pages/dify-chat/dify-chat.vue
delete mode 100644 pages_tool/kefu-demo/index.json
delete mode 100644 pages_tool/kefu-demo/index.vue
delete mode 100644 scripts/iconfontcss-generate-preview.js
diff --git a/components/ai-chat-message/README.md b/components/ai-chat-message/README.md
deleted file mode 100644
index 0f999a8..0000000
--- a/components/ai-chat-message/README.md
+++ /dev/null
@@ -1,271 +0,0 @@
-# AI智能客服组件
-
-一个功能完整的AI智能客服对话组件,支持多种消息类型和交互功能。
-
-## 功能特性
-
-- ✅ 支持对话上下文管理
-- ✅ 支持多种消息类型:文本、Markdown、文件、音频、视频、链接、商品卡片
-- ✅ 支持语音输入和录音
-- ✅ 支持图片、文件、位置等附件发送
-- ✅ 支持消息操作按钮(点赞、踩等)
-- ✅ 支持历史消息加载
-- ✅ 响应式设计,适配多端
-
-## 安装使用
-
-### 1. 引入组件
-
-在 `pages.json` 中注册组件:
-
-```json
-{
- "usingComponents": {
- "ai-chat-message": "/components/ai-chat-message/ai-chat-message"
- }
-}
-```
-
-### 2. 在页面中使用
-
-```vue
-
-
-
-
-
-
-
-```
-
-## Props 配置
-
-| 参数 | 类型 | 默认值 | 说明 |
-|------|------|--------|------|
-| initialMessages | Array | [] | 初始消息列表 |
-| userAvatar | String | '/static/images/default-avatar.png' | 用户头像 |
-| aiAvatar | String | '/static/images/ai-avatar.png' | AI头像 |
-| showLoadMore | Boolean | true | 是否显示加载更多 |
-| maxMessages | Number | 100 | 最大消息数量 |
-
-## Events 事件
-
-| 事件名 | 参数 | 说明 |
-|--------|------|------|
-| message-sent | message | 用户发送消息 |
-| ai-response | message | AI回复消息 |
-| action-click | {action, message} | 操作按钮点击 |
-| history-loaded | messages | 历史消息加载完成 |
-| file-preview | message | 文件预览 |
-| audio-play | message | 音频播放 |
-| audio-pause | message | 音频暂停 |
-| video-play | message | 视频播放 |
-| video-pause | message | 视频暂停 |
-| link-open | message | 链接打开 |
-| product-view | message | 商品查看 |
-| input-change | value | 输入内容变化 |
-
-## 消息类型格式
-
-### 文本消息
-```javascript
-{
- id: 1,
- role: 'user', // 或 'ai'
- type: 'text',
- content: '消息内容',
- timestamp: Date.now()
-}
-```
-
-### Markdown消息
-```javascript
-{
- id: 2,
- role: 'ai',
- type: 'markdown',
- content: '# 标题\n**粗体** *斜体* `代码`',
- timestamp: Date.now()
-}
-```
-
-### 文件消息
-```javascript
-{
- id: 3,
- role: 'ai',
- type: 'file',
- fileName: '文档.pdf',
- fileSize: 1024000,
- url: '文件地址',
- timestamp: Date.now()
-}
-```
-
-### 音频消息
-```javascript
-{
- id: 4,
- role: 'ai',
- type: 'audio',
- title: '语音消息',
- duration: 60, // 秒
- url: '音频地址',
- timestamp: Date.now()
-}
-```
-
-### 视频消息
-```javascript
-{
- id: 5,
- role: 'ai',
- type: 'video',
- title: '产品介绍',
- duration: 120, // 秒
- url: '视频地址',
- cover: '封面图',
- timestamp: Date.now()
-}
-```
-
-### 链接消息
-```javascript
-{
- id: 6,
- role: 'ai',
- type: 'link',
- title: '帮助文档',
- description: '详细的使用说明',
- url: 'https://example.com',
- image: '缩略图',
- timestamp: Date.now()
-}
-```
-
-### 商品卡片
-```javascript
-{
- id: 7,
- role: 'ai',
- type: 'product',
- title: '商品名称',
- price: 299,
- description: '商品描述',
- image: '商品图片',
- timestamp: Date.now()
-}
-```
-
-## 方法
-
-通过 ref 调用组件方法:
-
-```javascript
-// 添加消息
-this.$refs.chat.addMessage(message)
-
-// 清空消息
-this.$refs.chat.clearMessages()
-
-// 滚动到底部
-this.$refs.chat.scrollToBottom()
-```
-
-## 样式定制
-
-组件使用 SCSS 编写,可以通过 CSS 变量进行主题定制:
-
-```css
-.ai-chat-container {
- --primary-color: #ff4544;
- --bg-color: #f8f8f8;
- --text-color: #333;
-}
-```
-
-## 方法
-
-通过 ref 调用组件方法:
-
-```javascript
-// 添加消息
-this.$refs.chat.addMessage(message)
-
-// 清空消息
-this.$refs.chat.clearMessages()
-
-// 滚动到底部
-this.$refs.chat.scrollToBottom()
-
-// 开始语音输入
-this.$refs.chat.startVoiceInput()
-
-// 停止语音输入
-this.$refs.chat.stopVoiceInput()
-```
-
-## 样式定制
-
-组件使用 SCSS 编写,可以通过 CSS 变量进行主题定制:
-
-```css
-.ai-chat-container {
- --primary-color: #ff4544;
- --bg-color: #f8f8f8;
- --text-color: #333;
- --border-color: #eeeeee;
- --user-bg: #e6f7ff;
- --ai-bg: #f6f6f6;
-}
-```
-
-## 图标字体
-
-组件使用自定义图标字体,需要在页面中引入:
-
-```html
-
-```
-
-## 注意事项
-
-1. 组件已适配项目中已有的 `ns-loading` 组件
-2. 需要配置对应的图标字体文件
-3. 音频播放功能在 H5 和 APP 端支持较好
-4. 文件预览功能依赖平台能力
-5. 语音输入功能需要用户授权麦克风权限
\ No newline at end of file
diff --git a/components/ai-chat-message/demo.vue b/components/ai-chat-message/demo.vue
deleted file mode 100644
index dad9d5f..0000000
--- a/components/ai-chat-message/demo.vue
+++ /dev/null
@@ -1,288 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/wxwork-contact/CHANGELOG.md b/components/wxwork-contact/CHANGELOG.md
deleted file mode 100644
index bbd49e1..0000000
--- a/components/wxwork-contact/CHANGELOG.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# 企业微信联系客服组件更新日志
-
-## v2.0.0 - 集成全局Store配置
-
-### 新增功能
-- ✅ 企业微信配置集成到全局Store
-- ✅ 从 `/api/config/init` 统一获取配置
-- ✅ 支持props覆盖全局配置
-- ✅ 优化配置获取逻辑
-
-### 变更内容
-1. **Store集成**:
- - 在 `store/index.js` 中添加 `wxworkConfig` 状态
- - 添加 `setWxworkConfig` mutation
- - 在 `init` action 中从 `/api/config/init` 获取企业微信配置
-
-2. **组件优化**:
- - `wxwork-contact.vue` 组件现在优先从全局Store获取配置
- - 支持通过props覆盖全局配置
- - 移除单独的API调用,使用统一配置
-
-3. **页面集成**:
- - `pages/contact/contact.vue` 页面简化配置获取逻辑
- - 直接使用全局Store中的企业微信配置
-
-### 配置格式
-后端 `/api/config/init` 需要返回以下格式的企业微信配置:
-
-```json
-{
- "code": 0,
- "data": {
- // ... 其他配置 ...
- "wxwork": {
- "corp_id": "企业ID",
- "agent_id": "应用ID",
- "contact_id": "客服ID",
- "contact_url": "活码链接",
- "timestamp": "时间戳",
- "nonceStr": "随机字符串",
- "signature": "签名",
- "enabled": true
- }
- }
-}
-```
-
-### 使用方式
-```vue
-
-
-
-
-
-```
-
-## v1.0.0 - 初始版本
-
-### 功能
-- 企业微信JS-SDK封装
-- 基础联系客服组件
-- 支持小程序和H5环境
-- 活码跳转和SDK两种方式
\ No newline at end of file
diff --git a/components/wxwork-contact/README.md b/components/wxwork-contact/README.md
deleted file mode 100644
index ce09d20..0000000
--- a/components/wxwork-contact/README.md
+++ /dev/null
@@ -1,484 +0,0 @@
-# 企业微信联系客服组件
-
-## 功能说明
-
-这个组件实现了在小程序中点击"联系客服"后,自动跳转到企业微信添加对应销售的功能。
-
-## 关键前提条件
-
-### ⚠️ 重要提醒
-微信小程序与企业微信互通有严格的平台限制和权限要求,使用前请确保满足以下所有条件:
-
-### 1. 微信小程序环境要求
-- **平台限制**:功能仅在微信小程序环境中可用
-- **基础库版本**:需要微信小程序基础库 2.3.0 及以上版本
-- **用户环境**:用户需要在微信中打开小程序
-
-### 2. 企业微信配置要求
-- **企业认证**:企业微信账号必须完成企业认证
-- **客户联系功能**:需要开通企业微信"客户联系"功能
-- **应用权限**:企业微信应用需要有客户联系相关权限
-
-### 3. 互通配置要求
-- **关联配置**:小程序必须与企业微信进行关联配置
-- **权限申请**:需要在微信开放平台和企业微信后台分别申请相应权限
-- **域名白名单**:相关域名需要在小程序和企业微信后台都配置白名单
-
-### 4. 跳转权限要求
-- **小程序AppID**:需要在企业微信中配置允许跳转的小程序AppID
-- **企业微信AppID**:需要在微信开放平台配置关联的企业微信AppID
-- **业务域授权**:需要配置业务域授权,允许跨平台跳转
-
-### 5. 开发调试要求
-- **测试环境**:需要在测试环境中验证跳转功能
-- **权限验证**:确保所有必要的API权限已申请并生效
-- **兼容性测试**:在不同微信版本中进行兼容性测试
-
-### 6. 具体配置要求
-
-| 条件 | 说明 |
-|------|------|
-| **小程序与企业微信绑定** | 在企业微信管理后台 → 「应用管理」→「小程序」中关联你的微信小程序AppID |
-| **配置可信域名** | 如果涉及网页跳转或回调,需在企业微信后台配置业务域名 |
-| **使用企业微信服务商 or 自建应用** | 若需高级功能(如获取客户详情),需有企业微信管理员权限或通过服务商代开发 |
-
-## 使用方法
-
-### 1. 基础用法
-
-```vue
-
-
-```
-
-### 组件架构
-
-### 分层设计
-```
-调用方 (页面组件)
- ↓ 传递配置参数
-wxwork-contact 组件
- ↓ 调用SDK
-wxwork-jssdk.js
- ↓ 调用企业微信API
-企业微信服务
-```
-
-### 组件设计原则
-
-- **独立性**:组件不直接依赖全局Store,所有配置通过props传递
-- **职责分离**:组件只负责UI展示和企业微信SDK调用,配置管理由调用方负责
-- **灵活配置**:支持调用者覆盖任何配置参数
-
-## 版本信息
-
-### v3.0.0 - 统一客服服务重构版本
-- 创建 `CustomerService` 统一客服处理服务
-- 重构 `ns-contact.vue` 和 `hover-nav.vue` 消除重复代码
-- 提供统一的客服处理接口和平台适配
-- 完善错误处理和降级机制
-- 支持所有客服类型的统一调用
-
-### v2.0.0 - Store集成版本
-- 企业微信配置集成到全局Store
-- 从 `/api/config/init` 统一获取配置
-- 组件完全独立,通过props接收配置
-- 支持全局配置和局部覆盖
-
-### v1.0.0 - 初始版本
-- 基础企业微信联系功能
-- 支持活码跳转和JS-SDK两种方式
-
-### 2. 属性说明
-
-| 属性 | 类型 | 默认值 | 说明 |
-|------|------|--------|------|
-| btnText | String | '添加企业微信客服' | 按钮文字 |
-| corpId | String | - | 企业ID(必需) |
-| agentId | String | '' | 应用ID |
-| timestamp | String | '' | 时间戳 |
-| nonceStr | String | '' | 随机字符串 |
-| signature | String | '' | 签名 |
-| contactId | String | '' | 客服ID或活码配置ID |
-| contactUrl | String | '' | 活码链接 |
-| showConfirm | Boolean | true | 是否显示确认弹窗 |
-
-### 3. 在联系页面中使用
-
-在 `pages/contact/contact.vue` 中已集成使用示例:
-
-```vue
-
-
-```
-
-## 配置说明
-
-### 后端接口需求
-
-企业微信配置已集成到 `/api/config/init` 接口中,返回以下格式的数据:
-
-```json
-{
- "code": 0,
- "data": {
- // ... 其他配置 ...
- "wxwork": {
- "corp_id": "企业ID",
- "agent_id": "应用ID",
- "contact_id": "客服ID",
- "contact_url": "活码链接",
- "timestamp": "时间戳",
- "nonceStr": "随机字符串",
- "signature": "签名",
- "enabled": true
- }
- }
-}
-```
-
-### 全局Store集成
-
-企业微信配置通过以下方式集成到全局状态管理:
-
-1. **Store状态**:在 `store/index.js` 中添加 `wxworkConfig` 状态
-2. **配置获取**:在 `init` action 中从 `/api/config/init` 获取企业微信配置
-3. **状态更新**:使用 `setWxworkConfig` mutation 更新配置
-4. **持久化**:配置自动保存到本地存储
-
-### 企业微信配置步骤
-
-1. **获取企业微信活码**:
- - 登录企业微信管理后台
- - 进入"客户联系" -> "配置" -> "联系我"
- - 创建活码,获取配置ID或直接获取活码链接
-
-2. **配置参数**:
- - `corp_id`: 企业ID(在企业微信后台获取)
- - `agent_id`: 企业微信应用ID
- - `contact_id`: 客服的用户ID
- - `contact_url`: 企业微信活码链接(推荐使用活码链接)
- - `timestamp`: 生成签名的时间戳
- - `nonceStr`: 生成签名的随机字符串
- - `signature`: JS-SDK签名
-
-## 典型业务流程示例
-
-### 目标
-用户在小程序中点击"联系客服",自动添加对应的企业微信销售。
-
-### 步骤
-1. **后端调用企业微信 API** 创建「联系我」二维码(可带场景值,如 user_id=123)。
-2. **前端在小程序中展示该二维码(或生成跳转链接)**。
-3. **用户长按识别 → 打开企业微信 → 添加客服**。
-4. **企业微信收到添加事件 → 通过 API 获取 external_userid → 关联到原小程序用户**。
-
-## 实现原理
-
-### 方案1:企业微信活码跳转(推荐)
-- 使用企业微信活码链接
-- 通过 `uni.navigateToMiniProgram` 跳转到企业微信小程序
-- 直接添加对应的销售为联系人
-
-### 方案2:JS-SDK方式
-- 使用企业微信JS-SDK
-- 调用 `openUserProfile` 接口打开用户资料
-- 用户手动添加联系人
-
-## 注意事项
-
-### 功能限制
-1. **小程序环境**:需要在微信小程序环境中使用
-2. **权限配置**:确保小程序有跳转企业微信的权限
-3. **降级处理**:当企业微信不可用时,会降级到原有客服方式
-4. **用户体验**:建议添加确认弹窗,避免误操作
-
-### 前提条件验证
-5. **权限检查**:使用前需要验证所有必需权限是否生效
-6. **配置完整性**:确保所有配置参数都已正确设置
-7. **网络环境**:确保用户网络环境允许访问企业微信服务
-8. **版本兼容**:检查微信版本和企业微信版本兼容性
-
-### 调试建议
-9. **错误监控**:添加适当的错误日志和用户反馈机制
-10. **性能优化**:避免频繁的SDK初始化和配置获取
-11. **安全考虑**:敏感配置信息应在服务端处理,前端不暴露
-
-## 兼容性
-
-- 微信小程序:✅ 支持
-- H5环境:✅ 支持跳转活码链接
-- 其他平台:降级处理
-
-## 文件结构
-
-```
-components/wxwork-contact/
-├── wxwork-contact.vue # 主组件
-└── README.md # 说明文档
-
-components/ns-contact/
-└── ns-contact.vue # 统一客服组件(重构后)
-
-components/hover-nav/
-└── hover-nav.vue # 悬浮导航组件(重构后)
-
-common/js/
-├── wxwork-jssdk.js # 企业微信JS-SDK封装
-└── customer-service.js # 客服统一处理服务(新增)
-
-store/
-└── index.js # 全局Store,包含wxworkConfig状态管理
-
-pages/contact/
-└── contact.vue # 联系页面,集成企业微信功能
-```
-
-## 系统梳理与优化 (v3.1.0)
-
-### 🔧 已修复的问题
-
-#### 1. **App.vue 配置恢复**
-- ✅ 修复了企业微信配置 (`wxworkConfig`) 在应用启动时的恢复
-- ✅ 确保所有配置都能正确从本地存储恢复到Store
-
-#### 2. **客服服务参数传递**
-- ✅ 修复了 `openCustomerServiceChat` 参数传递错误
-- ✅ 正确传递 `sendMessageTitle`、`sendMessagePath`、`sendMessageImg`
-
-#### 3. **组件配置访问**
-- ✅ 在 `ns-contact.vue` 和 `hover-nav.vue` 中添加 computed 属性
-- ✅ 确保能够正确访问 `servicerConfig`
-
-#### 4. **企业微信服务优化**
-- ✅ 改进参数传递,支持自定义消息参数
-- ✅ 统一处理函数调用方式
-
-### 🛡️ 新增功能
-
-#### 1. **配置验证机制**
-```javascript
-const validation = this.customerService.validateConfig();
-if (!validation.isValid) {
- // 处理配置错误
-}
-```
-
-#### 2. **错误处理增强**
-- ✅ 添加配置错误弹窗
-- ✅ 改进错误日志记录
-- ✅ 警告信息提示
-
-#### 3. **类型安全**
-- ✅ 完善参数类型检查
-- ✅ 空值和异常情况处理
-
-### 📋 当前系统状态
-
-| 组件 | 状态 | 功能完整性 |
-|------|------|-----------|
-| **customer-service.js** | ✅ 完成 | 统一客服处理服务 |
-| **ns-contact.vue** | ✅ 修复 | 支持所有客服类型 |
-| **hover-nav.vue** | ✅ 修复 | 集成统一客服服务 |
-| **App.vue** | ✅ 修复 | 配置完整恢复 |
-| **contact.vue** | ⚠️ 待优化 | 仍使用原始方式 |
-
-### 🔄 待优化项
-
-#### 1. **contact.vue 页面重构**
-- 建议集成统一客服服务
-- 添加企业微信客服按钮
-- 统一UI交互体验
-
-#### 2. **加载状态反馈**
-- 客服功能调用时的loading状态
-- 网络请求的进度指示
-
-#### 3. **用户体验优化**
-- 客服按钮的点击反馈
-- 错误状态的友好提示
-
-### 🧪 测试建议
-
-1. **配置验证测试**:
- - 测试各种配置缺失情况
- - 验证错误提示准确性
-
-2. **平台兼容测试**:
- - 微信小程序客服功能
- - H5环境跳转
- - 支付宝小程序客服
-
-3. **企业微信功能测试**:
- - 活码链接跳转
- - 降级处理机制
- - 参数传递正确性
-
-### 📖 使用最佳实践
-
-```javascript
-// 推荐使用方式
-const customerService = createCustomerService(this);
-
-// 带配置验证的调用
-if (customerService.isConfigAvailable()) {
- customerService.handleCustomerClick({
- sendMessageTitle: '商品咨询',
- sendMessagePath: '/pages/goods/detail',
- sendMessageImg: 'product-image.jpg'
- });
-}
-```
-
-## 重构说明 (v3.0.0)
-
-### 统一客服处理服务
-
-为了解决代码重复问题,我们创建了 `CustomerService` 类来统一处理所有客服逻辑:
-
-#### 主要改进
-1. **代码复用**:消除 `ns-contact.vue` 和 `hover-nav.vue` 中的重复代码
-2. **统一接口**:提供一致的客服处理API
-3. **平台适配**:自动处理不同平台的客服配置
-4. **类型安全**:完善的错误处理和降级机制
-
-#### 使用方式
-
-**1. 在组件中导入**
-```javascript
-import { createCustomerService } from '@/common/js/customer-service.js';
-```
-
-**2. 初始化服务**
-```javascript
-created() {
- this.customerService = createCustomerService(this);
- this.buttonConfig = this.customerService.getButtonConfig();
-}
-```
-
-**3. 处理客服点击**
-```javascript
-methods: {
- contactServicer() {
- this.customerService.handleCustomerClick({
- niushop: this.niushop,
- sendMessageTitle: this.sendMessageTitle,
- sendMessagePath: this.sendMessagePath,
- sendMessageImg: this.sendMessageImg
- });
- }
-}
-```
-
-#### 核心方法
-
-| 方法名 | 用途 | 参数 |
-|--------|------|------|
-| `handleCustomerClick(options)` | 统一处理客服点击 | 客服配置选项 |
-| `getButtonConfig()` | 获取按钮配置 | - |
-| `getServiceType()` | 获取客服类型 | - |
-| `openWxworkService()` | 打开企业微信客服 | 是否使用原方式 |
-
-#### 支持的客服类型
-
-- `wxwork` - 企业微信客服
-- `third` - 第三方客服
-- `niushop` - 牛商客服
-- `weapp` - 微信小程序客服
-- `aliapp` - 支付宝小程序客服
-- `none` - 无客服(显示提示)
-
-## 常见问题 (FAQ)
-
-### Q: contact_id 是小程序ID吗?
-A: 不是的。`contact_id` 是**企业微信中客服人员的用户ID**,具体说明如下:
-
-- **定义**:企业微信系统内部分配给客服人员的唯一标识符
-- **获取方式**:通过企业微信管理后台的"客户联系" → "配置" → "联系我"功能创建活码时获得
-- **用途**:用于指定具体客服人员,当用户点击"联系客服"时,系统通过这个ID知道应该添加哪个企业微信客服人员
-
-### Q: contact_id 和小程序ID的区别?
-A: 两者的作用完全不同:
-
-| 字段 | 用途 | 获取方式 |
-|------|------|----------|
-| **contact_id** | 指定具体的企业微信客服人员 | 企业微信管理后台获取 |
-| **小程序AppID** | 识别整个微信小程序应用 | 微信开放平台获取 |
-
-在业务流程中:
-1. 用户在小程序中点击"联系客服"
-2. 系统使用 `contact_id` 打开对应的企业微信客服人员资料
-3. 用户添加该企业微信客服为联系人
-
-所以 `contact_id` 是企业微信客服的ID,不是小程序的ID。
-
-### Q: wxwork_contact_url 从哪里来?
-A: `wxwork_contact_url` 应该来自全局Store中的 `wxworkConfig`,而不是 `servicerConfig`:
-
-**正确的配置来源**:
-- ✅ `this.$store.state.wxworkConfig.contact_url` - 企业微信配置
-- ❌ `this.config.wxwork_contact_url` - 错误的配置路径
-
-**配置获取流程**:
-1. **后端接口**:`/api/config/init` 返回 `wxwork_config` 数据
-2. **Store存储**:`setWxworkConfig` 将配置保存到 `wxworkConfig` 状态
-3. **组件使用**:通过 `this.$store.state.wxworkConfig.contact_url` 访问
-
-**代码修正示例**:
-```javascript
-// 错误 ❌
-if (this.config.wxwork_contact_url) { ... }
-
-// 正确 ✅
-const wxworkConfig = this.$store.state?.wxworkConfig;
-if (wxworkConfig?.contact_url) { ... }
-```
-
-**字段对应关系**:
-| 后端字段 | Store字段 | 组件使用 |
-|---------|----------|----------|
-| `contact_url` | `contact_url` | `wxworkConfig.contact_url` |
-
-### Q: navigateToMiniProgram 中的企业微信小程序AppID 是指我的业务小程序ID吗?
-A: 不是的!`appId: 'wxeb490c6f9b154ef9'` 是**企业微信官方小程序的AppID**,不是你的业务小程序ID。
-
-**两者的区别**:
-
-| 小程序类型 | AppID示例 | 用途 | 所有者 |
-|-----------|----------|------|--------|
-| **企业微信官方小程序** | `wxeb490c6f9b154ef9` | 展示企业联系人详情页面 | 腾讯企业微信团队 |
-| **你的业务小程序** | 你的AppID | 你的业务功能(电商、服务等) | 你的企业/组织 |
-
-**业务流程**:
-```
-用户小程序 (你的业务)
- ↓ 点击"联系客服"
-navigateToMiniProgram 跳转到
-企业微信官方小程序 (wxeb490c6f9b154ef9)
- ↓ 展示联系人详情
-用户添加客服人员到企业微信
-```
-
-**关键点**:
-- 这个AppID是企业微信官方小程序,通常是固定值
-- 用于跳转到企业微信环境展示联系人详情
-- 不需要替换成你自己的小程序AppID |
\ No newline at end of file
diff --git a/pages/dify-chat/dify-chat.vue b/pages/dify-chat/dify-chat.vue
deleted file mode 100644
index f00cf88..0000000
--- a/pages/dify-chat/dify-chat.vue
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/kefu-demo/index.json b/pages_tool/kefu-demo/index.json
deleted file mode 100644
index 90b9bd8..0000000
--- a/pages_tool/kefu-demo/index.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "navigationBarTitleText": "智能客服演示",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black",
- "backgroundColor": "#f5f5f5"
-}
\ No newline at end of file
diff --git a/pages_tool/kefu-demo/index.vue b/pages_tool/kefu-demo/index.vue
deleted file mode 100644
index 6b9de75..0000000
--- a/pages_tool/kefu-demo/index.vue
+++ /dev/null
@@ -1,704 +0,0 @@
-
-
-
-
-
-
-
- 1. 智能客服聊天接口
-
-
-
-
-
- 回复结果:
- {{ chatResult }}
-
-
-
-
-
- 2. 创建新会话接口
-
-
- 会话信息:
- 会话ID: {{ conversationInfo.conversationId }}
- 创建时间: {{ conversationInfo.createdAt }}
-
-
-
-
-
- 3. 获取会话历史接口
-
-
-
- 历史记录 ({{ historyData.total }}条):
-
-
- {{ msg.role }}:
- {{ msg.content }}
- {{ msg.created_at }}
-
-
-
-
-
-
-
- 4. 系统健康检查
-
-
-
-
-
- 健康检查结果:
- 状态: {{ healthResult.status }}
- 检查ID: {{ healthResult.checkId }}
- 时间: {{ healthResult.timestamp }}
- 通过检查: {{ healthResult.passed_checks }}/{{ healthResult.total_checks }}
-
- 组件状态:
-
- {{ key }}: {{ component.status }}
- {{ component.message }}
- 响应时间: {{ component.response_time_ms }}ms
-
-
-
-
-
-
-
- 5. 获取服务配置信息
-
-
- 服务配置:
- 服务名称: {{ serviceInfoResult.serviceInfo?.name }}
- 服务版本: {{ serviceInfoResult.serviceInfo?.version }}
- 启用状态: {{ serviceInfoResult.serviceInfo?.enabled ? '已启用' : '未启用' }}
-
- 可用功能:
-
- {{ feature }}: {{ enabled ? '✓' : '✗' }}
-
-
-
- API端点:
-
- {{ name }}: {{ endpoint }}
-
-
-
-
-
-
-
- 6. 清除会话历史
-
-
-
-
-
- 清除结果:
- 删除消息数: {{ clearResult.deletedMessages }}
- 删除会话数: {{ clearResult.deletedConversations }}
-
-
-
-
-
- 7. 流式聊天测试
-
-
-
-
-
- 流式回复:
- {{ streamResult }}
-
-
-
-
-
- 8. 完整服务检查
-
-
-
-
-
- 9. 服务状态检查(兼容)
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/scripts/iconfontcss-generate-preview.js b/scripts/iconfontcss-generate-preview.js
deleted file mode 100644
index 3f6d58c..0000000
--- a/scripts/iconfontcss-generate-preview.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// generate-preview.js
-const fs = require('fs');
-const path = require('path');
-
-function generateIconfontPreview(cssPath, outputPath) {
- const cssContent = fs.readFileSync(cssPath, 'utf8');
-
- // 解析图标
- const iconRegex = /\.(icon-[^:]+):before\s*{\s*content:\s*["']\\([^"']+)["']/g;
- const icons = [];
- let match;
-
- while ((match = iconRegex.exec(cssContent)) !== null) {
- icons.push({
- className: match[1],
- unicode: '\\' + match[2]
- });
- }
-
- // 计算引入css文件相对于 outputPath的路径
- const relativeCssPath = path.relative(path.dirname(outputPath), cssPath);
-
- // 生成 HTML
- const html = `
-
-
- Iconfont Preview
-
-
-
-
- Iconfont Preview (${icons.length} icons)
-
- ${icons.map(icon => `
-
- `).join('')}
-
-
-`;
-
- fs.writeFileSync(outputPath, html);
- console.log(`预览已生成: ${outputPath}`);
-}
-
-// 使用
-const cssPath = path.join(__dirname, '../common/css/iconfont.css');
-const outputPath = path.join(__dirname, '../iconfont-preview.html');
-generateIconfontPreview(cssPath, outputPath);
\ No newline at end of file