Files
qiweimanager-master/本地改动说明_20260629.md
2026-06-29 17:44:22 +08:00

170 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本地改动说明(对比 origin/develop
生成时间2026-06-29
本地分支:`develop`
对比基准:`origin/develop`
远程仓库:`https://git.lzwcai.com/ly1213/qiweimanager-master.git`
> 说明:本文只梳理当前工作区相对 Git 远程基线的本地改动,未提交 Git也未改动远程仓库。
## 一、改动概览
本次本地改动主要围绕自动客服、素材发送、知识库重建提示和安装包资源打包四块:
1. 新增“只回复外部客户”开关,开启后企业内部成员消息会被自动忽略,不再触发 AI 回复或转人工。
2. 优化素材发送逻辑,支持按素材子文件夹命中问题场景,显式要求“全部”时才发送该匹配文件夹内全部素材。
3. 优化素材话术和发送顺序,统一使用“您”,并在发送图片/视频/动图后补充描述;发送文件时携带文件名,便于企微侧展示。
4. 命中素材时会把知识库中相关文字说明整理后一起发送,更接近真实客服“先说明、再发资料/或发完资料补描述”的场景。
5. 优化知识库重建错误提示:重建成功后清除旧的知识库错误;向量索引失败时保留明确错误和扫描统计。
6. 优化 Windows 安装包打包,把 `tools` 目录、PDF 渲染依赖 DLL、语音转码工具等运行资源纳入安装包。
## 二、功能改动明细
### 1. 只回复外部客户
- 配置结构新增 `identity.replyExternalOnly`,默认值为 `false`,保持原有行为不变。
- 前端“监听策略”区域新增开关:`只回复外部客户,忽略企业内部成员`
- 后端处理消息时,在身份识别完成后判断:
- 开关关闭:按原逻辑处理内部/外部/未知身份。
- 开关开启且识别为内部成员:直接忽略消息,记录原因为 `internal_ignored_external_only`
涉及文件:
- `config/types.go`
- `frontend/src/components/AutoReply.vue`
- `frontend/src/main.js`
- `helper/auto_reply.go`
- `helper/auto_reply_test.go`
### 2. 素材按文件夹/场景匹配发送
- 去掉了原先“全部资料”这类泛化请求直接短路的粗粒度逻辑,改为更细的判断:
- 用户只说“全部资料/全部文件”,但没有明确具体场景、文件夹或素材关键词时,不自动群发,仍走澄清/普通回复,避免误发大量资料。
- 用户带有明确场景或文件夹关键词例如“0505尾部切刀的资料全部发我”会发送匹配文件夹内的全部素材。
- 用户明确要求某类素材,例如“全部视频/全部图片”,会按类型收集对应素材。
- “资料/文件”不再默认只理解成普通文件;只有出现 `文档、表格、手册、说明书、ppt、pdf、doc、docx、xls、xlsx` 等明确文档词时,才限制为普通文件类型。
涉及文件:
- `helper/auto_reply_materials.go`
- `helper/auto_reply_test.go`
### 3. 素材发送话术与顺序
- 默认话术从“发你”改为“发给您”,包括图片、视频、动图、文件和组合素材话术。
- AI 生成素材开场白的 prompt 增加要求:必须使用“您”。
- 命中素材后,会先从知识库命中片段中整理最多 3 条文字说明,作为“相关排查说明”发送给客户。
- 发送顺序调整:
- 普通文件:先发说明话术,再发文件。
- 图片/视频/动图:先发素材,再发描述文字,使描述更像跟在图片或视频下面。
- 示例素材索引里的 caption 也同步改成“发给您”。
涉及文件:
- `helper/auto_reply_material_caption.go`
- `helper/auto_reply_materials.go`
- `config/materials/materials.json`
- `helper/auto_reply_test.go`
### 4. 文件消息展示文件名
- 普通文件消息 `type=11031` 发送时,额外传入文件名字段:
- `fileName`
- `file_name`
- 文件名从实际路径 `filepath.Base(path)` 提取。
- `requestdata/sendVWorkFileMessage.json` 同步增加文件名占位符,便于底层请求模板使用。
涉及文件:
- `helper/auto_reply_materials.go`
- `requestdata/sendVWorkFileMessage.json`
### 5. 知识库重建提示与错误状态
- 知识库重建接口在失败时也返回已扫描到的统计信息,包括耗时、文件数、分片数和失败文件列表,方便前端展示。
- 关键词模式下不强制重建向量索引。
- 混合/向量模式下,如果 embedding 重建失败,会返回已扫描的知识库索引并保留知识库错误。
- 知识库重建成功后,会清除旧的知识库错误,避免前端一直显示历史失败信息。
- 前端 section alert 支持 `success / warn / error` 三种类型,成功提示会自动清掉对应区域旧错误。
涉及文件:
- `helper/auto_reply_http.go`
- `helper/auto_reply_knowledge.go`
- `helper/auto_reply_status.go`
- `helper/auto_reply_knowledge_test.go`
- `frontend/src/components/AutoReply.vue`
### 6. 安装包运行资源打包
- NSIS 安装脚本新增复制 `$INSTDIR\tools`,安装后会带上运行工具目录。
- 打包脚本复制 `pdftoppm.exe` 时,会同步复制同目录 DLL避免部署环境缺 DLL 导致 PDF 解析不可用。
- 打包阶段将 `tools\pdf` 整个目录同步进 NSIS runtime。
- 当前本地已生成的新安装包中包含语音转码工具 `silkdecode.exe`
涉及文件:
- `build/windows/installer/project.nsi`
- `scripts/package-windows.ps1`
最新本地安装包:
`build/bin/qiweimanager-amd64-installer_20260629_145726.exe`
## 三、测试与验证情况
本地新增/调整的自动化测试覆盖了以下场景:
- 开启“只回复外部客户”后,内部成员消息不会触发回复,并记录忽略原因。
- 普通场景素材请求遵守 `maxPerReply` 限制。
- 明确要求某个匹配文件夹“全部资料”时,会发送该文件夹下全部素材。
- 泛化“全部资料都发我”不会直接群发。
- 素材默认话术统一改为“发给您”。
- 命中素材时,会把知识库相关说明与素材一起发送。
- 知识库重建成功后清除旧错误embedding 失败时保留知识库错误并返回扫描结果。
建议开发同事复核时运行:
```powershell
go test ./helper ./config
npm.cmd --prefix frontend run build
```
如果需要验证安装包资源,请重点检查安装目录下是否存在:
```text
tools/audio/silkdecode.exe
tools/pdf/pdftoppm.exe
```
## 四、注意事项
- 当前工作区还有 Wails 构建生成文件的差异痕迹,主要是 `frontend/wailsjs/runtime/runtime.d.ts``frontend/wailsjs/runtime/runtime.js`。这些看起来是 Wails CLI 版本差异造成的生成文件变化,不属于本次核心业务逻辑改动,建议提交前由开发同事确认是否需要保留。
- `go.mod`、部分 `frontend/wailsjs/go/*` 文件在 `git status` 中可能因换行符显示为修改,但当前 `git diff --name-only` 未显示实际内容差异。
- 本文档本身是新增的本地说明文件,不属于产品运行逻辑。
- 另有一份未跟踪文档 `yuanzhipeng提交内容梳理.md`,是之前梳理 yuanzhipeng 提交内容生成的说明文档。
## 五、当前实际内容差异文件
根据 `git diff --name-only`,当前有实际内容差异的文件如下:
```text
build/windows/installer/project.nsi
config/materials/materials.json
config/types.go
frontend/src/components/AutoReply.vue
frontend/src/main.js
frontend/wailsjs/runtime/runtime.d.ts
frontend/wailsjs/runtime/runtime.js
helper/auto_reply.go
helper/auto_reply_http.go
helper/auto_reply_knowledge.go
helper/auto_reply_knowledge_test.go
helper/auto_reply_material_caption.go
helper/auto_reply_materials.go
helper/auto_reply_status.go
helper/auto_reply_test.go
requestdata/sendVWorkFileMessage.json
scripts/package-windows.ps1
```