网络 · 物流门户
专为货代打造的操作台,完整呈现您的品牌形象。
您的货代通过电子邮件向您更新动态。调度 团队将里程碑填入一张共享表格,而负责刷新的人总是忘记更新。清关日期以 PDF 截图的形式传来。运价单存放在某个 SharePoint 文件夹里。集装箱出现延误时,您是从进口商追问原因才得知的。您的「货运记录」不过是从三个收件箱和一个 WhatsApp 拼凑出来的虚构档案。
TradeOS 中的物流门户是一个带有您品牌标识的操作台,货代、报关行和承运商可直接在其中工作——同一数据库,仅限其所需查看的范围。结构化 收件箱 取代了临时邮件往来。真实里程碑落入真实状态机。清关、调度、开票与沟通,全部集中在同一条记录上。多租户身份:一次登录,多个运营商工作区,各自隔离。对服务提供方免费,不替代 TMS。
门户模块
7 · 收件箱、货运、调度、发票及另外 3 个
物流方式
海运、空运、公路、铁路、快递及另外 3 种
多租户身份
一次登录,多个运营商工作区
货代使用成本
$0 · 由运营商支付 TradeOS 费用
真实的主页仪表板— 欢迎横幅、显示活跃货运实时位置的世界地图组件、双列操作队列。单次后端调用(GET /portal/logistics/home)返回全部数据。运营商品牌界面元素(徽标、颜色、工作区标签)根据运营商的租户设置渲染。
那个从未更新的里程碑
「货运可视化」的真实面貌。
货代专业,报关行高效,承运人的追踪页面也有。但当一票货物的记录系统分散在三个收件箱、两张电子表格、一个 SharePoint 文件夹和一个没人在同一时区的 WhatsApp 群里时,这一切都无济于事。
01 · 里程碑活在共享表格里
「ETA 是什么时候?」——答案来自某个没人记得刷新的标签页。
您的货代更新 Google Sheet 的节奏与追问您的进口商不同步。运营团队有两个「唯一真相」——表格和承运人追踪页面——两者相差三天。等您查到答案时,集装箱早已通关,没有任何人注意到。
02 · 清关更新活在邮件线程里
报关行在晚上 11 点发来「我们周二已申报」。您周四才看到。
报关行速度很快,但他们的沟通渠道就是当时恰好打开的那个收件箱。放行通知以 PDF 附件形式到达。您转发给财务,财务找不到申报编号,因为它藏在截图里。货物晚了三天才出运,因为没有人知道已经放行。
03 · 一家货代,十五个门户
您的货代无视您发给他们的门户,因为他们还有另外十五个。
您搭建了「自己的」门户,请货代登录并更新里程碑。他们每个客户都有一个。没有一个他们会持续查看。您的数据在他们关闭浏览器标签页的那一刻就过时了。这个门户变成了货代应付差事的系统——直到他们彻底不再应付。
7 个模块 · 一个门户
货运代理所需的每个操作界面,集中于一套导航体系。
真实的 LOGISTICS_NAV.flatLinks 来自 client/src/lib/navConfig.ts。移动端底部导航栏使用前四项:首页 · 收件箱 · 货运 · 调度。
首页
欢迎横幅 + 显示活跃货运的世界地图 + 双栏操作队列(Needs Response、有风险、Today、Money)。单次后端调用返回全部数据。
收件箱
结构化响应队列。3 个子标签页(订舱、RFQs、争议),每个标签页分为「需处理」、「Awaiting Response」和「Recently 12月ided」三个区块。逾期未处理的还盘将在 48 小时后自动提级。
货运
5 个标签页——追踪、集装箱、费用、清关、历史记录。单次后端调用(/shipments/overview/all)返回全部数据;各标签页为其投影视图。
调度
适用于陆路运输的 11 状态机。assigned → accepted_by_driver → en_route_to_pickup → arrived → loaded → departed → en_route_to_delivery → arrived → unloaded → completed(+ 失败分支)。完成须经 POD 解锁。
费率
费率表含生效日期、失效日期、版本号及替代版本字段。支持按行附加附加费、数量分级及最低收费。支持 1 至 500 行的原子性批量导入。
发票
10 状态机。3 种类型:按货运、月度合并、临时。含争议分支及处理跟踪。
消息
按运营商连接限定范围的线程式消息。关联至具体实体(订舱、RFQ、货运、发票)。通知通过与其他门户相同的基础设施推送。
收件箱 · 1,252 行界面
货运代理的收件箱存在于您的记录中,而非分散在三条邮件线程里。
三类工作流共享同一队列,因为从货运代理的角度来看,它们本质相同:「结构化回复、时间紧迫、我是瓶颈」——订舱请求、RFQ 和发票争议。收件箱 界面将三者汇入同一队列,并内嵌操作表单,使标准流程无需任何页面跳转。
已提交 5 份报价 · 等待操作方决策 · 最早提交 18h 前
2 份报价中标 · 1 份报价落标 · 展开查看
货运 · 5 个标签页 · 单次后端调用
同一货运数据的五种视图。
货运代理的主要操作界面。GET /portal/logistics/shipments/overview/all 一次性返回全部数据;页面将其保存在内存中并按标签页分别呈现。浏览器无需扇出请求,各标签页无需单独重新获取数据。
货运追踪
世界地图 + 列表,显示状态、路线、最新里程碑及未处理异常。点击任意行 → 内联展开,显示该货运的完整里程碑时间线及未处理异常。
集装箱规划
每票货运的每个集装箱,包含箱型、装载率(CBM / 重量与集装箱上限之比)、铅封号及装货日期。即「哪些货物装在哪里」视图。
费用与运费
每票货运的发票收入、已付金额及未结余额。顶部显示汇总总计。可从任意行深入查看发票详情。
海关与合规
每票货运的报关信息:管辖地(ISO 3166)、申报类型(进口/出口/过境)、状态(7 状态机)、报关单号及申报 HS 编码。顶部汇总显示已清关/待处理/扣押数量。
历史记录
该货运代理名下所有货运的事件、里程碑及异常的时间顺序合并记录。按时间排列的动态流。审计日志界面。
状态机 · 数据库强制执行
货代全程经历的六个生命周期——始终在您的记录内完成,无需跳转。
每个工作流均具备显式状态机——采用 Postgres 枚举类型或 CHECK 约束实现。服务层的状态转换规则严格校验各状态间的合法流转路径。无魔法字符串,无 UI 端状态管理。
预订 · 6 个状态
终止状态:已拒绝·已取消·已过期。接受操作将自动创建关联货运记录。
询价单 · 7 个状态
分支状态:已失标·拒绝报价·已过期·已撤回。后端强制每条 RFQ 仅允许一个待处理报价。
调度 · 11 个状态
任意活跃状态均可附带原因转入 failed。完成操作须先完成 POD 采集(界面中通过提示框锁定)。
发票 · 10 个状态
分支状态:已逾期·存在争议·已核销。发票类型共三种:按货运·按月合并·临时。
报关申报 · 7 个状态
分支状态:已扣押(文件/付款/查验待处理)·待查询(海关提出问题)·已拒绝(终止)。按管辖区 × 申报类型划分。
异常 · 3+3 枚举
严重级别 × 状态。状态流转路径为 待处理 → 处理中 → 已解决。与里程碑相互独立——异常须声明登记,缓解措施可追踪,处理结果留存审计。
8 种物流模式 · 按模式里程碑模板
八种物流模式——因为真实货运无法套用同一个模板。
logistics_mode 枚举包含八个值,每个值对应独立的按模式里程碑模板(在服务端验证,而非通过数据库枚举,因此新增里程碑无需执行 ALTER TYPE)。
里程碑: 已订舱 → VGM 已申报 → 进闸 → 已装船 → 已离港 → 已中转 → 已抵港 → 已卸船 → 海关 → 已交付。
里程碑: 已订舱 → CFS 已收货 → 已拼箱 → 已装船 → 已离港 → 已抵港 → 已拆箱 → 海关 → 已交付。
里程碑: 已订舱 → 舱单申报 → 已交运 → 已装机 → 飞行中 → 已落地 → 已接收 → 海关 → 已交付。
里程碑: 完整 11 状态调度状态机(见上文)。
里程碑: 含多站提货与配送循环的调度状态机。
里程碑: 调度状态机 + 港口预约工作流。
里程碑: 已调度 → 已装车 → 已发出 → 边境 → 换轨 → 已抵达 → 已卸车 → 已交接。
里程碑: 已揽收 → 运输中 → 派送中 → 已交付(或已退回)。
一个货代 · 多个操作方
一个货代账号登录,多个操作方工作空间,各自完全隔离。
一家同时服务 彭德鲁能源、AcmeCorp、生物医学环球 及其他七家客户的货代,只需一条用户记录、一次登录,即可通过 external_memberships 表(迁移 121)访问十个操作方工作空间。一键切换。每个操作方的订舱记录、运价单、里程碑节点、发票及往来沟通均通过 connection_id 隔离——不存在任何 API 路径可将数据跨操作方泄露。
您的承运商 API 凭证存储于 external_organization 层级(迁移 289)——配置一次,通过 KMS 插件加密,在您所服务的所有操作方工作空间中复用。
保密性 · 架构
跨运营商保密性由平台强制执行,而非依赖政策约定。
架构保障,而非口头承诺。真实的 redactFor(entity, row, viewerRole) 位于 server/src/modules/portal-shell/redaction.ts — 与供应商和客户门户采用相同模式。
按连接划定范围
每个查询均携带来自 JWT 的 connection_id
物流门户 API 不存在任何可跨运营商扩散的路径。跨运营商访问返回 404(而非 403),从而隐藏资源的存在性— 已在投影测试套件中验证(portal-logistics/__tests__/projector.test.ts)。
字段级脱敏
物流方永远看不到商业价值数据
采购价、销售价、利润率、成本基础— 在记录离开数据库之前全部剥除。redactShipmentForClient 与 redactFor('shipment', raw, 'logistics') 函数强制执行此规则。唯一例外是提单:法律要求的收货人数据会出现在提单文件中,受基于 Incoterms 的可见性规则管辖(见下一节)。
运费隐私保护
您与某一运营商约定的费率对其他运营商不可见
费率表按 logistics_connection_id 限定范围。运营商侧的费率交易市场用于跨提供商比价(Solo+ 功能),而非反向查询— 货运代理无法枚举「谁获得了比我更优惠的费率」。RFQ 结果(中标 / 未中标)仅向相关货运代理本人展示,绝不跨货运代理聚合。
贸易术语 · 可见性配置
货运代理所能看到的内容,取决于哪一方是法定发货人。
连接的 visibility_config JSON(迁移 122 列;schema 文档见 291)按 Incoterm 设置原产地和目的地的可见性——国家 / 港口 / 城市 / factory_name / factory_address / full_address。此外支持按 Incoterm 的覆盖规则及标签覆盖规则。
DDP · CIF · CFR
运营商 = 法定发货人
制造商身份在运输单据中被抽象处理。货运代理看到的发货地为运营商地址;运营商的租户设置控制 BOL 发货人字段。除非明确覆盖,否则制造商名称不会向货运代理显示。
FOB · EXW · FCA
工厂 = 法定发货人
制造商因法律要求须作为 BOL 上的法定发货人。制造商名称及提货地址对货运代理可见;visibility_config 仍可限制运营商下游客户所能看到的内容(客户门户的信息遮蔽规则单独适用)。
司机 · PWA
同一门户,范围限定为「仅您的调度任务」。
司机将物流门户安装至主屏幕——manifest.webmanifest + service worker——完成一次登录后,即可查看仅限其本人作为指定司机的调度任务队列。不涉及运价、发票或其他货运信息。里程碑节点记录 GPS 经纬度坐标及照片上传;POD 要求在允许切换至 completed 状态前,提供签名、签署人姓名及职务。
每个事件记录 6 个里程碑来源值:user(运营人工录入)、driver(移动端采集)、carrier_api、ocr、scheduled_auto_advance、operator_override。里程碑表为仅追加模式——触发器拒绝 UPDATE 操作;更正操作通过插入新行实现,新行中的 supersedes_milestone_id 指向原始记录。
基于地理围栏的自动状态转换、BOL 上传的 OCR 处理流水线,以及 iOS 和 Android 原生应用均已列入路线图——里程碑来源枚举已为其预留对应槽位。
权限分级 · 15 个功能项
货运代理免费使用。运营商的 层级 决定哪些功能可见。
实际的 tier_features 注册表(迁移 291)定义了物流门户的 15 个功能门控。物流服务商不会看到付费墙;接入运营商的 层级 决定该运营商在您工作区中的可用功能。[路线图] 标签标注的功能,其 tier_feature 键已存在,但实现将于上线后完成。
Roadmap = 在迁移 291 中注册的 tier_features 键(参见 db/migrations/291_logistics_tier_features_and_visibility_overrides.sql);引擎、聚合及 UI 实现将于上线后按物流 Spec §19、§14、§25 交付。
规划路线图
物流门户即将推出的功能。
v1 包含 7 个模块、6 个状态机、仅追加的里程碑日志、多租户身份管理、字段级脱敏、Incoterms 驱动的可见性,以及跨 15 个功能键的 层级 gating。部分市场团队希望立即对外宣称的能力已如实标注为规划路线图。
01
AI 整合建议
迁移 290 交付 consolidation_groups 表结构。填充该表的建议引擎作为上线后的后台任务运行;v1 界面暂不展示任何内容。层级 功能键 logistics.ai_consolidation_suggestions 已为 Business+ 注册。
02
跨租户绩效洞察 + 网络信誉
层级 功能键 logistics.cross_tenant_insights 和 logistics.network_reputation_display 已为 Business+ 注册。聚合引擎及 ≥3 个运营商的反推断阈值将于上线后落地。
03
多运营商整合(Enterprise)
跨运营商整合需要尚未明确的同意机制。迁移 290 明确推迟此项— 「intentionally NOT modelled here」。层级 功能键已预留。
04
BOL 上传的 OCR 流水线
里程碑来源枚举值 'ocr' 已注册;负责读取 BOL 图像、提取集装箱/船舶/铅封/航次字段并发布相应里程碑的 OCR 服务将于上线后提供。
05
地理围栏驱动的自动状态转换
基于地理围栏进入/退出的调度状态转换(arrived_at_pickup、arrived_at_delivery)目前尚未实现。v1 在司机点击里程碑时捕获 GPS;基于地理围栏的自动推进将于后续版本提供。
06
承运人 API 覆盖范围— 直接集成
v1 集成注册表:project44(live),Freightos Baltic / Xeneta / Drewry / 3月ineTraffic / Vizion(运费率 + AIS 可视化)。与 Maersk / MSC / CMA CGM / ONE / HMM / Hapag-Lloyd 的直接集成、面向航空的 IATA Cargo IQ,以及面向快递陆运的 FedEx / UPS / DHL / USPS,将随底层 API 接入后逐步开通。logistics_carrier_api_credentials.carrier_name 为自由文本 TEXT 字段,新增承运人无需变更表结构。
07
iOS / Android 原生司机应用
PWA 是 v1 的司机端界面(manifest + service worker 已在 client/public/ 上线)。支持生物识别认证、原生相机 API 及推送通知的原生应用将于上线后推出。
08
承运人 API 定期轮询节奏
logistics_carrier_api_credentials 表包含 last_polled_at 字段。按各自节奏轮询每个已连接承运人的定时任务(海运每日、关键空运航段每小时、铁路每 12 小时)将于上线后提供。
常见问题
每位货运代理最先提出的问题。
不是。我们不与 CargoWise、Magaya、Descartes 或 Project44 竞争。我们是您的 TMS 与委托您的运营商之间的协调层。请继续使用 TMS 处理内部运营;使用物流门户处理 TMS 之外的运营商侧工作流——运营商发起的预订、运营商所需的里程碑可视化、针对运营商货运的报关申报、运营商查询的费率表和 RFQ,以及运营商支付的运费发票。针对使用 CargoWise / Magaya / Descartes 的运营商的 TMS 集成在 Enterprise 层级 提供。
向我们发送您的货运代理名单和一个进行中的预订,我们将搭建一个沙箱物流门户,并在 30 分钟内带您的一位货运代理完整走一遍。
发送一份包含您主要货运代理的 CSV 文件和一个开放中的货运单。我们将搭建一个带有您 tenant 品牌标识的沙箱物流门户,以您的货运代理名单作为 external_organizations,并带领一位真实货运代理完整体验:接受 RFQ、发布里程碑、报关申报,以及开具发票。无演示数据。您的货运代理,您的货运单。