Compare commits

...

2 Commits

Author SHA1 Message Date
zhinianboke
dcd1720aff Update README.md 2025-08-03 12:37:19 +08:00
zhinianboke
4b25f3f924 新增自动免拼 2025-08-03 12:19:01 +08:00
6 changed files with 107 additions and 130 deletions

16
.env
View File

@ -170,6 +170,22 @@ MEMORY_LIMIT=512
# CPU限制 (核心数)
CPU_LIMIT=0.5
# 内存预留 (MB)
MEMORY_RESERVATION=256
# CPU预留 (核心数)
CPU_RESERVATION=0.25
# ================================
# SQL日志配置
# ================================
# 是否启用SQL日志
SQL_LOG_ENABLED=true
# SQL日志级别
SQL_LOG_LEVEL=INFO
# ================================
# 备份配置
# ================================

View File

@ -3,8 +3,8 @@ FROM python:3.11-slim
# 设置标签信息
LABEL maintainer="zhinianboke"
LABEL version="2.0.0"
LABEL description="闲鱼自动回复系统 - 企业级多用户版本"
LABEL version="2.1.0"
LABEL description="闲鱼自动回复系统 - 企业级多用户版本,支持自动发货和免拼发货"
LABEL repository="https://github.com/zhinianboke/xianyu-auto-reply"
LABEL license="仅供学习使用,禁止商业用途"
LABEL author="zhinianboke"

127
README.md
View File

@ -88,7 +88,8 @@ xianyu-auto-reply/
│ ├── ai_reply_engine.py # AI智能回复引擎支持多种AI模型
│ ├── file_log_collector.py # 实时日志收集和管理系统
│ ├── config.py # 全局配置文件管理器
│ └── secure_confirm_ultra.py # 自动确认发货模块(多层加密保护)
│ ├── secure_confirm_ultra.py # 自动确认发货模块(多层加密保护)
│ └── secure_freeshipping_ultra.py # 自动免拼发货模块(多层加密保护)
├── 🛠️ 工具模块
│ └── utils/
│ ├── xianyu_utils.py # 闲鱼API工具函数加密、签名、解析
@ -116,6 +117,7 @@ xianyu-auto-reply/
├── 📋 配置文件
│ ├── global_config.yml # 全局配置文件WebSocket、API等
│ ├── requirements.txt # Python依赖包列表
│ ├── .env # 环境变量配置文件
│ └── README.md # 项目说明文档
└── 📊 数据目录
├── xianyu_data.db # SQLite数据库文件
@ -209,129 +211,6 @@ python Start.py
> ⚠️ **安全提示**:首次登录后请立即修改默认密码!
### 🔧 Docker部署管理
使用 `docker-deploy.sh` 脚本可以方便地管理Docker部署
```bash
# 查看所有可用命令
./docker-deploy.sh help
# 初始化配置
./docker-deploy.sh init
# 构建镜像
./docker-deploy.sh build
# 启动服务
./docker-deploy.sh start
# 启动包含Nginx的完整服务
./docker-deploy.sh start with-nginx
# 查看服务状态
./docker-deploy.sh status
# 查看实时日志
./docker-deploy.sh logs
# 备份数据
./docker-deploy.sh backup
# 更新部署
./docker-deploy.sh update
# 停止服务
./docker-deploy.sh stop
# 重启服务
./docker-deploy.sh restart
# 清理环境
./docker-deploy.sh cleanup
```
### 🛠️ 故障排除
**常见问题及解决方案**
1. **Docker未运行**
```bash
# 启动Docker Desktop或Docker服务
sudo systemctl start docker # Linux
```
2. **端口冲突**
```bash
# 修改.env文件中的WEB_PORT
WEB_PORT=8081
```
3. **权限问题**
```bash
# 确保数据目录有正确权限
sudo chown -R $USER:$USER ./data ./logs ./backups
```
4. **内存不足**
```bash
# 调整.env文件中的资源限制
MEMORY_LIMIT=1024
CPU_LIMIT=1.0
```
5. **Playwright浏览器安装失败**
```bash
# 手动安装浏览器
playwright install chromium --with-deps
```
- **权限问题**Linux系统下使用 `sudo ./docker-deploy.sh`
### 方式三:本地部署
```bash
# 1. 克隆项目
git clone https://github.com/zhinianboke/xianyu-auto-reply.git
cd xianyu-auto-reply
# 2. 安装依赖
pip install -r requirements.txt
# 3. 安装Playwright浏览器商品搜索功能需要
playwright install chromium
# 4. 启动系统
python Start.py
# 5. 访问系统
# http://localhost:8080
```
### 🐳 Docker 部署说明
#### 一键部署特点
- **无需配置** - 使用预构建镜像,开箱即用
- **数据持久化** - 自动挂载数据目录,数据不丢失
- **快速启动** - 30秒内完成部署
- **生产就绪** - 包含所有依赖和优化配置
#### 容器管理命令
```bash
# 查看容器状态
docker ps
# 查看容器日志
docker logs -f xianyu-auto-reply
# 停止容器
docker stop xianyu-auto-reply
# 重启容器
docker restart xianyu-auto-reply
# 删除容器
docker rm -f xianyu-auto-reply
```
## 📋 系统使用

View File

@ -1506,6 +1506,30 @@ class XianyuLive:
logger.error(f"{self.cookie_id}】加密确认模块调用失败: {self._safe_str(e)}")
return {"error": f"加密确认模块调用失败: {self._safe_str(e)}", "order_id": order_id}
async def auto_freeshipping(self, order_id, item_id, buyer_id, retry_count=0):
"""自动免拼发货 - 使用加密模块"""
try:
logger.debug(f"{self.cookie_id}】开始免拼发货订单ID: {order_id}")
# 导入超级混淆加密模块
from secure_freeshipping_ultra import SecureFreeshipping
# 创建加密免拼发货实例
secure_freeshipping = SecureFreeshipping(self.session, self.cookies_str, self.cookie_id)
# 传递必要的属性
secure_freeshipping.current_token = self.current_token
secure_freeshipping.last_token_refresh_time = self.last_token_refresh_time
secure_freeshipping.token_refresh_interval = self.token_refresh_interval
secure_freeshipping.refresh_token = self.refresh_token # 传递refresh_token方法
# 调用加密的免拼发货方法
return await secure_freeshipping.auto_freeshipping(order_id, item_id, buyer_id, retry_count)
except Exception as e:
logger.error(f"{self.cookie_id}】加密免拼发货模块调用失败: {self._safe_str(e)}")
return {"error": f"加密免拼发货模块调用失败: {self._safe_str(e)}", "order_id": order_id}
async def fetch_order_detail_info(self, order_id: str):
"""获取订单详情信息"""
try:
@ -2576,10 +2600,24 @@ class XianyuLive:
# 检查是否为"我已小刀,待刀成"
if card_title == "我已小刀,待刀成":
logger.info(f'[{msg_time}] 【{self.cookie_id}】【系统】检测到"我已小刀,待刀成",准备自动发货')
# 使用统一的自动发货处理方法
await self._handle_auto_delivery(websocket, message, send_user_name, send_user_id,
item_id, chat_id, msg_time)
logger.info(f'[{msg_time}] 【{self.cookie_id}】【系统】检测到"我已小刀,待刀成",准备自动免拼发货')
# 提取订单ID
order_id = self._extract_order_id(message)
if order_id:
# 延迟2秒后执行免拼发货
logger.info(f'[{msg_time}] 【{self.cookie_id}】延迟2秒后执行免拼发货...')
await asyncio.sleep(2)
# 调用自动免拼发货方法
result = await self.auto_freeshipping(order_id, item_id, send_user_id)
if result.get('success'):
logger.info(f'[{msg_time}] 【{self.cookie_id}】✅ 自动免拼发货成功')
else:
logger.warning(f'[{msg_time}] 【{self.cookie_id}】❌ 自动免拼发货失败: {result.get("error", "未知错误")}')
await self._handle_auto_delivery(websocket, message, send_user_name, send_user_id,
item_id, chat_id, msg_time)
return
else:
logger.warning(f'[{msg_time}] 【{self.cookie_id}】❌ 未能提取到订单ID无法执行免拼发货')
return
else:
logger.info(f'[{msg_time}] 【{self.cookie_id}】收到卡片消息,标题: {card_title or "未知"}')

View File

@ -98,6 +98,7 @@ typing-extensions>=4.7.0
# - copy (对象复制)
# - pickle (对象序列化)
# - gzip (压缩)
# - zlib (数据压缩)
# - zipfile (ZIP文件)
# - tarfile (TAR文件)
# - shutil (文件操作)

File diff suppressed because one or more lines are too long