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

7.6 KiB
Raw Blame History

本地改动说明(对比 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 失败时保留知识库错误并返回扫描结果。

建议开发同事复核时运行:

go test ./helper ./config
npm.cmd --prefix frontend run build

如果需要验证安装包资源,请重点检查安装目录下是否存在:

tools/audio/silkdecode.exe
tools/pdf/pdftoppm.exe

四、注意事项

  • 当前工作区还有 Wails 构建生成文件的差异痕迹,主要是 frontend/wailsjs/runtime/runtime.d.tsfrontend/wailsjs/runtime/runtime.js。这些看起来是 Wails CLI 版本差异造成的生成文件变化,不属于本次核心业务逻辑改动,建议提交前由开发同事确认是否需要保留。
  • go.mod、部分 frontend/wailsjs/go/* 文件在 git status 中可能因换行符显示为修改,但当前 git diff --name-only 未显示实际内容差异。
  • 本文档本身是新增的本地说明文件,不属于产品运行逻辑。
  • 另有一份未跟踪文档 yuanzhipeng提交内容梳理.md,是之前梳理 yuanzhipeng 提交内容生成的说明文档。

五、当前实际内容差异文件

根据 git diff --name-only,当前有实际内容差异的文件如下:

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