61 lines
3.8 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.

# 聚胜算每日账单导出(头条放心购 / 京东日账单)
把聚胜算「经营中心 → 平台原始账单[新]」的账单**定时导出并导入财务系统**(浏览器自动化 + 受控导入)。
## 平台
| `-Platform` | 胜算页签 | 导入命令 | 财务系统落点 |
| --- | --- | --- | --- |
| `toutiao` | 头条放心购 → 资金流水 | `business-mirror:import-douyin-authoritative` | 账单流水数据 › 店铺收款账户账单 › **抖音账户** |
| `jd` | 京东商城 → 京东日账单 | `business-mirror:import-jd-daily` | **京东账单 + 京喜账单**(一次导入按店铺名拆两边,两边合计恒等于导出行数) |
| `jd-wallet` | 京东商城 → 京东钱包 | `business-mirror:import-jd-wallet` | **京东网银钱包账户** |
## 用法
```powershell
# 三个平台都跑:区间「月初 → 昨日」
pwsh -File scripts\erp-daily-bills\run-erp-daily.ps1
# 只跑京东,补历史月份
pwsh -File scripts\erp-daily-bills\run-erp-daily.ps1 -Platform jd -Through 2026-07-31
# 只跑京东钱包,补历史月份
pwsh -File scripts\erp-daily-bills\run-erp-daily.ps1 -Platform jd-wallet -Through 2026-07-31
# 只导出不导入(排查)
pwsh -File scripts\erp-daily-bills\run-erp-daily.ps1 -Platform toutiao -Through 2026-10-05 -SkipImport
```
- 归期:`--through`(默认昨日)所在月份;每月 1 日自动导出**上一个整月**。
- **无差异跳过**:该平台该月已导入且笔数/收入/支出完全一致时跳过导入(`-ForceImport` 可强制重刷);状态记在 `runtime/private/erp-exports/imported-state.json`。
- 超过胜算同步导出上限(响应 `超出同步导出允许最大数据量`)时,脚本自动轮询「异步导出下载管理」取回本次任务的全部分片,逐片转 CSV 后合并成一份再导入;仍可用 `-Start/-Through` 分段导出。
- 导入前用页面笔数(共 N 条)与导出行数核对,不一致就跳过导入(`-ForceImport` 可强制),避免只导入一部分。
- 稳定性:导出最多重试 3 次(胜算页面偶发日历面板/授权弹窗异常);上传与"导入+回验"失败自动重试 3 次(含重新上传 CSV),用于吸收服务器 SSH 偶发断连。
- 失败即失败:导出/转 CSV/笔数核对/上传/导入回验任一步失败,都会**不写本地状态、不归档**,并在结束时以退出码 1 结束(下次运行会重新导入),不会把失败当成功记入 `imported-state.json`。
## 覆盖校验
导入后可核对三个数据集在指定区间内是否逐月覆盖到截止日:
```powershell
docker exec -u www-data caiwu_app php artisan business-mirror:verify-erp-daily-coverage --from=2026-07-01 --to=2026-10-19
```
命令会逐个月份检查期间起止范围、有效版本行数和登记行数;缺月、只导到月中或行数不一致都会返回失败。
## 组成
| 文件 | 作用 |
| --- | --- |
| `run-erp-daily.ps1` | 统一入口:导出 → 转 CSV → 差异判断 → 上传 → 受控导入 → 页面回验 → 归档 → 日志 |
| `export-daily.mjs` | 浏览器自动化导出(登录、切页签、设日期、查询、导出、取下载直链) |
| `erp-session.mjs` | 胜算登录与会话工具(凭据读 `runtime/private/敏感信息.md`,可用 `ERP_SECRET_FILE` 覆盖) |
| `cdp.mjs` | 无依赖的 Edge DevTools Protocol 驱动 |
| `xlsx-to-csv.py` | 导出文件(xlsx)转 UTF-8 CSV,并输出笔数/收入/支出核对数 |
## 说明
- 导入走财务系统既有受控导入命令(带笔数/收支核对、原子切换、保留旧版本可回滚),不改上游数据。
- 凭据、导出文件、日志都写 `runtime/private/`(`.gitignore` 忽略),不进仓库。
- 定时:Windows 计划任务每天 09:30 调 `run-erp-daily.ps1`(京东取昨日;头条取月初→昨日)。