117 Commits

Author SHA1 Message Date
ef62cac0d9 种菜明细表:新增按月从聚水潭种菜报销工单同步的命令(带自动排重)
每个月都要手工整理「中心明细表」,改成一条命令:planting-details:sync-work-orders --month=YYYY-MM。

- 口径用 1~8 月已入库的 7 万多行反推验证过:只取「工单类型=种菜报销、状态=已完成」的工单,明细表「日期」= 工单完成日 - 1 天(历史命中 100%),所以某月数据 = 完成时间落在该月次日到下月次日的工单。
- 字段映射(聚水潭只返回 fieldId,不给字段名,这批 id 是拿历史数据逐列对撞出来的):财务售价/财务运费/财务佣金/京喜差价/扣款/财务空包费/财务打款金额 分别对应工单的 任务付款/任务快递费/任务佣金/京喜差价/任务扣款/任务空包费/最终报销金额;负责人、账户、类型、标签、创建人、平台商品ID 也各有对应字段。
- 自动排重:写入前先删掉「本月 + 本次订单号」的已有行,重复执行不会翻倍;--force-clear 才整月覆盖,--dry-run 只看不写。
- 所属利润中心没有工单来源,用表里已有的 店铺→利润中心 映射回填,命中不了的店铺在命令输出里逐个提示。
- 补测试:字段映射 + 日期口径 + 去重 + 利润中心回填 + force-clear。
2026-10-08 09:35:34 +08:00
636187a9d8 业绩明细:差额口径改为(收入金额+优惠金额+冲减金额)−商品金额 2026-10-07 18:32:10 +08:00
c8a035a18f 业绩明细:新增优惠金额/冲减金额两列(取科目映射表财务备注=优惠收入/冲减收入,支持 --amounts-only 回填) 2026-10-07 17:08:46 +08:00
daa4c939e7 聚水潭订单标签明细:支持按聚水潭导出的订单 Excel 导入,并放开筛选下拉上限
镜像 ops_jst_orders 只覆盖 2026-04-01 之后,缺的历史区间只能靠财务在聚水潭「导出订单」导文件补。所以:- 新增 JstOrderExportReader:ZipArchive+expat 流式解析聚水潭导出 xlsx。这类文件字符串走 inlineStr、dimension 只写 A1、单文件上万行 ×135 列(解压 78MB),常规读法会读成空表或吃满内存;实测 12286 行 3.5 秒、峰值内存 10MB。
- jst-order-labels:import 新增 --file=:按「线上订单号+标签」去重后拆行写入,可配合 --from/--to 过滤窗口;带 --replace 时先成功读到数据行再清区间,避免文件有问题却先删了线上数据。
- 筛选下拉上限 500 -> 5000:导入 4~7 月后店铺已达 604 个,原来下拉里会缺 104 个店铺;提交筛选值的截断上限同步放开。
- 补两个测试:导出文件去重拆行、窗口过滤+replace。
2026-10-07 16:53:55 +08:00
chenxi
77b808245b 业绩明细账单侧筛选收窄为「总账备注 = 订单收入」
同步命令与页面说明改为仅按「订单收入」取账单侧数据,其余匹配/输出/统计口径不变。
2026-10-07 16:18:36 +08:00
c4a976751d 修复订单售后页面一直转圈:店铺候选改成定时预热
上一次把店铺候选的完整计算放在 app()->terminating() 里,但服务器是 mod_php,
响应要等整个请求(含终止回调)结束才算完成,浏览器就一直转圈、侧边栏停在骨架屏。
线上实测:发布后第一个打开订单售后费用明细的人,页面会卡两分钟以上。

改成:页面只返回毫秒级的店铺目录兜底,完整候选(目录 ∪ 订单镜像店铺)由新增的
order-data:warm-shop-candidates 每小时预热一次,并在发布脚本的 cron 里注册。
2026-10-07 14:21:36 +08:00
6c054c7081 整合发货补漏与导出口径修复,保留主线同步保护 (#282) 2026-10-07 13:52:18 +08:00
d877735507 聚水潭订单标签明细:新增「是否种菜订单」列
下单时间后面新增「是否种菜订单」列,逐行按(公司 + 标签)匹配财务维护的映射表:命中为是、未命中为否。
- 新表 jst_order_label_planting_rules + 模型 + 缓存服务,导入命令 jst-order-labels:import-planting-rules(读「判断种菜单.xlsx」)
- 导出 CSV 同步新增该列,页面/导出同口径
- 本地构建通过;改动/新增 PHP 文件 php -l 通过
2026-10-07 11:14:04 +08:00
chenxi
0bb4df6512 业绩明细扩展到店铺收款账户账单全部平台页签
按页签配置来源表与列映射(得物用 bill_date、京东系列/抖音用 order_no+income、
京东与京喜按店铺名拆分、京东/抖音只取活动代);单号查询同时带原始号与核心号
以匹配拼多多的日期前缀单号;镜像表增加平台维度与平台列/筛选。
2026-10-07 10:41:00 +08:00
chenxi
278f641018 业绩明细账单侧筛选改为「总账备注」口径
账单侧改为按总账备注命中「订单/收入/交易收入/订单收入/商家结算款/跨境订单结算款/消费订单」,
复用 AccountLedgerRemarkMap + LedgerRemarkFilter,与店铺收款账户账单页同一口径,
淘系页签按店铺名前缀分淘宝/天猫/阿里巴巴取各自账单项目;统计条新增「收入为 0 的账单行」。
2026-10-07 09:39:06 +08:00
8419d4097c feat: 内部流转报表导入工作簿数据并支持查询导出
- 新增共享镜像表 business_internal_flow_records 与整份替换导入命令 internal-flow:import
- 按 Excel 表头展示抬头、标签、预计9月销量、开票、所需进项成本、收票、剩余缺口与开票比例
- 复用公司基础信息的字段查询、表头排序、筛选字段与导出 Excel 交互
- 新增导入与页面测试,覆盖合计行跳过、重导入替换、筛选排序与未导入空状态
2026-10-06 22:08:08 +08:00
e777e75176 店铺违规信息预警:统一表头映射,支持查询、导入导出与每日同步 2026-10-06 19:02:22 +08:00
78857a51d9 feat: 店铺维度报表按主体期间拆分并支持期初数据维护
- 改为按期初数据+系统主体+爬虫新主体生成主体期间,一行一期间,修复流程历史重复行
- 变更日当天归新主体、老主体失效显示变更日前一天;关店和其他非正常状态两列显示 -
- 期初数据首次打开固化为系统库设置,可在「规则信息 → 店铺维度报表逻辑配置」在线增删改
- 爬虫店铺主体按税号归一,首次抓到的新主体写入期间变更表并自动生成新期间
- 新增期间变更表迁移与 crawl_shop_company 镜像数据集
2026-10-06 18:42:12 +08:00
2c1ac0bb3b 总账备注映射导入支持 --sheet 选择工作表(补齐京东网银钱包/淘系微信两处空列数据) 2026-10-06 17:26:41 +08:00
chenxi
7d2980d5e3 Merge remote-tracking branch 'origin/main' 2026-10-06 15:41:58 +08:00
e147c90a2c 店铺收款账户账单新增「总账备注」列(按平台+账单项目映射表取值)
- 新增 ec_account_ledger_remarks 映射表与 account-ledger-remarks:import 导入命令(平台/账单项目/总账备注)
- 新增 AccountLedgerRemarkMap:按店铺名前缀识别平台,无前缀时用页签默认平台;缺失匹配保持空白
- 全部账户页签(含淘系支付宝自有列定义)在「店铺/店铺名称」右侧新增「总账备注」列,页面/列设置/导出共用同一份列定义
- 控制器在分页与导出流读取时补齐 payload.ledger_remark,不改动上游账单与共享镜像数据
- 用例:新增 AccountLedgerRemarkMapTest;修正唯品会 JX/MP 列清单断言
2026-10-06 15:42:57 +08:00
chenxi
e0f89288d2 业绩明细取数口径改为「一个店铺 + 一个订单号 + 一个商品金额」
- 账单侧:账单项目扩到 11 类(交易收款、1688 增值服务系列、交易分账_货款、其它交易收款、
  先采后付账单付款、百补超级版消费者实付款、店铺过户),按「店铺 + 订单号」聚合收入与收款笔数
- 订单侧:销售全量按「店铺 + 线上订单号」先聚合求和(goods_count>0 有效行),
  一单多品/多子订单在聚合阶段合并,商品金额只挂一次
- 匹配:单号清洗(去日期前缀/空格/横杠)后按核心号 + 店铺匹配;店铺以账单「线上真实店铺」
  优先,下划线归一为横杠;订单侧单号一致但店铺不同或同号多店铺时标注异常
- 输出列:发生时间 → 店铺名称 → 线上单号 → 收入金额 → 商品金额 → 差额(收入−商品金额)
  → 匹配状态 → 异常标注;镜像表改为该行口径
- 统计:账单收款笔数、账单订单数、已匹配、未匹配、一单多笔、账单收入合计、
  订单商品金额合计、差额合计(已匹配)
- 未匹配分类:空单号 / 格式不一致 / 订单无商品金额 / 订单表无此单,并可按异常标注筛选

8 月淘系支付宝:118,500 笔收款 → 111,427 行,已匹配 101,005、未匹配 10,422
(订单无商品金额 8,352 / 订单表无此单 2,046 / 空单号 24),一单多笔 6,758。
2026-10-06 14:43:49 +08:00
chenxi
08aaed9241 业绩明细新增「店铺收款匹配订单明细」页面及同步命令
- 以店铺收款账户账单(账单项目=交易收款)为基数,按线上单号关联经营分析副本库
  的发货明细与销售全量,补出发货仓库、商品编码、商品数量、商品金额
- 匹配键:账单 online_order_no = 发货明细 so_id = 销售全量 sourceno(淘宝/天猫主订单号);
  同一订单多笔收款按订单号汇总,商品金额取 goods_count>0 的有效行
- 新增镜像表 store_receipt_order_match_rows 与命令
  store-receipt:order-match:sync <YYYY-MM>(分批查询上游,订单号每批 1000 条)
- 页面:月份/店铺名称/线上单号/匹配状态筛选、匹配统计条、分页、CSV 导出
- 修正宽精度迁移在 sqlite 测试库上执行 MySQL 改写语句导致测试全线失败的问题
2026-10-06 13:42:30 +08:00
chenxi
ffd851fc0c 四项全0时加权取两位舍入后的更改价格,修复 72.00495→72.01 偏差 2026-10-05 12:07:12 +08:00
chenxi
05760bd0a5 原始价格保留源表精度、加权改先除再舍入(存4位),对齐手工表算法 2026-10-05 11:07:26 +08:00
chenxi
26d096a3a5 加权平均单价改为先除再舍入(中间金额不舍入,最后统一保留两位) 2026-10-05 11:03:19 +08:00
chenxi
04e021700e 行维度增加“主仓”限制:只取仓库含主仓字样的仓库简称+商品编码 2026-10-05 10:50:37 +08:00
chenxi
9526173fec 成本价兜底改按方案②:仅“聚水潭成本价记录”有生效记录时才判已定价 2026-10-04 15:35:24 +08:00
chenxi
d736ab0fd3 更改价格最终规则:空值兜底(记录时间空视为≤次月2号、生效日期空视为未匹配)、生效>本月或记录时间>次月2号取变价前价格、成本价有值视为已定价 2026-10-04 15:19:14 +08:00
chenxi
1ca789807b 无原始价格且匹配到成本价时,定价状态改为未定价(按最新规则) 2026-10-04 14:16:25 +08:00
chenxi
790df169b5 定价状态统一:原本输出的“预估价”改为“未定价”(输入仍按预估价判断分支) 2026-10-04 14:02:36 +08:00
chenxi
2b06595331 更改价格按方案乙:记录不完整视为未匹配;记录时间>次月2号取变价前价格且状态保持 2026-10-04 13:18:35 +08:00
chenxi
22ec9ab333 更改价格分支修正:变价前价格需同时满足生效时间大于本月且记录时间大于次月2号 2026-10-04 10:47:40 +08:00
chenxi
a77d369d15 修复滚动月份代发仓判定丢失导致原始数量异常:按仓库简称兜底识别代发仓 2026-09-30 18:09:31 +08:00
chenxi
c0938893c7 更改价格分支补全:变价生效时间大于本月取变价前价格;均未匹配时留空并置“待人工核查” 2026-09-30 18:00:17 +08:00
chenxi
8ab825ed9e 采购数量/入库金额改为入库明细按大写条码+仓库简称汇总,采购单价=入库金额/采购数量 2026-09-30 17:56:06 +08:00
chenxi
1c679f0215 入库明细仓库简称匹配规则:仓库名匹配,含代发仓字样的按仓储方匹配 2026-09-30 16:43:19 +08:00
chenxi
fdb7f77173 Merge remote-tracking branch 'origin/main' 2026-09-30 16:39:12 +08:00
fc6b83aee0 Merge branch 'feature/qiuxiang-jst-order-labels-page' 2026-09-30 16:40:37 +08:00
e5d6c76f27 账单流水数据新增聚水潭订单标签明细页
新增「账单流水数据 › 聚水潭订单标签明细」(紧邻种菜明细表):四列(线上订单号/店铺名称/下单时间/标签),按标签拆行(一个标签一行)、订单不去重、标签不汇总,无标签订单记为「(无标签)」。新增 jst_order_labels 表(含公司/时间/标签/店铺索引)、JstOrderLabel 模型、JstOrderLabelImporter(从镜像 ops_jst_orders 按区间拆行导入,--replace 只清同区间)与 jst-order-labels:import 命令、导出路由与用例。页面筛选:下单时间区间(点整块开日历、可单独清除)、店铺、标签、线上订单号。
2026-09-30 16:40:16 +08:00
chenxi
793c160f12 入库明细仓库简称匹配:仓库名唯一匹配不到时回退按仓储方唯一匹配 2026-09-30 16:39:09 +08:00
chenxi
9ca01b5d65 进销存报表入库明细数据:新增镜像表与导入命令(原样导入不去重,仓库简称按仓库名唯一匹配) 2026-09-30 16:36:24 +08:00
chenxi
6947aafc79 Merge remote-tracking branch 'origin/main' 2026-09-30 14:48:54 +08:00
chenxi
64a82cf135 条码+仓库统一为商品编码+仓库简称(镜像并入行同步修正),并重算7/8月 2026-09-30 14:48:49 +08:00
b106569905 Merge branch 'feature/qiuxiang-planting-details-page' 2026-09-30 09:51:10 +08:00
28b9271b3c 账单流水数据新增种菜明细表页面与导入
新增「账单流水数据 › 种菜明细表」页面:汇总卡(笔数/财务打款金额/财务售价/扣款/京喜差价)+ 筛选(日期区间/店铺/负责人/类型/标签/关键词)+ 分页 + 按筛选全量导出,样式沿用 upstream-data 黑金令牌。新增 planting_details 表(20 列与源表一一对应,金额保留 4 位小数)、PlantingDetail 模型、PlantingDetailImporter(xlsx/xls/csv,兼容 Excel 序列号日期与千分位金额)与 planting-details:import 命令。补 PlantingDetailsPageTest 覆盖导入、序列号日期、页面渲染、筛选与导出。
2026-09-30 09:50:50 +08:00
chenxi
aafbfb20c7 原始数量只取仓库名称含主仓的期初数量(南昌樵舍仓仍取三方-南昌樵舍仓主仓) 2026-09-29 20:26:55 +08:00
chenxi
e54b7f8d25 南昌樵舍仓:江西仓送货的采购单据条码一并纳入行维度,采购数量合计与江西仓送货一致 2026-09-29 20:21:02 +08:00
chenxi
27c351f0c5 商品编码统一大写:表1期初基数、进销存聚合、南昌樵舍仓/江西仓送货映射的编码索引全部大写后再匹配 2026-09-29 19:54:28 +08:00
chenxi
379ba0eb99 南昌樵舍仓期初数量改取三方-南昌樵舍仓主仓对应商品的期初数量 2026-09-29 19:28:32 +08:00
chenxi
634f82fdc4 商品月加权平均单价维度跟进销存总表同步:并入进销存新增仓库/条码,南昌樵舍仓采购数量取简尚-江西仓送货主仓采购进仓 2026-09-29 18:27:33 +08:00
chenxi
6cc84caf33 取数口径修正:汇总数据排除南昌樵舍仓(规则12),并重算7月/8月 2026-09-29 18:00:44 +08:00
chenxi
ddfd4b052f 修复商品编码大小写不一致导致普通商品资料价格未匹配:聚水潭成本价/变价后价格/工作平台价格统一按大写匹配 2026-09-29 17:18:58 +08:00
chenxi
bc2df131e3 商品月加权平均单价:按取数逻辑计算7月/8月 2026-09-29 15:33:20 +08:00
chenxi
7b43d3e22c 商品月加权平均单价:建镜像表并导入7月期初基数 2026-09-29 15:21:47 +08:00