81 lines
5.3 KiB
Markdown
81 lines
5.3 KiB
Markdown
# 聚胜算每日账单导出(头条放心购 / 京东日账单)
|
||
|
||
把聚胜算「经营中心 → 平台原始账单[新]」的账单**定时导出并导入财务系统**(浏览器自动化 + 受控导入)。
|
||
|
||
## 平台
|
||
|
||
| `-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 日自动导出**上一个整月**。
|
||
- **先补旧账再拉新账**:每次运行先核对 `2026-07-01` 至本次截止日的覆盖情况。发现历史月份缺失、截止日不足、行数或金额不一致时,按月份从旧到新重导并复核;历史补数未通过时,不继续拉取该平台的新日期。
|
||
- 每日失败自动顺延:当天任一平台导出、上传或导入失败,不写成功状态;次日覆盖核查会重新发现缺口并优先补齐。
|
||
- **无差异跳过**:该平台该月已导入且笔数/收入/支出完全一致时跳过导入(`-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
|
||
```
|
||
|
||
命令会逐个月份检查期间起止范围、有效版本行数和登记行数;缺月、只导到月中或行数不一致都会返回失败。
|
||
|
||
## 聚水潭订单标签明细
|
||
|
||
聚水潭订单标签明细复用已同步的 `ops_jst_orders`,不经过浏览器导出。生产宿主机每天 06:10 在订单镜像 05:00 同步后执行:
|
||
|
||
```bash
|
||
sh /opt/caiwuxitong/run-finance-batch.sh jst-order-labels:sync-daily --from=2026-10-01 --company=1
|
||
```
|
||
|
||
任务会先逐日比较源订单与标签明细的订单覆盖。历史缺口按连续日期补导;历史检查未通过时不继续拉取新数据。通过后替换刷新最近 7 天,并再次复核整段覆盖。手动预览可加 `--dry-run --json`。
|
||
|
||
业绩明细的种菜金额每天 09:30 单独刷新:
|
||
|
||
```bash
|
||
sh /opt/caiwuxitong/run-finance-batch.sh store-receipt:planting-daily --from=2026-10-01 --company=1
|
||
```
|
||
|
||
任务先确认标签明细覆盖完整,再同步当前月和上月的种菜报销工单,最后对这两个月执行 `store-receipt:order-match:sync --planting-only`。种菜订单号取“种菜报销明细订单号”和“聚水潭是否种菜订单=是”的并集,命中订单的种菜金额取该业绩行收入金额。
|
||
|
||
## 组成
|
||
|
||
| 文件 | 作用 |
|
||
| --- | --- |
|
||
| `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`(京东取昨日;头条取月初→昨日)。
|