From 7da13c379c2b4bff31fdb860325451bf15680f28 Mon Sep 17 00:00:00 2001 From: zhinianboke <115088296+zhinianboke@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:00:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E6=9A=82=E5=81=9C=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ Dockerfile | 4 +++- README.md | 59 ++++++++++++++++++++++++------------------------ db_manager.py | 16 +++++++++---- requirements.txt | 3 ++- 5 files changed, 49 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 9695d70..d542d2d 100644 --- a/.gitignore +++ b/.gitignore @@ -294,6 +294,8 @@ example_*.py *_example.py demo_*.py *_demo.py +fix_*.py +*_fix.py # 文档文件(除了README.md) *.md @@ -301,6 +303,7 @@ demo_*.py !CHANGELOG.md !CONTRIBUTING.md !LICENSE.md +!docs/*.md # 临时配置文件 *.local.yml diff --git a/Dockerfile b/Dockerfile index 870186a..108b1f6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,11 +3,13 @@ FROM python:3.11-slim-bookworm # 设置标签信息 LABEL maintainer="zhinianboke" -LABEL version="2.1.0" +LABEL version="2.2.0" LABEL description="闲鱼自动回复系统 - 企业级多用户版本,支持自动发货和免拼发货" LABEL repository="https://github.com/zhinianboke/xianyu-auto-reply" LABEL license="仅供学习使用,禁止商业用途" LABEL author="zhinianboke" +LABEL build-date="" +LABEL vcs-ref="" # 设置工作目录 WORKDIR /app diff --git a/README.md b/README.md index e944514..6c91e4f 100644 --- a/README.md +++ b/README.md @@ -109,13 +109,8 @@ xianyu-auto-reply/ │ ├── index.html # 主管理界面(集成所有功能模块) │ ├── login.html # 用户登录页面 │ ├── register.html # 用户注册页面(邮箱验证) -│ ├── user_management.html # 用户管理页面(管理员功能) -│ ├── data_management.html # 数据管理页面(导入导出) -│ ├── log_management.html # 日志管理页面(实时日志查看) -│ ├── item_search.html # 商品搜索页面(独立版本) │ ├── js/ -│ │ ├── app.js # 主要JavaScript逻辑 -│ │ └── modules/ # 模块化JavaScript文件 +│ │ └── app.js # 主要JavaScript逻辑和所有功能模块 │ ├── css/ │ │ ├── variables.css # CSS变量定义 │ │ ├── layout.css # 布局样式 @@ -137,16 +132,23 @@ xianyu-auto-reply/ │ ├── wechat-group.png # 微信群二维码 │ └── qq-group.png # QQ群二维码 ├── 🐳 Docker部署 -│ ├── Dockerfile # Docker镜像构建文件 +│ ├── Dockerfile # Docker镜像构建文件(优化版) +│ ├── Dockerfile-cn # 国内优化版Docker镜像构建文件 │ ├── docker-compose.yml # Docker Compose一键部署配置 +│ ├── docker-compose-cn.yml # 国内优化版Docker Compose配置 │ ├── docker-deploy.sh # Docker部署管理脚本(Linux/macOS) │ ├── docker-deploy.bat # Docker部署管理脚本(Windows) -│ └── entrypoint.sh # Docker容器启动脚本 +│ ├── entrypoint.sh # Docker容器启动脚本 +│ └── .dockerignore # Docker构建忽略文件 +├── 🌐 Nginx配置 +│ └── nginx/ +│ ├── nginx.conf # Nginx反向代理配置 +│ └── ssl/ # SSL证书目录 ├── 📋 配置文件 │ ├── global_config.yml # 全局配置文件(WebSocket、API等) -│ ├── requirements.txt # Python依赖包列表(精简版) -│ ├── .gitignore # Git忽略文件配置 -│ └── README.md # 项目说明文档 +│ ├── requirements.txt # Python依赖包列表(精简版,无内置模块) +│ ├── .gitignore # Git忽略文件配置(完整版) +│ └── README.md # 项目说明文档(本文件) └── 📊 数据目录(运行时创建) ├── data/ # 数据目录(Docker挂载) │ └── xianyu_data.db # SQLite数据库文件 @@ -407,30 +409,27 @@ python Start.py - **`image_uploader.py`** - 图片上传工具,支持多种CDN服务商、自动压缩、格式优化、批量上传 ### 🌐 前端界面 (`static/`) -- **`index.html`** - 主管理界面,包含账号管理、关键词管理、系统监控、实时状态显示 +- **`index.html`** - 主管理界面,集成所有功能模块:账号管理、关键词管理、商品管理、发货管理、系统监控、用户管理等 - **`login.html`** - 用户登录页面,支持图形验证码、记住登录状态、多重安全验证 - **`register.html`** - 用户注册页面,支持邮箱验证码、实时验证、密码强度检测 -- **`user_management.html`** - 用户管理页面,管理员专用,用户增删改查、权限管理 -- **`data_management.html`** - 数据管理页面,支持Excel导入导出、数据备份、批量操作 -- **`log_management.html`** - 日志管理页面,实时日志查看、日志搜索过滤、日志下载 -- **`item_search.html`** - 商品搜索页面,获取真实闲鱼商品数据,支持多条件搜索 -- **`js/app.js`** - 主要JavaScript逻辑,处理前端交互、API调用、实时更新 -- **`css/`** - 模块化样式文件,包含布局、组件、主题等分类样式,响应式设计 +- **`js/app.js`** - 主要JavaScript逻辑,包含所有功能模块:前端交互、API调用、实时更新、数据管理、用户界面控制 +- **`css/`** - 模块化样式文件,包含布局、组件、主题等分类样式,响应式设计,支持明暗主题切换 - **`xianyu_js_version_2.js`** - 闲鱼JavaScript工具库,加密解密、数据处理、API封装 -- **`lib/`** - 前端依赖库,包含Bootstrap、jQuery、Chart.js等第三方库 +- **`lib/`** - 前端依赖库,包含Bootstrap 5、Bootstrap Icons等第三方库 +- **`uploads/images/`** - 图片上传目录,支持发货图片和其他媒体文件存储 ### 🐳 部署配置 -- **`Dockerfile`** - Docker镜像构建文件,包含Python环境、Playwright浏览器、系统依赖,支持无头模式运行 -- **`docker-compose.yml`** - Docker Compose配置,支持一键部署、环境变量配置、资源限制、健康检查 -- **`docker-deploy.sh`** - Docker部署管理脚本,提供构建、启动、监控、日志查看等功能(Linux/macOS) -- **`docker-deploy.bat`** - Windows版本部署脚本,支持Windows环境一键部署 -- **`entrypoint.sh`** - Docker容器启动脚本,处理环境初始化和服务启动 -- **`nginx/nginx.conf`** - Nginx反向代理配置,支持负载均衡、SSL终端、WebSocket代理 -- **`requirements.txt`** - Python依赖包列表,精简版本无冗余依赖,按功能分类组织,包含详细说明 -- **`.gitignore`** - Git忽略文件配置,完整覆盖Python、Docker、前端等开发文件 -- **`.dockerignore`** - Docker构建忽略文件,优化构建上下文大小和构建速度 -- **`Dockerfile-cn`** - 国内优化版Docker镜像构建文件,使用国内镜像源加速构建 -- **`docker-compose-cn.yml`** - 国内优化版Docker Compose配置文件 +- **`Dockerfile`** - Docker镜像构建文件,基于Python 3.11-slim,包含Playwright浏览器、系统依赖,支持无头模式运行,优化构建层级 +- **`Dockerfile-cn`** - 国内优化版Docker镜像构建文件,使用国内镜像源加速构建,适合国内网络环境 +- **`docker-compose.yml`** - Docker Compose配置,支持一键部署、完整环境变量配置、资源限制、健康检查、可选Nginx代理 +- **`docker-compose-cn.yml`** - 国内优化版Docker Compose配置文件,使用国内镜像源 +- **`docker-deploy.sh`** - Docker部署管理脚本,提供构建、启动、停止、重启、监控、日志查看等功能(Linux/macOS) +- **`docker-deploy.bat`** - Windows版本部署脚本,支持Windows环境一键部署和管理 +- **`entrypoint.sh`** - Docker容器启动脚本,处理环境初始化、目录创建、权限设置和服务启动 +- **`nginx/nginx.conf`** - Nginx反向代理配置,支持负载均衡、SSL终端、WebSocket代理、静态文件服务 +- **`requirements.txt`** - Python依赖包列表,精简版本无内置模块,按功能分类组织,包含详细版本说明和安装指南 +- **`.gitignore`** - Git忽略文件配置,完整覆盖Python、Docker、前端、测试、临时文件等,支持项目特定文件类型 +- **`.dockerignore`** - Docker构建忽略文件,优化构建上下文大小和构建速度,排除不必要的文件和目录 ## 🏗️ 详细技术架构 diff --git a/db_manager.py b/db_manager.py index 5db8d8a..fed72cf 100644 --- a/db_manager.py +++ b/db_manager.py @@ -1189,7 +1189,7 @@ class DBManager: 'user_id': result[2], 'auto_confirm': bool(result[3]), 'remark': result[4] or '', - 'pause_duration': result[5] or 10, + 'pause_duration': result[5] if result[5] is not None else 10, 'created_at': result[6] } return None @@ -1244,11 +1244,19 @@ class DBManager: self._execute_sql(cursor, "SELECT pause_duration FROM cookies WHERE id = ?", (cookie_id,)) result = cursor.fetchone() if result: - return result[0] or 10 # 默认10分钟 - return 10 # 如果没有找到记录,返回默认值 + if result[0] is None: + logger.warning(f"账号 {cookie_id} 的pause_duration为NULL,使用默认值10分钟并修复数据库") + # 修复数据库中的NULL值 + self._execute_sql(cursor, "UPDATE cookies SET pause_duration = 10 WHERE id = ?", (cookie_id,)) + self.conn.commit() + return 10 + return result[0] # 返回实际值,不使用or操作符 + else: + logger.warning(f"账号 {cookie_id} 未找到记录,使用默认值10分钟") + return 10 except Exception as e: logger.error(f"获取账号自动回复暂停时间失败: {e}") - return 10 # 出错时返回默认值 + return 10 def get_auto_confirm(self, cookie_id: str) -> bool: """获取Cookie的自动确认发货设置""" diff --git a/requirements.txt b/requirements.txt index 0217286..72f2d28 100644 --- a/requirements.txt +++ b/requirements.txt @@ -78,4 +78,5 @@ xlsxwriter>=3.1.0 # collections, itertools, functools, copy, pickle, gzip, zipfile, shutil # tempfile, io, csv, xml, html, http, socket, ssl, subprocess, signal # inspect, ast, enum, math, decimal, array, queue, contextlib, warnings -# typing, dataclasses, weakref, gc, platform, stat, glob, fnmatch \ No newline at end of file +# typing, dataclasses, weakref, gc, platform, stat, glob, fnmatch, mimetypes +# email, smtplib, imaplib, poplib, ftplib, telnetlib, configparser, argparse \ No newline at end of file