diff --git a/.dockerignore b/.dockerignore index 3d2a2f0..0ce6c78 100644 --- a/.dockerignore +++ b/.dockerignore @@ -73,19 +73,121 @@ tests/ *.md docs/ -# Docker相关 -Dockerfile* -docker-compose*.yml -.dockerignore +# Docker相关(保留必要的构建文件) +.dockerignore.bak +docker-compose.override.yml # 配置文件(运行时挂载) # global_config.yml -# 其他 +# 环境变量文件 .env -.env.local -.env.*.local +.env.* +!.env.example +*.local.yml +*.dev.yml +*.test.yml +config.*.yml +!global_config.yml + +# 前端相关 node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* +package-lock.json +yarn.lock + +# 数据目录(运行时挂载) +data/ +backups/ +logs/ +realtime.log + +# 上传文件 +static/uploads/* +!static/uploads/.gitkeep +!static/uploads/images/ +static/uploads/images/* +!static/uploads/images/.gitkeep + +# Excel和数据文件 +*.xlsx +*.xls +*.csv +keywords_*.xlsx +export_*.csv +export_*.json +export_*.xlsx + +# 压缩文件 +*.zip +*.tar.gz +*.rar +*.7z + +# 备份文件 +*.bak +*.backup +*.old + +# 密钥和证书 +*.key +*.pem +*.crt +*.cert +*.p12 +*.pfx +ssl/ +secrets/ +credentials/ + +# 运行时文件 +*.pid +*.sock +*.lock +*.port + +# 性能分析文件 +*.prof +*.profile +*.pstats + +# 缓存文件 +.cache/ +cache/ +*.cache + +# 浏览器相关 +.playwright/ +playwright-report/ +test-results/ + +# 示例和演示文件 +example_*.py +*_example.py +demo_*.py +*_demo.py + +# AI模型文件 +*.model +*.weights +*.h5 +*.pb + +# 大文件 +*.iso +*.dmg +*.img + +# 监控和审计 +monitoring/ +*.access.log +*.error.log +*.audit.log + +# 本地开发文件 +local/ +.local/ +debug.log +*.debug diff --git a/.gitignore b/.gitignore index 90f2fd7..9695d70 100644 --- a/.gitignore +++ b/.gitignore @@ -284,4 +284,102 @@ build/ # 大文件 *.iso *.dmg -*.img \ No newline at end of file +*.img + +# ==================== 项目特定新增文件类型 ==================== +# 测试和示例文件 +test_*.py +*_test.py +example_*.py +*_example.py +demo_*.py +*_demo.py + +# 文档文件(除了README.md) +*.md +!README.md +!CHANGELOG.md +!CONTRIBUTING.md +!LICENSE.md + +# 临时配置文件 +*.local.yml +*.dev.yml +*.test.yml +config.*.yml +!global_config.yml + +# 运行时生成的文件 +*.pid +*.lock +*.sock +*.port + +# 性能和调试文件 +*.profile +*.pstats +*.trace + +# 编译和构建产物 +*.whl +*.egg +*.tar.gz +build/ +dist/ + +# 开发工具配置 +.editorconfig +.flake8 +.pylintrc +pyproject.toml +setup.cfg +tox.ini + +# 容器相关 +.dockerignore +docker-compose.*.yml +!docker-compose.yml +!docker-compose-cn.yml + +# 安全相关 +*.secret +*.token +*.auth +secrets/ +credentials/ + +# 监控和日志 +*.access.log +*.error.log +*.audit.log +monitoring/ + +# 第三方服务配置 +.env +.env.* +!.env.example + +# 数据导出文件 +export_*.csv +export_*.json +export_*.xlsx +dump_*.sql + +# 临时下载文件 +downloads/ +temp_downloads/ + +# 浏览器相关 +.playwright/ +playwright-report/ +test-results/ + +# 系统服务文件 +*.service +*.timer +systemd/ + +# 备份和归档 +archive/ +old/ +deprecated/ \ No newline at end of file diff --git a/README.md b/README.md index bb26088..e944514 100644 --- a/README.md +++ b/README.md @@ -429,6 +429,103 @@ python Start.py - **`requirements.txt`** - Python依赖包列表,精简版本无冗余依赖,按功能分类组织,包含详细说明 - **`.gitignore`** - Git忽略文件配置,完整覆盖Python、Docker、前端等开发文件 - **`.dockerignore`** - Docker构建忽略文件,优化构建上下文大小和构建速度 +- **`Dockerfile-cn`** - 国内优化版Docker镜像构建文件,使用国内镜像源加速构建 +- **`docker-compose-cn.yml`** - 国内优化版Docker Compose配置文件 + +## 🏗️ 详细技术架构 + +### 📊 系统架构图 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Web前端界面 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 用户管理 │ │ 账号管理 │ │ 关键词管理 │ │ 商品管理 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 日志管理 │ │ 数据管理 │ │ 商品搜索 │ │ 系统监控 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ FastAPI Web服务器 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 用户认证 │ │ 权限管理 │ │ API接口 │ │ 文件上传 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 邮箱验证 │ │ 图形验证码 │ │ 实时日志 │ │ 健康检查 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ CookieManager 多账号管理器 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 任务调度 │ │ 状态监控 │ │ 线程管理 │ │ 异常处理 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ XianyuLive 实例集群 (多实例并行) │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 账号A实例 │ │ 账号B实例 │ │ 账号C实例 │ │ ... │ │ +│ │ WebSocket │ │ WebSocket │ │ WebSocket │ │ │ │ +│ │ 消息处理 │ │ 消息处理 │ │ 消息处理 │ │ │ │ +│ │ 自动回复 │ │ 自动回复 │ │ 自动回复 │ │ │ │ +│ │ 自动发货 │ │ 自动发货 │ │ 自动发货 │ │ │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ 辅助服务模块 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ AI回复引擎 │ │ 图片处理 │ │ 商品搜索 │ │ 订单处理 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 日志收集 │ │ 文件管理 │ │ 通知推送 │ │ 数据备份 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ SQLite数据库 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 用户数据 │ │ 账号数据 │ │ 关键词数据 │ │ 商品数据 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 发货数据 │ │ 系统设置 │ │ 日志数据 │ │ 统计数据 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +### 🔄 数据流程图 + +``` +用户消息 → WebSocket接收 → 消息解析 → 关键词匹配 → 回复生成 → 消息发送 + │ │ │ │ │ │ + ▼ ▼ ▼ ▼ ▼ ▼ + 商品识别 连接管理 内容过滤 AI处理 模板渲染 发送确认 + │ │ │ │ │ │ + ▼ ▼ ▼ ▼ ▼ ▼ + 数据存储 状态监控 安全检查 上下文 变量替换 日志记录 +``` + +### 🔐 安全架构 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 安全防护层 │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ JWT认证 │ │ 权限控制 │ │ 数据加密 │ │ 访问控制 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 图形验证码 │ │ 邮箱验证 │ │ 会话管理 │ │ 操作日志 │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────────────────────────────┘ +``` ## ⚙️ 配置说明 diff --git a/XianyuAutoAsync.py b/XianyuAutoAsync.py index 6602eef..808fa01 100644 --- a/XianyuAutoAsync.py +++ b/XianyuAutoAsync.py @@ -191,6 +191,8 @@ class XianyuLive: # 启动定期清理过期暂停记录的任务 self.cleanup_task = None + + def is_auto_confirm_enabled(self) -> bool: """检查当前账号是否启用自动确认发货""" try: @@ -722,6 +724,7 @@ class XianyuLive: new_token = res_json['data']['accessToken'] self.current_token = new_token self.last_token_refresh_time = time.time() + logger.info(f"【{self.cookie_id}】Token刷新成功") return new_token diff --git a/db_manager.py b/db_manager.py index 68d50d9..5db8d8a 100644 --- a/db_manager.py +++ b/db_manager.py @@ -119,6 +119,7 @@ class DBManager: FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ) ''') + # 创建keywords表 cursor.execute(''' @@ -1085,6 +1086,7 @@ class DBManager: "INSERT OR REPLACE INTO cookies (id, value, user_id) VALUES (?, ?, ?)", (cookie_id, cookie_value, user_id) ) + self.conn.commit() logger.info(f"Cookie保存成功: {cookie_id} (用户ID: {user_id})") @@ -1100,6 +1102,7 @@ class DBManager: logger.error(f"Cookie保存失败: {e}") self.conn.rollback() return False + def delete_cookie(self, cookie_id: str) -> bool: """从数据库删除Cookie及其关键字""" diff --git a/global_config.yml b/global_config.yml index f8bd39b..e3f9217 100644 --- a/global_config.yml +++ b/global_config.yml @@ -58,8 +58,8 @@ MANUAL_MODE: timeout: 3600 toggle_keywords: [] MESSAGE_EXPIRE_TIME: 300000 -TOKEN_REFRESH_INTERVAL: 18000 # 从3600秒(1小时)增加到18000秒(5小时) -TOKEN_RETRY_INTERVAL: 1800 # 从300秒(5分钟)增加到1800秒(30分钟) +TOKEN_REFRESH_INTERVAL: 72000 # 从3600秒(1小时)增加到18000秒(20小时) +TOKEN_RETRY_INTERVAL: 7200 # 从300秒(5分钟)增加到7200秒(2小时) WEBSOCKET_HEADERS: Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9