|
|
82c79dadc3
|
feat: 店铺维度报表销量改取业绩明细的订单实付/实收金额 (#363)
|
2026-10-17 00:19:09 +08:00 |
|
|
|
0a54775b3b
|
配件补发扣款:快递比例配置、Excel导入和归属选择 (#357)
|
2026-10-16 22:27:46 +08:00 |
|
|
|
b26ab9f85d
|
快递应付:首发信息拆列及明细字段筛选 (#356)
|
2026-10-16 22:17:52 +08:00 |
|
|
|
b4eaa1e102
|
快递应付:新增配件补发扣款匹配界面 (#353)
|
2026-10-16 21:36:03 +08:00 |
|
|
|
37c11f4e8e
|
fix: 提现管理店铺余额保留最近5天 (#349)
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
|
2026-10-16 19:00:49 +08:00 |
|
|
|
2399d42d6d
|
feat(存量报价): 支持按发货名称手填录入及无编号报价
|
2026-10-16 17:58:35 +08:00 |
|
|
|
d1b14fc10d
|
feat: 合作合同乙方签约地支持编辑 (#343)
|
2026-10-15 18:13:24 +08:00 |
|
|
|
288184c8dc
|
feat: 快递资料合同甲乙方与协议签署联动 (#341)
新增合同主体(乙方)与签订公司(甲方)只读展示和导出;协议签署自动带出唯一乙方,缺失或冲突留空核对。19项直接相关测试与实际浏览器联动验证通过。无权限、金额、数据库结构或配置改动。
|
2026-10-15 17:00:21 +08:00 |
|
|
|
f41a8fa6ba
|
钉钉登录:单独授权人员仅访问三个快递报价页面 (#339)
按精确企业身份开放受限登录,保留在职校验和普通角色;统一限制菜单、页面、导出与预览。59 项相关测试通过,无数据库迁移。
|
2026-10-15 15:21:05 +08:00 |
|
|
|
1131d073ce
|
快递入驻:指定钉钉初复审人员,复审任一人通过 (#337)
|
2026-10-15 13:52:30 +08:00 |
|
|
|
9c63f36944
|
fix(发货数据): 无快递单号的自动发货仓旧包裹也按被取代清除
- 10.11/10.12 剩余约 476 个省份空白包裹:凌晨同步时按自动发货仓入库、当时订单还没有快递单号;之后订单有了发货明细,
改由发货明细来源键吐出,旧包裹因无单号未被识别为被取代而残留(重复且省份空白)。
- 窗口内未再出现的旧包裹,若为自动发货仓来源且该订单本次已有发货明细,或无单号但同一交易单号本次已由其它包裹吐出,视为被取代删除。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhRy6EiUwf
|
2026-10-14 15:34:47 +08:00 |
|
|
|
f6497f5afc
|
fix(发货数据): 重跑时清除被取代的兜底包裹,保留包裹也刷新省市区/快递/仓库
- 凌晨同步时发货明细常未到齐,包裹先按自动发货仓/出库单兜底入库(无省份、无商品);之后发货明细到齐换成发货明细来源键,
旧兜底包裹因"上游未再出现"被保留,造成重复和空白省份(10 月重跑 2,226 个)。现在:旧包裹的快递单号已由本次其它包裹吐出时
视为被取代并删除;无对应的仍保留待核对。
- 商品金额无法安全匹配(或新商品明细缺失)而保留的旧包裹(10 月 28,201 个),此前整包不更新;现在商品与金额不动,
省市区、快递名称、仓库、店铺、平台、交易单号、付款时间按本次上游刷新。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhRy6EiUwf
|
2026-10-14 08:54:45 +08:00 |
|
|
|
ea80148dfc
|
店铺违规预警:级别/责任人/处理截止/超时/推送状态 + 处理状态四档 + 群推送接口 + 预览统计页 (#332)
|
2026-10-13 19:54:01 +08:00 |
|
|
|
d47a72c175
|
店铺违规预警:新增违规原因与处置方式两列(页面/统一表/导入导出) (#323)
|
2026-10-13 11:32:27 +08:00 |
|
|
|
7ecd5a59e6
|
fix(发货数据): 快递名称、仓库按发货数据视图取值,与工作平台一致
- 9 月核对剩余 256 条快递名称、44 条仓库不一致;抽样 14/14 工作平台显示的就是发货数据视图
(Jst_SendData_View_extension) 的 expressName / wareHoursName。视图有值时以视图为准,
视图没有该出库单时保留出库单/发货明细推断的值。
- 发货数据视图、出库单头按 300 个出库单一批查询(原 800),减少副本库超时导致整月重跑中断。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhRy6EiUwf
|
2026-10-13 09:53:02 +08:00 |
|
|
|
e61e3b50fb
|
店铺违规预警:补充生产每日同步定时任务(cron 遗漏) (#315)
|
2026-10-13 09:36:14 +08:00 |
|
|
|
c55c06026f
|
快递应付:报价维护只留报价页签 + 附加费结算定时同步(每日7天/每周90天) (#314)
|
2026-10-12 17:49:10 +08:00 |
|
|
|
e883d262f0
|
快递应付:修复三方仓进销存加载超时
|
2026-10-12 17:22:17 +08:00 |
|
|
|
26f945ba29
|
本地预览:测试断言同步到已启用的 OPcache 配置
deploy/php-local.ini 已改为 OPcache 开启 + 每次请求校验时间戳,测试仍断言 opcache.enable=0 导致失败;更新为 enable=1 并校验时间戳。
|
2026-10-12 17:12:10 +08:00 |
|
|
|
d8dfb33437
|
fix(发货数据): 仓库按实际出库单发货仓、补入无需物流虚拟发货、作废单号识别换单
- 仓库一律按实际出库单 wms_co_id 映射(从快递公司一致的明细行学习仓库名,样本>=3 且占比>=90% 才回填),
修正发货明细写总仓而实际由工厂代发仓出库(如 710099981090 千优代发仓)的情况。
- 快递名称为"无需物流"(补差/信誉/运费等虚拟发货,如 X00006)的包裹仓库统一为"简尚-自动发货仓",与工作平台一致。
- 换单配对:快递明细单号只对应作废出库单时视为已换单,改用有效出库单的新单号(如 DPK366101313659 -> SF1549142274850)。
- 出库单兜底不再跳过"无需物流"的无单号出库单(信誉订单/补差价/运费专用等虚拟发货),按工作平台口径补入自动发货仓、快递单号为空;
9 月核对工作平台有、线上无的 565 条虚拟链接,抽查确认为此原因(出库单无单号被跳过)。
- 换单配对查询(logistic_id 无索引)副本库超时时跳过本页,不再中断整轮同步;结果返回 tracking_pairing_skipped_pages。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhry6eiuwf
|
2026-10-12 09:58:05 +08:00 |
|
|
|
1e689d254e
|
附加费结算:超长费/退回费/拦截费拉取、导入核验与模板导出
|
2026-10-12 09:33:24 +08:00 |
|
|
|
cbec6a8b62
|
供应商管理增加每天08:15完整同步 (#302)
|
2026-10-11 13:57:28 +08:00 |
|
|
|
ad3961b82d
|
修正供应商易签宝账号并接入签署选择 (#300)
|
2026-10-11 13:39:03 +08:00 |
|
|
|
49c6e1ecd1
|
修复供应商管理资料镜像索引与存储分类 (#298)
|
2026-10-11 12:34:31 +08:00 |
|
|
|
665b8fafd2
|
接入供应商管理页面与共享镜像 (#297)
|
2026-10-11 12:11:15 +08:00 |
|
|
|
0e1feaf1e6
|
修复协议文件签字盖章区域过小 (#293)
|
2026-10-11 10:17:32 +08:00 |
|
|
|
473b6f4ebb
|
修复流程审批状态取不到:OA 流程表改用 jiansun 的实时副本
原来取的是中台库 dbo.flow_flow,那份数据停在 2026-07-16,7 月之后的申请
(比如 shp20260716165004772 京喜-清木居工厂店 关店流程)审批状态全是空的,
而工作平台显示「流程中」。
jiansun.dbo.flow_flow 是实时表(今天还在更新,10543 行),同名单据里
flowStatus=1、当前审批人=山时。已登记并完成首次全量 + 建 flowId 索引;
中台那份旧副本改为停止同步(数据保留)。
流程统计页与店铺账号密码的「流程类型 / 审批状态 / 流程状态」两处取值都跟着换成实时表。
|
2026-10-09 10:25:43 +08:00 |
|
|
|
b4821ca933
|
唯品会MP/JX账户:订单结算时间改为「账单期间」,筛选项也按账单期间过滤
1) 两列改名:AccountBillColumns 里唯品会两个页签的「订单结算时间」→「账单期间」(金额式账期月份,如 2026-07),列类型从 date 改 text 避免被当日期格式化;
2) 筛选标签:DATE_FILTER_LABELS 里 vipshop / vipshop-jx 从「结算时间」改成「账单期间」;
3) 筛选真正生效:这两个页签的 start/end 不再过滤 occurred_at,改为按 payload.settle_period(YYYY-MM)与所选区间取月份交集,页面列表与导出同步生效。
同步更新 AccountBillsTableTest 的断言。
|
2026-10-09 09:35:16 +08:00 |
|
|
|
d69a7d2ca7
|
店铺账号密码:把流程类型和审批状态两列都拉过来
上一版只带了「流程状态」(关店流程的审批状态)。改成按 ERP 店铺名取该店铺
最近一单申请流程(开店/变更/关店/主体注销自动),同时给出流程类型与审批状态,
列位置仍在「店铺状态」后面;两列都可搜索多选筛选、可排序。
线上:966 个账号店铺里 396 家最近一单是关店流程;状态文案与流程统计页一致。
状态映射缓存从 10 分钟放宽到 30 分钟(全量算一次要几秒,数据变化很慢)。
|
2026-10-08 15:12:41 +08:00 |
|
|
|
c88c0f165e
|
店铺账号密码:新增「流程状态」列(取店铺关店流程)
按 ERP 店铺名关联 jiansun.dbo.fys_shopInfo_flow 的关店流程(flowType=10),
同一店铺取最近一单,状态用 OA 流程表的审批状态文案(流程中/完成/拒绝/撤回…)。
列加在「店铺状态」后面,同时做成可搜索多选筛选,并支持按流程状态排序。
线上:966 个账号店铺里 486 个有关店流程(流程中 352 / 完成 46 / 撤回 14 / 拒绝 2 /
其余审批状态暂缺),列值缓存 10 分钟。
|
2026-10-08 14:51: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 |
|
|
|
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 |
|
|
|
627fa966ef
|
店铺账号密码:新增授权状态、店铺状态两列(在账号分组名称后面)
两列都来自已有的共享镜像,按店铺名关联(下划线、空格统一成短横线):
- 授权状态:聚水潭店铺档案 jst_shopInfo 的授权到期时间;无到期时间为未授权,
已过期为已过期,其余为已授权。
- 店铺状态:店铺档案 fys_shopInfo.shopState,0 正常 / 3 关闭中 / 6 已关闭,
与店铺基础信息页口径一致。
两列同时做成下拉筛选(已授权/已过期/未授权、正常/关闭中/已关闭),并支持按业务
顺序排序;映射结果缓存 10 分钟,避免每次列表都全表读两张档案表。
线上命中率:账号表 966 个店铺,授权状态命中 963、店铺状态命中 948。
|
2026-10-08 11:39:34 +08:00 |
|
|
|
dcdea11f0f
|
fix(发货数据): 快递公司/仓库按实际出库单取,同步命令内存上限调至 4G
- 发货明细(jst_order_express_details)可能停在作废前的旧分配(如先分工厂代发仓、后改外采由总仓出库;或换单后仍是旧快递公司),
工作平台按实际出库单显示。快递公司与出库单不一致或为空时改用出库单 logistics_company,
仓库按出库单 wms_co_id 映射(从快递公司一致的明细行学习仓库名,扫描结束统一回填)。
- 9 月核对:快递名称不一致 434/331,612,仓库不一致 85,其中外采快递、线下快递、换单类为此原因。
- jushuitan:sync-shipping 内存上限 1536M -> 4096M:整月窗口重跑在扫描后段内存耗尽(退出码 255)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhry6eiuwf
|
2026-10-08 10:52:27 +08:00 |
|
|
|
471aa714e8
|
fix(发货数据): 以本地全量核对通过的版本替换 #282 的同步实现
#282 的整合版在本地全量同步中发现问题,改用已与工作平台逐单核对通过的实现(保留 #283/#284 及 main 其它改动):
- 订单元数据只缓存精简字段(状态仅存取消/拆分/合并,标签只存是否线上发货),全表扫描后释放;
#282 缓存完整标签会在全表扫描时内存超限导致同步中途退出
- 按规则排除的包裹(取消/拆分/合并/线上发货)清除本窗口旧记录
- 剩余 @ 前缀统一去掉(工作平台导出无 @)
- 自动发货仓虚拟/补差单:单号已被其它包裹实际输出时留空(对齐工作平台)
- 出库映射保留作废单但排在有效单之后;换单按出库单号顺序一对一配对
测试:同步单测相应调整(作废单排序、多候选配对)。
验证:本地清空 8.15-9.30 后全量同步 9.1-9.16,与工作平台对比两边共有包裹 195,555,带单号漏拉 1 单。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhry6eiuwf
|
2026-10-07 16:33:23 +08:00 |
|
|
|
db2ee47fd8
|
发布切换容器前等待生产上游同步完成 (#284)
|
2026-10-07 15:00:48 +08:00 |
|
|
|
c4a976751d
|
修复订单售后页面一直转圈:店铺候选改成定时预热
上一次把店铺候选的完整计算放在 app()->terminating() 里,但服务器是 mod_php,
响应要等整个请求(含终止回调)结束才算完成,浏览器就一直转圈、侧边栏停在骨架屏。
线上实测:发布后第一个打开订单售后费用明细的人,页面会卡两分钟以上。
改成:页面只返回毫秒级的店铺目录兜底,完整候选(目录 ∪ 订单镜像店铺)由新增的
order-data:warm-shop-candidates 每小时预热一次,并在发布脚本的 cron 里注册。
|
2026-10-07 14:21:36 +08:00 |
|
|
|
a9da8d4447
|
修复发货镜像字段校准与合并列表耗时 (#283)
|
2026-10-07 14:08:20 +08:00 |
|
|
|
916fb30f37
|
修复批量筛选:纯数字单号当数组键会被 PHP 转成 int
batchValues() 原来拿值本身当数组键去重,纯数字订单号(如 3317080368285022883)会被
PHP 转成 int,后续 whereIn 就成了数字和长文本比较,走不上 so_id / outer_oi_id 的
前缀索引,实测退化成全表扫描(70 秒以上)。
改成键加 v 前缀、返回原字符串,ctype_digit 显式传字符串。新增用例覆盖前导零单号
0001234 与 1234,防止再回归。
|
2026-10-07 14:05:53 +08:00 |
|
|
|
e5922dd78e
|
订单售后费用明细 / 商品推广费用明细:订单号和商品编码支持批量查询
两个页签的「订单号」「商品编码」改成多行输入框,可以直接粘一整列:
每行一个,或用逗号、空格、分号、顿号分隔,一次最多 50 个值,多值取并集。
- 订单号批量:先去两套来源解析候选 o_id(单表、等值 IN,走各自前缀索引),
再按订单过滤;单个订单号仍保留「从头匹配」的模糊语义。
线上实测 20 个真实单号解析 0.01 秒。
- 商品编码批量:每个编码在 商品/款式/店铺编码(推广页为 item_id)里匹配一组,
多组 OR;仍受统计日期/订单日期范围约束。
- 非淘系旧查询路径同步支持批量,保持两套口径一致。
|
2026-10-07 13:55:02 +08:00 |
|
|
|
6c054c7081
|
整合发货补漏与导出口径修复,保留主线同步保护 (#282)
|
2026-10-07 13:52:18 +08:00 |
|
|
|
4b97b30a3a
|
商品推广费用明细:店铺筛选改成和订单售后费用明细一致的多选控件
- 把「店铺名称:可点选的多选 + 模糊搜索」抽成公共组件
partials/order-data-shop-picker.blade.php,订单售后费用明细改为引用它,
商品推广费用明细用同一个控件(原来是一个纯文本输入框)。
- 推广页提交 shop_name[](多个取并集),后端镜像查询和非淘系旧查询都改成
按多个店铺 OR 匹配,仍兼容原来的单个 shop_name。
- 推广表的店铺名带下划线(天猫_卓禾家具旗舰店),和订单镜像的「天猫-…」
不是同一套命名,所以候选单独取自 ops_item_sales_cost_ratio 当前统计日期
出现过的店铺,按日期缓存 24 小时(单次约 0.4 秒、约 400 个店铺)。
|
2026-10-07 13:39:25 +08:00 |
|
|
|
d76b102bca
|
总账备注平台口径:1688 / 新佰广 前缀按阿里巴巴匹配
新佰广1688、1688xxx 店铺名不带「阿里巴巴」前缀,之前落到页签默认平台(淘系支付宝=淘宝),
1688 系账单项目匹配不到总账备注;新增两条前缀映射(1688、新佰广 → 阿里巴巴)并补单测断言。
|
2026-10-07 13:20:06 +08:00 |
|
|
|
af83d75a00
|
订单售后费用明细:订单号查询改为先解析候选订单再过滤
订单号原来在「订单 ⋈ 明细」关联后做三列 %x% 匹配,没有日期条件时优化器会放弃
索引,淘系那套 520 万订单 × 680 万明细必须全表扫描,线上实测单条跑到 19 分钟
还没结束(还占满 Apache 工作进程)。
改成两段式:先用带前缀索引的单表查询把订单号解析成两套来源各自的候选 o_id
(线上订单号 / 子订单号从头匹配、内部订单号按数值等值),再让分支按 o_id 过滤。
两套来源分开解析,避免两侧 o_id 撞号。候选超过 500 条或订单号不足 4 个字符时
退回原来的包含匹配,保持既有行为。
顺带给 jst_OrderItem 补 outer_oi_id 前缀索引(非淘系子订单号原来要扫 70 秒),
已在生产建好索引。
|
2026-10-07 11:31:56 +08:00 |
|
|
|
fb15402003
|
feat: 店铺维度报表无业绩月份列默认隐藏 (#281)
|
2026-10-07 10:01:13 +08:00 |
|
|
|
cf7924fdc6
|
订单售后费用明细:合并淘系(天猫/淘宝)订单来源
聚水潭把淘系订单放在 jst_qmcust_* 系列;页面镜像已接入后,报表改为两套来源合并:
- 订单、明细、售后分别按来源取数(ops_jst_orders* 与 ops_jst_qmcust_*),列映射一致;
淘系明细没有 send_warehouse,用订单上的 wms_co_id 兜底
- 每套来源各自下推筛选条件并按当前页各取所需行数再合并,避免整表物化后排序
- 店铺候选同时包含两类店铺(天猫-/淘宝- 前缀)
- 镜像数据集登记:jst_qmcust_orderlist/_item、jst_qmcust_refundlist/_item 及分层策略
- 用例:淘系订单与售后进入报表、店铺候选包含淘系、双源多店铺筛选
|
2026-10-07 10:00:20 +08:00 |
|
|
|
eda10bd740
|
订单售后费用明细:店铺筛选改为可点选的多选模糊查询
- 店铺名称由单个输入框改为可点选的多选下拉:候选里可按关键字模糊筛选、多选、全选当前结果/清空
- 提交 shop_name[],多个店铺取并集逐个模糊匹配;保留旧的单值 shop_name 兼容
- 候选来自订单镜像中真实出现过的店铺,缓存 1 小时;单次最多 50 个店铺,超出在面板内提示
- 补充仓库层与页面层用例
|
2026-10-07 10:00:20 +08:00 |
|
|
|
5ef4119a3d
|
feat: 主体维度经营报表无数据月份列默认隐藏 (#280)
|
2026-10-06 23:51:16 +08:00 |
|
|
|
e777e75176
|
店铺违规信息预警:统一表头映射,支持查询、导入导出与每日同步
|
2026-10-06 19:02:22 +08:00 |
|