Files
get_wechat/售后开发底座二次开发交付手册.md

33 KiB
Raw Permalink Blame History

售后开发底座二次开发与交付手册

内部资料,仅供公司开发、交付、售前技术同事使用。本文档用于帮助同事基于当前项目快速完成客户场景二次开发、打包交付和现场排错,不建议直接转发给客户。

1. 文档定位

本项目是一个面向售后、设备运维、技术支持团队的本地化开发底座,核心能力可以概括为:

微信售后数据采集 + AI 话题分析 + 知识库沉淀 + Windows 桌面化交付

典型使用场景是:客户的售后工程师长期在微信群里处理设备故障、安装调试、备件更换、参数配置、软件升级等问题。项目通过读取本机 PC 微信聊天记录,把群消息、图片、语音、文件等内容接入到本地业务系统,再调用 AI 进行话题归类、问题总结和知识文档生成,最终形成可搜索、可编辑、可持续沉淀的售后知识库。

这套底座适合用于以下客户项目:

  • 设备制造企业售后知识库
  • 工业现场运维问题沉淀
  • 客户服务群自动归档
  • 技术支持经验库
  • 多客户微信群统一管理
  • 企业内部故障案例库
  • 针对某个行业的垂直售后 Agent

本文档面向两类同事:

  • 开发同事:理解目录结构、接口边界、数据流、二次开发位置、打包方式。
  • 交付同事理解安装部署、AI 配置、客户现场验证、常见问题排查。

2. 项目总览

当前项目采用“Electron 桌面壳 + React 前端 + FastAPI 后端 + chatlog 微信数据服务”的组合架构。业务逻辑主要留在前端和 Python 后端Electron 主要负责桌面运行、进程管理和安装包交付。

2.1 核心目录

模块 路径 技术栈 主要职责
桌面壳 electron-launcher/ Electron 启动窗口、启动本地服务、管理子进程、打包配置
前端页面 chatlab-web/frontend/ React + Vite 聊天记录、AI 话题分析、知识库、设置页面
业务后端 chatlog_fastAPI/ Python + FastAPI API 接口、AI 调用、SQLite 数据、定时任务、文件代理
微信数据服务 chatlog.exe Windows 可执行程序 读取本机 PC 微信数据,提供 127.0.0.1:5030 API
本地 DLL lib/windows_x64/wx_key.dll Windows DLL 配合微信数据能力
构建脚本 scripts/build-desktop.ps1 PowerShell 串联前端构建、后端打包、资源复制、安装包生成
发布目录 release/ 安装包输出 存放最终交付的 ChatLab-Setup-*.exe

2.2 技术架构

用户打开桌面应用
        |
        v
Electron 主进程
        |
        +--> 启动 chatlog.exe
        |       默认端口: 127.0.0.1:5030
        |
        +--> 启动 FastAPI 后端
        |       开发默认端口: 8000
        |       桌面打包后由 Electron 动态分配本地端口
        |
        +--> 等待 /health 和 chatlog 就绪
        |
        v
Electron 窗口加载业务页面
        |
        v
React 前端调用 FastAPI
        |
        v
FastAPI 调用 chatlog API / AI 模型 / SQLite 数据库

2.3 运行端口

端口 服务 说明
5030 chatlog.exe 微信数据服务,提供聊天记录、群聊、图片、语音、文件等底层数据
8000 FastAPI 开发环境常用后端端口,提供业务 API
5173 Vite 前端开发服务端口,仅开发环境使用

桌面安装包运行时,用户通常不会看到 5173,因为生产环境下前端静态资源由 FastAPI 托管。Electron 会启动后端并加载后端地址。

3. 环境要求

3.1 基础环境

软件 建议版本 说明
Windows Windows 10/11 64 位 当前项目优先面向 Windows 桌面交付
PC 微信 v4 版本 需要先登录 PC 微信,系统才能读取本地聊天数据
Node.js 20+ LTS 用于前端开发和 Electron 打包
Python 3.10+ 用于运行 FastAPI 后端
Python 打包版本 3.12 scripts/build-desktop.ps1 默认优先使用 py -3.12

3.2 首次依赖安装

后端依赖:

cd chatlog_fastAPI
python -m pip install -r requirements.txt

前端依赖:

cd chatlab-web\frontend
npm install

桌面壳依赖:

cd electron-launcher
npm install

4. 本地开发启动

开发时建议按下面顺序启动,方便定位问题。

4.1 启动前检查

  1. 确认 PC 微信已经登录。
  2. 确认当前项目根目录存在 chatlog.exe
  3. 确认 lib/windows_x64/wx_key.dll 存在。
  4. 确认 Node.js、Python 已安装并加入 PATH。
  5. 如果客户电脑安全软件拦截 chatlog.exe,需要先加入信任或用管理员权限运行。

4.2 启动 chatlog 微信数据服务

在项目根目录执行:

.\chatlog.exe server

服务正常后,默认监听:

http://127.0.0.1:5030

可以用以下方式检查版本:

.\chatlog.exe version

4.3 启动 FastAPI 后端

在项目根目录执行:

cd chatlog_fastAPI
python main.py

开发环境默认地址:

http://127.0.0.1:8000

健康检查地址:

http://127.0.0.1:8000/health

/health 返回中的关键字段:

字段 说明
ok FastAPI 是否正常
chatlog_ok FastAPI 是否能连通 chatlog.exe
chatlog_error chatlog 连接失败时的错误信息
wxid 当前识别到的微信账号
db_path 当前使用的知识库数据库路径
data_dir 当前运行数据目录

4.4 启动 React 前端

在项目根目录执行:

cd chatlab-web\frontend
npm run dev

开发环境默认访问:

http://localhost:5173

4.5 启动 Electron 桌面壳

如果需要调试桌面壳:

cd electron-launcher
npm run start

Electron 的关键职责:

  • 打开启动页和业务窗口。
  • 启动 chatlog.exe
  • 启动 FastAPI 后端。
  • 向后端注入运行目录、数据目录、后端端口等环境变量。
  • 关闭应用时清理子进程。
  • 打包后加载内置前端静态资源。

5. 核心业务流程

5.1 微信数据读取

前端不直接访问微信数据文件,而是通过 FastAPI 访问业务接口。FastAPI 再根据场景调用 chatlog.exe 提供的 API或通过代理接口把请求转发给 chatlog。

React 页面
  -> FastAPI 业务接口
    -> chatlog API
      -> 本机 PC 微信数据

这样做的好处:

  • 前端不需要知道 chatlog 的所有底层细节。
  • 后端可以统一做数据格式清洗、分页、媒体解析和异常处理。
  • 后续接入客户自己的数据源时,可以只改后端适配层。

5.2 群聊和聊天记录检索

相关接口族:

接口 用途
/api/search/chatrooms 搜索或加载群聊列表
/api/search/sessions 获取最近会话列表
/api/search/members 获取某个群的成员列表
/api/search 按群、时间、发送人、关键词查询聊天记录

前端主要封装位置:

chatlab-web/frontend/src/api/index.js

相关页面:

chatlab-web/frontend/src/pages/ChatlogPage.jsx

5.3 AI 设置

相关接口:

接口 用途
GET /api/settings 读取当前 AI 配置
PUT /api/settings 保存 AI 配置

配置项包括:

  • AI 接口地址
  • AI API Key
  • 话题分析模型
  • 知识总结模型
  • 视觉模型
  • 语音模型

相关页面:

chatlab-web/frontend/src/pages/SettingsPage.jsx

注意事项:

  • 不要把 API Key 写死到前端或后端代码。
  • 不要把客户真实 Key 写进 .env 后再打包。
  • 交付前应使用客户现场提供的模型地址和 Key。

5.4 话题分析

相关接口族:

接口 用途
/api/groups 管理需要分析的微信群
/api/groups/{group_id}/init 初始化某个群的话题分析
/api/groups/{group_id}/task 查询分析任务状态
/api/topics 查询或创建话题
/api/topics/{topic_id} 查看、修改、删除单个话题
/api/topics/{topic_id}/messages 向话题添加消息
/api/topics/{topic_id}/messages/{seq} 从话题移除消息
/api/topics/{topic_id}/summarize 基于话题消息生成知识文档

主要后端位置:

chatlog_fastAPI/routers/groups.py
chatlog_fastAPI/routers/topics.py
chatlog_fastAPI/services/topic_engine.py
chatlog_fastAPI/services/summary_engine.py

主要前端页面:

chatlab-web/frontend/src/pages/TopicsPage.jsx

二开常见需求:

  • 修改话题分类提示词。
  • 增加某个行业的故障类型字段。
  • 针对不同客户群使用不同分析模板。
  • 把“售后问题”改成“设备巡检”“工单处理”“客户投诉”等业务口径。

5.5 知识库

相关接口族:

接口 用途
GET /api/knowledge 查询知识文档列表,支持关键词
GET /api/knowledge/{doc_id} 查看单篇知识文档
PATCH /api/knowledge/{doc_id} 编辑并保存知识文档

相关后端位置:

chatlog_fastAPI/routers/knowledge.py
chatlog_fastAPI/services/fts.py

相关前端页面:

chatlab-web/frontend/src/pages/KnowledgePage.jsx

知识库使用 SQLite FTS 做全文检索。二开时如果要新增知识字段,应同时考虑:

  • 数据表是否需要新增字段。
  • 搜索索引是否需要同步更新。
  • 前端展示是否要增加筛选条件。
  • Word 导出模板是否要同步调整。

5.6 文件、图片、语音、视频

相关接口族:

接口 用途
/api/files/{md5} 根据文件 MD5 获取附件
/image/{path:path} 图片资源代理
/voice/{path:path} 语音资源代理
/video/{path:path} 视频资源代理
/file/{path:path} 文件资源代理
/data/{path:path} 数据资源代理

相关后端位置:

chatlog_fastAPI/routers/files.py
chatlog_fastAPI/routers/chatlog_proxy.py
chatlog_fastAPI/services/media_resolver.py
chatlog_fastAPI/services/media_parser.py

前端消息展示组件:

chatlab-web/frontend/src/components/MessageBubble.jsx

6. 接口清单

下面是二开时最常用的接口族。新增能力时,优先复用这些接口边界,不要绕过 FastAPI 直接从前端访问底层数据。

接口 方法 说明
/health GET 后端健康检查,同时检查 chatlog 连接状态
/api/system/refresh-account POST 强制刷新当前微信账号并切换对应数据库
/api/system/chatlog-context GET/POST 读取或写入 chatlog 运行上下文
/api/search GET 聊天记录搜索
/api/search/chatrooms GET 群聊列表搜索
/api/search/members GET 群成员列表
/api/search/sessions GET 最近会话列表
/api/groups GET/POST/PATCH/DELETE 管理被分析的群
/api/topics GET/POST/PATCH/DELETE 管理 AI 识别的话题
/api/knowledge GET/PATCH 管理知识文档
/api/settings GET/PUT 管理 AI 配置
/api/ai/parse POST 解析单条消息中的图片、语音、文件等内容
/api/ai/summarize/stream POST 流式生成聊天摘要
/api/sse/chatlog GET 聊天记录 SSE 实时订阅
/api/files/{md5} GET 获取本地附件文件
/api/v1/{path:path} 多方法 chatlog API 代理接口

7. 数据目录与数据库

7.1 默认数据目录

桌面应用运行时,用户数据默认存放在:

%APPDATA%/ChatLab

后端配置来源:

chatlog_fastAPI/config.py

关键环境变量:

变量 说明
CHATLAB_DATA_DIR 指定运行数据目录
CHATLAB_STATIC_DIR 指定前端静态资源目录
CHATLAB_BACKEND_PORT Electron 启动后端时注入的端口

7.2 微信账号数据库切换

项目会尝试识别当前登录的微信账号 wxid,并为不同账号使用不同知识库数据库:

knowledge.db
knowledge_{wxid}.db

这样做可以避免同一台电脑上多个微信账号的数据互相污染。

7.3 核心数据表

核心表在 chatlog_fastAPI/database.pyinit_db() 中初始化:

用途
groups 已添加到系统中进行分析的微信群
topics AI 或人工创建的话题
topic_messages 话题和聊天消息的关联
knowledge_docs 生成后的知识文档
knowledge_fts 知识库全文检索索引
ai_tasks AI 分析和总结任务状态
app_settings AI 地址、模型、Key 等配置

8. 二次开发指南

8.1 开发原则

二开时优先遵守以下原则:

  1. 业务入口放前端页面,核心逻辑放 FastAPI 后端。
  2. 前端统一通过 src/api/index.js 调用接口。
  3. 后端新增接口放到 chatlog_fastAPI/routers/
  4. 可复用的业务逻辑放到 chatlog_fastAPI/services/
  5. 数据结构变更写在 database.py:init_db() 中,并兼容老客户数据。
  6. AI 能力优先复用现有 ai_client.py 和设置页配置。
  7. 不要在代码中写死客户名称、API Key、证书密码、客户数据路径。
  8. 客户定制内容尽量集中在文案、提示词、模板、配置项,减少对底层架构的改动。

8.2 新增前端页面

适用场景:

  • 给客户新增一个“工单看板”。
  • 新增“设备型号分析”页面。
  • 新增“客户问题统计”页面。
  • 新增“知识导出”页面。

推荐步骤:

  1. chatlab-web/frontend/src/pages/ 新建页面组件,例如:
chatlab-web/frontend/src/pages/WorkOrderPage.jsx
  1. chatlab-web/frontend/src/api/index.js 中封装接口:
export const getWorkOrders = (params) => api.get('/api/work-orders', { params })
  1. chatlab-web/frontend/src/App.jsx 中增加导航入口和页面渲染分支。
  2. 页面样式优先复用现有布局、按钮、表格、侧栏风格。
  3. 如果页面依赖后端新接口,先用 Mock 数据搭好界面,再接真实 API。

注意:

  • 不建议在页面组件里散落大量 fetch('/api/...')
  • 已有 API 封装在 src/api/index.js,新接口也应集中管理。
  • 新页面应考虑加载中、空数据、错误提示、重试按钮。

8.3 新增后端接口

适用场景:

  • 给前端新增数据查询接口。
  • 接入客户自己的系统数据。
  • 增加新的统计分析能力。
  • 增加新的导出能力。

推荐步骤:

  1. chatlog_fastAPI/routers/ 新建路由文件,例如:
chatlog_fastAPI/routers/work_orders.py
  1. 定义 APIRouter
from fastapi import APIRouter

router = APIRouter(prefix="/api/work-orders", tags=["work-orders"])
  1. 把业务逻辑放入 chatlog_fastAPI/services/,例如:
chatlog_fastAPI/services/work_order_service.py
  1. chatlog_fastAPI/main.py 注册新 router
from routers import work_orders

app.include_router(work_orders.router)
  1. 在前端 src/api/index.js 中封装调用。
  2. 在页面中接入接口并处理加载、失败、空数据状态。

注意:

  • 接口路径统一使用 /api/...
  • 需要访问 chatlog 数据时,优先复用已有 chatlog client 或代理逻辑。
  • 不要让前端直接访问 SQLite 文件。

8.4 新增数据表或字段

适用场景:

  • 给知识文档增加“设备型号”“客户名称”“故障等级”字段。
  • 增加工单表。
  • 增加客户项目配置表。
  • 增加统计缓存表。

推荐步骤:

  1. chatlog_fastAPI/database.pyinit_db() 中增加 CREATE TABLE IF NOT EXISTS
  2. 如果是给老表加字段,先通过 PRAGMA table_info(...) 检查字段是否存在。
  3. 字段不存在时执行 ALTER TABLE ... ADD COLUMN ...
  4. 如果字段影响搜索,更新 FTS 写入逻辑。
  5. 如果字段影响前端展示,同步修改接口返回和页面展示。

兼容原则:

  • 不要直接删除老字段。
  • 不要直接清空老数据。
  • 不要假设客户现场数据库一定是最新结构。
  • 数据迁移必须可重复执行,多次启动不应报错。

8.5 新增 AI 能力

适用场景:

  • 新增行业化话题分类。
  • 新增设备故障根因分析。
  • 新增日报、周报、月报。
  • 新增图片识别、语音识别、文件摘要。
  • 新增客户指定模板的知识文档生成。

推荐位置:

chatlog_fastAPI/services/ai_client.py
chatlog_fastAPI/routers/ai.py
chatlog_fastAPI/services/topic_engine.py
chatlog_fastAPI/services/summary_engine.py
chatlab-web/frontend/src/pages/SettingsPage.jsx

开发原则:

  • 模型地址、模型名、API Key 从设置页或后端配置读取。
  • Prompt 模板可以放在 service 层,避免散落在前端。
  • 客户行业术语、设备型号、输出格式应抽象为可配置文本。
  • 生成结果必须允许人工编辑,不能假设 AI 输出完全正确。
  • 流式输出接口适合长文档生成,普通接口适合短文本解析。

8.6 修改知识文档模板

如果客户要求固定格式,例如“故障现象、影响范围、排查步骤、根因、解决方案、预防措施”,应优先修改总结 Prompt 和前端展示,而不是把模板逻辑写死在多个地方。

推荐字段:

1. 问题标题
2. 适用设备或系统
3. 故障现象
4. 影响范围
5. 排查过程
6. 根本原因
7. 解决方案
8. 预防建议
9. 引用消息时间范围
10. 相关附件或图片

相关位置:

chatlog_fastAPI/services/summary_engine.py
chatlab-web/frontend/src/components/ReportDocumentView.jsx
chatlab-web/frontend/src/utils/wordExport.js

8.7 客户品牌和交付包定制

常见定制项:

定制项 位置
应用名称 electron-launcher/package.jsonelectron-launcher/electron-builder.config.cjselectron-launcher/main.js
窗口标题 electron-launcher/main.js
图标 scripts/make-icon.cjselectron-launcher/build/
前端页面标题 chatlab-web/frontend/src/App.jsx 或相关页面
菜单名称 chatlab-web/frontend/src/App.jsx
安装包名称 electron-launcher/electron-builder.config.cjs
默认 AI 口径 chatlog_fastAPI/services/ 中相关 Prompt

定制时建议先确认:

  • 客户对外显示名称。
  • 安装包名称。
  • 是否需要客户 Logo。
  • 是否要隐藏“ChatLab”字样。
  • 是否需要增加免责声明或授权说明。

9. 配置与数据安全

9.1 不允许进入安装包的内容

以下内容禁止进入 release/ 交付包:

  • .env
  • knowledge*.db
  • 客户真实聊天记录
  • 客户真实 API Key
  • 代码签名证书
  • 证书密码
  • 私钥文件
  • __pycache__
  • 临时测试文件

构建脚本 scripts/build-desktop.ps1 已经包含敏感文件扫描逻辑,二开时不得移除或绕过。

9.2 API Key 管理

AI API Key 应通过设置页写入系统配置。对外演示、客户现场部署和正式交付时,应由客户或项目负责人提供真实 Key。

日志中不应输出完整 Key。Electron 主进程已有日志脱敏逻辑,二开新增日志时也要遵守同样原则。

9.3 客户数据管理

默认数据目录:

%APPDATA%/ChatLab

交付时应告知客户:

  • 安装包升级不会自动删除本地数据。
  • 如果客户要迁移电脑,需要迁移对应 AppData 数据目录。
  • 如客户要求卸载时清理数据,需要单独提供清理方案。
  • 严禁把客户现场数据库复制回开发机作为测试数据,除非客户明确授权并完成脱敏。

10. 桌面打包交付

10.1 一键打包

在项目根目录执行:

powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1

脚本会依次完成:

  1. 生成或刷新 Electron 图标。
  2. 构建 React 前端。
  3. 用 PyInstaller 构建 Python 后端。
  4. 重置 electron-launcher/build-resources
  5. 复制 chatlog.exelib/、前端 dist/、后端 dist/ChatLabBackend/、许可证文件。
  6. 扫描敏感文件,阻止 .env、数据库、证书、私钥、缓存进入发布资源。
  7. 生成 release/manifest.txt
  8. 调用 electron-builder 生成 Windows 安装包。
  9. 把安装包和 blockmap 复制到 release/
  10. 如果启用签名,校验安装包签名状态。

10.2 常用跳过参数

调试时可以跳过部分步骤:

powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipIcon
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipFrontend
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipBackend
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipInstaller

常见用途:

参数 用途
-SkipIcon 图标没变时节省时间
-SkipFrontend 前端已经构建过,只调试后端或安装包
-SkipBackend 后端已经构建过,只调试前端或安装包
-SkipInstaller 只生成资源,不生成最终安装包

10.3 代码签名

未签名安装包在客户电脑上可能触发 Windows SmartScreen 或安全软件提示。正式客户交付建议使用代码签名证书。

通过命令传参:

powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 `
  -Sign `
  -CertificateFile "D:\certs\ChatLab-CodeSigning.pfx" `
  -CertificatePassword "证书密码" `
  -PublisherName "证书中的发布者名称" `
  -ForceSign

通过环境变量:

$env:CHATLAB_PFX_FILE = "D:\certs\ChatLab-CodeSigning.pfx"
$env:CHATLAB_PFX_PASSWORD = "证书密码"
$env:CHATLAB_CERT_PUBLISHER_NAME = "证书中的发布者名称"
$env:CHATLAB_FORCE_SIGN = "1"
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1

签名相关变量:

变量 说明
CHATLAB_PFX_FILE PFX/P12 证书完整路径
CHATLAB_PFX_PASSWORD 证书密码
CHATLAB_CERT_PUBLISHER_NAME 可选,证书发布者名称
CHATLAB_TIMESTAMP_SERVER 可选,默认时间戳服务器
CHATLAB_FORCE_SIGN 设置为 1 时,签名失败会中断构建

证书安全要求:

  • 证书文件必须放在项目目录外。
  • 不要把证书、私钥、密码提交到项目目录。
  • 不要把证书复制到 electron-launcher/build-resources
  • 不要把证书路径写入对客户可见的文档。

10.4 交付文件

最终交付目录:

release/

交付时一般只需要提供最新的:

ChatLab-Setup-*.exe

如果客户需要升级包校验或自动更新能力,再根据实际方案提供 .blockmap 等配套文件。

11. 客户项目落地流程

11.1 需求确认

二开前至少确认以下信息:

项目 需要确认的问题
客户场景 是售后、运维、客服、巡检,还是其他业务
微信群规模 需要分析几个群,每个群大概多少消息
数据范围 是否只分析指定群,是否包含个人聊天
AI 部署 使用公网模型、客户内网模型,还是 AgentBox 本地模型
模型能力 是否需要图片识别、语音识别、长文总结
知识模板 客户希望沉淀成什么格式
权限要求 谁能看知识库,是否需要账号系统
隐私口径 是否允许读取 PC 微信数据,是否需要客户授权说明
交付方式 安装包、本地部署、远程协助,还是现场部署
验收标准 客户认为什么结果算成功

11.2 二开实施顺序

推荐实施顺序:

  1. 先跑通原始项目,确认 chatlog、FastAPI、前端、Electron 都正常。
  2. 修改客户可见的产品名称、页面文案、菜单名。
  3. 修改话题分析 Prompt 和知识文档模板。
  4. 根据客户需求新增页面或接口。
  5. 增加必要的数据表和迁移逻辑。
  6. 接入客户指定 AI 模型地址。
  7. 完成前端构建和桌面打包。
  8. 在测试机安装,跑完整验收流程。
  9. 输出安装包、部署说明、客户现场配置说明。

11.3 现场部署步骤

交付同事现场部署建议按下面顺序:

  1. 安装 Windows 桌面安装包。
  2. 登录 PC 微信。
  3. 启动桌面应用。
  4. 等待应用完成微信数据识别。
  5. 进入设置页配置 AI 地址、API Key、模型名称。
  6. 打开聊天记录页,确认群列表和消息可见。
  7. 进入 AI 话题分析页,添加一个目标群。
  8. 选择一个较小时间范围跑首次分析。
  9. 生成一篇知识文档。
  10. 进入知识库页搜索关键词。
  11. 重启应用,确认配置和知识库数据仍然存在。

11.4 验收清单

验收项 通过标准
应用能启动 桌面应用打开后无白屏、无异常退出
微信数据可读 群列表可见,聊天记录可查询
chatlog 连接正常 /healthchatlog_ok=true
AI 配置可保存 设置页保存后刷新仍能看到配置
话题分析可执行 添加群后可以生成话题列表
知识文档可生成 对某个话题可生成结构化知识文档
知识库可搜索 输入关键词能检索到相关文档
数据可持久化 重启后群、话题、知识库仍存在
安装包可复装 卸载重装或覆盖安装后应用可打开
客户口径一致 页面名称、文档模板、提示词符合客户项目要求

12. 常见问题排查

12.1 群列表为空

可能原因:

  • PC 微信没有登录。
  • chatlog.exe 没有启动。
  • 5030 端口被占用或被拦截。
  • 微信版本不兼容。
  • 安全软件拦截了 chatlog.exe 或 DLL。

排查步骤:

  1. 确认 PC 微信已登录。
  2. 在项目根目录执行 .\chatlog.exe version
  3. 启动 .\chatlog.exe server
  4. 访问或检查 http://127.0.0.1:5030 是否可用。
  5. 打开 FastAPI /health,查看 chatlog_okchatlog_error
  6. 必要时用管理员身份启动应用。

12.2 AI 无响应或分析失败

可能原因:

  • 设置页没有配置 API Key。
  • AI 接口地址不正确。
  • 模型名称不正确。
  • 客户内网无法访问模型服务。
  • 模型不支持当前请求格式。
  • 长文本超出模型上下文限制。

排查步骤:

  1. 进入设置页检查 AI 接口地址。
  2. 检查 API Key 是否为空。
  3. 检查话题分析模型、知识总结模型、视觉模型、语音模型名称。
  4. 用较小时间范围重新测试。
  5. 查看后端日志中的 AI 错误信息。
  6. 如果是客户内网模型,确认本机能访问模型服务地址。

12.3 前端打不开或白屏

开发环境排查:

  • 确认 npm run dev 正常运行。
  • 确认浏览器访问 http://localhost:5173
  • 确认 FastAPI 正常运行。
  • 检查浏览器控制台报错。

生产安装包排查:

  • 确认安装包内有前端静态资源。
  • 确认 CHATLAB_STATIC_DIR 指向正确资源目录。
  • 确认 Electron 能启动 FastAPI。
  • 查看 Electron 启动页日志。

12.4 打包失败

常见原因:

  • Node.js 未安装或版本过低。
  • Python 3.12 未安装。
  • PyInstaller 未安装。
  • 前端依赖缺失。
  • 后端依赖缺失。
  • chatlog.exe 不存在。
  • lib/windows_x64/wx_key.dll 不存在。
  • 敏感文件扫描发现 .env、数据库或证书文件。

排查命令:

node -v
npm -v
py -3.12 -V
.\chatlog.exe version

重新安装依赖:

cd chatlab-web\frontend
npm install

cd ..\..\chatlog_fastAPI
python -m pip install -r requirements.txt

12.5 客户电脑提示不安全

可能原因:

  • 安装包未签名。
  • 客户电脑安全策略严格。
  • Windows SmartScreen 对未知发布者提示风险。
  • 安全软件对读取微信数据的工具敏感。

处理建议:

  • 正式交付使用代码签名证书。
  • 给客户 IT 提供发布者、安装包哈希、部署说明。
  • 必要时由客户 IT 加入白名单。
  • 对外说明系统为本地读取和本地分析,不主动发送微信消息。

12.6 换微信账号后数据变化

系统会自动识别当前微信账号,并切换到对应数据库。表现为:

  • A 账号生成的知识库在 A 账号数据库中。
  • B 账号登录后,会切换到 B 账号数据库。
  • 切回 A 账号后A 账号数据仍可继续使用。

如需强制刷新账号:

POST /api/system/refresh-account

13. 开发交付检查清单

13.1 开发完成前

  • 新增页面已接入导航。
  • 新增接口已在 main.py 注册。
  • 前端 API 已集中封装到 src/api/index.js
  • 数据库变更已写兼容迁移。
  • AI Prompt 已按客户场景调整。
  • 页面空状态、加载状态、错误状态完整。
  • 未写死客户 API Key。
  • 未把客户数据放入项目目录。
  • 未破坏原有聊天记录、话题分析、知识库功能。

13.2 打包前

  • chatlog.exe 存在且版本检查通过。
  • lib/windows_x64/wx_key.dll 存在。
  • 前端 npm run build 成功。
  • 后端 PyInstaller 构建成功。
  • release/manifest.txt 已生成。
  • release/ 中无 .envknowledge*.db、证书、私钥。
  • 安装包名称、图标、产品名符合客户项目。

13.3 交付前

  • 在干净测试机安装成功。
  • PC 微信登录后群列表正常。
  • AI 设置可保存。
  • 能完成一次话题分析。
  • 能生成一篇知识文档。
  • 能搜索知识库。
  • 应用重启后数据不丢。
  • 客户部署说明已准备。
  • 客户隐私和数据使用口径已确认。

14. 推荐二开场景示例

14.1 设备售后知识库

目标:

  • 自动整理客户微信群中的设备故障处理过程。
  • 生成标准故障案例。
  • 支持按设备型号、故障现象、备件名称搜索。

重点改造:

  • 修改话题分析 Prompt让 AI 关注设备型号、故障现象、处理结论。
  • 修改知识文档模板,增加“设备型号”“故障等级”“备件清单”。
  • 在知识库页面增加设备型号筛选。

14.2 运维日报生成

目标:

  • 每天自动总结微信群里的运维事项。
  • 输出今日问题、处理中事项、已解决事项、风险提醒。

重点改造:

  • 新增日报页面。
  • 新增后端日报接口。
  • 复用 /api/search 拉取当天消息。
  • 调用 AI 生成日报。
  • 可选增加 Word 导出。

14.3 客服投诉归档

目标:

  • 从客户服务群中识别投诉、建议、售后问题。
  • 按客户、产品线、严重程度归档。

重点改造:

  • 修改话题分类规则。
  • 新增投诉等级字段。
  • 新增统计看板。
  • 知识库模板改成“投诉原因、处理过程、补偿方案、复盘建议”。

15. 重要注意事项

  1. 本系统依赖 PC 微信本地数据读取能力,部署前必须确认客户允许该类本地工具运行。
  2. 本系统默认只做读取、分析和归档,不应主动向客户微信群发送消息。
  3. AI 生成内容必须允许人工编辑和复核,不能直接作为最终技术结论。
  4. 二开时优先控制改动范围避免同时大改前端、后端、Electron 和打包脚本。
  5. 客户现场问题优先看 /health、Electron 启动日志、FastAPI 日志、AI 设置页。
  6. 打包脚本中的敏感文件扫描是交付安全底线,不要删除。
  7. 如果客户需要私有化模型,应先确认模型是否兼容 OpenAI 格式接口。
  8. 如果客户群消息量很大,首次分析建议限制时间范围,先小批量验收。

16. 快速命令索引

项目根目录:

C:\Users\12138\Desktop\get_wechat_new\用户使用版本\大铁\get_wechat_me

检查 chatlog 版本:

.\chatlog.exe version

安装后端依赖:

cd chatlog_fastAPI
python -m pip install -r requirements.txt

启动后端:

cd chatlog_fastAPI
python main.py

安装前端依赖:

cd chatlab-web\frontend
npm install

启动前端:

cd chatlab-web\frontend
npm run dev

构建前端:

cd chatlab-web\frontend
npm run build

启动桌面壳:

cd electron-launcher
npm run start

一键打包:

powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1

只构建资源不生成安装包:

powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipInstaller

17. 给同事的建议

拿到这个项目后,不建议一开始就改打包脚本或 Electron 主进程。更稳妥的顺序是:

  1. 先完整跑通原项目。
  2. 再改前端文案和页面。
  3. 再改后端 Prompt 和接口。
  4. 再做数据库兼容变更。
  5. 最后做品牌、图标、安装包名称和签名。

如果客户需求只是“换一个行业场景”,大多数情况下优先改 Prompt、知识文档模板、页面文案和少量字段即可不需要重构整体架构。