Files
push_fenxiangfengshi/CLAUDE.md
T
houhuan f0bfd9dbbe v4: 改用本地IndexTTS2 + 新增飞书推送
- TTS从小爱音箱云API改为本地IndexTTS2模型
- 新增飞书群Webhook推送
- 新增notify_all统一通知(企业微信+飞书)
- 新增local_tts.py本地TTS封装模块
- 新增run.bat一键启动脚本
- 新增README.md项目说明
- 新增.gitignore排除敏感文件
- 更新CLAUDE.md文档
2026-05-12 17:06:49 +08:00

83 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 丰享订单监控项目
## 项目概述
自动监控丰享商家端(fs.szfx.com)的新订单,同时推送到企业微信、飞书群和本地TTS语音播报**。
## 文件说明
| 文件 | 用途 |
|------|------|
| `order_monitor.py` | 主程序:监控订单 + 企业微信 + 飞书 + 本地TTS播报 |
| `push_latest_order.py` | 单次获取最新订单并推送企业微信 |
| `fetch_orders.py` | 复用 Cookie 获取订单数据(命令行) |
| `fengxiang_scraper.py` | 首次登录获取 CookiePlaywright 半自动) |
| `setup_xiaomi.py` | 小米账号登录获取 serviceTokenPlaywright |
| `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`: 时间戳(秒)
### 本地 TTSIndexTTS2
- 使用本地部署的 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