|
|
82c79dadc3
|
feat: 店铺维度报表销量改取业绩明细的订单实付/实收金额 (#363)
|
2026-10-17 00:19:09 +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 |
|
|
|
288184c8dc
|
feat: 快递资料合同甲乙方与协议签署联动 (#341)
新增合同主体(乙方)与签订公司(甲方)只读展示和导出;协议签署自动带出唯一乙方,缺失或冲突留空核对。19项直接相关测试与实际浏览器联动验证通过。无权限、金额、数据库结构或配置改动。
|
2026-10-15 17:00:21 +08:00 |
|
|
|
71652c5a64
|
feat(快递入驻): 快递扫码填写入驻资料 + 两级审核 + 首版报价 + 签署开通
快递应付 → 快递报价 下新增「快递入驻」页:生成入驻二维码发给快递方,
对方免登录在手机上填写主体、联系人、e签宝签署人、结算账户、报价并上传资质,
内部对接人初审、管理员财务复审后生成首版报价,并自动生成报价确认单 PDF
推送到快递填写的 e签宝账号,签署归档后开通。
- 新增三张表 business_courier_onboardings / _files / _events(纯新增,不改旧表)
- 免登录填报页 /onboarding/courier/{token}:40 位随机 token,可暂存、提交、退回后补件,
链接有效期可延长、可作废;银行账号加密存储;附件存 uploads 盘
- 新增 COURIER_ONBOARDING_PUBLIC_URL 配置二维码里的站点地址(留空用当前访问地址)
- 内置纯 PHP 二维码生成(App\Support\QrCode,SVG 输出,无新增依赖)
- 生成二维码时必须定好系统快递名称(唯一,快递方不可见);财务复审沿用该名称,快递所填报价写成报价管理的 CourierQuoteVersion,
复用 CourierQuoteSignatureService 生成报价确认单并推送 e签宝(失败可重推/同步状态);初审人默认不能复审(COURIER_ONBOARDING_ALLOW_SAME_REVIEWER=true 可在测试环境放开)
- 支持公司 / 个人两种入驻:个人填姓名+身份证号(加密)、传身份证和银行卡,报价确认单按个人身份在 e签宝签署
- 扫码先选入驻方式;证件改为 营业执照 / 法人身份证正反面 / 银行卡正反面 各一张(个人营业执照选填),手机端上传前自动压缩,超限回到填报页提示
- 报价支持 4 种计费方式(面单+费率 / 首重+续重 / 按重量段一口价 / 小重量一口价+超出另算,费率可分段)+「其他」上传报价表;附加规则:计泡、起算重量、取整、每票加收(CourierQuoteStructure)
- 不再要求上传盖章报价单,至少填写一行在线报价
- 开通:报价确认单签署归档、或匹配到已签署协议、或填写线下签署说明
- 生成二维码前必填「快递公司代码」(自动大写、不可重复),入驻信息按代码对齐快递资料
- 公司入驻对公(营业执照主体)+ 对私(法定代表人)两个打款账户必填并自动核对;个人入驻对私必填、对公选填
- 变价:报价管理里后台改价 → 审核 → 自动推送快递 e签宝 → 回签;回签单导出 xlsx/zip;误发版本可作废
- 短期(临时)变价:变价单/报价版本加选填「结束日期」(end_date);按日期取价,期间用临时价,到期次日自动恢复原长期报价,
不用重签;报价管理显示 生效中(临时)/ 暂停中 / 已到期,确认单写明执行期间和到期后恢复的版本,审核提醒期间重叠
- 快递资料分四类:快递资料 / 网点 / 打款信息 / 操作日志,支持查询、导出、重置、编辑;
财务系统入驻的快递直接作为快递资料行,合同起止取协议签署里已签署的合作合同;
点开一行在下方看该快递的网点 / 打款信息(完整账号)/ 操作日志
- 编辑存财务系统覆盖值(business_courier_profiles,不回写工作平台),改动记操作日志(business_courier_profile_events)
- 打款信息新增 / 变更(business_courier_payment_accounts,账号加密)保存后跳到协议签署,自动预填收款账户证明 / 收款账户变更,
按签署状态显示 待推送协议 / 签署中 / 已生效;入口在快递资料明细和「打款信息」页签(表格每个账户可直接「变更」)
- ERP 开通:入驻开通后标「待 ERP 开通」,可手动补录(钉钉「新建快递」流程同步待接入)
- 新增 CourierOnboardingWorkflowTest(8 个用例),更新快递报价目录顺序断言
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gzfsnV3fJ89CoUy1D9V9g
|
2026-10-14 13:47:00 +08:00 |
|
|
|
b4f8416794
|
店铺违规预警:已超时口径限定需提醒范围,字典导入命令兼容大维度文件 (#334)
|
2026-10-13 20:13:53 +08:00 |
|
|
|
ea80148dfc
|
店铺违规预警:级别/责任人/处理截止/超时/推送状态 + 处理状态四档 + 群推送接口 + 预览统计页 (#332)
|
2026-10-13 19:54:01 +08:00 |
|
|
|
8905192b78
|
应付云仓车费:附件支持点击下载 (#329)
|
2026-10-13 13:58:31 +08:00 |
|
|
|
e883d262f0
|
快递应付:修复三方仓进销存加载超时
|
2026-10-12 17:22:17 +08:00 |
|
|
|
10c22a655d
|
退货取件管理:详情精简置底、当前行高亮、内部滚动与快递公司多选
|
2026-10-12 13:14:53 +08:00 |
|
|
|
1e689d254e
|
附加费结算:超长费/退回费/拦截费拉取、导入核验与模板导出
|
2026-10-12 09:33:24 +08:00 |
|
|
|
ad3961b82d
|
修正供应商易签宝账号并接入签署选择 (#300)
|
2026-10-11 13:39:03 +08:00 |
|
|
|
665b8fafd2
|
接入供应商管理页面与共享镜像 (#297)
|
2026-10-11 12:11:15 +08:00 |
|
|
|
65112a2bff
|
店铺账号密码:状态映射缓存键升到 v4,强制刷新流程状态
换成 jiansun 实时 OA 流程表后,旧的 v3 缓存(30 分钟)里还留着 7 月之后
审批状态为空的结果,页面会继续显示横杠;升版缓存键让所有环境重新计算。
|
2026-10-09 10:32:00 +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 |
|
|
|
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 |
|
chenxi
|
57c1ea7046
|
抖音账户关键词框与其它页签统一(去掉匹配方式下拉)
关键词改为单输入框;后端对 15~30 位纯数字按等值匹配(记录编码/订单号)快速返回,
其余仍为包含匹配,避免抖音账户全表扫描导致的长等待。
|
2026-10-07 14:50:07 +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 |
|
|
|
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 |
|
|
|
5b95b655bb
|
运费对账:全量汇总缓存 1 小时,避免每 15 分钟重跑两分钟的重查询
无筛选的全量汇总约 110~200 秒,按原来的 900 秒缓存会让常看这个页面的人
反复等两分钟;带筛选的汇总走索引很快,保持 15 分钟。
|
2026-10-07 11:01:29 +08:00 |
|
|
|
af8f1403fb
|
修复运费对账汇总卡死与订单店铺候选查询过慢
- 运费对账全量汇总:哈希关联的 join buffer 从 16MB 提到 128MB(空间上限 384MB)。
300 万行明细 × 400 万行最新关联表在 16MB 下会退化成磁盘多趟扫描,实测超过
max_statement_time(300s) 也跑不完,页面「记录数/运费合计」永远停在计算中;
调整后约 110 秒出结果并写入缓存。
- 订单售后费用明细店铺候选:改回两个来源各自 DISTINCT 后在 PHP 合并(UNION 会
把两个上百万行结果一起物化去重排序)。同时完整候选只算一次并缓存 24 小时,
冷缓存时先返回毫秒级的店铺目录,完整列表放到响应结束后补齐,避免页面为了
下拉候选把工作进程占住两分钟。
|
2026-10-07 10:52:36 +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 |
|
|
|
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 |
|
|
|
13a9697447
|
店铺收款账户账单新增「总账备注」筛选;每日账单脚本支持胜算异步分片导出
- 所有账户页签在「店铺」右侧新增「总账备注」下拉:按(平台+账单项目)翻译成账单项目集合过滤,页面/列设置/导出同口径;淘系支付宝、淘系微信同页签混多平台时按店铺名前缀细分
- 每日账单脚本:胜算超出同步导出上限(url=null+taskId)时自动从「异步导出下载管理」取回本次任务全部分片并合并成一份 CSV,导入前按页面笔数核对(不一致则跳过导入)
- 实测:京东 7 月异步导出两片 219158+235846=455004 笔 / 收入 17695094.84 / 支出 8035128.21,与已导入口径一致
|
2026-10-06 18:46:57 +08:00 |
|
|
|
78857a51d9
|
feat: 店铺维度报表按主体期间拆分并支持期初数据维护
- 改为按期初数据+系统主体+爬虫新主体生成主体期间,一行一期间,修复流程历史重复行
- 变更日当天归新主体、老主体失效显示变更日前一天;关店和其他非正常状态两列显示 -
- 期初数据首次打开固化为系统库设置,可在「规则信息 → 店铺维度报表逻辑配置」在线增删改
- 爬虫店铺主体按税号归一,首次抓到的新主体写入期间变更表并自动生成新期间
- 新增期间变更表迁移与 crawl_shop_company 镜像数据集
|
2026-10-06 18:42:12 +08:00 |
|
|
|
d6b0b7f1d7
|
feat: 接入退货取件管理镜像、实际运费核算与 XLSX 导出
|
2026-10-06 16:05:59 +08:00 |
|
|
|
a0c99c3e8d
|
新增店铺收款京喜账单页签并从京东账单切分
在京东账单右侧新增京喜账单页签,复用京东日账单的取数、列定义、筛选、排序、分页与导出,只增加平台维度过滤:京东账单排除京喜店铺,京喜账单只取京喜店铺。平台口径集中在 config/jd_bill_platform.php 与 JdBillPlatform(含口径切换起始日期参数,默认全量历史),仓库通过 forPlatform() 收窄,两个口径互补、总额守恒,底层镜像数据不修改不删除。真实镜像实测:京喜 488,464 笔 + 京东 210,983 笔 = 拆分前 699,447 笔,收入/支出/差额逐项误差为 0。
|
2026-09-28 19:25:53 +08:00 |
|
|
|
bfbfe935ea
|
新增淘系支付宝权威账单导入链路
|
2026-09-27 17:25:04 +08:00 |
|
chenxi
|
18fdb8a22f
|
支持进销存多月份权威快照
|
2026-09-26 22:45:37 +08:00 |
|
chenxi
|
4782cf62c8
|
修复八月进销存报表重复计数
|
2026-09-26 19:40:23 +08:00 |
|
chenxi
|
f92ed47def
|
修复进销存报表大数据导出
|
2026-09-26 03:21:14 +08:00 |
|
chenxi
|
3d2f27fb1a
|
优化进销存报表全量导出批次查询
|
2026-09-25 22:36:11 +08:00 |
|
chenxi
|
dd5f075b65
|
Merge latest main into inventory report branch
|
2026-09-25 20:25:01 +08:00 |
|
chenxi
|
0143dfe693
|
修正进销存月报按已确认进出仓明细取数
|
2026-09-25 20:10:45 +08:00 |
|
|
|
75b12df493
|
feat: 完善财务报表字段查询与排序
合并店铺和主体经营报表的字段查询布局,补齐数值筛选、排序和镜像状态提示。
|
2026-09-24 20:23:41 +08:00 |
|
|
|
fc70cff940
|
整合小额打款筛选与汇总性能保护 (#271)
|
2026-09-24 16:14:17 +08:00 |
|
|
|
f84de98696
|
修复进销存汇总计数超时 (#270)
|
2026-09-24 15:48:30 +08:00 |
|