v4: 改用本地IndexTTS2 + 新增飞书推送
- TTS从小爱音箱云API改为本地IndexTTS2模型 - 新增飞书群Webhook推送 - 新增notify_all统一通知(企业微信+飞书) - 新增local_tts.py本地TTS封装模块 - 新增run.bat一键启动脚本 - 新增README.md项目说明 - 新增.gitignore排除敏感文件 - 更新CLAUDE.md文档
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# 丰享订单监控项目
|
||||
|
||||
## 项目概述
|
||||
|
||||
自动监控丰享商家端(fs.szfx.com)的新订单,同时推送到企业微信、飞书群和本地TTS语音播报**。
|
||||
|
||||
## 文件说明
|
||||
|
||||
| 文件 | 用途 |
|
||||
|------|------|
|
||||
| `order_monitor.py` | 主程序:监控订单 + 企业微信 + 飞书 + 本地TTS播报 |
|
||||
| `push_latest_order.py` | 单次获取最新订单并推送企业微信 |
|
||||
| `fetch_orders.py` | 复用 Cookie 获取订单数据(命令行) |
|
||||
| `fengxiang_scraper.py` | 首次登录获取 Cookie(Playwright 半自动) |
|
||||
| `setup_xiaomi.py` | 小米账号登录获取 serviceToken(Playwright) |
|
||||
| `cookies.json` | 丰享平台的登录 Cookie |
|
||||
| `xiaomi_config.json` | 小米账号和音箱配置 |
|
||||
| `order_data.json` | 订单数据样例 |
|
||||
|
||||
## 已逆向的 API
|
||||
|
||||
### 丰享平台
|
||||
|
||||
- **登录**: `POST https://fspass.szfx.com/api/login`
|
||||
- 参数: `uname`(手机号), `upass`(密码Base64反转), `ticket`, `randstr`(腾讯验证码)
|
||||
- 登录后通过 `https://fs.szfx.com/saasmerchant/setstoken` 设置 Cookie
|
||||
- Cookie 保存在浏览器中,主要: `USS`, `PTOKEN`, `CPTOKEN`, `STOKEN`
|
||||
|
||||
- **订单列表**: `POST https://fs.szfx.com/saasmerchant/pcweb/order/quickpayorder/list`
|
||||
- Content-Type: application/json
|
||||
- Body: `{"shopId": "20434543575189", "page": 1, "pageSize": 20}`
|
||||
- 需要登录 Cookie,未登录返回 `errno: 110003`
|
||||
- 返回: `{errno: 0, data: {total, list: [...], count}}`
|
||||
|
||||
- **关键字段**:
|
||||
- `shopId`: `20434543575189` (益选便利店)
|
||||
- `orderId`: 订单号
|
||||
- `amountPayable`: 实付金额(单位:分)
|
||||
- `allPrice`: 订单金额(单位:分)
|
||||
- `shopName`, `city`, `companyName`, `workplaceName`: 业务信息
|
||||
- `createTime`, `payTime`, `finishTime`: 时间戳(秒)
|
||||
|
||||
### 本地 TTS(IndexTTS2)
|
||||
|
||||
- 使用本地部署的 IndexTTS2 模型,无需联网
|
||||
- 模型路径: `E:\2025Code\python\IndexTT\index-tts\`
|
||||
- 语音样本: `examples/voice_01.wav`
|
||||
- 封装模块: `local_tts.py`
|
||||
- 调用方式: `_local_speak(text)` → 合成 WAV → 本地播放
|
||||
|
||||
### 企业微信 Webhook
|
||||
- URL: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=644ab6d9-3b66-4166-88e9-5a8a89e3731d`
|
||||
- 只能发消息,不能收消息
|
||||
|
||||
## order_monitor.py 核心逻辑
|
||||
|
||||
1. Playwright 打开浏览器,用户手动登录丰享平台
|
||||
2. 登录成功后,通过浏览器页面的 `fetch()` 调用订单 API(复用浏览器会话,最自然)
|
||||
3. 每次拉取最近 N 条订单,和上次最新订单号对比,找出所有新订单
|
||||
4. 新订单同时推送企业微信 + 飞书 + 本地TTS播报
|
||||
5. 高峰期(11-13点、17-19点)10-20秒轮询,闲时 30-60 秒
|
||||
6. 每 5 分钟刷新页面防 Session 过期
|
||||
7. Session 过期自动检测 → 通知企业微信 → 等待用户重新登录
|
||||
|
||||
## 消息格式
|
||||
|
||||
- 企业微信: `【丰享丰食】订单收款成功,收款24.00元`
|
||||
- 小爱音箱: `收到新订单,收款24元`(口语化,整数不带小数点)
|
||||
|
||||
## 已安装的依赖
|
||||
|
||||
```
|
||||
pip install playwright requests
|
||||
playwright install chromium
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 丰享登录有**腾讯验证码 TCaptcha**,无法纯接口绕过,必须用 Playwright 浏览器登录
|
||||
- 小米 passToken 会过期,过期后需重新运行 `setup_xiaomi.py` 登录
|
||||
- Windows 终端输出中文会乱码,但实际发送的内容是正确的 UTF-8
|
||||
- MiService 的 `miaccount.py` 第 68 行已修改:`self.password.encode()` 加了 None 检查(passToken 登录时 password 为 None)
|
||||
Reference in New Issue
Block a user