CaiWuXiTong/docs/上游业务镜像清单.md

27 KiB
Raw Blame History

上游业务镜像清单

结论

项目不是只使用 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,有其他同步占用时排队执行;每批沿用现有行数限制,直到四个数据集分别完成,失败记录在原镜像同步状态中。固定任务随正式发布安装,页面继续显示最近同步时间。

  1. 首次全量只能通过 business-mirror:sync-tables <dataset> --full 显式启动;失败或中断后使用同一命令继续。
  2. 日常任务只处理已经完成首次全量的数据集。存在可靠更新时间的表使用 48 小时重叠窗口;没有可靠更新时间的表按稳定主键追加。rpt.jst_sku 由普通商品专用任务每分钟优先处理,每轮默认最多 5 批、每批 1000 行,不再参加通用数据集轮转。
  3. 全量校准使用新的同步代次,只有全部完成后才删除镜像中本轮未出现的旧行,因此中途失败不会清空当前可用数据。
  4. 普通商品在最近完整校准超过 168 小时后,于周日 02:00-08:00 低峰窗口启动全量校准;一旦启动,后续每分钟从稳定游标继续,直至完整结束。首次全量由 Codex 备份后自主执行,定时任务保持既有初始化开关。
  5. 除专用数据集外,通用任务每轮默认只处理 1 个数据集、每个数据集 2 批,每批 500 行,避免同时压迫两个旧系统。
  6. 页面切换必须以“总记录数、第一页、第二页、末页、筛选、汇总、空数据和更新时间”作为验收,不能只看首页有数据。
  7. 普通商品的采购单同步以采购主表 updateTime 加明细 Id 作为稳定游标;镜像保存来源单号、供应商、数量、单价和全部状态。普通商品页面按商品编码选择最近完成的 1688 一键代发价格;线上代发价格页面只展示 Confirmed / Finished,并在共享镜像内关联订单。完成单后续取消时可撤回旧价格;新增投影字段完成新一轮全量前不展示采购单管理数据。
  8. 聚水潭官方接口尚未接入时,普通商品历史残留排除由负责人提供的最新完整 XLSX 导出刷新。只排除“导出生成前已创建、但导出中缺失”的镜像行,导出生成后的新增商品保持可见。导入使用新同步代次,只有完整解析成功才原子替换排除表;中断或错误保留上一版。后续接入聚水潭官方“普通商品资料查询”及删除/恢复记录后,由官方接口取代人工导出校准。
  9. 店铺维度报表是已批准的中央专用数据集:生产节点每 15 分钟按 Id 断点推进并回看最近 50000 行,一轮最多处理 60000 行;同步批次按受影响主键精确维护行数,不得在完成阶段对千万级原始表执行 COUNT(*)。原始账单同步后增量维护按店铺/日期汇总的 store_report_daily_rows,页面不得现场扫描千万级原始账单。开发机不运行刷新 worker。
  10. operations_replica.rpt.jst_originalBillInfo 是供多个业务功能复用的原始账单镜像。首次同步由 Codex 备份后自主安排在生产同步节点低峰期分批续传,无需另行授权;页面请求和普通开发机不启动刷新 worker。同步完成后,开发者通过固定 Repository 查询 ops_jst_original_bill_info,不得各自创建整表快照。 淘系支付宝账户账单当前仍读取此 MariaDB 镜像,统一调度须持续增量,不因 ClickHouse 尚未启用而暂停。账单冲减则复用“订单数据 → 原始数据 → 订单售后费用明细”,不按该表费用名称推断 500112。
  11. 拼多多货款账户账单使用 jiansun.dbo.jst_originalBillInfo.pinduoduo_receiving 数据集。同步器必须以参数绑定固定 channel = PinduoduoImport,只复制该渠道切片;页面 Repository 只读 js_jst_pdd_receiving_bill_rows。首次全量按 Id 断点推进,后续按 updateTime 保留重叠窗口,不得切回落后一天的 operations_replica 副本。
  12. 得物完整账单使用聚胜算权威 XLSX,通过 dewu-bills:import-authoritative 写入 dewu_settlement_bill_rows。导入必须核验文件 SHA-256、账期、记录编码唯一性、行数、收入和支出控制数,并保留得物、退货退款订单、扣减其他费用明细三类渠道;页面 Repository 不得回退 jiansun.dbo.jst_originalBillInfo.dewu_receiving。详细流程见 docs/得物完整账单取数方案留档.md。
  13. 聚水潭进销存首次全量按头表 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 执行增量同步,失败时继续展示上一成功代次。
  14. 聚水潭商品操作日志按最多 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

后续切换顺序

  1. 公司、店铺、商标等小型维表。
  2. 营销账户五张单表账单。
  3. 快递资料、网点和打款账户。
  4. 供应商应付与货款对账。
  5. 订单、退款和推广费用。
  6. 板材、封边条和库存的跨表查询。

每个阶段都必须先完成首次全量和数量核对,再将对应 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 无法回补存量资料。验收对比源字段集合、总数、全量行内容及页面分页/筛选/导出。