27 KiB
上游业务镜像清单
结论
项目不是只使用 rpt.Bulk_Price_Limit 一张表。当前主线代码直接读取两套上游中的约 43 个表或视图,覆盖组织资料、订单、退款、营销账户、供应商应付、快递资料、板材、封边条和库存。
caiwu_business_mirror 的目标是把项目实际使用的上游原表数据保存为共享业务镜像。网页只读镜像,后台刷新节点在低压、可断点的条件下完成首次全量和后续增量;不得再按页码或筛选条件临时生成不完整的数据副本。
当前迁移状态
| 状态 | 说明 |
|---|---|
| 已完成 | operations_replica/rpt.Bulk_Price_Limit 已进入类型化表 product_price_mirror_rows,商品价格页面已读取镜像并支持完整分页。 |
| 已完成 | operations_replica/rpt.jst_sku 已进入 ops_jst_sku,普通商品资料页面固定读取 sku_type = normal 的共享镜像,并支持稳定分页和业务筛选。 |
| 本次接入 | 聚水潭进销存共享镜像读取 jiansun/dbo.jst_inoutWater + dbo.jst_inoutWaterItem + dbo.jst_inventoryInfo 的全部仓库,保留 2026-08-01 起的已确认流水与库存锚点。“快递应付 / 三方仓进销存”在查询层继续固定 wms_co_id = 15045364;“商品价格管理 / 进销存报表”按所有仓库、商品和月份汇总。 |
| 已接入校准 | 聚水潭“普通商品资料”完整 XLSX 导出通过 product-catalog:import-authoritative-export 流式导入;导出中不存在的经营分析副本历史行写入 product_catalog_exclusions,页面与导出统一排除,但不删除 ops_jst_sku 原始镜像行。 |
| 本次接入 | jiansun/dbo.jst_purchase + dbo.jst_purchaseItem 通过固定联表查询进入 product_purchase_price_mirror_rows;普通商品资料只读取 Finished 且带“1688一键代发”标签的最近采购单价。线上代发价格页面另读取 Confirmed / Finished 采购明细,以 source_o_id 关联 ops_jst_orders.o_id,展示线上单号、店铺、供应商、商品编码、数量、单价并标记“采购单管理”;页面请求不直连上游。 |
| 本次接入 | 工作平台快递资料页面读取 wp_express 主表,并预留网点 wp_express_expNet、打款账户 wp_express_account 标签;三张表均登记为独立镜像数据集,首次同步完成前页面明确显示同步状态。 |
| 本次接入 | 工作平台“客服系统 → 退款数据 → 退货取件管理”读取 jiansun/dbo.ekf_ReturnPickupManagement(主表)、dbo.ekf_ReturnPickupManagement_Item(明细分录)与 dbo.ekf_ReturnPickupManagement_TruthReExpressNumber(实退快递单号映射),分别镜像为 js_ekf_return_pickup_management、js_ekf_return_pickup_management_item、js_ekf_return_pickup_truth_express;主表按 Id + updateTime、明细按 id + updatedTime、映射按 Id + createTime 增量,逆向物流运费核算与退件跟踪只读共享镜像,不在页面请求中直连工作平台。2026-10-02 已完成首次全量(296,707 / 378,705 / 173,346 行)。 明细 warehouse 是混合编码:4 位工作平台仓码(dbo.wp_warehouse.code / dbo.wp_warehouseConfig.whCode)镜像为 js_wp_warehouse(992 行,id + modified)与 js_wp_warehouse_config(132 行,无更新时间按主键全量校准),8 位聚水潭 wms_co_id 继续读 ops_jst_warehouse_info;页面与导出按名称展示,未命中时保留原始编码。 |
| 本次接入 | 聚水潭聚工单协同工单登记 work_order_main、work_order_sub、work_order_form_config、work_order_form_value 四张表;工单 API 固定筛选类型“仓内未发”,首次同步完成前返回同步未完成状态。 |
| 本次接入 | 供应商应付「厂家记账」读取已登记的 jiansun.dbo.jst_workOrderInfo 镜像,不新增上游链路:固定工单类型“记账” D7AE3ACE98BC4B66A41C7C2556E52F5E,状态 WAIT_AUDIT/REJECT_AUDIT/WAIT_CONFIRM/CONFIRMING/CONFIRMED(不含已取消),记账原因(SELECT_CASCADEField1413856620250906100920)为“厂家记账”12 项与“仓库记账”5 项二级原因,发起时间 created >= 2026-09-01;同一 woNo 只取最新 Id。结果随镜像同步版本缓存 10 分钟;首次同步未完成时页面明确提示,不把空镜像解释为没有记账工单。查询索引 (woTypeId, created, Id) 由迁移 2026_10_18_220000_index_supplier_bookkeeping_work_orders 建立。 |
| 待首次同步 | 聚水潭聚工单“小额打款”读取 jiansun.dbo.jst_workOrderInfo 与已解析映射 dbo.jst_small_payment_order_map;财务经营报表的小额打款页面固定筛选工单类型 82D94F5C54544EE3833CD8A3AB8B9F73,页面只读共享镜像,首次同步完成前明确显示待同步状态。 |
| 本次建立 | config/upstream_mirrors.php 中登记全部当前代码引用的原表;通用表级同步框架负责建表、稳定游标、断点续传、增量重叠和全量校准。 |
| 已开始逐域切换 | 公司、店铺、商标页面在对应镜像完成首次全量后自动改读完整镜像表;首次全量前保留旧快照作为兼容回滚。其他业务域仍需逐项切换,不得宣称全项目已经完成。 |
| 中央同步接入 | 店铺维度报表从 jiansun.dbo.jst_originalBillInfo 和 dbo.fys_shopInfo_flow 自动、可断点同步;不再依赖开发者电脑、SQLite 或人工 XLSX。 |
| 已完成 | operations_replica/rpt.jst_originalBillInfo 已进入通用原始账单镜像 ops_jst_original_bill_info;保留当前 19 个业务字段,按 Id 断点全量、按 updateTime 重叠增量。 |
| 页面已切换 | 店铺收款账单的淘系支付宝账户读取 operations_replica.rpt.jst_originalBillInfo,并关联 rpt.jst_shopInfo 展示店铺;分页、筛选、汇总和导出统一读取共享业务镜像。 |
| 抖音按月校准 | 抖音账户对已核对的完整月份读取 douyin_authoritative_bills 中胜算原始明细,douyin_authoritative_periods 原子选择有效版本;该月份不再叠加聚水潭拆分行。未校准月份继续读取原始账单镜像。导入命令为 business-mirror:import-douyin-authoritative <CSV路径> <YYYY-MM> --count=<核对笔数> --income=<收入> --expense=<支出>,只接受完整月份和精确核对值,保留旧版本、文件摘要及原镜像供回滚。生产执行前备份状态与受影响月份镜像,并使用 /run/caiwu-upstream-sync.lock。实际财务数据只放私有目录,不进入 Git。 |
| 已接入待首次同步 | 店铺收款账单的拼多多账户读取 jiansun.dbo.jst_originalBillInfo 中固定 channel = PinduoduoImport 的独立切片镜像 js_jst_pdd_receiving_bill_rows;不使用慢一天的 operations_replica 副本或营销账户 pdd_spread_bills。 |
| 已接入待首次导入 | 店铺收款账单的得物账户读取聚胜算权威 XLSX 经受控导入生成的 dewu_settlement_bill_rows;保留得物、退货退款订单和扣减其他费用明细三类渠道,不再回退 jst_originalBillInfo 辅助镜像。 |
| 已完成首次导入 | 提现管理的每日店铺余额读取聚水潭“平台原始账单[新] → 店铺余额表”接口 JSON/XLSX、多平台“平台资金账户余额”导出及“京东商城 → 京东钱包”流水,进入 jushuitan_shop_balance_snapshots。京东钱包按前一天作为截止日,每个店铺取最新费用结算时间的最后一笔账户余额,同一时间以最大记录编码消歧;每天 05:00 原子覆盖各来源范围,异常或空数据保留上一快照。页面按店铺名称精确匹配并强制使用平台消歧,未匹配和多匹配不会显示为零。 |
| 已接入待首次同步 | 店铺营销账户余额的京东账户读取 js_data_middle_platform.dbo.jd_jzt_finance_records 镜像 jsm_jd_jzt_finance_records;按 id 稳定断点、updated_at 重叠增量,页面不直连上游。 |
| 本次接入 | 普通商品资料的工作平台采购价格接入 jiansun.dbo.pm_priceAdjustment(镜像 js_pm_price_adjustment):按 skuCode 关联 jst_sku.sku_id,取 effectTime 不晚于当前时间的最新 purchasePrice,并在页面和导出中标记“工作平台价格”;源表没有可靠更新时间,按 Id 稳定键追加,首次全量完成前只显示普通商品自身采购价。 |
| 待有效凭据后首次同步 | 普通商品当前成本价、商品类型和更新时间继续读取 operations_replica.rpt.jst_sku;rpt.fys_skuCostPriceUpdate 是一 SKU 一行的旧快照,不能充当变价历史。完整成本价变更仍读取聚水潭经典开放平台“商品操作日志查询”接口 worklog.query,只镜像操作内容含“采购价”的记录到 jushuitan_cost_price_history_rows;经典接口必须在服务器私有配置中使用同一应用的 JUSHUITAN_PARTNER_ID / JUSHUITAN_PARTNER_KEY / JUSHUITAN_TOKEN,不得把新开放平台的 App Key / App Secret / Access Token 混用。页面在首次同步完成前明确显示待同步或失败,不把 0 条解释为真实无历史。 |
抖音月中校准可在上述导入命令追加 --through=YYYY-MM-DD,文件必须包含该月 1 日至截止日(含当天)的全部店铺和流水。系统仅替换这一日期范围,截止日之后继续读取原始账单镜像;省略参数仍表示完整月份。截止日期不得早于同月已校准范围。每天更新时重新导出月初至昨日的完整结果并核对笔数、收支总额,以覆盖迟到及修改记录,不能把单日增量当作月初至截止日的完整结果导入。
成本价镜像观测
business-mirror:sync-jushuitan-cost-price-history --source=snapshot 仅比较既有 ops_jst_sku 的当前成本价,首次读取和新增商品只建立基线。基线写入 jushuitan_cost_price_observation_baselines,后续观测变化写入独立的 jushuitan_cost_price_observations;状态使用 business_mirror_table_states 中的 jushuitan.product-cost-price-observations,不共用正式操作历史的同步状态。生产保留的旧 SKU 级 jushuitan_cost_price_snapshots 不作覆盖、删除或追溯导入。
观测任务沿 _mirror_synced_at + _mirror_key 索引顺序分批续传,默认每批 500 条、每轮最多 20 批;固定窗口并保留两分钟重叠,基线、事件、游标同事务提交。不进行每轮全表计数。生产任务每十分钟尝试运行,沿用 /run/caiwu-upstream-sync.lock,繁忙时跳过。首次基线较大时可由同步节点持有同一互斥锁分批完成。
普通商品资料独立展示每个源商品最近 20 条镜像价格观测,时间明确表示“发现时间”。modified 只是商品更新时间,不能充当真实改价时间;采集间隔内的中间价格、建立基线前的历史无法从当前镜像还原。正式操作历史仍使用默认 --source=open_api;月度加权成本及其他财务计算继续只读原正式历史,不使用观测结果。
经营分析副本库(operations_replica)
店铺维度报表不使用订单件数代替销量。中央刷新节点按上游主键 Id
分批读取 jiansun.dbo.jst_originalBillInfo,以 inout_type = 1 的
amount 作为收入,并从 dbo.jst_shopInfo 取得店铺名称;主体变更区间来自
dbo.fys_shopInfo_flow,按 [applyTime, 下一次 applyTime) 归属。
首次同步自动小批量续传,完成前不激活半份数据;失败时继续读取上一代。
所有开发机与生产页面只读同一份共享镜像,不依赖本机文件。
| 业务范围 | 上游对象 | 镜像目标 |
|---|---|---|
| 公司资料 | rpt.fys_companyInfo |
ops_fys_company_info |
| 店铺资料 | rpt.fys_shopInfo |
ops_fys_shop_info |
| 商标资料 | rpt.fys_TrademarkInfo |
ops_fys_trademark_info |
| 订单 | rpt.jst_Orders、rpt.jst_OrderItem |
ops_jst_orders、ops_jst_order_item |
| 商品与仓库 | rpt.jst_sku、rpt.jst_warehouseInfo、rpt.jst_skumap |
ops_jst_*(普通商品资料已切换) |
| 推广费用 | rpt.ads_itemid_sales_cost_ratio_v2_di |
ops_item_sales_cost_ratio |
| 退款退货 | rpt.jst_returnAndRefundInfo、rpt.jst_returnAndRefundItem |
ops_jst_return_refund_* |
| 聚水潭店铺 | rpt.jst_shopInfo |
ops_jst_shop_info |
| 聚水潭原始账单 | rpt.jst_originalBillInfo |
ops_jst_original_bill_info |
| 店铺维度报表 | jiansun/dbo.jst_originalBillInfo + dbo.jst_shopInfo + dbo.fys_shopInfo_flow |
store_report_bill_rows、store_report_lifecycle_rows、store_report_daily_rows |
| 聚水潭聚工单(仓内未发) | rpt.work_order_main、rpt.work_order_sub、rpt.work_order_form_config、rpt.work_order_form_value |
ops_work_order_main、ops_work_order_sub、ops_work_order_form_config、ops_work_order_form_value |
商品价格 rpt.Bulk_Price_Limit 继续使用已经上线的类型化同步器,不在通用原表任务中重复同步。
JianSun 旧业务库(jiansun)
| 业务范围 | 上游对象 |
|---|---|
| 店铺收款账单旧来源(已停用) | dbo.alipay_Bill_Detail |
| 营销账户 | dbo.tmall_spread_bills、dbo.pdd_spread_bills、dbo.alibaba_bill、dbo.jd_spreadBills、dbo.jd_costBills |
| 供应商应付 | dbo.finance_purchaseReturn、dbo.finance_invoiceDeduction、dbo.fys_supplierPaymentSummary、dbo.finance_advanceLoans、dbo.pm_unOrderDetails、dbo.finance_sampleDeduction、dbo.fys_express_courier_settlement |
| 供应商管理(简尚版) | jiansun.dbo.js_supplier_View(Id 稳定键,镜像 js_supplier_management)、dbo.js_supplier_contract_View(id 稳定键,镜像 js_supplier_contracts)、dbo.js_supplier_linkers(镜像 js_supplier_contacts)与 dbo.js_supplier_payinfo(镜像 js_supplier_payment_accounts)。联系人、打款资料按 Id / local_updated 增量并每 24 小时全量核对;主视图及合同视图无可靠更新时间,按稳定键追加并每小时全量校准。复用现有轮转调度、游标与代次,未完成校准继续全量模式。页面按供应商名称、采购人员及合作状态筛选;合同同时匹配合同主体和签订公司,联系人及账户按供应商名称关联。accountbankno 对应上游“电子合同经办人”账号,handlePerson 是经办人实名姓名,两者分别使用;发起签署按正式供应商 Id 选择并从该镜像带入账号,支持简称、合同主体全称及编码搜索,账号未维护时保留空值供手工核对,不用联系人电话替代。未完成首次同步时明确提示,不在页面请求中直连上游;操作日志关联未确认时不展示其他模块日志。 |
| 快递运费对账明细 | dbo.jst_order_express_details、dbo.Jst_SendData_View_extension、dbo.jst_salesOutboundInfo |
| 工作平台退货取件管理 | dbo.ekf_ReturnPickupManagement、dbo.ekf_ReturnPickupManagement_Item、dbo.ekf_ReturnPickupManagement_TruthReExpressNumber、发货仓名称 dbo.wp_warehouse、dbo.wp_warehouseConfig |
| 聚水潭进销存 | dbo.jst_inoutWater、dbo.jst_inoutWaterItem、dbo.jst_inventoryInfo(全部仓库、io_date >= 2026-08-01;专用稳定游标与完整代次镜像。三方仓页面仍固定 wms_co_id = 15045364,商品价格管理的进销存报表读取全仓库) |
| 安装明细 | dbo.fys_Ticketing_install_view、dbo.fys_Ticketing_install_item |
| 板材 | dbo.finance_boardDeduction、dbo.pm_plainPlateData、dbo.pm_boardPurchasePrice、dbo.pm_boardPriceChangeImport、dbo.pm_boardApplyDetail |
| 封边条 | dbo.pm_edgeBandData、dbo.pm_edgeBandApplyDetail、dbo.pm_edgeBandProfitInfo、dbo.finance_edgeBandDeductio、dbo.pm_averageUnitPrice |
| 库存与货款对账 | dbo.pm_boardInventoryDetail_snapshot、dbo.fys_supplierGoods_sttlement_purchase、dbo.fys_supplierGoods_sttlement_sale、dbo.pm_purchaseIn |
| 采购单价 | dbo.jst_purchase、dbo.jst_purchaseItem(受控字段联表镜像,不复制其他采购业务字段) |
| 工作平台采购价格 | dbo.pm_priceAdjustment(Id 稳定键;按 skuCode 匹配 jst_sku.sku_id,页面取当前已生效的最新 purchasePrice / effectTime) |
| 快递资料 | dbo.wp_express、dbo.wp_express_expNet、dbo.wp_express_account、dbo.wp_express_extension。wp_express.tradebody 为合作合同乙方(合同主体),signcom 为甲方(签订公司),主资料列表与导出读取这两个原始镜像字段。协议签署选择快递后按确切名称带入唯一乙方主体,缺失或同名主体冲突时保留空值并提示核对,不以快递简称替代,也不改写已签归档合同。 |
| 聚水潭小额打款工单 | dbo.jst_workOrderInfo(稳定键 Id、增量字段 updateTime)与 dbo.jst_small_payment_order_map(稳定键 woNo、增量字段 updated_at) |
| 拼多多货款账户账单 | dbo.jst_originalBillInfo(固定 channel = PinduoduoImport,镜像 js_jst_pdd_receiving_bill_rows) |
| 得物完整账户账单 | 聚胜算平台原始账单(新)XLSX(受控导入 dewu_settlement_bill_rows;保留得物、退货退款订单、扣减其他费用明细) |
JSDataMiddlePlatform 中台库(js_data_middle_platform)
| 业务范围 | 上游对象 | 镜像目标 |
|---|---|---|
| 京东京准通账户余额 | dbo.jd_jzt_finance_records |
jsm_jd_jzt_finance_records |
其中 fys_supplierGoods_sttlement_sale 当前约 280 万行,是首次全量同步的最大对象。必须在低峰期小批量、可断点执行,禁止把全量同步塞进发布流程。
同步规则
供应商管理保留现有后台轮转刷新,同时每天北京时间 08:15 通过 business-mirror:sync-supplier-management 顺序完整校准供应商档案(含易签宝账号)、合同、联系人和打款资料。生产任务使用现有上游同步锁和 www-data,有其他同步占用时排队执行;每批沿用现有行数限制,直到四个数据集分别完成,失败记录在原镜像同步状态中。固定任务随正式发布安装,页面继续显示最近同步时间。
- 首次全量只能通过
business-mirror:sync-tables <dataset> --full显式启动;失败或中断后使用同一命令继续。 - 日常任务只处理已经完成首次全量的数据集。存在可靠更新时间的表使用 48 小时重叠窗口;没有可靠更新时间的表按稳定主键追加。
rpt.jst_sku由普通商品专用任务每分钟优先处理,每轮默认最多 5 批、每批 1000 行,不再参加通用数据集轮转。 - 全量校准使用新的同步代次,只有全部完成后才删除镜像中本轮未出现的旧行,因此中途失败不会清空当前可用数据。
- 普通商品在最近完整校准超过 168 小时后,于周日 02:00-08:00 低峰窗口启动全量校准;一旦启动,后续每分钟从稳定游标继续,直至完整结束。首次全量由 Codex 备份后自主执行,定时任务保持既有初始化开关。
- 除专用数据集外,通用任务每轮默认只处理 1 个数据集、每个数据集 2 批,每批 500 行,避免同时压迫两个旧系统。
- 页面切换必须以“总记录数、第一页、第二页、末页、筛选、汇总、空数据和更新时间”作为验收,不能只看首页有数据。
- 普通商品的采购单同步以采购主表
updateTime加明细Id作为稳定游标;镜像保存来源单号、供应商、数量、单价和全部状态。普通商品页面按商品编码选择最近完成的 1688 一键代发价格;线上代发价格页面只展示Confirmed/Finished,并在共享镜像内关联订单。完成单后续取消时可撤回旧价格;新增投影字段完成新一轮全量前不展示采购单管理数据。 - 聚水潭官方接口尚未接入时,普通商品历史残留排除由负责人提供的最新完整 XLSX 导出刷新。只排除“导出生成前已创建、但导出中缺失”的镜像行,导出生成后的新增商品保持可见。导入使用新同步代次,只有完整解析成功才原子替换排除表;中断或错误保留上一版。后续接入聚水潭官方“普通商品资料查询”及删除/恢复记录后,由官方接口取代人工导出校准。
- 店铺维度报表是已批准的中央专用数据集:生产节点每 15 分钟按
Id断点推进并回看最近 50000 行,一轮最多处理 60000 行;同步批次按受影响主键精确维护行数,不得在完成阶段对千万级原始表执行COUNT(*)。原始账单同步后增量维护按店铺/日期汇总的store_report_daily_rows,页面不得现场扫描千万级原始账单。开发机不运行刷新 worker。 operations_replica.rpt.jst_originalBillInfo是供多个业务功能复用的原始账单镜像。首次同步由 Codex 备份后自主安排在生产同步节点低峰期分批续传,无需另行授权;页面请求和普通开发机不启动刷新 worker。同步完成后,开发者通过固定 Repository 查询ops_jst_original_bill_info,不得各自创建整表快照。 淘系支付宝账户账单当前仍读取此 MariaDB 镜像,统一调度须持续增量,不因 ClickHouse 尚未启用而暂停。账单冲减则复用“订单数据 → 原始数据 → 订单售后费用明细”,不按该表费用名称推断 500112。- 拼多多货款账户账单使用
jiansun.dbo.jst_originalBillInfo.pinduoduo_receiving数据集。同步器必须以参数绑定固定channel = PinduoduoImport,只复制该渠道切片;页面 Repository 只读js_jst_pdd_receiving_bill_rows。首次全量按Id断点推进,后续按updateTime保留重叠窗口,不得切回落后一天的operations_replica副本。 - 得物完整账单使用聚胜算权威 XLSX,通过
dewu-bills:import-authoritative写入dewu_settlement_bill_rows。导入必须核验文件 SHA-256、账期、记录编码唯一性、行数、收入和支出控制数,并保留得物、退货退款订单、扣减其他费用明细三类渠道;页面 Repository 不得回退jiansun.dbo.jst_originalBillInfo.dewu_receiving。详细流程见docs/得物完整账单取数方案留档.md。 - 聚水潭进销存首次全量按头表
Id区间小批断点续传,头表保存全部仓库中io_date >= 2026-08-01的数据,不激活半份数据;日常增量以头表(modified, Id)作稳定游标并保留 48 小时时间重叠,由命中头单驱动整单明细替换。全量和增量都先写待发布代次,库存抓取完成后再把流水追平到库存抓取之后的固定源时间边界,三部分成功后才一次切换;运行中或失败时三方仓页面继续读取上一成功代次,全仓报表在首份完整全仓代次发布前明确提示同步中。页面只统计Confirmed的 12 类进销存流水,数量按上游qty * qty_type保留符号。库存同时保存上游source_modified_at和实际captured_at,历史余额以每个“仓库 + SKU”的抓取时间为回推锚点;三方仓页面仍固定wms_co_id = 15045364并按“日期 + 商品”输出,全仓报表按“月份 + 仓库 + 商品”汇总。每天00:00执行增量同步,失败时继续展示上一成功代次。 - 聚水潭商品操作日志按最多 7 天的固定时间窗和接口页码稳定断点同步,每页最多 50 条,首次全量从
2000-01-01起扫描;只保留备注内容含“采购价”的记录,并从“采购价:旧值->新值”解析前后价格和差额。日常同步回看 48 小时,按接口记录字段生成稳定键幂等更新;接口失败时保留上一版镜像。页面不得把这些聚水潭记录与jiansun.dbo.pm_priceAdjustment的工作平台价格记录混为同一来源。
工作平台采购价格首次全量需在备份和负责人授权后单独执行:
php artisan business-mirror:sync-tables jiansun.dbo.pm_priceAdjustment --full
三方仓进销存首次全量使用专用命令显式启动;中断后重复执行同一命令会从稳定游标继续,只有流水、明细和库存三部分全部完成后才切换页面代次:
php artisan business-mirror:sync-third-party-warehouse-storage --full
后续切换顺序
- 公司、店铺、商标等小型维表。
- 营销账户五张单表账单。
- 快递资料、网点和打款账户。
- 供应商应付与货款对账。
- 订单、退款和推广费用。
- 板材、封边条和库存的跨表查询。
每个阶段都必须先完成首次全量和数量核对,再将对应 Repository 切到镜像;任一阶段失败时保留上一版镜像和旧只读链路用于回滚。
聚工单四个数据集首次同步需分别显式执行,完成后 API 地址为
GET /api/ecommerce-finance/work-orders,默认只返回工单类型“仓内未发”,并支持
order_no、status、create_user、assign_user、created_from、created_to 等筛选。
未完成四张表首次全量时,接口返回 503 和逐表同步状态,不把空镜像解释为没有工单:
表单值表没有可靠更新时间,日常同步只按稳定 id 追加;若上游允许修改既有表单值,需在低峰期重新执行该数据集全量校准。
php artisan business-mirror:sync-tables operations_replica.rpt.work_order_main --full
php artisan business-mirror:sync-tables operations_replica.rpt.work_order_sub --full
php artisan business-mirror:sync-tables operations_replica.rpt.work_order_form_config --full
php artisan business-mirror:sync-tables operations_replica.rpt.work_order_form_value --full
聚工单“小额打款”两个数据集由 Codex 备份后自主分别执行全量同步;页面不会在 HTTP 请求中回退直连 jiansun:
php artisan business-mirror:sync-tables jiansun.dbo.jst_workOrderInfo --full
php artisan business-mirror:sync-tables jiansun.dbo.jst_small_payment_order_map --full
两张表完成后,页面按工单主记录的完成时间筛选并稳定分页,以 woNo 关联最新的工单主记录;查询依赖工单表 (woTypeId, completeTime, woNo, Id) 和映射表 (woTypeId, woNo) 两个索引。映射表的 transaction_no 是线上订单号后备来源,不得展示为支付宝批次号;支付宝批次号只读取表单中的明确字段。工单状态按聚水潭状态码翻译,已完成工单再结合打款方式显示打款状态。筛选支持完成日期、工单号、店铺、支付宝批次号、线上订单号、状态和打款原因;表单详情从镜像中的 businessFieldList 解析,导出与页面使用同一筛选口径。首次全量未完成、查询索引未就绪或刷新失败时均保留明确状态,不能把空结果解释为没有小额打款工单。
供应商管理完整字段
简尚版主视图 jiansun.dbo.js_supplier_View 明确同步全部 52 个源字段,包含原列表右侧资料;列表与全部筛选结果导出共用字段映射。undefined2 是板材提供方,linkerprovience 保留上游拼写;endTimeA/endTimeB 分别为罚款/赔付终止日期,finishTimeA/finishTimeB 分别为终止/重启合作日期,不能用 cooperetime/cooperbtime 替代。未确认业务含义的辅助字段保留在镜像中,不猜测中文列名。扩展字段上线后必须备份原镜像及同步状态,并完整校准已有行;只追加新 Id 无法回补存量资料。验收对比源字段集合、总数、全量行内容及页面分页/筛选/导出。