跳到主内容
← 返回

03 独立开发 · 需求到上线 · 2025

从商业发票解析到承运商面单与海关申报,中间几十次复制粘贴全部消失。DHL 三项验收全过,FedEx 认证上线。

PythonFastAPISQLiteDHL MyDHL APIFedEx RESTDHL DPS
3/3
DHL 验收测试
FedEx 认证上线
0
重复出单

Problem

要解决什么

出一票货,业务要把发票上的信息誊到承运商系统里,再誊一遍到申报系统。慢,而且抄错就是实打实的损失。

更麻烦的是重复出单:点两次、或者网络超时后重试,就可能真的产生两张运单 —— 那是要付钱的。

Architecture

怎么搭的

流程图按站点样式重画,不是 PDF 截图

  1. 1

    解析商业发票

    支持 xls / xlsx 与文本型 PDF,解析后人工校对

  2. 2

    校对与补全

    发货主体、收件人、货物明细、包裹参数逐项确认

  3. 3

    询价比价

    同一票货跨承运商比服务档次与时效

  4. 4

    幂等出单

    幂等键先落库再调承运商,返回未知一律不重试

  5. 5

    面单与申报

    面单落地,符合条件的自动进海关申报队列

Tradeoffs

为什么这么选

幂等键什么时候写?

调承运商之前

调完再写,一旦在中间崩掉就没有任何记录 —— 重试会真的出第二张单。先写后调,最坏情况是留下一条"状态未知"待人工核对,不会多花钱。

承运商返回超时怎么办?

标记 unknown,不自动重试

超时不等于失败,单可能已经出了。自动重试是在赌,而赌错要赔钱。交人工去承运商后台核一眼,几十秒的事。

本地落库失败要不要回滚已成功的运单?

不回滚

运单在承运商那边已经成立,本地回滚改变不了这个事实,只会让两边账对不上。宁可留一条待补录。

Screens

系统界面

本地演示实例 + 确定性演示数据,客户信息全部虚构

一票 2.5kg 的货从填单到比价:发货主体、目的地、包裹参数,再拉出可用服务与时效