# 售后开发底座二次开发与交付手册 > 内部资料,仅供公司开发、交付、售前技术同事使用。本文档用于帮助同事基于当前项目快速完成客户场景二次开发、打包交付和现场排错,不建议直接转发给客户。 ## 1. 文档定位 本项目是一个面向售后、设备运维、技术支持团队的本地化开发底座,核心能力可以概括为: ```text 微信售后数据采集 + 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 技术架构 ```text 用户打开桌面应用 | 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 首次依赖安装 后端依赖: ```powershell cd chatlog_fastAPI python -m pip install -r requirements.txt ``` 前端依赖: ```powershell cd chatlab-web\frontend npm install ``` 桌面壳依赖: ```powershell 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 微信数据服务 在项目根目录执行: ```powershell .\chatlog.exe server ``` 服务正常后,默认监听: ```text http://127.0.0.1:5030 ``` 可以用以下方式检查版本: ```powershell .\chatlog.exe version ``` ### 4.3 启动 FastAPI 后端 在项目根目录执行: ```powershell cd chatlog_fastAPI python main.py ``` 开发环境默认地址: ```text http://127.0.0.1:8000 ``` 健康检查地址: ```text 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 前端 在项目根目录执行: ```powershell cd chatlab-web\frontend npm run dev ``` 开发环境默认访问: ```text http://localhost:5173 ``` ### 4.5 启动 Electron 桌面壳 如果需要调试桌面壳: ```powershell cd electron-launcher npm run start ``` Electron 的关键职责: - 打开启动页和业务窗口。 - 启动 `chatlog.exe`。 - 启动 FastAPI 后端。 - 向后端注入运行目录、数据目录、后端端口等环境变量。 - 关闭应用时清理子进程。 - 打包后加载内置前端静态资源。 ## 5. 核心业务流程 ### 5.1 微信数据读取 前端不直接访问微信数据文件,而是通过 FastAPI 访问业务接口。FastAPI 再根据场景调用 `chatlog.exe` 提供的 API,或通过代理接口把请求转发给 chatlog。 ```text React 页面 -> FastAPI 业务接口 -> chatlog API -> 本机 PC 微信数据 ``` 这样做的好处: - 前端不需要知道 chatlog 的所有底层细节。 - 后端可以统一做数据格式清洗、分页、媒体解析和异常处理。 - 后续接入客户自己的数据源时,可以只改后端适配层。 ### 5.2 群聊和聊天记录检索 相关接口族: | 接口 | 用途 | |---|---| | `/api/search/chatrooms` | 搜索或加载群聊列表 | | `/api/search/sessions` | 获取最近会话列表 | | `/api/search/members` | 获取某个群的成员列表 | | `/api/search` | 按群、时间、发送人、关键词查询聊天记录 | 前端主要封装位置: ```text chatlab-web/frontend/src/api/index.js ``` 相关页面: ```text chatlab-web/frontend/src/pages/ChatlogPage.jsx ``` ### 5.3 AI 设置 相关接口: | 接口 | 用途 | |---|---| | `GET /api/settings` | 读取当前 AI 配置 | | `PUT /api/settings` | 保存 AI 配置 | 配置项包括: - AI 接口地址 - AI API Key - 话题分析模型 - 知识总结模型 - 视觉模型 - 语音模型 相关页面: ```text 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` | 基于话题消息生成知识文档 | 主要后端位置: ```text chatlog_fastAPI/routers/groups.py chatlog_fastAPI/routers/topics.py chatlog_fastAPI/services/topic_engine.py chatlog_fastAPI/services/summary_engine.py ``` 主要前端页面: ```text chatlab-web/frontend/src/pages/TopicsPage.jsx ``` 二开常见需求: - 修改话题分类提示词。 - 增加某个行业的故障类型字段。 - 针对不同客户群使用不同分析模板。 - 把“售后问题”改成“设备巡检”“工单处理”“客户投诉”等业务口径。 ### 5.5 知识库 相关接口族: | 接口 | 用途 | |---|---| | `GET /api/knowledge` | 查询知识文档列表,支持关键词 | | `GET /api/knowledge/{doc_id}` | 查看单篇知识文档 | | `PATCH /api/knowledge/{doc_id}` | 编辑并保存知识文档 | 相关后端位置: ```text chatlog_fastAPI/routers/knowledge.py chatlog_fastAPI/services/fts.py ``` 相关前端页面: ```text 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}` | 数据资源代理 | 相关后端位置: ```text chatlog_fastAPI/routers/files.py chatlog_fastAPI/routers/chatlog_proxy.py chatlog_fastAPI/services/media_resolver.py chatlog_fastAPI/services/media_parser.py ``` 前端消息展示组件: ```text 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 默认数据目录 桌面应用运行时,用户数据默认存放在: ```text %APPDATA%/ChatLab ``` 后端配置来源: ```text chatlog_fastAPI/config.py ``` 关键环境变量: | 变量 | 说明 | |---|---| | `CHATLAB_DATA_DIR` | 指定运行数据目录 | | `CHATLAB_STATIC_DIR` | 指定前端静态资源目录 | | `CHATLAB_BACKEND_PORT` | Electron 启动后端时注入的端口 | ### 7.2 微信账号数据库切换 项目会尝试识别当前登录的微信账号 `wxid`,并为不同账号使用不同知识库数据库: ```text knowledge.db knowledge_{wxid}.db ``` 这样做可以避免同一台电脑上多个微信账号的数据互相污染。 ### 7.3 核心数据表 核心表在 `chatlog_fastAPI/database.py` 的 `init_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/` 新建页面组件,例如: ```text chatlab-web/frontend/src/pages/WorkOrderPage.jsx ``` 2. 在 `chatlab-web/frontend/src/api/index.js` 中封装接口: ```js export const getWorkOrders = (params) => api.get('/api/work-orders', { params }) ``` 3. 在 `chatlab-web/frontend/src/App.jsx` 中增加导航入口和页面渲染分支。 4. 页面样式优先复用现有布局、按钮、表格、侧栏风格。 5. 如果页面依赖后端新接口,先用 Mock 数据搭好界面,再接真实 API。 注意: - 不建议在页面组件里散落大量 `fetch('/api/...')`。 - 已有 API 封装在 `src/api/index.js`,新接口也应集中管理。 - 新页面应考虑加载中、空数据、错误提示、重试按钮。 ### 8.3 新增后端接口 适用场景: - 给前端新增数据查询接口。 - 接入客户自己的系统数据。 - 增加新的统计分析能力。 - 增加新的导出能力。 推荐步骤: 1. 在 `chatlog_fastAPI/routers/` 新建路由文件,例如: ```text chatlog_fastAPI/routers/work_orders.py ``` 2. 定义 `APIRouter`: ```python from fastapi import APIRouter router = APIRouter(prefix="/api/work-orders", tags=["work-orders"]) ``` 3. 把业务逻辑放入 `chatlog_fastAPI/services/`,例如: ```text chatlog_fastAPI/services/work_order_service.py ``` 4. 在 `chatlog_fastAPI/main.py` 注册新 router: ```python from routers import work_orders app.include_router(work_orders.router) ``` 5. 在前端 `src/api/index.js` 中封装调用。 6. 在页面中接入接口并处理加载、失败、空数据状态。 注意: - 接口路径统一使用 `/api/...`。 - 需要访问 chatlog 数据时,优先复用已有 chatlog client 或代理逻辑。 - 不要让前端直接访问 SQLite 文件。 ### 8.4 新增数据表或字段 适用场景: - 给知识文档增加“设备型号”“客户名称”“故障等级”字段。 - 增加工单表。 - 增加客户项目配置表。 - 增加统计缓存表。 推荐步骤: 1. 在 `chatlog_fastAPI/database.py` 的 `init_db()` 中增加 `CREATE TABLE IF NOT EXISTS`。 2. 如果是给老表加字段,先通过 `PRAGMA table_info(...)` 检查字段是否存在。 3. 字段不存在时执行 `ALTER TABLE ... ADD COLUMN ...`。 4. 如果字段影响搜索,更新 FTS 写入逻辑。 5. 如果字段影响前端展示,同步修改接口返回和页面展示。 兼容原则: - 不要直接删除老字段。 - 不要直接清空老数据。 - 不要假设客户现场数据库一定是最新结构。 - 数据迁移必须可重复执行,多次启动不应报错。 ### 8.5 新增 AI 能力 适用场景: - 新增行业化话题分类。 - 新增设备故障根因分析。 - 新增日报、周报、月报。 - 新增图片识别、语音识别、文件摘要。 - 新增客户指定模板的知识文档生成。 推荐位置: ```text 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 和前端展示,而不是把模板逻辑写死在多个地方。 推荐字段: ```text 1. 问题标题 2. 适用设备或系统 3. 故障现象 4. 影响范围 5. 排查过程 6. 根本原因 7. 解决方案 8. 预防建议 9. 引用消息时间范围 10. 相关附件或图片 ``` 相关位置: ```text 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.json`、`electron-launcher/electron-builder.config.cjs`、`electron-launcher/main.js` | | 窗口标题 | `electron-launcher/main.js` | | 图标 | `scripts/make-icon.cjs`、`electron-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 客户数据管理 默认数据目录: ```text %APPDATA%/ChatLab ``` 交付时应告知客户: - 安装包升级不会自动删除本地数据。 - 如果客户要迁移电脑,需要迁移对应 AppData 数据目录。 - 如客户要求卸载时清理数据,需要单独提供清理方案。 - 严禁把客户现场数据库复制回开发机作为测试数据,除非客户明确授权并完成脱敏。 ## 10. 桌面打包交付 ### 10.1 一键打包 在项目根目录执行: ```powershell powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 ``` 脚本会依次完成: 1. 生成或刷新 Electron 图标。 2. 构建 React 前端。 3. 用 PyInstaller 构建 Python 后端。 4. 重置 `electron-launcher/build-resources`。 5. 复制 `chatlog.exe`、`lib/`、前端 `dist/`、后端 `dist/ChatLabBackend/`、许可证文件。 6. 扫描敏感文件,阻止 `.env`、数据库、证书、私钥、缓存进入发布资源。 7. 生成 `release/manifest.txt`。 8. 调用 `electron-builder` 生成 Windows 安装包。 9. 把安装包和 blockmap 复制到 `release/`。 10. 如果启用签名,校验安装包签名状态。 ### 10.2 常用跳过参数 调试时可以跳过部分步骤: ```powershell 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 powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 ` -Sign ` -CertificateFile "D:\certs\ChatLab-CodeSigning.pfx" ` -CertificatePassword "证书密码" ` -PublisherName "证书中的发布者名称" ` -ForceSign ``` 通过环境变量: ```powershell $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 交付文件 最终交付目录: ```text release/ ``` 交付时一般只需要提供最新的: ```text 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 连接正常 | `/health` 中 `chatlog_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_ok` 和 `chatlog_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`、数据库或证书文件。 排查命令: ```powershell node -v npm -v py -3.12 -V .\chatlog.exe version ``` 重新安装依赖: ```powershell 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 账号数据仍可继续使用。 如需强制刷新账号: ```text 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/` 中无 `.env`、`knowledge*.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. 快速命令索引 项目根目录: ```powershell C:\Users\12138\Desktop\get_wechat_new\用户使用版本\大铁\get_wechat_me ``` 检查 chatlog 版本: ```powershell .\chatlog.exe version ``` 安装后端依赖: ```powershell cd chatlog_fastAPI python -m pip install -r requirements.txt ``` 启动后端: ```powershell cd chatlog_fastAPI python main.py ``` 安装前端依赖: ```powershell cd chatlab-web\frontend npm install ``` 启动前端: ```powershell cd chatlab-web\frontend npm run dev ``` 构建前端: ```powershell cd chatlab-web\frontend npm run build ``` 启动桌面壳: ```powershell cd electron-launcher npm run start ``` 一键打包: ```powershell powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 ``` 只构建资源不生成安装包: ```powershell powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipInstaller ``` ## 17. 给同事的建议 拿到这个项目后,不建议一开始就改打包脚本或 Electron 主进程。更稳妥的顺序是: 1. 先完整跑通原项目。 2. 再改前端文案和页面。 3. 再改后端 Prompt 和接口。 4. 再做数据库兼容变更。 5. 最后做品牌、图标、安装包名称和签名。 如果客户需求只是“换一个行业场景”,大多数情况下优先改 Prompt、知识文档模板、页面文案和少量字段即可,不需要重构整体架构。