CaiWuXiTong/scripts/erp-daily-bills
qiuxiang 8fbc9abd53 聚胜算每日账单导出:等待胜算标签页注册并提高导出重试次数
- export-daily.mjs:点击「胜算」后轮询等待 ss.erp321.com 标签页注册(最多 30s,中途补点一次),
  避免 targetInfos 尚未出现时直接读 targetId 抛 TypeError(2026-10-13 09:30 首次尝试即因此失败)。
- run-erp-daily.ps1:导出重试 2 次提高到 3 次(2026-10-12 两次全败后只能人工补跑)。
2026-10-16 10:17:58 +08:00
..

聚胜算每日账单导出(头条放心购 / 京东日账单)

把聚胜算「经营中心 → 平台原始账单[新]」的账单定时导出并导入财务系统(浏览器自动化 + 受控导入)。

平台

-Platform 胜算页签 导入命令 财务系统落点
toutiao 头条放心购 → 资金流水 business-mirror:import-douyin-authoritative 账单流水数据 › 店铺收款账户账单 › 抖音账户
jd 京东商城 → 京东日账单 business-mirror:import-jd-daily 京东账单 + 京喜账单(一次导入按店铺名拆两边,两边合计恒等于导出行数)

用法

# 两个平台都跑:区间「月初 → 昨日」
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 toutiao -Through 2026-10-05 -SkipImport
  • 归期:--through(默认昨日)所在月份;每月 1 日自动导出上一个整月。
  • 无差异跳过:该平台该月已导入且笔数/收入/支出完全一致时跳过导入(-ForceImport 可强制重刷);状态记在 runtime/private/erp-exports/imported-state.json。
  • 超过胜算同步导出上限(响应 超出同步导出允许最大数据量)时,脚本自动轮询「异步导出下载管理」取回本次任务的全部分片,逐片转 CSV 后合并成一份再导入;仍可用 -Start/-Through 分段导出。
  • 导入前用页面笔数(共 N 条)与导出行数核对,不一致就跳过导入(-ForceImport 可强制),避免只导入一部分。
  • 稳定性:导出失败自动重试一次(胜算页面偶发日历面板/授权弹窗异常);上传与"导入+回验"失败自动重试 3 次(含重新上传 CSV),用于吸收服务器 SSH 偶发断连。
  • 失败即失败:导出/转 CSV/笔数核对/上传/导入回验任一步失败,都会不写本地状态、不归档,并在结束时以退出码 1 结束(下次运行会重新导入),不会把失败当成功记入 imported-state.json。

组成

文件 作用
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(京东取昨日;头条取月初→昨日)。