18 KiB
18 KiB
业务域梳理与一期任务实施审核稿
更新时间:2026-07-30
审核状态:一期前端联调能力已验收,完整头程生产闭环待审核
目标:一期在国内服务器形成“注册与审核、下单、国内仓、头程交接、事件通知”的可演示闭环,并为后期尾程迁移海外保留稳定边界。
1. 一期业务主链路
商户注册
-> 提交企业资料和资质文件
-> 平台审核并激活租户
-> 商户管理员登录并配置成员权限
-> 商户创建、提交头程订单
-> 平台审核、受理订单
-> 生成头程履约任务
-> 国内仓预约到货、收货测量和差异处理
-> 排柜、订舱、拖车、装柜、报关
-> 装船发运并固化交接快照
-> Outbox 可靠发布交接事件
-> 一期国内尾程 Inbox 幂等接收并回执
-> 国内统一轨迹投影
-> 异步订单通知
一期不要求立刻把服务物理部署到海外,但要求尾程交接不依赖跨库联表、同步跨区 Feign 或共享 Redis,以便后期只迁移尾程执行单元。
2. 业务域边界
| 业务域 | 唯一主数据 | 对外输入 | 对外输出 | 明确不负责 | 当前状态 |
|---|---|---|---|---|---|
| 租户权限 | 租户、成员、角色、菜单、按钮、数据范围、资质审核 | 注册资料、成员和授权变更 | 授权快照、租户下单资格 | 密码校验、订单业务状态 | 个人资料、成员、角色、按钮权限和租户隔离已通过真实回归 |
| 统一登录 | 账号、密码哈希、刷新令牌、登录会话 | 注册、登录、刷新、退出 | JWT 和会话状态 | 菜单权限主数据 | 登录、刷新轮换、退出、改密和会话撤销已通过真实回归;海外本地验签待完成 |
| 订单 | 商户委托、货物、收发方、订单状态和历史 | 商户下单、平台审核和受理 | 订单事件、履约创建指令、查询视图 | 仓内作业、头程执行细节、尾程事实 | 主要接口与状态机已存在,可靠事件发布未闭环 |
| 国内仓 | 国内仓资料、往来单位配置、联系人地址、库位及仓内作业事实 | 到仓预约、收货、测量、装柜指令 | 有效仓库与往来单位候选、入库结果、差异、装柜证据 | 订单审核、订舱、报关、尾程 | 仓库和往来单位资料能力已有,仓内作业待实现 |
| 头程 | 头程履约任务、订舱、柜、航次、报关和发运交接 | 已受理订单、仓储作业结果 | 发运交接事件和头程里程碑 | 商户订单主档、海外派送 | 任务分配基础已有,完整履约待实现 |
| 尾程交接 | 尾程聚合、交接版本、执行区域、到港至签收事实 | 不可变发运交接事件 | 接收/拒绝回执、尾程里程碑、完成事件 | 修改国内订单和头程事实 | 当前主要为骨架,Inbox 与业务流程未完成 |
| 文件 | 文件元数据、存储定位、版本、摘要、下载授权和日志 | 文件上传或受控复制 | 文件标识、短期下载授权 | 在事件中传输文件正文、业务审批 | 资质上传下载已有,本地磁盘需迁对象存储 |
| 打印 | 模板、打印任务、状态历史 | 业务单据数据和模板版本 | 生成文件标识、打印结果 | 保存订单或仓储主数据 | 表结构与健康接口已有,执行能力待实现 |
| 审计 | 操作人、租户、动作、对象、结果和追踪号 | 各服务异步或内部审计事件 | 审计查询与留痕 | 代替业务状态历史 | 采集落库基础已有,关键写动作覆盖需核对 |
| 集成 | 提供方配置、外部请求映射、回调幂等键 | 业务服务抽象调用、第三方回调 | 标准化结果和外部事件 | 持有订单、头程、尾程主状态 | 提供方状态骨架已有,真实适配器待实现 |
| 事件通知 | Outbox、Inbox、投递、重试、死信、通知订阅和发送记录 | 领域事件 | 站内信、短信/邮件/回调结果和统一轨迹 | 直接推进源聚合状态 | 公共事件契约已存在,可靠桥和通知链路未完成 |
3. 服务间协作规则
auth-service登录时向iam-service获取授权快照;JWT 携带可信租户、端和权限信息。order-service只通过 IAM 内部接口判断租户是否允许下单,不跨库查询 IAM 表。order-service通过warehouse-service内部接口校验仓库和往来单位;二者均属于baiyue_warehouse,订单只保存不可变业务快照,不跨库读取配置表。- 订单受理后通过事件或明确的内部契约创建头程任务,头程不得修改订单表。
- 国内仓回传测量、差异和装柜结果;头程维护履约编排,仓储维护仓内事实。
- 只有“装船发运且交接快照固化”才能产生尾程交接事件,订单审核通过事件不能替代尾程交接。
- 尾程以
event_id + event_version幂等接收,以聚合版本拒绝旧事件覆盖新状态。 - 海外里程碑通过事件回到国内只读轨迹投影,客户端只查询国内统一时间线。
- 文件事件只传
file_id、版本、摘要和用途;打印任务只保存业务引用和file_id。 - 通知消费者失败不能回滚订单或履约事务,必须重试、死信并可人工补投。
- 每个写操作同时校验登录身份、端、租户和按钮权限,不能只依赖前端隐藏按钮。
4. 一期范围
4.1 必须完成
- 平台端和商户端统一登录、租户隔离、菜单与按钮权限。
- 商户注册、资质提交、平台审核、租户激活、允许下单联动。
- 普通头程订单创建、编辑、提交、审核、受理和取消。
- 国内仓到仓、收货、测量、差异确认、装柜证据的最小闭环。
- 头程排柜、订舱、装柜、报关、装船发运和交接快照。
- 国内回环的 Outbox、事件桥、Inbox、回执、统一轨迹和订单通知。
- 文件对象存储抽象、审计、监控、自动化验收和部署手册。
4.2 延后到后续迭代
- 完整快递、换标、海外仓增值服务产品线。
- 全量 Amazon SP-API、各国海关、港务和多承运商适配。
- 海外正式生产切流、多区域高可用和历史执行中聚合迁移。
- 高级智能排柜、智能计费、复杂结算和财务对账。
5. 一期详细任务节点
状态取值:已有基础 表示代码或表已存在但仍需按验收标准补齐;待实现 表示尚未形成可用闭环。
| 编号 | 任务 | 输入 | 输出 | 依赖 | 验收标准 | 优先级 | 建议迭代 | 当前状态 |
|---|---|---|---|---|---|---|---|---|
| P1-001 | 固化一期状态机与跨服务契约 | 原型、订单状态、头尾程节点 | 状态表、接口契约、事件目录 | 产品审核 | 非法流转有明确错误码;契约评审通过并版本化 | P0 | 迭代 0 | 待审核 |
| P1-002 | 统一环境与数据库初始化 | 服务清单、SQL、Nacos 模板 | 可重复初始化脚本和环境检查 | MySQL、Redis、Nacos | 空环境一键初始化;重复执行无副作用;密码不入库 | P0 | 迭代 0 | 已有基础 |
| P1-003 | 统一登录回归 | 账号、密码、端类型 | Access Token、Refresh Token、退出结果 | Auth、IAM、Redis | 平台/商户登录刷新退出全通过;错误端和禁用账号被拒绝 | P0 | 迭代 1 | 已完成真实回归 |
| P1-004 | 注册审核激活闭环 | 注册资料、资质文件 | 待审核租户、审核记录、激活账号 | Auth、IAM、File | 注册后不可下单;审核通过自动激活;拒绝原因可查;重复请求幂等 | P0 | 迭代 1 | 部分实现,需闭环回归 |
| P1-005 | 两端菜单按钮授权 | 角色、资源、成员 | 授权快照和 JWT 权限 | IAM、Auth | 平台与商户资源完全隔离;菜单和按钮权限正确下发 | P0 | 迭代 1 | 已有基础并有验收记录 |
| P1-006 | 写接口后端鉴权全覆盖 | 按钮权限码、写接口清单 | @PreAuthorize 或等效策略 |
P1-005 | 未授权直调所有写接口均返回 403;跨租户访问为 403/404 | P0 | 迭代 1 | 本次成员、角色、仓库、往来单位和订单接口已通过;其余后续业务写接口随功能实现验收 |
| P1-007 | 首次登录改密和凭据治理 | 初始账号、密码策略 | 强制改密状态、修改密码接口 | Auth | 初始账号未改密不能进入业务;密码不记录日志 | P1 | 迭代 1 | 待实现 |
| P1-008 | 商户头程订单最小闭环 | 可下单租户、货物和收发方 | 草稿、提交、审核、受理、取消状态 | P1-004、P1-006 | 正常路径和拒绝/取消路径通过;状态历史完整;租户隔离通过 | P0 | 迭代 2 | 商户草稿创建、编辑、提交、快照和异常路径已通过;平台审核、受理、取消仍待闭环 |
| P1-009 | 订单 Outbox 状态机 | 订单本地事务和领域事件 | 待投递、投递中、成功、重试、死信记录 | P1-001、P1-008 | 业务提交与 Outbox 同事务;进程崩溃后可恢复;无事件丢失 | P0 | 迭代 2 | 有表和写入基础,发布未完成 |
| P1-010 | 头程任务创建与幂等消费 | 订单受理事件 | 唯一头程任务、消费记录 | P1-009 | 同一事件重复 10 次只创建一个任务;失败可重试 | P0 | 迭代 2 | 任务、消费表和分配基础已有 |
| P1-011 | 国内仓到仓预约与收货 | 头程任务、预约信息、实收件 | 入库单、收货时间和操作人 | Warehouse、Firstleg | 可登记预约和实收;租户/订单引用有效;完整审计 | P0 | 迭代 2 | 待实现 |
| P1-012 | 测量与差异处理 | 实收货物、实测重量体积 | 测量记录、差异结果、确认记录 | P1-011 | 原始值和实测值可追溯;超阈值必须人工确认后继续 | P0 | 迭代 2 | 待实现 |
| P1-013 | 仓库及往来单位基础数据完善 | 仓库、地址、能力、往来单位联系人与地址、状态 | 可供商户选择的有效仓库和往来单位列表 | Warehouse | 租户隔离、停用过滤、商户只读查询、订单快照校验通过 | P1 | 迭代 2 | 已补查询、过滤、样本和订单校验 |
| P1-014 | 头程排柜与订舱 | 合格入库货物、航线和柜型 | 柜计划、订舱单、航次信息 | P1-012、Integration | 容量校验、重复分配保护、订舱失败可重试且不重复 | P0 | 迭代 3 | 待实现 |
| P1-015 | 拖车、装柜和证据链 | 柜计划、装柜货物 | 装柜明细、柜号、封条号、照片文件引用 | P1-014、File | 装柜数量一致;照片摘要可校验;柜号封条唯一;留审计 | P0 | 迭代 3 | 待实现 |
| P1-016 | 报关与放行 | 货物、企业资质、装柜数据 | 报关单、申报结果、放行状态 | File、Integration | 资料版本可追溯;失败可重提;未放行禁止发运完成 | P0 | 迭代 3 | 待实现 |
| P1-017 | 装船发运与不可变交接快照 | 放行状态、航次、柜和文件清单 | FirstLegShipmentDeparted.v1 与快照 |
P1-015、P1-016 | 仅满足前置条件可发运;重复操作同一结果;快照有版本和摘要 | P0 | 迭代 3 | 待实现 |
| P1-018 | 事件信封与兼容性测试 | 事件目录、字段定义 | 版本化契约、示例、校验测试 | P1-001 | 必填字段、区域码、版本、摘要校验通过;旧消费者兼容新增字段 | P0 | 迭代 3 | 基础契约已实现 |
| P1-019 | 事件桥可靠发送基础 | Outbox 事件 | 签名请求、投递状态、重试和死信 | P1-009、P1-018 | 超时重试有上限;签名失败拒绝;支持人工补投和监控 | P0 | 迭代 4 | 内部令牌、目标区域和 Inbox 幂等已实现并通过 8 项测试;mTLS、跨区发送、RocketMQ、Outbox 扫描待实现 |
| P1-020 | 尾程 Inbox 与交接回执 | 发运交接事件 | 幂等 Inbox、尾程聚合、接受/拒绝回执 | P1-017、P1-019 | 重复 10 次只创建一次;坏摘要拒绝;旧版本不覆盖新版本 | P0 | 迭代 4 | 待实现 |
| P1-021 | 尾程一期最小阶段 | 已接受交接 | 到港前、到港、到仓、出仓、签收状态 | P1-020 | 五阶段正常流转;非法逆序拒绝;异常原因和操作者可查 | P0 | 迭代 4 | 待实现 |
| P1-022 | 国内统一轨迹投影 | 订单、头程和尾程里程碑事件 | 商户订单时间线 | P1-018、P1-021 | 最终一致;乱序不回退;重复不新增;展示最后同步时间 | P0 | 迭代 4 | 待实现 |
| P1-023 | 异步订单通知 | 领域事件、订阅规则、模板 | 站内通知及发送记录 | P1-022 | 通知失败不回滚业务;可重试、死信、去重;租户隔离 | P0 | 迭代 4 | 待实现 |
| P1-024 | 文件对象存储适配 | 现有本地文件接口 | 存储抽象、对象键、短期下载授权 | 对象存储 | 本地与对象存储实现可切换;SHA-256、大小、类型和下载审计通过 | P0 | 迭代 3 | 当前本地磁盘,待改造 |
| P1-025 | 打印最小闭环 | 模板、订单/仓储数据 | 打印任务、生成文件、结果历史 | File、Print | 可创建模板版本和任务;失败可重试;任务关联 file_id |
P1 | 迭代 4 | 表结构已有,执行待实现 |
| P1-026 | 关键动作审计覆盖 | 写接口和领域事件清单 | 审计记录 | Audit、各业务服务 | 登录、授权、审核、状态推进、交接、补投均记录租户和追踪号 | P0 | 迭代 1-4 | 采集基础已有,覆盖待核验 |
| P1-027 | 可观测性和告警 | 服务、Outbox、Inbox、数据库指标 | 仪表盘和告警规则 | 全部核心服务 | 事件积压、死信、5xx、鉴权失败、数据库连接异常可告警 | P0 | 迭代 4 | 待实现 |
| P1-028 | 一期自动化业务验收 | 测试账号、测试订单和故障场景 | 验收报告与证据 | P1-003 至 P1-027 | 主链路、重复、乱序、断网 30 分钟、跨租户、回滚场景全部通过 | P0 | 迭代 5 | 前端联调范围 105 项真实 API 检查通过;完整履约、跨区断网和乱序验收待补 |
| P1-029 | 国内生产部署与回滚演练 | 镜像、配置、SQL、备份 | 国内上线版本和回滚记录 | P1-028 | 标准端口无冲突;密钥不入库;备份恢复和旧版本回滚演练通过 | P0 | 迭代 5 | 待实现 |
| P1-030 | 海外迁移准备包 | 区域配置、数据分类和事件链路 | 海外资源清单、切流门槛、回滚手册 | P1-019 至 P1-029 | 不依赖国内 MySQL/Redis/Nacos;影子环境可重复部署 | P1 | 迭代 5 | 结构已拆,生产准备未完成 |
6. 建议迭代与出口条件
| 迭代 | 目标 | 出口条件 |
|---|---|---|
| 迭代 0:边界冻结 | 冻结状态机、事件、数据库和部署边界 | 审核本文及区域方案;契约有负责人和版本 |
| 迭代 1:账号权限 | 完成注册审核、激活、登录和按钮鉴权 | 两端权限与跨租户自动化通过,关键动作有审计 |
| 迭代 2:订单到入仓 | 订单受理后创建头程任务并完成到仓测量 | 正常、拒绝、取消、重复事件和差异处理通过 |
| 迭代 3:头程发运 | 完成订舱、装柜、报关、对象存储和发运快照 | 可稳定生成唯一且可校验的交接事件 |
| 迭代 4:尾程回环 | 在国内打通事件桥、Inbox、尾程五阶段、轨迹和通知 | 断网恢复、重复、乱序、死信补投和跨租户测试通过 |
| 迭代 5:上线准备 | 自动化验收、容量、安全、备份和回滚 | 国内一期上线审批通过;海外准备包可审核 |
7. 一期验收数据与场景
至少准备两个商户租户、一个平台管理员、一个审核员、一个订单运营、两个企业成员、两个国内仓、一条正常订单、一条拒绝订单和一条差异订单。
必须自动化覆盖:
- 商户甲不能读取或操作商户乙的成员、订单、货物、文件和轨迹。
- 无按钮权限的用户直接调用写接口返回 403。
- 未审核、被拒绝、禁用租户不能提交订单。
- 同一订单事件重复投递 10 次只生成一个头程任务。
- 同一发运交接事件重复投递 10 次只生成一个尾程聚合。
- 尾程里程碑乱序到达时,旧版本不能覆盖新状态。
- 事件通道中断 30 分钟不影响国内订单和头程提交,恢复后自动补投。
- 通知发送失败不回滚履约状态,并能重试或进入死信。
- 文件下载必须短期授权、校验租户并写下载审计。
- 关键状态推进、人工覆盖和人工补投均可按追踪号还原操作链。
8. 当前可复用的验收基线
已有一期管理员、角色、菜单和按钮初始化记录,以及登录、权限查询、跨端隔离等 19 项自动化冒烟记录;根工程曾有 20 个测试通过记录。这些结果可以作为权限基线,但不能替代本方案中的注册审核、仓内作业、头程发运、尾程交接、可靠事件、轨迹和通知验收。
一期在国内同时运行尾程时,应使用已提供的国内兼容 Profile 构建:
cd D:\baiyue\deployments\cn
.\build.ps1 -IncludePhase1Lastleg
默认国内聚合为 18 个 Reactor 模块;上述命令启用 phase1-domestic-lastleg 后为 19 个 Reactor 模块并包含 lastleg。国内和海外聚合均已包含 common-event-contract 与 event-bridge-service,不需要另行手工加入。
执行新一轮验收前,应先清理旧端口进程并以最新代码、正确数据库密码和标准端口重新启动,避免把临时 9001/9301 验收环境当作正式运行配置。
9. 审核后立即执行的 P0 顺序
- 审核并冻结
P1-001的业务状态与事件交接点。 - 完成
P1-004、P1-006,关闭注册审核与后端按钮鉴权缺口。 - 完成
P1-009、P1-010,先把订单到头程任务的可靠链路跑通。 - 完成
P1-011至P1-017,形成真实发运交接快照。 - 完成
P1-019至P1-023,在国内回环验证尾程、轨迹和通知。 - 完成
P1-027至P1-029,通过故障演练后部署国内一期。
海外服务器、海外数据库和正式切流放在国内回环可靠性验收之后,避免在业务闭环尚未形成时同时引入跨国网络问题。