[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73652":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},73652,"xianyu-auto-reply","zhinianboke\u002Fxianyu-auto-reply","zhinianboke","闲鱼自动回复管理系统是一个基于 Python + FastAPI 开发的自动化客服系统，专为闲鱼平台设计。系统通过 WebSocket 连接闲鱼服务器，实时接收和处理消息，提供智能化的自动回复服务。同时集成闲鱼自动发货，自动评价，自动擦亮等功能，实现闲鱼虚拟商品自动化流程。","https:\u002F\u002Fxy.zhinianboke.com\u002F",null,"Python",4984,1380,20,14,0,68,163,479,204,108.42,false,"main",true,[],"2026-06-12 04:01:10","# 闲鱼自动回复系统\n\n本文档面向运维与部署人员，详细说明本项目的部署流程、依赖版本、环境变量、常用运维命令与故障排查方法。\n\n## 交流群\n\n| 微信群 | 微信群1 | QQ群 |\n|:---:|:---:|:---:|\n| ![微信群](https:\u002F\u002Fgithub.com\u002Fzhinianboke\u002Fxianyu-auto-reply\u002Fblob\u002F20260423_old\u002Fstatic\u002Fwechat-group.png?raw=true) | ![微信群1](https:\u002F\u002Fgithub.com\u002Fzhinianboke\u002Fxianyu-auto-reply\u002Fblob\u002F20260423_old\u002Fstatic\u002Fwechat-group1.png?raw=true) | ![QQ群](https:\u002F\u002Fgithub.com\u002Fzhinianboke\u002Fxianyu-auto-reply\u002Fblob\u002F20260423_old\u002Fstatic\u002Fqq-group.png?raw=true) |\n\n---\n\n## 目录\n\n- [一、项目简介](#一项目简介)\n- [二、Python 版本要求](#二python-版本要求重要)\n- [三、部署方式总览](#三部署方式总览)\n- [四、方式一：Docker 加密源码构建](#四方式一docker-加密源码构建推荐)\n- [五、方式二：本地源码运行](#五方式二本地源码运行开发调试)\n- [六、方式三：Windows EXE 打包](#六方式三windows-exe-打包)\n- [七、推广返佣子系统](#七推广返佣子系统可选模块)\n- [八、环境变量配置说明](#八环境变量配置说明)\n- [九、常用运维命令](#九常用运维命令)\n- [十、数据持久化与备份](#十数据持久化与备份)\n- [十一、故障排查](#十一故障排查)\n- [十二、安全建议](#十二安全建议)\n- [十三、目录结构参考](#十三目录结构参考)\n- [十四、版本与许可](#十四版本与许可)\n\n---\n\n## 一、项目简介\n\n本项目是一个基于微服务架构的闲鱼自动回复与运营管理系统，由前端、Backend-Web、WebSocket、Scheduler、MySQL、Redis 共 6 个核心服务组成，支持 Docker Compose 一键部署，也支持 Windows EXE 单机打包运行。\n\n### 1.1 服务拓扑\n\n| 服务名 | 容器名 | 默认端口 | 说明 |\n| --- | --- | --- | --- |\n| `frontend` | `xianyu-frontend` | `9000` | 前端站点（Nginx + 前端构建产物） |\n| `backend-web` | `xianyu-backend-web` | `8089` | 主业务后端（FastAPI） |\n| `websocket` | `xianyu-websocket` | `8090` | 闲鱼 WebSocket 接入与浏览器自动化 |\n| `scheduler` | `xianyu-scheduler` | `8091` | 定时任务（重发、限流统计等） |\n| `mysql` | `xianyu-mysql` | 仅内网 `3306` | MySQL 8.0 |\n| `redis` | `xianyu-redis` | 仅内网 `6379` | Redis 7（开启密码与 AOF） |\n\n### 1.2 功能特性\n\n#### 核心功能\n- **智能自动回复**：通过 WebSocket 实时接入闲鱼 IM 消息，支持 AI（OpenAI）和关键词匹配两种回复模式\n- **多账号管理**：支持管理多个闲鱼账号，通过 Cookie 或扫码登录\n- **在线聊天**：WebSocket 实时在线聊天界面，支持人工介入\n\n#### 运营功能\n- **订单管理**：自动获取和管理闲鱼订单\n- **商品管理**：商品信息管理、搜索、批量操作\n- **自动发货**：卡密自动发货、自动确认收货\n- **自动评价**：自动给买家好评\n- **自动重新上架**：商品定时重发\u002F擦亮\n- **商品发布**：批量发布商品到闲鱼\n- **Cookie 管理**：自动刷新 Cookie 保持登录状态\n\n#### 管理功能\n- **用户系统**：多用户、管理员\u002F普通用户角色\n- **激活码系统**：软件授权激活（含硬件绑定）\n- **仪表盘**：数据统计和可视化\n- **风险控制**：风控日志记录\n- **公告\u002F广告**：系统公告和广告位管理\n- **通知系统**：消息通知渠道配置\n- **验证码处理**：极验（Geetest）滑动验证码自动识别\n\n#### 推广分销（可选）\n- **淘宝联盟**：淘宝联盟推广集成\n- **分销体系**：代理商、子代理商管理\n- **对账结算**：资金流和结算管理\n\n### 1.3 技术栈\n\n| 层 | 技术 |\n|----|------|\n| 前端 | React 18 + TypeScript + Vite + Tailwind CSS + Zustand |\n| 后端 | Python 3.11\u002F3.12 + FastAPI + SQLAlchemy + Uvicorn |\n| 数据库 | MySQL 8.0 + Redis 7 |\n| 浏览器自动化 | Playwright (Chromium) |\n| AI | OpenAI API |\n| 消息接入 | WebSocket（闲鱼 IM） |\n| 部署 | Docker Compose \u002F Windows EXE（Nuitka） |\n| 源码保护 | Cython 编译 |\n\n### 1.4 核心仓库目录\n\n| 目录 | 作用 |\n| --- | --- |\n| `backend-web\u002F` | Backend-Web 服务源码与 `Dockerfile` |\n| `websocket\u002F` | WebSocket 服务源码与 `Dockerfile` |\n| `scheduler\u002F` | Scheduler 服务源码与 `Dockerfile` |\n| `common\u002F` | 跨服务共享的数据库、工具与服务模块 |\n| `frontend\u002F` | 主前端（React + Vite） |\n| `promotion\u002F` | 推广返佣子系统（可选模块，存在时自动启用） |\n| `launcher\u002F` | EXE 单机版统一启动器入口 |\n| `docker\u002F` | 前端镜像构建上下文 |\n| `scripts\u002F` | 辅助脚本（按端口停止服务等） |\n\n---\n\n## 二、Python 版本要求（重要）\n\n不同部署方式对 Python 版本要求**不一样**，请严格按照下表选择：\n\n| 部署方式 | Python 版本 | 说明 |\n| --- | --- | --- |\n| Docker 加密源码构建 | **不需要本机 Python** | 镜像内统一使用 Python 3.11 |\n| 本地源码运行（Windows） | **必须 Python 3.12（64 位）** | 仓库内 `.pyd` 加密产物为 `cp312-win_amd64`，其它版本无法加载 |\n| 本地源码运行（Linux） | **必须 Python 3.11** | 仓库内 `.so` 加密产物为 `cpython-311-x86_64-linux-gnu`，其它版本无法加载 |\n| Windows EXE 打包 | **必须 Python 3.12（且为 64 位）** | 同上，打包时需加载 `.pyd` |\n| Windows EXE 运行 | **无需安装 Python** | 打包脚本会把 `python.exe` 与 `Lib` 一起带入发布包 |\n\n> **特别提醒**：Linux 容器使用的 `.so` 文件名是 `cpython-311-x86_64-linux-gnu.so`，因此 **Linux 容器内的 Python 必须是 3.11**。Dockerfile 已锁定 `python:3.11-slim`，请勿擅自升级到 3.12。\n\n### 2.1 检查本机 Python 版本\n\nWindows PowerShell：\n\n```powershell\npython --version\n# 期望输出：Python 3.12.x\n```\n\nLinux \u002F macOS：\n\n```bash\npython3 --version\n```\n\n---\n\n## 三、部署方式总览\n\n本项目提供 **3 种部署\u002F运行方式**，请根据使用场景选择：\n\n| 方式 | 适用场景 | 入口 |\n| --- | --- | --- |\n| 方式一：Docker 加密源码构建 | 生产\u002F私有部署，源码加密 | 远程一键脚本 |\n| 方式二：本地源码运行 | 本地开发调试，不依赖 Docker | 各服务 `main.py` \u002F `启动.bat` |\n| 方式三：Windows EXE 打包 | Windows 单机离线分发 | `EXE打包构建.bat` |\n\n---\n\n## 四、方式一：Docker 加密源码构建（推荐）\n\n适用于私有部署、源码不便外发的场景，构建过程会对 Python 源码进行 **Cython 编译**，最终镜像内只保留 `.so` 二进制。\n\n### 4.1 前置条件\n\n| 项目 | 要求 |\n| --- | --- |\n| Docker | `>= 20.10` |\n| Docker Compose | `>= 1.29` |\n| 磁盘 | 至少 30 GB（编译过程占用较高） |\n| 内存 | 建议 8 GB 以上（Cython 编译比较吃内存） |\n\n### 4.2 部署步骤\n\n#### 4.2.1 服务器一键部署（推荐）\n\n服务器已安装 Docker 与 Docker Compose 后，直接执行加密版一键部署脚本即可：\n\n```bash\ncurl -fsSL https:\u002F\u002Fxy-update.zhinianboke.com\u002Fdeploy_enc.sh | sed 's\u002F\\r$\u002F\u002F' | bash\n```\n\n该脚本会自动完成加密版部署所需的配置生成、镜像构建、旧容器清理与服务启动。\n\n\n更新版本，直接执行加密版一键更新脚本即可：\n```bash\ncurl -fsSL https:\u002F\u002Fxy-update.zhinianboke.com\u002Fupdate_enc.sh | sed 's\u002F\\r$\u002F\u002F' | bash\n```\n\n\n---\n\n## 五、方式二：本地源码运行（开发调试）\n\n适用于本地开发调试场景，不依赖 Docker，直接在本机运行各服务。\n\n### 5.1 环境要求\n\n| 项目 | 要求 | 说明 |\n|------|------|------|\n| Python | Windows: **3.12**；Linux: **3.11** | 仓库内加密产物按平台锁定版本，不可混用 |\n| Node.js | `>= 18`（带 `npm`） | 前端构建与开发 |\n| MySQL | `8.0` | 需提前安装并启动 |\n| Redis | `7.x` | 需提前安装并启动 |\n| Playwright | 自动安装 | 首次运行需下载 Chromium |\n\n### 5.2 准备数据库与 Redis\n\n```sql\n-- 登录 MySQL 创建数据库\nCREATE DATABASE xianyu_data CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n```\n\n确保 Redis 服务已启动，记下端口和密码。\n\n### 5.3 配置环境变量\n\n每个服务目录下都有 `.env.example`，复制为 `.env` 并修改：\n\n```powershell\n# 后端服务\nCopy-Item backend-web\\.env.example backend-web\\.env\nCopy-Item websocket\\.env.example websocket\\.env\nCopy-Item scheduler\\.env.example scheduler\\.env\n```\n\n**必须修改的配置**（三个 `.env` 文件中保持一致）：\n\n| 变量 | 说明 |\n|------|------|\n| `MYSQL_HOST` | MySQL 地址，本机一般为 `localhost` |\n| `MYSQL_USER` | MySQL 用户名 |\n| `MYSQL_PASSWORD` | MySQL 密码 |\n| `MYSQL_DATABASE` | 数据库名，如 `xianyu_data` |\n| `REDIS_HOST` | Redis 地址，本机一般为 `localhost` |\n| `REDIS_PASSWORD` | Redis 密码（无密码留空） |\n| `JWT_SECRET_KEY` | JWT 密钥，建议改为随机字符串 |\n\n### 5.4 安装依赖\n\n```powershell\n# 后端依赖（三个服务分别安装）\ncd backend-web; pip install -e .; cd ..\ncd websocket; pip install -e .; cd ..\ncd scheduler; pip install -e .; cd ..\n\n# 安装 Playwright 浏览器（WebSocket 服务需要）\npython -m playwright install chromium\n\n# 前端依赖\ncd frontend; npm install; cd ..\n```\n\n> 建议使用虚拟环境（`python -m venv .venv`）隔离依赖，避免污染全局 Python 环境。\n\n### 5.5 启动服务\n\n需要同时运行 **4 个进程**（后端 3 个 + 前端 1 个），建议使用 4 个终端窗口：\n\n```powershell\n# 终端 1：启动 Backend-Web（默认端口 8089）\ncd backend-web\npython main.py\n\n# 终端 2：启动 WebSocket（默认端口 8090）\ncd websocket\npython main.py\n\n# 终端 3：启动 Scheduler（默认端口 8091）\ncd scheduler\npython main.py\n\n# 终端 4：启动前端开发服务器（默认端口 9000）\ncd frontend\nnpm run dev\n```\n\n启动成功后访问：\n\n```\nhttp:\u002F\u002Flocalhost:9000\n```\n\n### 5.6 Windows 快捷启动\n\n各服务目录下提供了 `启动.bat` 和 `停止.bat` 脚本，双击即可快速启停：\n\n```\nbackend-web\u002F启动.bat    # 启动 Backend-Web\nbackend-web\u002F停止.bat    # 停止 Backend-Web\nwebsocket\u002F启动.bat      # 启动 WebSocket\nscheduler\u002F启动.bat      # 启动 Scheduler\nfrontend\u002F启动.bat       # 启动前端\n```\n\n### 5.7 注意事项\n\n- 前端开发服务器（`npm run dev`）会自动将 `\u002Fapi` 请求代理到 `localhost:8089`，无需额外配置\n- 三个后端服务的 `.env` 中数据库和 Redis 配置必须一致\n- 首次启动后端服务会自动创建数据库表\n- WebSocket 服务依赖 Playwright（Chromium），首次运行会自动下载浏览器\n\n---\n\n## 六、方式三：Windows EXE 打包\n\n适用于 Windows 单机离线分发的场景，将整个系统打包成一个独立可执行目录。\n\n### 6.1 打包机环境要求\n\n| 项目 | 要求 | 备注 |\n| --- | --- | --- |\n| 操作系统 | Windows 10 \u002F 11 或 Windows Server 2019 \u002F 2022（64 位） | 必须 64 位 |\n| **Python** | **必须 3.12.x（64 位）** | **不能是 3.11、3.13** |\n| Node.js | `>= 18`（带 `npm`） | 用于构建前端 |\n| Nuitka | 自动安装 | 脚本内会自动 `pip install nuitka ordered-set zstandard` |\n| 磁盘 | 至少 15 GB 空闲 | Nuitka 编译与 Chromium 下载需要较大空间 |\n| 网络 | 可访问 PyPI 与 Playwright 官方源 | 用于安装依赖与下载 Chromium |\n\n### 6.2 安装 Python 3.12 的注意事项\n\n1. 从 [python.org](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002Frelease\u002Fpython-3120\u002F) 下载 **Windows installer (64-bit)**。\n2. 安装时勾选 `Add python.exe to PATH`。\n3. **务必**使用 64 位版本（仓库内的 `.pyd` 文件名为 `cp312-win_amd64`）。\n4. 安装完成后在 PowerShell 中验证：\n\n```powershell\npython --version\n# 必须输出：Python 3.12.x\n\npython -c \"import platform; print(platform.architecture())\"\n# 必须输出：('64bit', 'WindowsPE')\n```\n\n### 6.3 安装项目依赖（打包前）\n\nEXE 打包脚本会调用 `python -m playwright install chromium`，因此需要先在打包机上安装项目依赖：\n\n```powershell\n# 在仓库根目录执行\npython -m pip install --upgrade pip\npython -m pip install playwright\npython -m playwright install chromium\n\n# 安装 Nuitka 打包脚本中 --include-package= 列出的运行时依赖\npython -m pip install fastapi \"uvicorn[standard]\" sqlalchemy asyncmy pymysql `\n    pydantic pydantic-settings email-validator aiohttp aiohttp-socks `\n    \"python-jose[cryptography]\" \"passlib[bcrypt]\" bcrypt loguru httpx redis `\n    pycryptodome requests python-dateutil pandas openpyxl websockets `\n    python-multipart \"qrcode[pil]\" Pillow apscheduler \"python-socks[asyncio]\" `\n    openai\n```\n\n> 项目使用 `pyproject.toml` 管理依赖，未提供 `requirements.txt`。上面的命令覆盖了打包脚本所需的全部第三方包。\n\n### 6.4 一键打包\n\n```powershell\n# 在仓库根目录双击或在 PowerShell 中执行\n.\\EXE打包构建.bat\n```\n\n脚本会按 7 个步骤完成：\n\n1. 清理旧的 `build_output\u002F` 与 `release\u002F` 目录\n2. 构建主前端（`frontend\u002F`），如存在则同时构建推广前端（`promotion\u002Ffrontend\u002F`）\n3. 使用 Nuitka 将 `launcher\u002Fmain.py` 编译为 `XianyuAutoReply.exe`\n4. 复制各服务的加密产物（`.pyd`）、前端构建产物、`python.exe` 与标准库 `Lib` 到发布目录\n5. 清理敏感与临时文件（`.env`、`.env.example`、`logs\u002F`、`uploads\u002F`、`browser_data\u002F`、Linux `.so`、缓存等）\n6. 生成 `release\u002FXianyuAutoReply\u002F` 目录\n7. 压缩成 `release\u002Fapp-v\u003C版本号>.zip`\n\n### 6.5 运行 EXE\n\n```text\nrelease\\XianyuAutoReply\\XianyuAutoReply.exe\n```\n\nEXE 启动器会自动拉起 `backend-web`、`websocket`、`scheduler` 三个服务以及内置前端。\n\n> EXE 单机版**不包含 MySQL 与 Redis**，需自行连接外部 MySQL 与 Redis，连接信息在首次运行时由启动器引导填写或写入 `data\u002F.env`。\n\n---\n\n## 七、推广返佣子系统（可选模块）\n\n推广返佣子系统是一个独立的可选模块，用于淘宝联盟推广和分销管理。当 `promotion\u002F` 目录存在时，Docker 部署会自动启用该模块。\n\n### 7.1 服务端口\n\n| 服务 | 默认端口 | 说明 |\n|------|----------|------|\n| 推广后端 | `8092` | 推广返佣 API 服务 |\n| 推广前端 | 随主前端部署 | 通过主前端 Nginx 代理访问 |\n\n### 7.2 环境变量\n\n推广后端使用独立的 `.env` 文件（`promotion\u002Fbackend\u002F.env`），关键变量：\n\n| 变量 | 默认值 | 说明 |\n|------|--------|------|\n| `PROMOTION_PORT` | `8092` | 推广后端端口 |\n| `MYSQL_HOST` | `localhost` | 数据库地址（Docker 部署时自动配置） |\n| `MYSQL_DATABASE` | `xianyu_data` | 共享主业务数据库 |\n| `JWT_SECRET_KEY` | `change-me` | **生产环境必改** |\n\n### 7.3 功能模块\n\n- **淘宝联盟**：推广商品搜索、推广规则管理\n- **素材管理**：推广素材的增删改查\n- **商品规则**：商品推广规则配置\n- **发布规则**：自动发布推广内容的规则\n- **删除规则**：推广内容的自动删除规则\n\n---\n\n## 八、环境变量配置说明\n\n部署方式一\u002F二\u002F三均使用根目录的 `.env` 文件，关键变量如下：\n\n### 8.1 数据库与缓存\n\n| 变量 | 默认值 | 说明 |\n| --- | --- | --- |\n| `MYSQL_ROOT_PASSWORD` | `xianyu@2026` | MySQL root 密码 |\n| `MYSQL_DATABASE` | `xianyu_data` | 业务数据库名 |\n| `MYSQL_USER` | `xianyu` | 业务数据库用户名 |\n| `MYSQL_PASSWORD` | `xianyu@2026` | 业务数据库密码 |\n| `REDIS_PASSWORD` | `xianyu@2026` | Redis 密码 |\n| `REDIS_DB` | `0` | Redis 数据库编号 |\n\n### 8.2 安全相关\n\n| 变量 | 默认值 | 说明 |\n| --- | --- | --- |\n| `JWT_SECRET_KEY` | `change-me-in-production-please` | **生产环境必改** |\n| `ACCESS_TOKEN_EXPIRE_MINUTES` | `1440` | 访问令牌过期时间（分钟） |\n| `REFRESH_TOKEN_EXPIRE_MINUTES` | `10080` | 刷新令牌过期时间（分钟） |\n\n### 8.3 端口与镜像\n\n| 变量 | 默认值 | 说明 |\n| --- | --- | --- |\n| `FRONTEND_PORT` | `9000` | 前端对外端口 |\n| `BACKEND_WEB_PORT` | `8089` | Backend-Web 对外端口 |\n| `WEBSOCKET_PORT` | `8090` | WebSocket 对外端口 |\n| `SCHEDULER_PORT` | `8091` | Scheduler 对外端口 |\n| `IMAGE_REGISTRY` | `registry.cn-shanghai.aliyuncs.com\u002Fzhinian-software` | 镜像仓库地址 |\n| `IMAGE_TAG` | `latest` | 镜像版本标签 |\n\n### 8.4 业务参数\n\n| 变量 | 默认值 | 说明 |\n| --- | --- | --- |\n| `LOG_LEVEL` | `INFO` | 日志级别 |\n| `REDELIVERY_INTERVAL` | `5` | 重发任务间隔（分钟） |\n| `RATE_INTERVAL` | `20` | 限流统计间隔（分钟） |\n| `MAX_CAPTCHA_CONCURRENT` | `3` | 验证码识别最大并发数 |\n\n### 8.5 前端环境变量\n\n前端使用独立的环境变量文件，位于 `frontend\u002F` 目录下：\n\n| 文件 | 用途 |\n|------|------|\n| `.env.development` | 开发环境配置（Vite dev server） |\n| `.env.production` | 生产环境配置（构建时使用） |\n\n前端通过 Vite 代理（`vite.config.ts`）将 API 请求转发到后端，开发环境下无需额外配置后端地址。\n\n---\n\n## 九、常用运维命令\n\n以下命令在仓库根目录执行，假设使用 `docker compose` 插件，若使用独立的 `docker-compose` 命令请自行替换。\n\n```bash\n# 查看所有容器状态\ndocker compose -f docker-compose.yml --env-file .env ps\n\n# 查看实时日志（全部）\ndocker compose -f docker-compose.yml --env-file .env logs -f --tail=200\n\n# 查看单个服务日志\ndocker compose -f docker-compose.yml --env-file .env logs -f backend-web\n\n# 重启单个服务\ndocker compose -f docker-compose.yml --env-file .env restart backend-web\n\n# 停止所有服务\ndocker compose -f docker-compose.yml --env-file .env down\n\n# 进入容器内部\ndocker exec -it xianyu-backend-web bash\ndocker exec -it xianyu-mysql mysql -uroot -p\n\n# 查看容器资源使用\ndocker stats --no-stream\n```\n\n---\n\n## 十、数据持久化与备份\n\nDocker 部署使用以下命名卷持久化数据：\n\n| 卷名 | 说明 |\n| --- | --- |\n| `mysql_data` | MySQL 数据文件 |\n| `redis_data` | Redis AOF 文件 |\n| `backend_web_logs` | Backend-Web 日志 |\n| `websocket_logs` | WebSocket 日志 |\n| `scheduler_logs` | Scheduler 日志 |\n| `static-files` | 上传的静态文件（图片、二维码等） |\n| `browser_data` | Playwright 浏览器配置 |\n\n### 10.1 备份 MySQL\n\n```bash\n# 导出\ndocker exec xianyu-mysql sh -c \\\n  'mysqldump -uroot -p\"$MYSQL_ROOT_PASSWORD\" --single-transaction --routines --triggers xianyu_data' \\\n  > backup_$(date +%Y%m%d_%H%M%S).sql\n\n# 恢复\ndocker exec -i xianyu-mysql sh -c \\\n  'mysql -uroot -p\"$MYSQL_ROOT_PASSWORD\" xianyu_data' \u003C backup_xxx.sql\n```\n\n### 10.2 备份静态文件\n\n```bash\ndocker run --rm \\\n  -v xianyu-auto-reply_static-files:\u002Fdata \\\n  -v $(pwd):\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fstatic_$(date +%Y%m%d).tar.gz -C \u002Fdata .\n```\n\n---\n\n## 十一、故障排查\n\n### 11.1 容器启动失败\n\n```bash\n# 查看启动失败原因\ndocker compose -f docker-compose.yml --env-file .env logs \u003C服务名>\n\n# 查看容器退出码\ndocker ps -a | grep xianyu\n```\n\n常见原因：\n\n| 现象 | 排查方向 |\n| --- | --- |\n| 容器反复重启 | `JWT_SECRET_KEY` 未配置、数据库连接失败、端口冲突 |\n| `mysql` 健康检查不通过 | 数据卷权限问题、密码不一致（删卷重建或改密码） |\n| `backend-web` 报 `Connection refused` | MySQL\u002FRedis 还未启动完成，等 `start_period` 后再观察 |\n| `websocket` 浏览器初始化失败 | Chromium 未安装、容器内存不足 |\n\n### 11.2 端口冲突\n\n修改 `.env` 中对应端口后重新部署：\n\n```bash\nsed -i 's\u002FFRONTEND_PORT=9000\u002FFRONTEND_PORT=9100\u002F' .env\n# 重新执行一键部署脚本\ncurl -fsSL https:\u002F\u002Fxy-update.zhinianboke.com\u002Fdeploy_enc.sh | sed 's\u002F\\r$\u002F\u002F' | bash\n```\n\n### 11.3 镜像拉取失败\n\n如果服务器无法访问阿里云镜像仓库，可改为方式二（本地源码运行）。\n\n### 11.4 EXE 打包失败\n\n| 报错信息 | 解决方案 |\n| --- | --- |\n| `Python was not found` | 安装 Python 3.12 并加入 PATH |\n| `Current Python version is 3.x` | 换成 Python 3.12（脚本强校验） |\n| `npm was not found` | 安装 Node.js 18+ |\n| `Failed to install Nuitka` | 检查网络，或手动 `pip install nuitka ordered-set zstandard` |\n| `Failed to install Chromium browser` | 检查 Playwright 网络，或单独执行 `python -m playwright install chromium` |\n\n---\n\n## 十二、安全建议\n\n部署到公网前，请务必完成以下检查：\n\n1. **修改所有默认密码**：`MYSQL_ROOT_PASSWORD`、`MYSQL_PASSWORD`、`REDIS_PASSWORD`。\n2. **修改 `JWT_SECRET_KEY`**：建议使用 `openssl rand -hex 32` 生成的随机串。\n3. **修改默认管理员密码**：首次登录后立即修改 `admin` 账号密码。\n4. **限制端口暴露**：仅对外暴露 `9000`，`8089`\u002F`8090`\u002F`8091` 建议仅在内网可访问。\n5. **启用 HTTPS**：建议在 `frontend` 前面加一层 Nginx 反向代理，配置 SSL 证书。\n6. **定期备份**：参考第十节，建议每日备份 MySQL，每周备份静态文件。\n7. **关闭多余防火墙端口**：仅放行 80\u002F443\u002F9000，`3306`\u002F`6379` 严禁对公网开放。\n8. **及时更新镜像**：定期执行一键部署脚本拉取最新版本。\n\n---\n\n## 十三、目录结构参考\n\n```\nxianyu-auto-reply\u002F\n├── README.md                       # 本文档\n├── EXE打包构建.bat                 # Windows EXE 打包（方式三）\n├── 启动.bat                        # 一键启动所有服务\n├── 停止.bat                        # 一键停止所有服务\n├── backend-web\u002F                    # 主业务后端（FastAPI）\n│   ├── Dockerfile                  # 加密版镜像（多阶段 Cython 编译）\n│   ├── Dockerfile.local            # 源码版镜像\n│   ├── main.py                     # 入口文件\n│   ├── pyproject.toml              # Python >= 3.11\n│   ├── .env.example                # 环境变量模板\n│   ├── app\u002F                        # 业务代码（含 .pyd\u002F.so 编译产物）\n│   │   ├── api\u002F                    # API 路由层\n│   │   ├── core\u002F                   # 核心配置\n│   │   └── services\u002F               # 业务服务层\n│   └── static\u002Fqrcode\u002F              # 静态二维码图片\n├── websocket\u002F                      # WebSocket 服务（闲鱼消息接入）\n│   ├── Dockerfile \u002F Dockerfile.local\n│   ├── main.py \u002F pyproject.toml \u002F .env.example\n│   └── app\u002F                        # 业务代码\n├── scheduler\u002F                      # 定时任务服务\n│   ├── Dockerfile \u002F Dockerfile.local\n│   ├── main.py \u002F pyproject.toml \u002F .env.example\n│   └── app\u002F                        # 业务代码\n├── common\u002F                         # 跨服务共享模块\n│   ├── core\u002F                       # 核心配置\n│   ├── db\u002F                         # 数据库层\n│   ├── models\u002F                     # SQLAlchemy 数据模型\n│   ├── schemas\u002F                    # Pydantic 数据模式\n│   ├── services\u002F                   # 共享业务服务\n│   └── utils\u002F                      # 工具函数\n├── frontend\u002F                       # 主前端（React + Vite + TypeScript）\n│   ├── package.json \u002F vite.config.ts\n│   ├── .env.development            # 开发环境配置\n│   ├── .env.production             # 生产环境配置\n│   ├── public\u002F                     # 静态资源\n│   └── src\u002F                        # 源代码\n│       ├── api\u002F                    # API 调用层\n│       ├── components\u002F             # UI 组件\n│       ├── pages\u002F                  # 页面组件\n│       ├── store\u002F                  # 状态管理（Zustand）\n│       ├── styles\u002F                 # CSS 样式\n│       ├── types\u002F                  # TypeScript 类型\n│       └── utils\u002F                  # 工具函数\n├── promotion\u002F                      # 推广返佣子系统（可选）\n│   ├── backend\u002F                    # 推广后端（默认端口 8092）\n│   │   ├── main.py \u002F pyproject.toml \u002F .env.example\n│   │   └── app\u002F                    # 业务代码\n│   └── frontend\u002F                   # 推广前端（React + Vite）\n│       ├── package.json\n│       └── src\u002F                    # TypeScript 源码\n├── launcher\u002F                       # EXE 启动器入口\n│   ├── main.py                     # 入口文件\n│   └── （gui, activation, updater 等已编译模块）\n├── docker\u002Ffrontend\u002F                # 前端镜像构建上下文\n│   ├── Dockerfile\n│   └── nginx.conf\n└── scripts\u002F\n    └── stop_service_by_port.bat    # 按端口停止服务脚本\n```\n\n---\n\n## 十四、版本与许可\n\n- 当前版本：见 `launcher\u002Fversion.py` 中的 `CURRENT_VERSION`。\n- 许可：内部使用，请勿外传。\n\n如有问题请联系运维团队。","闲鱼自动回复管理系统是一个基于 Python + FastAPI 开发的自动化客服系统，专为闲鱼平台设计。其核心功能包括通过 WebSocket 实时接收和处理消息，提供智能化的自动回复服务，支持多账号管理和在线聊天。系统还具备订单管理、商品管理、自动发货、自动评价等功能，并且可以通过 AI 和关键词匹配两种模式进行智能回复。此外，该系统还包括用户系统、激活码系统、仪表盘等管理功能，以及推广分销模块。适用于需要高效管理和自动化运营闲鱼店铺的场景。项目支持 Docker Compose 一键部署和 Windows EXE 单机打包运行，方便不同需求的用户使用。",2,"2026-06-11 03:46:34","high_star"]