优化
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# Admin 列表样式推广核对记录
|
||||
|
||||
## 本轮依据与边界
|
||||
|
||||
2026-09-30,用户确认排车列表样式后授权按客户管理、国内仓、货柜管理、海外仓顺序推广;特殊页面保留待人工确认。直接视觉依据为本轮截图 `41fea1ee-f30a-46db-97b0-82ec96846ec7/image-1.png` 与 [排车样板](Admin排车列表样式试点.md)。仅修改测试环境工作区 `apps/admin-web`,不部署或发布。
|
||||
|
||||
统一布局:左侧列表名称、右侧原业务按钮与字段设置,搜索和表格位于同一连续卡片。仅列表操作列采用蓝色普通文字、红色危险文字、悬停无下划线;查询、顶部、弹框按钮不变。列显隐、排序和拖动宽度使用公共浏览器偏好存储。保持所有业务字段、状态、权限和事件,不改变详情、新增、编辑、审核、文件预览与删除确认的承载方式。
|
||||
|
||||
## 修改前页面与操作矩阵
|
||||
|
||||
以下实现路径均相对 `apps/admin-web/src/modules/`。列表变化依据上述截图;其它操作以现有组件和事件为核对入口,保持原样,未定义的新承载方式不在本轮引入。
|
||||
|
||||
| 模块 | 页面 / 入口 | 当前实现与操作证据 | 本轮结论 |
|
||||
|---|---|---|---|
|
||||
| 客户管理 | 客户列表 `/customers` | `customers/pages/CustomersView.vue`:`customerRowActions`、`handleCustomerRowAction`、`openCreate`,客户详情路由及编辑/审核/重置密码弹框 | 接入连续列表;详情、新增、编辑、审核、资质与确认操作保持 |
|
||||
| 客户管理 | 海外仓阶梯费用 | `customers/pages/OverseasStorageFeesView.vue`:`openEdit`、`save`,费用编辑 AppDialog | 接入连续列表;费用编辑弹框保持 |
|
||||
| 国内仓 | 订单列表 | `unified-orders/pages/UnifiedOrdersView.vue`:状态页签、`unifiedOrderRowActions`、详情分支及批量审核、导入、扣货与文件入口 | 仅列表分支接入;详情和各弹框保持 |
|
||||
| 国内仓 | 订单测量 / 测量数据审核 | `inbounds/components/InboundTaskList.vue`:`taskLabel`、客户查询警告、测量和审核选择事件 | 两个路由共用列表接入;作业弹框和确认保持 |
|
||||
| 国内仓 | 预装清单 | `loading-lists/components/LoadingListsView.vue`:`mode`、列表权限判断、清单行操作、详情导航 | 接入连续列表;权限错误态和详情保持 |
|
||||
| 国内仓 | 库位管理 | `warehouse-resources/locations/pages/LocationsView.vue`:仓库加载与列表分别失败、编辑与删除确认 | 接入连续列表;独立错误提示、维护弹框和确认保持 |
|
||||
| 国内仓 | 托盘管理 | `warehouse-resources/pallets/pages/PalletsView.vue`:仓库加载、新增/编辑/停用/删除行操作 | 接入连续列表;维护弹框和确认保持 |
|
||||
| 国内仓 | 整柜业务 | `domestic-containers/pages/DomesticContainersView.vue`:入库/出库/库存页签、库存汇总及维护入口 | 三个视图共用连续列表,页签、汇总和原操作保持 |
|
||||
| 国内仓 | 船期日历 | `sailing-calendar/pages/SailingCalendarView.vue`:日历和渠道/模板/船期管理工作区 | 保留现状;日历布局待人工确认 |
|
||||
| 货柜管理 | 订舱列表 | `ocean-bookings/pages/OceanBookingsView.vue`:列表查询、行操作和订舱资料入口 | 接入连续列表;新建、编辑、详情、放舱及文件保持 |
|
||||
| 货柜管理 | 拖车列表 | `trucking/pages/TruckAppointmentsView.vue`:拖车查询和行操作 | 接入连续列表;创建、编辑、详情和确认保持 |
|
||||
| 货柜管理 | 送柜报关 / 清关提柜 | `container-loading/pages/ContainersView.vue`:`workbench` 双模式、在途/历史页签、行操作、预计到仓维护 | 两个工作台共用列表接入;所有详情、节点、订舱、资料、邮件和确认保持 |
|
||||
| 海外仓 | 尾程订单 | `overseas-warehouse/pages/LastMileOrdersView.vue`:普通列表与柜子工作台分支、行操作和柜级计划弹框 | 普通列表可接入;柜子工作台保留业务结构并单独核对 |
|
||||
| 海外仓 | 入库单 | `overseas-warehouse/pages/InboundOrdersView.vue`:预约、行操作及详情 | 接入连续列表;预约和详情保持 |
|
||||
| 海外仓 | 海外库位 | `overseas-warehouse/pages/LocationsView.vue`:普通/A0/虚拟库位资格和维护操作 | 接入连续列表;受保护资格和确认保持 |
|
||||
| 海外仓 | 排车列表 | `overseas-warehouse/pages/DispatchesView.vue` 已确认样板 | 保留样板;字段设置和列宽偏好保持 |
|
||||
| 海外仓 | 出库单 | `overseas-warehouse/pages/OutboundsView.vue`:按类型新建、取消、出库详情和选择作业弹框 | 仅主列表接入;新建候选及各弹框保持 |
|
||||
| 海外仓 | 派送单 | `overseas-warehouse/pages/DeliveryOrdersView.vue`:行操作、资料汇总和签收入口 | 接入连续列表;签收、详情和资料保持 |
|
||||
| 海外仓 | 换标单 | `overseas-warehouse/pages/RelabelOrdersView.vue`:新增、详情与编辑入口 | 接入连续列表;表单与详情保持 |
|
||||
| 海外仓 | 托盘管理 | `overseas-warehouse/pages/PalletsView.vue`:详情、单张打印及原维护入口 | 接入连续列表;打印尺寸和其它操作保持 |
|
||||
| 海外仓 | 库存管理 | `overseas-warehouse/pages/InventoryView.vue`:库存汇总、导出、详情和行操作 | 接入连续列表;汇总数据、导出及详情保持 |
|
||||
| 海外仓 | 退货库存 / 退货箱号 | `overseas-warehouse/pages/ReturnInventoryManagementView.vue` 两种 `mode` | 沿实际公共列表组件接入;明细和作业保持 |
|
||||
| 海外仓 | 进销存记录(关联入口) | `overseas-warehouse/pages/InventoryTransactionsView.vue`:只读边界提示、关系查询、导出 | 接入连续列表;只读边界与关系查询保持 |
|
||||
|
||||
## 本轮实现与待确认项
|
||||
|
||||
客户管理 2 个、国内仓 7 个、货柜管理 4 个、海外仓 11 个菜单列表已接入;另外接入海外库存关联的进销存记录,共 25 个列表入口(含原排车样板)。包装页面继续复用实际公共列表组件;整柜的三种业务页签、测量与审核双模式、货柜国内/海外双工作台、尾程订单隐藏柜子工作台和退货库存/流水/箱号分支均保留。
|
||||
|
||||
船期日历 `/sailing-calendar` 保留原样。日历与渠道/模板/船期管理工作区不等同于标准业务列表;需要人工确认顶部按钮、查询及日历的排列,再决定如何接入。本轮没有隐藏或移除该入口。
|
||||
|
||||
尾程订单隐藏柜子工作台仍保留自身卡片与分页,通过公共 `results` 插槽承载。修正了共享表格在自定义工作台或列表加载失败时重置页码的问题;普通列表继续使用原服务端分页。
|
||||
|
||||
新增页面的视觉均待人工在 1920×1080、100% 缩放下截图确认;样板截图不代表其余页面视觉已验收。重点核对页签、多字段查询、长编号横向滚动、汇总、危险文字、每页数量、字段显隐及拖动后刷新列宽。
|
||||
|
||||
## 验证记录
|
||||
|
||||
客户管理相关回归 9 个文件、120 项通过;特殊工作台、公共表格和其它受影响回归 7 个文件、180 项通过。源码审计确认已接入页面的原业务点击事件全部保留;除退货列表增加列配置与公共表格导入外,业务脚本保持不变,API 和权限没有修改。退货库存/流水/箱号增加行为回归,覆盖搜索分页、偏好隔离与详情入口。
|
||||
|
||||
2026-09-30 最终完整 `pnpm test`:263 个文件、2131 项全部通过。`pnpm build`(包含 `vue-tsc --noEmit`)通过。仅修改本地测试环境代码;未提交、未部署或发布。
|
||||
|
||||
|
||||
## 第二批修改前页面与操作矩阵(2026-09-30)
|
||||
|
||||
用户授权继续客户服务、海外仓、财务管理、通用、系统管理等剩余页面;沿当前菜单扩展海外业务和消息入口。上一批海外仓标准列表复核并保持。隐藏原型菜单不启用,首页数据看板不是列表,保留并记录待人工确认。
|
||||
|
||||
本批仍只改变主列表布局和操作列外观。下列实现路径相对 `apps/admin-web/src/modules/`;详情、新建、编辑、审核、文件预览、打印及删除/停用确认仍沿原组件、路由和事件,不引入新承载方式。视觉依据与第一批相同。
|
||||
|
||||
| 模块 | 页面 / 路由 | 当前列表实现及操作核对入口 | 结论 |
|
||||
|---|---|---|---|
|
||||
| 客户服务 / 通用 | 异常订单 `/overseas-warehouse/exception-orders` | `overseas-warehouse/pages/ExceptionOrdersView.vue`:toolbar-actions、actions、related、handlerName、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 客户服务 / 通用 | 客户回访 `/overseas-warehouse/customer-visits` | `overseas-warehouse/pages/CustomerVisitsView.vue`:actions、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 客户服务 / 通用 | 称重机器 `/general/mojia-sku-sync` | `overseas-warehouse/pages/MojiaSkuSyncView.vue`:toolbar-start、toolbar-actions、actions、sourceCode、kind、image、dimensions、syncStatus、match、measuredAt、failure;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 海外业务 | 海外采购订单 `/overseas-business/purchases` | `overseas-business/pages/PurchaseOrdersView.vue`:actions、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 海外业务 | 本土卡车 `/overseas-business/trucks` | `overseas-business/pages/TransportOrdersView.vue`:toolbar-actions、actions、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 海外业务 | 本土散板 `/overseas-business/looseboards` | `overseas-business/pages/TransportOrdersView.vue`:toolbar-actions、actions、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 客户账户 `/finance/customer-accounts` | `finance/pages/FinanceCustomerAccountsView.vue`:toolbar-actions、actions、customerName、customerCode、contactName、contactPhone、lastChangedAt、actualBalance、frozenBalance、availableBalance、creditLimit、creditExpiresOn、creditUsed、pendingRechargeCount、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 客户应收应付 `/finance/customer-arap` | `finance/pages/FinanceCustomerArapView.vue`:toolbar-actions、actions、customerName、direction、businessReference、sourceType、supplierName、sourceStatus、status、generated、businessDate、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 应收款统计表 `/finance/receivable-statistics` | `finance/pages/FinanceReceivableStatisticsView.vue`:toolbar-actions、customerName、totalReceivable、totalReceived、totalOutstanding、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 客户对账单 `/finance/customer-statements` | `finance/pages/FinanceCustomerStatementsView.vue`:toolbar-actions、actions、status、customerConfirmationStatus、customerName、lastPaymentAt、settled、createdByName、createdAt、submittedAt、reviewedAt、issuedAt、customerConfirmedByName、customerConfirmedAt、updatedByName、updatedAt、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 结算单应收 `/finance/settlement-receivables` | `finance/pages/FinanceSettlementReceivablesView.vue`:包装页,实际列表为 FinanceFormalSettlementPage 的 kind 双模式;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 财务管理 | 结算单应付 `/finance/settlement-payables` | `finance/pages/FinanceSettlementPayablesView.vue`:包装页,实际列表为 FinanceFormalSettlementPage 的 kind 双模式;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 供应商列表 `/suppliers` | `suppliers/pages/SuppliersView.vue`:toolbar-actions、actions、name、category、truckingScope、carrierCodes、license、status、settlement;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 快递公司 `/master-data/express-companies` | `master-data/express-companies/pages/ExpressCompaniesView.vue`:toolbar-actions、actions、company、website、status、empty、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 往来单位 `/master-data/counterparties` | `master-data/counterparties/pages/PartnersView.vue`:toolbar-actions、actions、partner、type、address、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 费用项目 `/master-data/fee-items` | `fee-items/pages/FeeItemsView.vue`:toolbar-actions、actions、feeItem、tradeScope、pickup、warehouse、supplierCategory、allocationFee、description、status、empty、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 海外仓报价 `/overseas-master-data/quotes` | `overseas-master-data/pages/OverseasQuotesView.vue`:toolbar-actions、actions、status;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 汇率管理 `/overseas-master-data/exchange-rates` | `overseas-master-data/pages/ExchangeRatesView.vue`:toolbar-actions、actions、conversion、status;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 车辆列表 `/overseas-master-data/vehicles` | `overseas-master-data/pages/VehiclesView.vue`:toolbar-actions、actions、status、region;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 仓库管理 `/warehouses` | `warehouses/pages/WarehousesView.vue`:toolbar-actions、actions、warehouse、warehouseType、countryCode、address、contact、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 船期价格表 `/first-leg-pricing/carrier-rates` | `fba-pricing/carrier-rates/pages/CarrierRatesView.vue`:toolbar-actions、actions、version、scope、status、contents、issues、empty、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 通用 | 下载中心 `/downloads` | `downloads/pages/DownloadCenterView.vue`:pagination-left、actions、type、status、progress、requester、requestedAt、completedAt、expiresAt;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 系统管理 | 用户管理 `/system/users` | `iam/pages/InternalUsersView.vue`:toolbar-actions、actions、roles、status、lastLoginAt、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 系统管理 | 角色权限 `/system/roles` | `iam/pages/RolesView.vue`:toolbar-actions、actions、role、permissionSummary、roleType、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 系统管理 | 菜单权限 `/system/permissions` | `iam/pages/PermissionsView.vue`:toolbar-start、toolbar-actions、actions、name、code、endpoint、status、pagination-left;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 系统管理 | PDA版本 `/system/pda-releases` | `pda-releases/pages/PdaReleasesView.vue`:toolbar-start、toolbar-actions、actions、app、packageType、status、mandatory、sizeBytes、createdAt、publishedAt;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 消息入口 | 我的消息 `/notifications` | `notifications/pages/PlatformNotificationsView.vue`:toolbar-actions、pagination-left、actions、category、sentAt、status;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 消息入口 | 消息管理 `/notifications/messages` | `notifications/pages/MessageManagementView.vue`:toolbar-actions、pagination-left、actions、category、scheduledAt、sentAt、status;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
| 消息入口 | 模板管理 `/notifications/templates` | `notifications/pages/MessageTemplatesView.vue`:toolbar-actions、pagination-left、actions、status;原详情/表单/确认保持 | 接入公共连续列表;业务展示与操作保持 |
|
||||
|
||||
应收款统计保留月份、客户筛选、汇总、CNY 边界、打印/导出及原打印媒体规则;权限树保留展开、收起、保护提示和树形参数;PDA 版本保留国内/海外应用切换、当前版本事实和发布/停发确认;称重机器保留现有筛选、连接测试、人工推送和分页。这些页面沿实际结构单独处理,不删功能套标准模板。
|
||||
|
||||
第二批新增 29 个列表路由,复用 27 个实际列表组件;两个结算单包装路由继续复用 `FinanceFormalSettlementPage`,应收/应付各自保存字段和列宽偏好,本土卡车/散板继续共用原运输订单列表。菜单核对覆盖当前全部正式可见业务列表,加上三个消息入口与库存流水关联入口,共 54 个接入入口;未发现遗漏。隐藏原型菜单保持隐藏。
|
||||
|
||||
称重机器从独立 Element 分页改为公共表格分页,保留原 10/20/30/40/50/100 选项、服务端分页和查询条件。新增行为回归验证查询及每页数量变化回到第一页、每页数量变化仅发送一次查询、字段设置可用、列宽重新挂载恢复和原操作入口。PDA 与称重机器原加载中的 `aria-busy` 状态随列表保留。
|
||||
|
||||
源码核对确认第二批全部原点击表达式和业务脚本保留,仅清理已移除的装饰图标导入;未修改 API、权限、计算规则、状态或详情/表单承载方式。旧样式断言同步到连续卡片、通知区、纯文字“更多”和无斑马纹;原业务断言继续保留。
|
||||
|
||||
## 第二批异常及待确认清单
|
||||
|
||||
| 项目 | 当前处理 | 后续确认 |
|
||||
|---|---|---|
|
||||
| 首页数据看板 `/dashboard` | 保留原工作区,未套列表布局 | 人工确认是否需要独立调整看板顶部 |
|
||||
| 船期日历 `/sailing-calendar` | 已按用户截图制作连续工作台版本,保留日历及渠道/模板/船期工作区 | 待人工确认新版按钮、查询与日历排列;见单页收尾记录 |
|
||||
| 财务统计/打印、结算汇总、权限树、PDA应用切换、供应商分类及尾程柜子工作台 | 沿原结构接入,保留全部业务控件;自动检查通过 | 人工重点核对汇总、页签、树展开、打印和条件切换 |
|
||||
| 所有新增页面真实视觉 | 未使用 AI 操作页面或截图替代验收 | 待人工 1920×1080、100% 缩放截图确认 |
|
||||
| 完整测试中的 Vue 编译提示 | 出现 `v-model` 对 `const reactive query` 的非阻断提示;完整测试及构建通过,本轮未扩展修改 | 后续专项核查对应绑定 |
|
||||
|
||||
## 第二批验证结果
|
||||
|
||||
2026-09-30 完整 `pnpm test`:264 个文件、2133 项全部通过。`pnpm build`(包含 `vue-tsc --noEmit`)通过,`git diff --check` 通过。菜单/包装组件核对和原操作事件审计通过。所有修改均在本地测试环境工作区;未提交、未部署或发布。视觉验收仍待人工截图确认。
|
||||
|
||||
## 船期日历单页收尾(2026-09-30)
|
||||
|
||||
用户提供当前页面截图 `codex-clipboard-e64ee273-3108-4711-be25-f63785611e59.png`,授权按上述建议制作一版。仅处理测试环境的船期日历;首页数据看板和其它待确认页面留到后续逐页处理。
|
||||
|
||||
| 操作 | 截图/当前代码依据 | 本版结论 |
|
||||
|---|---|---|
|
||||
| 页头、筛选、日历与当日船次 | 截图显示独立筛选、日历、当日详情卡片;`SailingCalendarView.vue` 的 `calendar-toolbar`、`calendar-layout` | 共用连续容器;左标题/右业务按钮,下面筛选与日历/当日详情;保留月切换、今天、时区和船期数量 |
|
||||
| 查询与重置 | 原筛选字段绑定、下拉自动查询、关键字回车及 `resetFilters` | 全部保留,重置仍在筛选区 |
|
||||
| 单次新增/编辑 | 原 `dialogOpen` 居中 760px 表单及 `openCreate`/`openEdit` | 保留原表单与承载方式;页头保留新增单个船次,当日详情新增仍保留 |
|
||||
| 渠道与周模板/批量生成 | 原 `openManagement` 居中管理工作区 | 按钮移到页头右侧;内部管理表格、生成步骤及权限保留 |
|
||||
| 船次详情、货量明细、历史、订柜建议 | 原右侧详情、`openVolumeDetail`/`openHistory`/`openBookingAdvice` | 保留原交互和浮层,只合并外层卡片 |
|
||||
| 复制、取消及批量生成确认 | 原 `copySelected`、`cancelSelected`、`confirmTemplateGeneration` | 原权限、确认、处理中和提示保留;不改业务状态 |
|
||||
| 文件预览/审核 | 本页面无此类独立入口 | 不新增 |
|
||||
|
||||
公共页头及筛选沿 `DataTable appearance="integrated"` 的 `results` 插槽接入日历工作台;无列表列配置,不展示字段设置或虚构分页。日期格紧凑排列,保留日期、数量、航线和容量提示。修改后的视觉待人工在 1920×1080、100% 缩放下截图确认。
|
||||
|
||||
本版验证:公共表格与密度合同 51 项通过;新增船期日历行为回归 2 项通过,覆盖月切换、日期/船次选择、关键字查询、重置、失败重试及只读权限。源码审计确认除公共组件导入外业务脚本未变,全部事件和查询绑定保留。完整测试 265 个文件、2135 项通过,构建(含类型检查)及 `git diff --check` 通过。代码版本已完成,未提交、未部署;新版视觉待用户截图确认。
|
||||
@@ -0,0 +1,40 @@
|
||||
# Admin 排车列表一体式布局试点
|
||||
|
||||
初次试点仅接入测试环境代码的 `/overseas-warehouse/dispatches`。依据为用户提供截图及 `新版.html` 的 `page-outbound-vehicle`(4472–4484 行);用户明确保留字段设置、搜索与表格不分离。2026-09-30 用户确认样板后授权推广至客户管理、国内仓、货柜管理和海外仓,并继续客户服务、海外业务、财务管理、通用、系统管理及消息列表。范围及例外见 [推广核对记录](Admin列表样式推广核对记录.md)。
|
||||
|
||||
船期日历单页收尾按用户当前截图接入相同的页头、筛选和连续容器,通过 `results` 插槽保留日历与当日船次详情。日历不具备表格列配置,明确关闭字段设置且不添加分页;日历日期格和右侧详情布局由业务页维护。
|
||||
|
||||
## 修改前核对
|
||||
|
||||
| 页面/操作 | 参考布局或承载方式 | 当前实现 | 本轮结论 |
|
||||
|---|---|---|---|
|
||||
| 排车列表 | 同一容器内:左标题/右按钮、搜索、表格、分页 | 路由标题、独立搜索面板、表格面板及列设置工具栏 | 改为一体式容器,标题只出现一次,字段设置放右上角 |
|
||||
| 查询/重置 | `search-row` 紧接表格 | QueryToolbar,含 FBA 预约号及筛选布局偏好 | 保留全部筛选与偏好,只调整容器外观 |
|
||||
| 表格字段设置 | 用户明确要求保留 | DataTable 列显隐/排序及持久化 | 继续使用原组件、原 preference-key |
|
||||
| 新建/导出 | 参考页顶部有示例按钮 | 正式排车列表无这两项操作 | 仅参考排列,不新增业务功能;公共组件保留 toolbar-actions 插槽 |
|
||||
| 查看 | 当前正式路由详情页 | DispatchDetailView | 不变 |
|
||||
| 编辑/转派送 | 当前居中表单弹框 | AppDialog | 不变 |
|
||||
| 打印 BOL/取消 | 当前 PDF 窗口/二次确认 | 服务端 PDF、ElMessageBox | 不变 |
|
||||
| 审核/停用/文件上传 | 本列表无相应入口 | 无 | 不新增 |
|
||||
|
||||
## 公共接入
|
||||
|
||||
`DataTable` 使用 `appearance="integrated"` 启用公共样式,`toolbar-start` 放页面标题,`toolbar-actions` 放已有业务按钮,`filters` 放 QueryToolbar,条件 `state` 插槽放加载错误与重试。表格字段偏好、行操作和分页继续由 DataTable 管理。该模式下标题、搜索、表格共用边框与圆角,搜索和表格间没有卡片外间距。
|
||||
|
||||
页面自行关闭列表路由 `showPageHeading`,避免重复标题;详情路由保留原配置。样式唯一维护位置为 `src/shared/components/DataTable.vue`,业务页不复制样式。未在本轮范围内的页面继续保持默认外观。
|
||||
|
||||
已接入列表的表格“操作”列使用纯文字按钮:无描边、填充或装饰图标,字重为普通正文的 `400`,普通操作蓝色,取消等危险操作红色,悬停无下划线;禁用为灰色,保留加载反馈、键盘焦点和危险确认。通过 `RowActions` 的 `text-actions` 接入,更多菜单使用相同配色与普通字重;已有手写按钮组使用 `row-actions density-actions admin-text-actions`,危险语义仍由原来的 `data-tone="danger"` 或 `type="danger"` 显式提供。搜索区、顶部字段设置、分页、列设置面板及弹框按钮保持原样。公共行操作外观维护在 `src/styles/adminTextActions.css`,随 `adminDensity.css` 加载;未接入页面默认不启用。
|
||||
|
||||
推广时列设置显式使用 `column-settings-mode="show"`。已有 `preference-key` 保持,新接入的退货库存、流水和箱号各使用独立偏好键。存在非阻断警告时使用 `notices` 插槽,列表失败时通过 `results-visible` 隐藏结果和分页,标题、查询与重试保持可用;`before-results` 保留原统计与汇总。特殊工作台可使用 `results` 插槽承载原内容和自身分页,公共表格不重置它的页码与每页数量。
|
||||
|
||||
列宽保存为公共 DataTable 能力,与已有列设置一同启用(提供 `preference-key` 且列设置可用),不依赖试点样式。拖动表头边界松开时,将宽度按稳定列键写入同一份本地偏好;重排、隐藏再显示不会丢失,刷新/重新进入时恢复。账号与表格分别隔离,仅保存到当前浏览器,不跨设备同步。“恢复默认”同时重置列顺序、显隐和宽度,重新采用页面声明的 width/minWidth。未启用列设置的表格不写入列宽偏好。
|
||||
|
||||
## 验收
|
||||
|
||||
代码检查与真实页面视觉验收分别记录。视觉待人工在 1920×1080、100% 缩放下截图确认,重点核对顶部字段设置、搜索连表格、长编号、横向滚动、分页、加载/空态/失败重试,以及原有操作权限。
|
||||
|
||||
2026-09-29 代码验证:定向 78 项通过;完整 `pnpm test` 的 262 个测试文件、2118 项测试通过;`pnpm build`(含 `vue-tsc --noEmit`)通过。未提交、未部署,当前修改不涉及 API、权限或业务状态。
|
||||
|
||||
纯文字按钮追加验证:相关 6 个文件、81 项检查通过,类型检查与构建通过。完整测试运行 2118 项通过、1 项失败,失败为原型合同硬编码了 RowActions 属性顺序;改为检查真实动作绑定后,该文件 21 项定向复测通过。视觉仍待人工确认。
|
||||
|
||||
列宽保存追加验证:完整 262 个文件、2125 项测试通过;列属性类型调整后公共表格与偏好存储 33 项再次通过;类型检查与构建通过。覆盖拖动保存、重新挂载、排序与显隐保留、恢复默认、独立表格/账号范围、异常宽度与关闭偏好场景。尚未部署,真实表头拖动效果待人工确认。
|
||||
+3
-1
@@ -176,7 +176,9 @@
|
||||
|
||||
## 国内仓、客户管理的样式维护边界
|
||||
|
||||
本节适用于已接入的两个菜单及其实际子组件,不改变其他菜单默认样式。此次收敛以保留业务字段、权限、计算与承载方式为前提。
|
||||
2026-09-30 确认的连续列表模式见 [排车列表公共接入规范](Admin排车列表样式试点.md):通过 `DataTable appearance="integrated"` 显式接入标题、业务按钮、查询、结果和分页共用卡片;仅操作列使用蓝色普通文字、红色危险文字并禁止悬停下划线。该模式的行高、卡片、搜索与页头样式由 DataTable 统一维护,行操作外观由 `adminTextActions.css` 维护;查询、顶部和弹框按钮保持原样。此约定优先于本节历史的行内描边、图标和独立路由标题规则;未接入页面保持默认。当前接入范围与特殊页面见 [推广核对记录](Admin列表样式推广核对记录.md)。
|
||||
|
||||
本节维护表适用于已接入页面及其实际子组件,当前范围以推广核对记录为准。此次收敛以保留业务字段、权限、计算与承载方式为前提。
|
||||
|
||||
| 要修改什么 | 唯一维护位置 | 页面需要做什么 |
|
||||
|---|---|---|
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# 头程到尾程当前维护入口
|
||||
|
||||
这里集中列出 F01-F40 全流程变更需要查找和修改的文档。报关协同代码已接入并通过真实 HTTP 验收,当前进入全流程状态与页面证据收尾;日常只从本目录进入,历史开发材料统一放在[文档归档](../归档/README.md)。
|
||||
这里集中列出 F01-F40 全流程变更需要查找和修改的文档;实现与验收范围以[全流程实现对照](头程至实际开船节点冻结矩阵与缺口清单.md)为准。日常只从本目录进入,历史开发材料统一放在[文档归档](../归档/README.md)。
|
||||
|
||||
## 当前流程文档
|
||||
|
||||
|
||||
@@ -28,6 +28,30 @@
|
||||
|
||||
“已有实现”不等于最新版本已完成验收。下表的既有 HTTP 证据只证明对应报告范围与版本;历史通过不能替代当前完整链路、页面或 PDA 现场验证。报关和运输专项的通过也不能外推为 F01-F40 全部通过。后续增强项不作为首期主流程缺失处理。
|
||||
|
||||
### 2026-09-30 当前复验结论
|
||||
|
||||
**F01-F40 尚未完成逐节点全量验收,不能宣布全部完工或出库以后没有问题。** 以下旧报告保留为对应版本证据,不代表本轮完整验收结论。
|
||||
|
||||
- 装柜完成后订单拣货汇总仍显示进行中的缺陷已修复。Firstleg 提交 `e5832d5c` 经测试环境 Jenkins #459 部署成功;服务测试 1,477 项,0 失败、0 错误、9 跳过。本轮实际 HTTP 已在 8 组装柜场景核对订单列表和详情的拣货汇总均为 `COMPLETED`。
|
||||
- 本轮已通过实际页面打开普通 FBA 入仓码 `NYEXX2609290171`,核对列表和详情显示已完成;这是买单样本,不能替代同一票退税报关至签收完成的证据。页面截图为后端仓库 `reports/fba-completed-order-page-20260930.jpg`。
|
||||
- 当前 Admin 全量 HTTP 复验已于 2026-09-30 11:23(上海时间)结束:11,642 项检查,11,638 通过、4 失败,148 次模块执行、120 个独立模块、7,427 次请求、0 跳过模块,整体未通过。其中 3 条失败来自“真实投递重试与同事件幂等证据”覆盖阻断;重复读取不等于同一事件重复消费,不能据此认定业务重试实现失效。另 1 条为海外托盘汇总接口返回 `A0404`,闲置、占用和报废数量未取得,须定位修复后复验。
|
||||
- 海外托盘汇总的 `A0404` 已定位为脚本使用旧路径。已改为现行 `/api/platform/v1/overseas-warehouse-resources/pallets/summary`,相关 9 项离线检查通过;11:28 实际 HTTP 返回成功,总数 3,101 = 闲置 1,915 + 占用 1,010 + 报废 176。证据为 `reports/overseas-pallet-summary-current-20260930.json`。这是定向修复复验,不改写上一轮全量失败结果,也不代表剩余覆盖阻断已解除。
|
||||
- 六阶段 77 项明确完成条件已作静态映射,其中 29 项只有部分或间接断言。另有 6 类待补证据:同柜多退税客户确认隔离;正式申报和各类人工海关异常;事件故障后重试与幂等;同一派送退回异常的收货、处理及库存恢复;出库前后库存和流水只扣一次;有效分片未全部签收不得提前完成及客户最终状态/签收文件访问。这些是当前验收覆盖缺口,不自动等于功能缺失。
|
||||
- 正式申报批次忽略其他未处理异常而提前关闭的问题已修复,提交 `c7f88030` 经 Firstleg Jenkins #460 部署。之后发现平台公共订舱的船期任务触发器将空客户与平台范围 0 错误比较,以及报关完成后的自动出仓事务不能保证独立提交/回滚;提交 `125ca34b` 已修复,测试环境对应触发器已更新,Firstleg #461 部署成功、容器健康,1,485 项服务测试,0 失败、0 错误、9 跳过。61 项定向测试包含真实事务回滚与重试。
|
||||
- 报关 r4 于 12:45(上海时间)结束为 702 项检查、701 通过、1 失败;唯一失败是平台范围船期任务详情读取被正客户范围校验错误拦截。该问题已由 `eae630e6` 修复、Firstleg #462 部署,1,493 项服务测试,0 失败、0 错误、9 跳过,容器健康;原任务详情、历史、唯一出仓船节点/系统历史和访问隔离 6 项真实检查通过。新的完整报关 r5 于 13:10 结束,702 项全部通过、9 个模块、452 次请求、0 跳过模块。范围包含同柜两位退税客户和买单客户、资料/确认隔离、打回替换、正式申报、四类人工异常及全部处理门禁、全部完成文件齐全、客户下载隔离、自动出仓及唯一船期任务/节点/历史。保留 r1-r4 的失败报告,不改写为通过。
|
||||
- 客户签收文件接口和页面已部署:后端 `4a14001a` 经 Lastleg #184,客户端功能 `6abb8b7` 随 `6564d412` 经 Client #361。新增“入库订单、派送订单”菜单 `706e3e87` 经 Client #362 部署成功,34 项定向检查通过,实际页面已核对菜单、详情面包屑、签收文件和下载按钮。新尾程 r1 的客户文件 HTTP 检查通过,包含下载字节一致及其他客户拒绝访问;浏览器实际下载等待仍超时,不能记作页面下载通过,也不能用历史页面样本替代本轮同票全流程。
|
||||
- 原排车单 `DS-WH-20260930-262785`、原退回异常 `EX-WH-20260930-960514` 的库存来源问题已由 `d320e78b` 修复,经 Lastleg #186 部署且容器健康。原异常使用原托盘、原证据成功完成,恢复 1 箱、只新增 1 条 `RETURN_STOCK_IN`,派送变为 `RETURNED`。首轮续验 r3 为 29 项检查、27 通过、2 失败:实际完成及重放成功,但脚本错误地用余额 DTO 未提供的入仓码字段过滤,漏掉位置。原异常后续对账及原完成请求重放 19 项全部通过,独立核平全部库存桶、目标位置/原票身份及流水,并验证重放零漂移。r2/r3 原失败报告保留。
|
||||
- 新完整尾程 r1 于 13:21(上海时间)结束:5,714 项检查,5,706 通过、8 失败,99 次模块执行、75 个独立模块、3,484 次请求、0 跳过模块,整体未通过。其中原异常完整退回/库存恢复和客户签收文件 HTTP 场景已通过;6 条失败来自船期脚本把平台客户范围 0 当作非法 ID,已由 `7f3c0690` 修正,13 项本地检查通过。另 2 条分别为按 SKU 汇总余额与单条真实余额混用导致出库库存取证不完整,以及误把 PDA 任务完成状态当作排车待发状态。脚本已改为从正式 PDA 任务冻结真实余额/位置,独立核对位置、真实余额、客户仓汇总及流水,并分别核对任务与排车状态;23 项本地合同通过。
|
||||
- 新尾程 r2 于 13:51(上海时间)结束:5,822 项检查,5,821 通过、1 失败,99 次模块执行、75 个独立模块、3,538 次请求、0 跳过模块。船期范围与发车门禁已通过;唯一失败仍为“PDA扫码及重放实际库存只扣本出库数量一次”,证据显示取证范围 `before=6, after=3, expected=9, SHIPRows=5`,原因正在核对,不能据此宣布出库数量已核平,也不能直接判定为业务重复扣库。该轮退回恢复、重放、客户文件下载及隔离通过;不改写 r1 失败报告。真机与外部第三方覆盖缺口另列,不能计作已验收。
|
||||
- 尚未完成的本轮证据包括:真实跨服务故障后的原事件重试/幂等;完整尾程生命周期下出库数量守恒;同一根订单的有效余量子单未全部签收不得提前完成;客户最终状态及完整页面操作。正式拆分生产者会给余量创建真实子订单,不能用不同订单冒充同一个精确 `orderId` 的多分片。F40 修复已实现根自身签收事实与全部有效子单完成门禁、最后余量取消后的聚合、事务内历史/事件及 Firstleg 摘要可靠同步;92 项本地测试全部通过,含真实 SQL、事务回滚和并发,API 路由门禁 5 项通过。Order 和 Firstleg 尚未部署这项修复,真实拆分订单验收未完成,不能描述为测试环境已生效。六阶段 77 项完成条件的逐项证据仍须完成,不能按总断言数量折算完成率。
|
||||
- 阶段三、四、六文档已统一客户文件确认链、原柜人工改船、统一 Gateway 和事件直接投递。船期任务可在出仓确认后创建并查询进港事实,只有实际开航才推进海运节点。全部业务页面仍无逐节点完整操作证据。
|
||||
|
||||
本轮证据位于后端仓库:`reports/firstleg-node-convergence-deploy-20260930.json`、`reports/firstleg-node-convergence-local-20260930.log`、`reports/admin-full-current-20260930-r1.json`、`reports/fba-stage-coverage-audit-20260930.json`、`reports/customs-open-exception-deploy-20260930.json`、`reports/customs-auto-dispatch-atomic-deploy-20260930.json`、`reports/customs-multi-customer-current-20260930-r4.json`、`reports/lastleg-return-receipts-deploy-20260930.json`、`reports/lastleg-return-sku-source-deploy-20260930.json`、`reports/dispatch-return-same-exception-current-20260930-r2.json`、`reports/client-receipt-download-deploy-20260930.json`。静态审查、局部修复通过和单票完成均不能替代全流程验收。
|
||||
|
||||
最新专项证据:`reports/customs-multi-customer-current-20260930-r5.json`、`reports/carrier-platform-scope-deploy-20260930.json`、`reports/lastleg-canonical-return-deploy-20260930.json`、`reports/dispatch-return-current-reconciliation-20260930-r2.json`、`reports/fulfillment-stock-receipt-current-20260930-r1.json`、`reports/fulfillment-stock-receipt-current-20260930-r2.json`、`reports/client-order-navigation-deploy-20260930-r2.json`、`reports/root-completion-local-20260930-r2.json`。本地完成门禁修复提交为 `13028d8a`,尚未部署。
|
||||
|
||||
### 2026-09-29 对应版本历史证据
|
||||
|
||||
2026-09-29 修复后的默认全量真实 HTTP 回归已通过:Admin 11,627 项检查、120 个模块、7,429 次请求,0 失败、0 跳过模块;Client 195 项检查全部通过。F31 换托同库位比较、A0 共享溢出位移库、F33 无贴标转仓查询及跨服务错误处理已修复并部署测试环境;验收脚本补齐直接贴标审核、返工重新领取及禁止回移虚拟收货位的边界。离线合同 128 个文件、773 项断言全部通过。
|
||||
|
||||
同票普通 FBA 主链证据为入仓码 `NYEXX2609290171`、柜次 `D1063`、柜号 `TSTU3425326`、排车单 `DS-WH-20260929-067073`、出库单 `OB-WH-20260929-158402`;两张目的仓派送单签收后,已核对来源入仓单 `DELIVERED` 和来源订单 `COMPLETED`。随后故意执行的退回异常测试会改变留存单据状态,不能把最终留存状态误读成未曾完成。退税报关分支另由同一全量报告中的混合柜检查覆盖,不冒充同一票退税至签收证据。
|
||||
@@ -56,11 +80,11 @@
|
||||
| F22.7 | 已提交正式申报 | 正式申报批次 | 报关行确认、正式申报时间、操作人、批次、报关单号 | 已实现并通过真实 HTTP 7 步联调 | 后续可补报关行接收时间和下载凭证 |
|
||||
| F22.8 | 查验中、待补资料、已放行、扣货/其他 | 海关结果事实 | 报关单号、结果类型、时间、人工理由、备注和处理结果 | 已实现;真实 HTTP 与人工异常页面保存/处理通过,发生时间偏差已修复并部署复验 | 不接短信或自动海关系统;真机及外部系统不在页面验证范围 |
|
||||
| F23.1 | 待发区、送港中、已离仓 | 待发区与送港/出仓任务 | 报关完成时间、待发区门禁、离仓时间、车辆/任务、操作人、证据 | 已实现并通过真实 HTTP 验收 | 继续补待发区客户/平台投影展示 |
|
||||
| F23.2 | 已送港、已进港 | 运输和港口事实 | 送港时间、进港时间、来源和凭证 | 已实现;已有真实 HTTP 证据 | 继续补充最新页面证据,并保持与订舱、拖车和船次事实统一读写 |
|
||||
| F23.2 | 已送港、已进港 | 运输和港口事实 | 送港时间、进港时间、来源和凭证 | 已实现;平台范围船期详情错误已部署修复,原任务与新报关 r5 均通过 | 继续补充实际页面操作证据 |
|
||||
| F23.3 | 已甩柜、等待改船后承运 | 船期记录修改历史 | 甩柜原因、发生时间、修改前后船名/航次/船期、处理人 | 已实现并通过测试环境真实 HTTP;平台与客户端最新船期投影一致 | 继续补页面截图和更复杂异常分支;柜次、订舱关联和报关事实不变 |
|
||||
| F24 | 海运中 | 船次实际节点 | 承运船舶、航次、实际开航时间、来源/凭证 | 已实现;实际节点与查询任务已有真实 HTTP 证据 | 继续补充最新一轮页面证据;只允许实际开航事实推进海运节点 |
|
||||
| F25 | 目的港处理中、待海外接柜 | 船节点、目的港清关/提柜、尾程订单 | 到港、卸船、清关、提柜和可接柜事实 | 已实现并有综合真实 HTTP 证据 | 外部码头/车队差异继续按异常分支补充 |
|
||||
| F26 | 尾程订单待建计划 | 跨区事件、尾程订单 | 装柜完成、船节点和来源入仓单快照可靠投递与消费 | 已实现并有综合真实 HTTP 证据 | 继续观察跨区事件延迟和补偿告警 |
|
||||
| F26 | 尾程订单待建计划 | 跨区事件、尾程订单 | 装柜完成、船节点和来源入仓单快照可靠投递与消费 | 正常投递已有 HTTP 证据;本轮故障重试与同事件幂等未验完 | 必须补真实故障、原事件重试和业务零重复证据 |
|
||||
| F27 | 待建立海外入仓计划 | 入仓计划、计划托盘和资源锁 | 按柜内每票生成计划、预计到仓和托盘资源冻结 | 已实现并有综合真实 HTTP 证据 | 继续补齐异常重试页面证据 |
|
||||
| F28 | 待接柜、接柜中 | 海外 PDA 接柜会话 | 柜号认领、三类签收照片和签收确认 | 已实现并有综合真实 HTTP 证据 | Android 真机验收仍是独立非阻塞项 |
|
||||
| F29 | 入库中 | 海外 PDA 收货任务 | FBA 散货、海外仓逐箱、一件代发整托等实收事实 | 已实现并有综合真实 HTTP 证据 | 继续补充现场设备和弱网证据 |
|
||||
@@ -71,10 +95,10 @@
|
||||
| F34 | 待派送、排车中 | 智能预排、排车单 | 候选、草稿锁、正式排车和目的仓分配 | 已实现并有综合真实 HTTP 证据 | 继续补充多车多目的仓页面证据 |
|
||||
| F35 | 待转派送、待出库 | 排车转派送、出库单、派送单 | 出库/派送单生成、目的仓拆分、费用只发布一次 | 已实现并有综合真实 HTTP 证据 | 保持转派送前不可发车 |
|
||||
| F36 | 拣货中、待发车 | 海外 PDA 排车任务 | 托盘扫描、数量核平、车辆资料和发车门禁 | 已实现并有综合真实 HTTP 证据 | Android 真机和弱网恢复仍需专项验证 |
|
||||
| F37 | 已出库、派送中 | 出库单、派送单 | 出库完成、库存扣减和派送任务关联 | 已实现并有综合真实 HTTP 证据 | 继续补跨目的仓汇总展示 |
|
||||
| F38 | 派送中、已签收 | 派送单、签收凭证 | 签收文件、签收时间和每个目的仓派送完成 | 已实现并有综合真实 HTTP 证据 | 继续补异常签收凭证类型 |
|
||||
| F39 | 异常退回处理中 | 异常单、退回入仓和库存恢复 | 拒收/部分拒收、退回、库存恢复和原因历史 | 已实现并有综合真实 HTTP 证据 | 继续补多次退回和部分恢复组合场景 |
|
||||
| F40 | 已完成、待回访 | 客户回访、跨区完成事件、订单回写 | 回访记录、`DELIVERED` 回写及订单 `COMPLETED` 收口 | 已实现并有综合真实 HTTP 证据 | 继续补跨区延迟时的客服投影 |
|
||||
| F37 | 已出库、派送中 | 出库单、派送单 | 出库完成、库存扣减和派送任务关联 | 已有主链 HTTP 证据;本轮库存/流水只扣一次待补完整证据 | 按拣货、发车、重放三个时点核对库存和流水 |
|
||||
| F38 | 派送中、已签收 | 派送单、签收凭证 | 签收文件、签收时间和每个目的仓派送完成 | 客户菜单和文件功能已部署;下载与客户隔离 HTTP 通过,实际菜单/文件可见 | 浏览器下载操作未通过,逐节点页面证据仍待补齐 |
|
||||
| F39 | 异常退回处理中 | 异常单、退回入仓和库存恢复 | 拒收/部分拒收、退回、库存恢复和原因历史 | 不可变出库来源解析已部署修复,原异常成功恢复及重放/完整对账通过 | 新完整尾程生命周期及多次退回/部分恢复组合场景待验 |
|
||||
| F40 | 已完成、待回访 | 客户回访、跨区完成事件、订单回写 | 回访记录、`DELIVERED` 回写及订单 `COMPLETED` 收口 | 普通主链已有证据;根订单余量门禁修复本地 92 项通过,尚未部署 | 部署 Order/Firstleg 后验收真实根自身签收与全部有效子单完成、取消及重放回写 |
|
||||
|
||||
## 三、当前实现与目标的主要断点
|
||||
|
||||
|
||||
+17
-14
@@ -260,14 +260,14 @@ PDA 点击“完成装柜”时,服务端重新校验:
|
||||
|
||||
## 12. F22 客户资料与整柜出口报关
|
||||
|
||||
### 12.1 F22-A `LOADED` 后通知报关并建立客户案例
|
||||
### 12.1 F22-A `LOADED` 后按退税客户范围收集资料
|
||||
|
||||
入口:`LOADED` 事件 → Admin/Client → 报关资料。
|
||||
|
||||
1. 装柜完成后按最终实装清单通知报关行,建立本柜报关批次和每个客户/入仓码的 `customerCustomsCase`;
|
||||
2. 客户上传本企业资料,平台校验客户、订单、入仓码、实际装载数量和文件归属;
|
||||
3. 平台将资料发送给报关行,记录发送时间、资料版本和 `roundNo`;
|
||||
4. 报关行返回本轮回执,平台保存文件和回执字段,并向对应客户展示确认任务。
|
||||
1. 装柜完成后按最终实装清单确定本柜每个退税客户及其入仓码范围;首期复用柜级报关聚合与客户资料范围,不强制新增独立 `customerCustomsCase` 对象;
|
||||
2. 退税客户上传本企业资料,平台校验客户、订单、入仓码、实际装载范围和文件归属;有文件即可,不要求资料类型清单。买单订单不走这条客户资料和回执确认链;
|
||||
3. 平台将资料发送给报关行,记录首次发送批次、发送人、时间、资料版本和范围快照;
|
||||
4. 报关行返回回执,平台上传文件并向对应退税客户展示整份回执确认任务,保留文件版本和确认动作历史;独立回执轮次对象属于后续增强。
|
||||
|
||||
柜前可以存在资料准备或历史附件,但不创建本柜正式客户确认轮次,也不能显示“已通知报关”。客户资料缺失形成报关补件待办,未完成报关不得进入待发区或推进送港。
|
||||
|
||||
@@ -275,17 +275,18 @@ PDA 点击“完成装柜”时,服务端重新校验:
|
||||
|
||||
客户查看报关行回执后有两个结果:
|
||||
|
||||
1. **确认**:当前客户案例进入 `CUSTOMER_CONFIRMED`,保存确认人、确认时间、回执版本和幂等键;
|
||||
2. **打回**:当前案例进入 `NEEDS_RESUBMIT`,保存打回原因;客户重新上传/替换资料,平台重新发送报关行,报关行生成新回执,`roundNo` 加一后再次发客户确认。
|
||||
1. **确认**:该客户当前整份回执确认状态为 `CONFIRMED`,保存确认人、确认时间、回执版本和幂等键;
|
||||
2. **打回**:保存本客户对当前回执的打回状态和原因;客户重新上传/替换资料,平台与报关行线下处理后上传新的回执版本,再由该客户确认。首期通过资料、回执版本和动作历史追溯,不强制新增 `roundNo` 对象。
|
||||
|
||||
客户打回只重开对应客户案例,不重置其他客户已经确认的轮次。直到柜内所有客户案例都为 `CUSTOMER_CONFIRMED`,才允许进入整柜正式提交。
|
||||
客户打回只改变对应客户资料范围的确认状态,不重置其他客户已确认的回执。只有所有退税客户的当前回执都已确认,平台才可发送客户确认结果给报关行执行,并进入整柜正式申报。首期首发和确认后发送执行是两次独立动作。
|
||||
|
||||
### 12.3 F22-C 所有客户通过后的整柜正式申报
|
||||
|
||||
1. 平台检查所有客户案例均已确认,冻结本柜最终实装和资料版本,生成整柜正式申报批次;
|
||||
1. 平台检查所有退税客户当前回执均已确认,已发送确认结果给报关行执行,冻结本柜最终实装和资料/回执版本,生成整柜正式申报批次;
|
||||
2. 将整柜资料提交报关行确认,报关行完成正式申报;首版不做外部系统直连,保留人工提交和审计记录;
|
||||
3. 海关结果独立记录为查验、免查验放行、补件/退回、扣货等,不把客户确认回执直接当成海关放行;
|
||||
4. 报关完成后进入待发区;报关事实不覆盖送港线的离仓、进港、甩柜事实。甩柜只改变运输船期,不回退报关资料、回执或客户确认。
|
||||
4. 报关行执行后,平台上传对应退税资料范围的真实报关完税文件;每个退税客户的完成文件齐全才完成报关并进入待发区。完税文件、正式申报及海关结果分别留痕,不互相冒充;海关异常由平台人工选择理由、填写说明并处理,“其他”必须填写备注;
|
||||
5. 报关事实不覆盖送港线的离仓、进港、甩柜事实。甩柜只人工修改原柜船名、航次和船期,保留修改历史;原柜和原任务不变,不回退报关资料、回执或客户确认。
|
||||
|
||||
## 13. F23 送港、进港与甩柜
|
||||
|
||||
@@ -302,7 +303,7 @@ PDA 点击“完成装柜”时,服务端重新校验:
|
||||
- 送港任务和当前船次分配完整;
|
||||
- 报关完成是进入待发区以及后续仓库离开、送港和进港的前置。
|
||||
|
||||
订舱、拖车、仓库离开和港口进场属于待发区之后的送港线事实。容量不足时记录 `ROLLED_OVER`,保存原船次、滚动次数、新船次、预计开船时间和客户通知;不重新生成报关批次或客户确认任务。
|
||||
订舱、拖车、仓库离开和港口进场属于待发区之后的送港线事实。容量不足导致甩柜时,由平台人工编辑原柜船名、航次和预计船期,保存原因、修改前后值、操作人和时间;柜子、订舱关联和原船期任务不变,不新建航次对象,也不重新生成报关批次或客户确认任务。
|
||||
|
||||
### 13.2 自动与人工确认离仓
|
||||
|
||||
@@ -333,7 +334,9 @@ PDA 点击“完成装柜”时,服务端重新校验:
|
||||
| 装柜计划 | `EDITING → LOADING → COMPLETED` | 预装调整/PDA 作业/最终完成 |
|
||||
| 订舱 | `DRAFT → RELEASED` | 补齐资料并放舱 |
|
||||
| 拖车 | 非终态 → `COMPLETED` | 所有要求柜次实际离仓后自动完成 |
|
||||
| 报关 | `WAITING_DOCUMENTS → SENT_TO_BROKER → RECEIPT_PENDING_CUSTOMER_CONFIRM → CUSTOMER_CONFIRMED / NEEDS_RESUBMIT → ALL_CUSTOMERS_CONFIRMED → FORMAL_SUBMITTED → INSPECTION/RELEASED` | 装柜后通知报关行;回执必须经对应客户确认,打回则新资料/新回执轮次 |
|
||||
| 柜级报关 | `WAITING_CUSTOMER_DOCUMENTS → READY_TO_START → DECLARING → COMPLETED` | 装柜后收集退税资料并首次发送;回执必须经对应客户确认,平台发送确认结果后等待所有真实完税文件 |
|
||||
| 客户回执确认 | `PENDING → CONFIRMED / REJECTED` | 当前文件版本整份确认或填写原因打回;替换回执只重置对应客户范围,保留历史 |
|
||||
| 正式申报与海关结果 | 批次、结果分别保存 | 平台人工正式提交、回填报关单号、标记查验/补资料/扣货/其他及人工处理,不改柜级报关四态和运输事实 |
|
||||
| 送港 | `WAITING_FOR_LOADING → PORT_DELIVERY_PENDING → DEPARTED_WAREHOUSE → IN_TRANSIT_TO_PORT → PORT_RECEIVED / ROLLED_OVER` | 报关完成后进入待发区,再安排拖车和进港;容量不足时在原柜船期上人工修改船信息并留痕 |
|
||||
| 海运 | `WAITING_SAILING → VESSEL_DEPARTED → IN_TRANSIT` | 只有承运船舶真实开航才进入海运节点 |
|
||||
|
||||
@@ -382,10 +385,10 @@ WAIT_SPLIT 入库单/已封托托盘
|
||||
- [ ] 五类证据和锁码文本完整有效
|
||||
- [ ] 装柜计划 `COMPLETED`,实装入库单 `LOADED`
|
||||
- [ ] 部分装载时已装子单和余量子单正确
|
||||
- [ ] 报关线已为每个客户建立案例,回执、确认/打回和每轮资料版本可追溯
|
||||
- [ ] 报关线按每个退税客户隔离资料和入仓码范围,回执、确认/打回及文件版本可追溯;完成文件覆盖全部退税范围
|
||||
- [ ] 送港线已记录唯一国内离仓历史;如已进港,存在 `PORT_RECEIVED`,如甩柜,存在原船次/改配船次历史
|
||||
- [ ] 客户全部确认后才允许整柜正式提交;正式申报后的查验/放行结果单独记录
|
||||
- [ ] 船舶实际开航后才写入 `VESSEL_DEPARTED` 并启动海运节点查询
|
||||
- [ ] 只有实际 `DEPARTED_ORIGIN_PORT` 才推进 F24海运中;离仓后唯一查询任务可预先建立,甩柜仍使用原任务
|
||||
- [ ] 跨区事件可幂等重试;甩柜/改配只新增船期事实,不覆盖报关资料、回执和客户确认
|
||||
|
||||
## 17. 易用性与数据流评审问题
|
||||
|
||||
@@ -213,7 +213,7 @@ Admin/Client 按权限查看拆分后的单仓派送单、目的地、车辆/快
|
||||
|
||||
### 10.2 跨区完成事件
|
||||
|
||||
每张实际完成的派送单在业务事务内写 Outbox。Event Bridge 跨区投递后,Firstleg:
|
||||
每张实际完成的派送单在业务事务内写 Outbox。Lastleg Relay 按[统一认证与服务通信契约](../统一认证与服务通信契约.md)直接投递 Firstleg 内部消费者;只有匹配原事件 ID、Payload 哈希和允许结果的持久化消费 ACK 才记为投递成功。Firstleg:
|
||||
|
||||
1. 校验内部身份、事件版本、ID 和 Payload 哈希;
|
||||
2. 校验来源订单、来源入仓单、入仓码和 FBA 目的仓;
|
||||
@@ -223,7 +223,11 @@ Admin/Client 按权限查看拆分后的单仓派送单、目的地、车辆/快
|
||||
|
||||
### 10.3 Order 最终完成
|
||||
|
||||
Firstleg 检查同一 Order 的全部有效入库单。只有全部都为 `DELIVERED` 时,才调用 Order 推进交易状态为 `COMPLETED`。
|
||||
Firstleg 检查同一来源 Order 的全部有效入库单。只有全部都为 `DELIVERED` 时,才向 Order 回写该来源单的签收完成事实,并携带真实履约根订单。
|
||||
|
||||
余量拆分后,根订单仍承载自身第一批实装货物,子订单分别承载余量。子订单可独立完成;根订单只有自身实装货物已经签收,且全部未删除、未取消的子订单均为 `COMPLETED` 时,才进入 `COMPLETED`。仅明确 `CANCELLED` 的子单排除,草稿、待审核或其他未完成状态均阻断根订单收口。最后余量取消也重新计算根完成条件。来源单签收事实和根最终完成历史分开保存,不能用子单完成代替根自身签收。
|
||||
|
||||
Order 在同一事务内写完成状态、历史和完成 Outbox,经内部接口可靠同步 Firstleg 订单状态摘要。来源单与根的状态分别返回,根尚未完成时不得把根摘要提前标成完成。
|
||||
|
||||
部分装载形成的余量子单、另一柜或另一目的仓尚未完成时,Order 不能提前完成。重复事件不得重复推进、重复写历史或重复生成费用。
|
||||
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
| 企业成员 | Client | 查看本企业尾程订单和允许展示的船期/计划进度 |
|
||||
| Firstleg | 后端 | 拥有查询任务、标准节点、目的港码头拖车和装柜完成 Outbox |
|
||||
| Integration Service | 后端 | 调用船司/轨迹供应商,解析并返回标准化结果,不保存业务主数据 |
|
||||
| Event Bridge | 跨区通道 | 版本化、认证地投递业务事件 |
|
||||
| 业务服务 Outbox Relay | 内部直接投递 | 按事件类型选择消费者,验证事件身份、摘要和持久化消费 ACK,有限重试与受保护人工恢复 |
|
||||
| Lastleg | 海外后端 | Inbox 幂等消费、尾程订单、计划、在途库存和海外业务状态 |
|
||||
| Warehouse | 国内主数据 | 海外共享仓、FBA 目的仓和供应商主档权威 |
|
||||
| Warehouse Overseas | 海外资源 | 海外库位、实物托盘和资源锁 |
|
||||
|
||||
所有浏览器海外接口经 `gateway-overseas/`。国内 Auth 仍是账号和 Token 签发方;跨区业务写入通过内部身份、Inbox/Outbox 和事件契约完成,不允许浏览器伪造跨区事件。
|
||||
所有浏览器接口经统一 `gateway/`,Auth 是唯一账号、Token 和会话权威。业务服务保持各自数据归属和客户隔离;服务间写入通过内部身份、Inbox/Outbox 和事件契约直接投递,不允许浏览器伪造服务间事件。现行投递和结果确认规则见[统一认证与服务通信契约](../统一认证与服务通信契约.md)。
|
||||
|
||||
## 3. 阶段前置检查
|
||||
|
||||
@@ -47,11 +47,11 @@
|
||||
|
||||
### 4.1 查询任务创建
|
||||
|
||||
承运船舶实际开航事务幂等创建 `CarrierScheduleQuery`。任务必须绑定真实订舱、柜次以及可用的船司、船名航次、提单号或柜号,不创建脱离业务单据的孤立轮询任务。送港、进港、甩柜和客户报关确认在阶段三分别记录,不能用预计 ETD 提前创建“海运中”展示。
|
||||
确认国内离仓后,系统按订舱与柜次幂等建立唯一 `CarrierScheduleQuery`,触发来源为 `OUTBOUND_CONFIRM`,用于后续送港和船节点查询。任务必须绑定真实订舱、柜次以及可用的船司、船名航次、提单号或柜号,不创建脱离业务单据的孤立任务。任务已建立不表示船舶已开航;只有实际 `DEPARTED_ORIGIN_PORT` 事实才能推进 F24“海运中”,不能用预计 ETD 或查询任务存在提前推进。
|
||||
|
||||
标准节点保留国内送港事实,但海运查询的起点是实际开船:
|
||||
|
||||
`DEPARTED_WAREHOUSE`、`AT_ORIGIN_PORT` 和 `LOADED_ON_VESSEL` 可以作为送港/装船历史补录;客户的“海运中”节点和定时船节点查询以真实 `DEPARTED_ORIGIN_PORT`/`VESSEL_DEPARTED` 为起点。
|
||||
`DEPARTED_WAREHOUSE`、`AT_ORIGIN_PORT` 和 `LOADED_ON_VESSEL` 可以作为送港/装船历史记录,查询任务也可收集开航前的实际港口事实。客户的“海运中”节点以真实 `DEPARTED_ORIGIN_PORT` 为起点。甩柜时人工编辑原柜船信息并保留历史,继续使用原任务,不因改船或预计日期生成实际开航事实。
|
||||
|
||||
```text
|
||||
10 DEPARTED_WAREHOUSE 已离开国内仓
|
||||
@@ -189,9 +189,9 @@ Firstleg 在装柜完成后按最终实装生成 `FIRST_LEG_LOADING_PLAN_COMPLET
|
||||
|
||||
Outbox 可重复投递,不能因网络失败直接丢事件或在事务外临时拼装 Payload。
|
||||
|
||||
### 6.2 Event Bridge 投递
|
||||
### 6.2 Outbox 直接投递
|
||||
|
||||
Event Bridge 校验允许的事件类型、版本、来源/目标区域和内部服务身份后投递 Lastleg。IAM 安全事件使用独立入口,不能交给装柜完成消费者。
|
||||
Firstleg 的 Outbox Relay 将装柜完成和船节点事件直接投递 Lastleg 的内部消费者,保留原事件 ID、版本和 Payload 哈希。只有持久化消费 ACK 的身份、摘要和允许的结果全部匹配才记录投递成功;临时故障按有限退避重试,耗尽后进入 DEAD,由受保护运维入口审计后重试原事件。重复消费不能重复建单;同一事件 ID、不同摘要必须拒绝。IAM 安全事件不能交给装柜完成消费者。
|
||||
|
||||
### 6.3 Lastleg Inbox 消费
|
||||
|
||||
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
|
||||
更新日期:2026-09-29。当前只有 test,没有开发/生产环境。本文定义目标部署、切换与验收;具体路由、认证、投递契约唯一见[统一认证与服务通信契约](统一认证与服务通信契约.md)。
|
||||
|
||||
状态:目标已确认,统一 Gateway/Token、可靠直接投递、单 TEST Compose/Nacos 与四端统一入口已进入源码并完成分批本地验证,后端全量 Maven 回归已通过(4149项,12项跳过,0失败/错误)。尚未发布到测试环境;运行服务器、Nacos 发布值、主机资源和真实 MySQL 故障恢复尚未验证。
|
||||
状态:单 TEST 统一架构已实际部署,13 个保留服务与两套 PDA H5 均健康;单 Nacos 命名空间、统一认证及八类直接投递已运行。三轮真实 HTTP 验收 7149 项断言通过,目标装柜事件 ACK 丢失→12 次失败 DEAD→人工 retry→DUPLICATE/PUBLISHED 已验证并恢复直连。双 PDA 基础浏览器登录、仓库显示与退出已有证据。整体验收尚未完成:核心业务页面全流程、可靠性矩阵中尚无对应真实运行证据的场景仍待补齐;Android 真机按用户决定后置。
|
||||
## 结论与范围
|
||||
|
||||
按“头程和海外仓不再分区域部署、所有服务同机运行、取消独立事件接收服务与海外网关”设计。这里将“事件接收”对应为当前 `event-bridge-service`,不推定要删除业务通知、异步任务或消息队列。
|
||||
@@ -34,7 +34,7 @@
|
||||
| 批次 | 工作 | 完成依据 |
|
||||
|---|---|---|
|
||||
| 0:文档与基线 | 确认仅 test 的目标、唯一接口路径、统一认证、直接投递职责;列出当前配置与服务清单 | 新目标、当前实现、待办三者明确区分 |
|
||||
| 0A:资金消费前置修复 | 区分临时执行失败与最终业务拒绝;补齐并发 Inbox 抢占后的摘要校验和一致结果处理 | 临时故障原事件重试、并发同 hash/异 hash、执行成功后结果保存失败的恢复验证通过;修复规则见统一认证与服务通信契约;本地已通过,实库待验证 |
|
||||
| 0A:资金消费前置修复 | 区分临时执行失败与最终业务拒绝;补齐并发 Inbox 抢占后的摘要校验和一致结果处理 | MySQL 结果提交失败回滚、原事件自动重试、首次执行并发同 hash/异 hash 已实测;资金执行中途故障仍待验证,不能将已验证场景扩大为完整故障矩阵 |
|
||||
| 1:入口与认证 | Gateway 接入全部业务;Auth/common-security/海外服务统一认证;各端共用入口;解决仓库路由冲突 | 本地编译、认证测试、路由合同及受影响前端测试通过 |
|
||||
| 2:业务通信 | 替换装柜、船节点、卸柜、暂扣、派送、费用和资金链;补齐直接投递重试及失败处置 | 各链路有直接消费者,成功确认、重复投递和故障恢复测试通过 |
|
||||
| 3:部署收敛 | 单套 test Compose/Nacos/Jenkins;清理两个废弃服务和专用配置、SQL 初始化引用、安全投影依赖 | 构建与配置合同通过;形成唯一测试发布清单及启动依赖 |
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
## 测试环境跑通的验收标准
|
||||
|
||||
下表是测试环境验收标准;本地实现与离线测试不代表环境验收,当前所有环境验收项均待验证。
|
||||
下表是测试环境验收标准;本地实现与离线测试不代表环境验收,已有部署、HTTP、目标事件故障恢复及双 PDA 基础交互证据;逐项判断覆盖范围,不能将局部通过扩大为全部通过。
|
||||
|
||||
| 验收项 | 操作与预期 |
|
||||
|---|---|
|
||||
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
|
||||
更新日期:2026-09-29。本文是已确认目标的唯一主契约;当前仅有测试环境,所有服务同机部署。部署与切换见[测试环境单机部署与配置契约](测试环境单机部署与配置契约.md)。
|
||||
|
||||
状态:整体迁移尚未完成。统一 Token/JWKS/Redis 会话、八类业务事件直连与结构化 ACK、有限重试及人工原事件重试已进入源码并完成分批本地验证。构建与部署已收敛为单 TEST 的13个服务,两个旧模块已退出清单;旧模块源码批量清理被自动审批拒绝,尚未删除。撤销并发替代链已通过定向验证,旧安全投影链已移除,逐次投递审计与指标、协议去区域字段已实现,后端全量 Maven 回归已通过(4149项,12项跳过,0失败/错误),真实测试环境尚未部署验收。不得混合发布新旧协议或把本地测试视为环境验收。
|
||||
状态:统一 Token/JWKS/Redis 会话、八类可靠直接投递和单 TEST 的 13 个服务已部署。真实 HTTP 主验收 7149 项断言通过,目标装柜事件 ACK 丢失、有限重试耗尽、人工原事件恢复及幂等结果已实测;代理已停止并恢复直连。旧海外 Gateway 与事件桥已停止且退出构建/部署,遗留源码尚未删除。完整页面作业、其余真实故障矩阵及告警通知链路不能据此视为通过,整体迁移验收尚未关闭。
|
||||
|
||||
下文路径、响应与时序为改造目标。实际业务服务、客户隔离、仓库类型、作业角色与状态机保持原职责;不能将“同机”解释为合并数据库表或绕过权限。
|
||||
### A. 唯一路由与消费端映射
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
成功必须同时满足:HTTP 2xx、body code 为字符串 `200`、ACK 中 eventId/payloadHash 与发送一致、outcome 为该类事件允许的值。消费端只在可靠提交后返回成功;不能刚入内存或仅保留待处理记录就返回 APPLIED。重复确认必须来自持久化幂等记录;同 eventId 不同 hash 为冲突,不允许覆盖。
|
||||
|
||||
消费处理的原子性按业务实现验证:普通消费者将业务变更与成功幂等记录同事务提交;第 0A 批已将资金执行、成功 Inbox 和结果 Outbox 收敛到同一事务,保存结果失败时资金一同回滚;事件身份独立持久化防止重试换内容。保留既有钱包业务幂等键和状态机,真实 MySQL 故障恢复仍需验证。
|
||||
消费处理的原子性按业务实现验证:普通消费者将业务变更与成功幂等记录同事务提交;第 0A 批已将资金执行、成功 Inbox 和结果 Outbox 收敛到同一事务,保存结果失败时资金一同回滚;事件身份独立持久化防止重试换内容。保留既有钱包业务幂等键和状态机。测试环境已实测 MySQL 结果提交失败时资金、流水及结果回滚,原事件重试后仅冻结一次;首次执行并发同 hash/异 hash 也已验证。资金执行中途故障仍缺对应真实证据。
|
||||
|
||||
特别约定:资金指令的投递成功不等于冻结/扣款成功。Finance 必须可靠保存 SUCCEEDED 或 FAILED 业务结果及结果 Outbox 后确认该指令已消费,Lastleg 以 `WalletCommandCompleted` 更新业务状态。余额不足等已形成 FAILED 结果的指令不进行无意义的传输重试;成功扣款后结果发送失败,只重试原结果事件,不能再次生成扣款指令。
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
统一逻辑状态为待投递、投递中、重试等待、完成、DEAD;可映射到现有表字段,不要求批量改名。初始测试参数:连接超时 3 秒、单次请求超时 15 秒、租约 60 秒、累计自动尝试 12 次、退避从 5 秒翻倍上限 30 分钟,加入小幅抖动;参数需可配置。租约失效后的恢复和最终状态更新必须校验持有者,避免旧任务覆盖新任务。消费超时不能被解释为事务一定回滚。
|
||||
|
||||
源码配置已统一为 `baiyue.event-delivery.connect-timeout-ms=3000`、`read-timeout-ms=15000`、`max-attempts=12`、`base-delay-seconds=5`、`max-delay-seconds=1800`、`jitter=0.1`、`lease-seconds=60`,供四个业务 Relay 使用。事件 Feign 客户端显式应用 EventDeliveryFeignConfiguration,禁止客户端内部自动重试及重定向,最终构建参数不被旧的全局 Feign 超时覆盖;连接与读取超时之和必须小于租约时长。`retry_count` 表示已失败或租约超时的投递次数;普通领取不递增,领取超时任务或恢复超时租约时计入一次,自动预算耗尽后保持 DEAD。实际投递失败从失败时刻计算下一次重试时间;每次领取使用独立租约 ID 和当前时间,最终写入必须匹配该 ID。DEAD 保留原始事件,不能通过定时扫描自行恢复。人工重试、逐次审计和指标已落地并通过本地事务回归,真实数据库/多服务故障恢复仍未验证,尚未达到停桥部署门槛。
|
||||
源码配置已统一为 `baiyue.event-delivery.connect-timeout-ms=3000`、`read-timeout-ms=15000`、`max-attempts=12`、`base-delay-seconds=5`、`max-delay-seconds=1800`、`jitter=0.1`、`lease-seconds=60`,供四个业务 Relay 使用。事件 Feign 客户端显式应用 EventDeliveryFeignConfiguration,禁止客户端内部自动重试及重定向,最终构建参数不被旧的全局 Feign 超时覆盖;连接与读取超时之和必须小于租约时长。`retry_count` 表示已失败或租约超时的投递次数;普通领取不递增,领取超时任务或恢复超时租约时计入一次,自动预算耗尽后保持 DEAD。实际投递失败从失败时刻计算下一次重试时间;每次领取使用独立租约 ID 和当前时间,最终写入必须匹配该 ID。DEAD 保留原始事件,不能通过定时扫描自行恢复。人工重试、逐次审计和指标已落地并通过本地事务回归,真实 MySQL 的目标装柜事件故障恢复已验证,旧桥已停止;其他故障矩阵场景仍须按实际证据分别确认。
|
||||
|
||||
每次尝试在本服务 event_delivery_attempt 表记录事件、目标、时间、耗时、结果、有限错误码和下一次重试;领取与STARTED审计同事务提交后才发HTTP,持有者CAS完成与审计完成同事务,失败一同回滚。过期租约审计为LEASE_EXPIRED并退避,本轮不立即重发。按服务/类型提供 pending/DEAD 数量及最老待处理时长;指标 baiyue.event.delivery.pending/dead/oldest.pending.seconds/sample.timestamp/sample.success 默认30秒采样,Prometheus只读缓存。采样失败保留旧值并标记失败,未知初值为NaN,不误报零积压。告警接入现有能力,不为本次新增独立监控平台。人工重试采用各生产服务的受保护内部操作与配套运维脚本,不新增公开后台页面:只允许 DEAD 原事件重试,记录操作人/原因,保留 eventId/hash/payload/业务幂等键,禁止修改载荷或伪造新 ID 后重发。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user