从 0 到 2,000+ 次提交:ERP 四年的架构演进

从 0 到 2,000+ 次提交:ERP 四年的架构演进

sifanERP 的起点不是"设计一套漂亮架构",而是解决 Amazon 运营过程中店铺、商品、订单、库存、FBA、广告和内部协同彼此割裂的问题。项目从 2022 年开始,经历了 Vue 2、Element UI、JDK 8 与 Spring Boot 的快速起步,也经历了前后端全面重构、平台接口治理、数据迁移和上线门禁建设。截至 2026 年 8 月,当前主分支已有 2,556 次提交,其中我的作者记录为 2,094 次;提交数量不能直接等同于业务价值,但它能够说明一件事:复杂系统不是一次"重写"完成的,而是在长期反馈中不断修正边界。

一、起点:先让分散业务能够协同

早期最直接的问题并不是系统性能,而是信息无法形成闭环:商品资料分散在不同表格,订单、库存与广告数据来自不同平台,运营人员需要人工核对,异常发生后也很难还原过程。

因此,第一阶段的目标很务实:尽快把核心业务放进同一个系统。初版采用 Vue 2、Element UI、JDK 8 和 Spring Boot,优先覆盖运营工作台、商品、订单、库存及基础权限等场景。

这种方案适合验证业务,但随着功能增加,问题也逐渐显现:

现象 对业务的影响 真正需要解决的问题
页面和接口持续堆叠 一个小改动可能影响多个模块 缺少稳定的业务边界
外部平台调用散落 限流、授权和异常处理不一致 缺少统一的平台接入层
数据结构依赖手工维护 环境之间容易出现结构差异 缺少可追踪的数据库演进机制
长任务与请求链路混合 同步阻塞、失败难恢复 缺少任务状态与生命周期设计
结果存在但过程缺失 出现异常后无法快速复盘 缺少可观察和可审计能力

这时如果只升级框架版本,旧问题仍会原样保留。真正需要重构的不是代码语法,而是系统如何表达业务、如何处理失败、如何持续上线。

二、第一次关键变化:从"功能集合"走向业务模块

后续重构将系统拆分为网关、核心业务、用户权限、Amazon 业务、内部集成和 AI 等模块,并将前端升级到 Vue 3、TypeScript 和 Vite,后端升级到 Java 21、Spring Boot 3 与 Spring Cloud 体系。

但模块数量并不是重构成果,边界清晰才是。

  • 网关负责统一入口、认证过滤和路由,不承载具体业务判断。
  • 用户服务负责登录、角色和权限,不让权限规则散落在各业务模块。
  • Amazon 服务集中处理店铺、订单、Listing、FBA、报告和广告数据。
  • 核心服务承载产品、运营、文件及企业内部协作能力。
  • 外部平台之间通过明确的数据契约协作,而不是直接访问彼此内部实现。

这一变化带来的业务价值,是把"修改一个功能可能影响全系统"逐步变成"修改发生在清晰边界内,并能通过契约验证影响范围"。

三、第二次关键变化:把平台接口当成长期系统,而不是一次调用

Amazon SP-API 和 Ads API 的难点,从来不只是发送请求和解析响应。真实环境还包含授权过期、接口限流、异步报告、跨站点时区、分页中断、重复数据和部分失败。

因此,平台集成逐渐形成了完整治理链路:

text 复制代码
授权与会话
  → 店铺级限流
  → 有边界的重试
  → 异步任务状态
  → 幂等保存
  → 成功游标
  → 缺口回补
  → 数据水位与验收

这套链路改变了系统对失败的理解。以前失败意味着"任务报错,需要重跑";现在失败被拆成可恢复、不可恢复和需要人工处理的不同状态。已经成功的区间会保留进度,重复执行不会制造重复数据,下一轮可以从断点继续。

业务因此获得的并不是"接口更稳定"这么简单,而是数据能够持续更新、问题能够定位、任务能够恢复,运营不再依赖开发人员临时补数据。

四、第三次关键变化:数据库和部署也必须可演进

长期项目最危险的情况之一,是代码已经更新,但数据库结构、运行参数或任务配置仍停留在旧版本。为此,sifanERP 将数据库变化纳入 Flyway 迁移,并为核心业务与 Amazon 模块分别维护迁移历史。

每次结构变化都以新的迁移文件向前演进,不直接修改已经执行的历史;生产上线前还需要确认目标环境、迁移状态、任务配置、健康检查和回滚边界。

这让"上线"从一次 Git 推送变成完整交付链路:

text 复制代码
代码验证
  → 数据迁移检查
  → 任务与配置确认
  → 指定版本部署
  → 健康检查
  → 业务数据验收
  → 异常回滚或继续观察

当系统开始承载真实订单、库存和广告数据后,这些看起来不直接产生页面功能的工作,反而决定了系统是否可以长期运行。

五、2,000+ 次提交真正说明了什么

截至 2026 年 8 月 28 日,当前主分支共有 2,556 次提交。项目约 90% 的功能由我独立完成,这是对功能建设投入的概括;Git 中我的作者记录为 2,094 次,是另一项可核验的工程证据。两者口径不同,不应简单画等号。

我更愿意把这些数字理解为四类持续工作:

  1. 业务理解不断修正:字段、状态和流程会随着真实运营反馈变化。
  2. 外部平台持续变化:API 版本、限流和报告口径都需要长期适配。
  3. 历史设计需要偿还:早期为了快速交付形成的耦合,要在后续逐步拆解。
  4. 验证能力不断补齐:测试、迁移、运行手册和上线门禁必须跟上功能规模。

复杂系统的演进不是每隔几年推倒重来,而是识别当前最危险的不确定性,用最小但完整的改动把它消除。

六、目前仍然没有完成的部分

sifanERP 仍在持续建设。广告经营优化、产品健康判断、数据对账和可观察任务等能力,还需要更多真实案例验证。

下一阶段重点不是继续增加页面,而是形成更可靠的闭环:

目标 行动 验证方式 期望结果
提升数据可信度 建立多来源对账和数据水位 按店铺、站点、日期核对差异 异常能够定位到具体来源
降低同步维护成本 完善断点恢复和失败分类 重启、限流和部分失败演练 任务无需从头重跑
支撑经营决策 建立广告与业务指标关联 历史案例回放、影子运行 先证明建议有效,再开放执行
控制上线风险 统一版本、迁移和验收门禁 每次发布保留验证记录 部署结果可确认、问题可回退

结语

四年之后,我对 ERP 架构最大的认识是:架构不是模块图,也不是框架版本,而是系统面对变化和失败时的行为。

一个真正可持续的业务系统,应当让数据来源明确、过程可追踪、结果可验证、失败可恢复。技术升级只有转化成这些能力,才算完成了从"能用"到"可靠"的跨越。

相关推荐
阳明山水1 小时前
Mamba路径如何建模长程时序依赖
人工智能·深度学习·算法·机器学习·架构
ZeekerLin1 小时前
企业级 Agent 混合架构方案
架构
许彰午2 小时前
07-SqlBuilder六法
java·开发语言·低代码·架构
LONGZETECH2 小时前
新能源汽车动力电池实训教学痛点与虚拟仿真技术解决方案
c语言·3d·unity·架构·汽车·汽车教学软件
叶落方知秋2 小时前
大模型学习笔记:特征工程到底在干啥?
架构
叶落方知秋2 小时前
大模型学习笔记:AI 系统怎么"猜你想买"?
架构
zandy10113 小时前
2026vibe coding背后 :Kimi Code、Cursor、Claude Code、GitHub Copilot等五款工具架构演进全面分析
架构·github·copilot
Capricorn19883 小时前
Agent 记忆层接入后引用仍不可信?知芽 Notebook Skill 排障指南
大数据·论文阅读·人工智能·笔记·架构
l1258653 小时前
# LangGraph 核心架构入门:State、Node、Edge 与 Reducer 的工程理解
大数据·人工智能·python·架构·langchain·edge