362 Commits

Author SHA1 Message Date
a8b086766b 快递运费:提供成本运费后面新增「运费差」列(按交易单号取快递应付的运费差)
运费差是「应付款项 › 快递应付 › 运费差」页面上传的汇总快照(JSON 文件,不是数据库表),这里新增 CourierFreightDifferenceMap 读它并转成 交易单号 ⇒ 差异 映射,页面按交易单号带出新列;快照文件的修改时间进缓存键,财务重导后自动失效。源表一格多单号(逗号分隔)会逐个挂同一个差异值。
2026-10-08 14:49:55 +08:00
chenxi
203aea523a Merge remote-tracking branch 'origin/main' 2026-10-08 14:38:44 +08:00
885961084e 流程统计:接入店铺申请流程(开店/变更/关店)共享镜像
数据源:jiansun.dbo.fys_shopInfo_flow(申请单明细,4572 行,含店铺/平台/负责人/利润中心/商标/变更原因/关店原因等)
+ 中台库 dbo.flow_flow(按 flowId 关联审批状态与当前审批人),两个数据集已登记并完成首次全量。

- 新增 ShopInfoFlowMirrorRepository:左连接两套镜像,支持单据编号/申请人/申请日期/当前审批人/
  ERP店铺名称/店铺运营负责人/利润中心/商标号等文本筛选,流程类型、审批状态、平台为可搜索多选。
- 审批状态文案取自 OA 前端字典:0暂存/1流程中/2拒绝/3完成/4撤回/5待签署/6已签署/7待审批;
  流程类型:8店铺开店/9店铺变更/10店铺关店/12主体注销自动流程。
- 页面按目录表渲染(查询条件、筛选字段、导出),列与外部店铺申请页对齐。
- TableRegistry 登记为只读上游页,镜像未就绪时页面给提示而不是报错。
2026-10-08 14:38:16 +08:00
chenxi
3dd90dc52c 修复业绩明细商品金额重复计算(订单侧按子订单去重)
订单侧聚合改为先按「子订单号 + 条码」去重再求和,避免拆单/子单重复计入商品金额。
2026-10-08 14:33:48 +08:00
chenxi
12eb5d03d9 Merge remote-tracking branch 'origin/main' 2026-10-08 14:24:25 +08:00
chenxi
946d794e12 修复业绩明细补行插入列数不一致
补行的列集合与主行对齐(补 planting_amount),避免批量插入时列数不匹配导致同步失败。
2026-10-08 14:24:20 +08:00
cddb5e6145 财务经营风险管控:新增「流程统计」页面
- 在 financial-risk-control 下新增 process-statistics 页面(目录式骨架,先占位:
  流程名称/总数量/已完成/待处理/期间),数据源和统计口径确认后再接入。
- 该目录有两个页面了,按目录内页签渲染(复用 section-page-tabs),可以互相切换。
- 侧边栏权限兼容:按页面键只授权过「店铺违规信息预警」的账号也会看到新页面
  (两页同属财务经营风险管控权限),并更新相关测试。
2026-10-08 14:07:06 +08:00
chenxi
c02ecb8b44 Merge remote-tracking branch 'origin/main' 2026-10-08 14:05:19 +08:00
7fe426211d 快递运费:列名改回「成品配件」(新表含成品运费/配件运费两类)
上一版把列名改成「成品运费」了,按业务要求改回「成品配件」;导入侧继续两种表头都认。
2026-10-08 14:06:22 +08:00
chenxi
085ea33ff4 业绩明细订单侧切换为「订单原始数据」口径(方案B)
订单侧来源改为企微客户订单 + 聚水潭订单(与「订单数据 → 原始数据」同一来源),
按「店铺 + 线上订单号」对商品金额求和;取数改用临时表 + STRAIGHT_JOIN 避免大表全扫。
2026-10-08 14:05:08 +08:00
8c626c65de 快递运费:查询字段靠左,列名「成品配件」改「成品运费」
1) 查询栏里的空提交表单没隐藏,会占掉栅格第一格,把筛选字段整体挤到第二列;改成 hidden 后字段从最左边开始(所有用这套查询栏的页面一起受益)。
2) 快递运费页把「成品配件」列名改成「成品运费」;导入时两种表头都认(成品配件 / 成品运费)。
2026-10-08 13:55:56 +08:00
69f3d9228f 店铺账号密码:授权状态 / 店铺状态筛选改成可搜索多选
复用已有的 CaiWuMultiSelect 组件(按钮 + 复选面板 + 全选/清空),勾选结果提交为
authorization_status[] / store_status[],多个取值取并集;一个都不勾=全部。

- 目录表的筛选控件在 query 表单外(靠 form 属性关联),给多选组件补了 formId 选项,
  生成的隐藏 input 带上 form,保证能随查询表单提交。
- pageFilters 支持数组筛选值(去重、最多 50 个);仓库侧筛选统一按列表处理,
  单选(旧链接)和多选都兼容。
2026-10-08 13:48:51 +08:00
401dfb089a 店铺账号密码:上游新增字段自动跟随(镜像补列 + 页面自动多出这一列)
新增 business-mirror:follow-upstream-columns:先把数据字典刷新到最新,再把上游
视图里新增、当前数据集还没同步的字段追加进镜像定义并立刻建列,下一次常规同步
就会带回数据。只做新增,不删除/不改写已有字段;字段名带 password/secret/token/
cipher/credential 等敏感关键字的一律跳过。已登记到发布 cron(每天 06:40)。

页面侧:config/upstream_mirrors.php 的 auto_follow_columns 用「页面 => 数据集」
登记,FollowedUpstreamColumns 服务把 followed_columns 变成表格列;这类列只展示、
不生成查询条件(后端还没有对应筛选口径)。

数据集自带的数据变动仍然由每分钟的 business-mirror:sync-tables 增量同步。
2026-10-08 13:19:53 +08:00
1c90b64c29 快递运费:新增导入命令与页面数据表
财务经营报表 › 快递运费 之前是空页面。现在:
- 新增 courier_freight_rows 表(来源 / 成品配件 / 交易单号 / 提供成本运费);
- 新增 courier-freight:import 命令(xlsx / csv,按表头名匹配,支持 --replace);
- 把聚水潭导出用的 xlsx 流式读取器改成通用名 XlsxSheetReader(本次文件 57.8 万行、解压后 115MB,必须流式读);
- 页面按来源 / 成品配件 / 交易单号查询,列设置与分页复用通用目录表。
2026-10-08 13:20:01 +08:00
2cf181f1bf 业绩明细:异常标注三类整理 + 优惠/冲减补行 + 匹配状态/异常标注多选联动筛选 2026-10-08 11:46:42 +08:00
8ffcd58118 种菜金额口径改为「或」:种菜明细表 ∪ 聚水潭种菜标签
之前两个条件是「与」(交集),导致聚水潭没打种菜标签的淘系订单全部为空。按业务确认改成或:订单号在「种菜明细表」或「聚水潭订单标签明细(是否种菜订单=是)」任意一边出现过,就取该订单的收入金额。同步更新页面描述与迁移注释。
2026-10-08 11:26:46 +08:00
88adb33c45 种菜金额回填改为一次覆盖全平台
--planting-only 不再要求指定 --platform:种菜订单号与平台无关,按整月刷一遍即可。
2026-10-08 11:03:05 +08:00
7b09d0de05 业绩明细:冲减金额后面新增「种菜金额」列
口径:订单号同时出现在「种菜明细表」和「聚水潭订单标签明细(是否种菜订单=是,即标签命中种菜映射)」里时,该订单的收入金额就是种菜金额,其余留空。两边的订单号都按账单侧同一套「核心单号」清洗(去日期前缀/空格/横杠)后比较;金额取该行已有的收入金额,只是展示,不参与差额计算(它本身就是收入金额的一部分)。

- 新增迁移:store_receipt_order_match_rows 增加 planting_amount 列(在 offset_amount 后面)。
- 同步命令:正式同步时写入该列;--amounts-only 一并回填;新增 --planting-only 只刷这一列(不读账单,适合给已同步好的账期补数);新增 --company 选项。
- 页面:列顺序 收入金额 / 优惠金额 / 冲减金额 / 种菜金额 / 商品金额…,顶部统计加「种菜金额合计」,导出同步带上该列。
- 补 NavigationTest 的列断言。
2026-10-08 10:59:21 +08:00
8261b17328 种菜明细表同步:利润中心优先用历史值,缺失的用店铺维度报表的 ERP 店铺资料补齐
9 月有 19 家新店铺(1245 行)在历史映射里查不到,导致利润中心为空。现在按「ops_fys_shop_info.erpShopName → responsibleDepartment」补(就是店铺维度报表里 ERP系统店铺名称 → 店铺所属利润中心 那一列),两边都查不到才留空并在命令输出里列出。

历史值仍然优先,避免把人工维护过的取值改掉:实测 371 家可在 ERP 命中的店铺里 365 家两边一致,6 家不一致(朴美家居、朴美书房、拼多多-HX103、索菲亚办公、顾升、乐之益)已单独报给用户确认。
2026-10-08 09:59:11 +08:00
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
c1995319e6 业绩明细导出:当前页按页面每页条数(10/20/50)导出 2026-10-07 17:58:04 +08:00
dba61e5c8e 业绩明细:平台/店铺可搜索多选、导出跟随筛选且空值导出 0.00、分页支持每页条数与跳页(表头吸顶/序号列固定) 2026-10-07 17:54:34 +08:00
c8a035a18f 业绩明细:新增优惠金额/冲减金额两列(取科目映射表财务备注=优惠收入/冲减收入,支持 --amounts-only 回填) 2026-10-07 17:08:46 +08:00
4bcfde58f7 按文件导入改为两遍:先挑出真正有标签的订单,再拆行写入
聚水潭导出是一单多行,实测有 97 单是「部分明细行带标签、部分为空」;单遍处理会给这些单多写一行「(无标签)」。改成第一遍收集有标签的订单号,第二遍只对整单无标签的订单写「(无标签)」,并补上对应断言。
2026-10-07 16:59:01 +08:00
8a70fd4482 修 JstOrderLabelImporter:把延迟清区间的逻辑挪到 importFromFile,恢复镜像导入的 --replace
上一个提交的补丁打在了 import() 上:镜像导入的 --replace 清空被删掉,而 importFromFile 用到未定义的 \ 直接报错。现在两边各归各位。
2026-10-07 16:57:35 +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
e8b8b816f4 修复「是否种菜订单」映射读取为空:补 deleted_at 列并改用表查询
新建的 jst_order_label_planting_rules 缺 deleted_at,而模型基类带 SoftDeletes,查询报错被兜底成空映射,
页面全部显示「否」。补迁移 2026_10_07_130000(建表迁移同步补上)并把服务改为 DB 表查询。
2026-10-07 11:20:03 +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
1a024c2b26 Merge remote-tracking branch 'origin/main' 2026-10-07 10:55:58 +08:00
chenxi
d7582cdb46 修复业绩明细导出:补平台筛选 + 改游标流式输出
导出补齐平台筛选,并把 chunk(1000) 的 OFFSET 轮询改为 cursor() 单查询流式输出。
2026-10-07 10:55:52 +08:00
40832546da 聚水潭订单标签明细:店铺/标签筛选改为可搜索多选
店铺名称、标签由原生单选 select 改为项目已有的「可搜索多选」组件(可打字搜索、全选/清空、勾选一条或多条),
结果按 shop_name[]/label[] GET 提交;控制器支持数组并与旧单值参数兼容,店铺 whereIn 精确匹配、多个标签 OR 包含匹配,
页面/分页/导出同口径。生产数据实测:多选店铺 951=951、多选标签 39575=39575、旧单值 92=92 均与独立 SQL 一致。
2026-10-07 10:54:07 +08:00
chenxi
2341a839f3 Merge remote-tracking branch 'origin/main' 2026-10-07 10:41:06 +08:00
chenxi
0bb4df6512 业绩明细扩展到店铺收款账户账单全部平台页签
按页签配置来源表与列映射(得物用 bill_date、京东系列/抖音用 order_no+income、
京东与京喜按店铺名拆分、京东/抖音只取活动代);单号查询同时带原始号与核心号
以匹配拼多多的日期前缀单号;镜像表增加平台维度与平台列/筛选。
2026-10-07 10:41:00 +08:00
4258bd4e0e 侧边栏权限:新增一级菜单「种菜数据汇总」不再被旧权限集合隐藏
种菜明细表 / 聚水潭订单标签明细 原本挂在「账单流水数据」下,移入新一级菜单「种菜数据汇总」后,
按页面键保存过精确权限的访问组(总账组/结算组/税务组)里没有新 section,导致菜单不显示、直达链接 403。
按既有 company-management 兼容做法:能看「账单流水数据」即可见「种菜数据汇总」。
生产数据实测(临时容器、同镜像、只读):修复前 12 个访问组账号全部看不到,修复后 21 个账号全部可见。
2026-10-07 10:27:20 +08:00
fb15402003 feat: 店铺维度报表无业绩月份列默认隐藏 (#281) 2026-10-07 10:01:13 +08:00
chenxi
b9c2b73655 修复业绩明细月份选择器禁用 7 月的问题
data-min-month 由写死的 2026-08 改为镜像中实际最早账期(YYYY-MM),
避免把已同步的 7 月禁用导致无法查询。
2026-10-07 09:51:26 +08:00
chenxi
278f641018 业绩明细账单侧筛选改为「总账备注」口径
账单侧改为按总账备注命中「订单/收入/交易收入/订单收入/商家结算款/跨境订单结算款/消费订单」,
复用 AccountLedgerRemarkMap + LedgerRemarkFilter,与店铺收款账户账单页同一口径,
淘系页签按店铺名前缀分淘宝/天猫/阿里巴巴取各自账单项目;统计条新增「收入为 0 的账单行」。
2026-10-07 09:39:06 +08:00
5ef4119a3d feat: 主体维度经营报表无数据月份列默认隐藏 (#280) 2026-10-06 23:51:16 +08:00
bfc119608f feat: 新增税金预测表逻辑配置页面 2026-10-06 23:18:53 +08:00
35fe10bc69 feat: 新增税金预测表页面与取数口径说明 2026-10-06 23:17:16 +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
d6b0b7f1d7 feat: 接入退货取件管理镜像、实际运费核算与 XLSX 导出 2026-10-06 16:05:59 +08:00
4523682d1e feat: 逆向物流报价页接入计费规则与费率表 2026-10-06 16:01:35 +08:00