我要用 AI-native 架构,从零重建一套制造业 ERP/MES

系列:《从零重建 AI-native ERP/MES》· 第 00 篇(总纲,持续更新)

项目代号:Forge

先说结论

我在制造业软件一线写过一整套 ERP/MES:Web 后台、小程序和 App、Java 后端、智能排产、车间工控屏,基本每一端都碰过。

这个系列要做的事情很简单:把这套系统用新架构从零再做一遍,边做边写。

两条规矩:

  1. 先有能跑的实现,再写文章。 每篇对应一个已完成的里程碑,文中代码都来自真实仓库,都有测试。
  2. 只讲判断,不讲流水账。 每篇都回答同一个问题:上一代是怎么做的、痛在哪里、这次为什么这么做、放弃了什么。

写这篇的时候,前两个里程碑(M0 骨架、M1 前端底座)已经完成:后端 28 个测试、前端 8 个单测全绿,docker compose up 能拉起整套服务。

为什么要重做

ERP/MES 不是什么秘密,几乎每家制造企业都有,也有很多团队在做。难的不是「做出来」,而是做了三年以后还改得动。

回头看上一代系统,最痛的几件事都不是某个功能写得不好,而是结构性的:

痛点 表现 根因
前后端契约靠手抄 接口字段改了,前端运行时才报错 三个仓库各自为政,没有单一事实来源
模块边界模糊 改 A 模块,B 模块的报表挂了 多模块只是目录划分,没有任何约束
权限补丁越打越多 数据权限散落在各个 Service 里的 if 权限模型一开始没设计完整
客户要加字段就得发版 「能不能在物料上加个颜色」= 改表 + 改接口 + 改页面 没有元数据层
换个深色主题要逐页扫 满屏硬编码的 #fff,只能一处处改成变量 没有设计令牌
AI 只是个外挂 一个对接大模型的聊天框,业务流程里 AI 插不进去 架构里压根没有 AI 的位置

这些问题靠加班修不好,只能在架构层面一次性想清楚。这就是重做的理由。

新架构长什么样

层 选型 为什么
业务后端 Spring Boot 4 + JDK 21 虚拟线程 + Spring Modulith 事务、报表、工作流、私有化运维的生态都在 JVM;Modulith 让模块边界可以被测试
数据 PostgreSQL(JSONB、pgvector)+ ClickHouse 自定义字段用 JSONB,向量检索用 pgvector,分析型查询交给 ClickHouse
AI 接入 Spring AI:业务 API 以 MCP Server 暴露 让 Agent 调用的是带权限的业务能力,而不是裸数据库
Agent Python + LangGraph 排产算法和模型生态都在 Python
前端 Vue 3 + Vite 8 + 自研设计令牌 类型由后端 OpenAPI 生成,前后端一份契约
交付 Docker Compose + CI 一条命令起全栈,CI 跑后端、前端全量测试与构建

有人会问:既然叫 AI-native,为什么主后端不用 TypeScript 全栈?我确实先用 Bun + Elysia 写了一版工作流引擎的 PoC,最后还是回到了 Spring Boot。原因和取舍会单独写一篇(第 01 篇)。

已经做完的:M0 骨架

M0 解决的是「一个企业系统最先要想清楚的事」:谁能登录、能看到哪个租户的数据、能点哪些按钮、能看到哪些行。

多租户 用的是 Hibernate 7 的 @TenantId,租户来自 JWT,查询和写入都自动带上租户条件:

java 复制代码
@Entity
@Table(name = "iam_user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @TenantId
    private Long tenantId;
    // ...
}

关键不在注解本身,而在没登录的时候租户是什么 。我给「无租户」设了一个哨兵值 -1:任何漏掉鉴权的查询都只会查出空结果,而不是全表。安全默认值比安全检查更可靠。

数据权限 分四档(全部 / 本部门及下级 / 本部门 / 仅本人),由 iam 模块算出一个 DataScope,业务模块只拿到一个 JPA Specification,不需要知道部门树怎么存:

java 复制代码
Specification<User> spec = dataScopeProvider.currentScope()
        .<User>toSpecification("deptId", "id")
        .and(keywordMatches(keyword));

防提权 是很多后台系统漏掉的一环。我在做完 M0 后让另一个 AI 审查了一遍代码,它找出一个真实漏洞:拥有「修改角色」权限的人,可以给某个角色加上自己都没有的权限,再间接提权。修复后加了一条规则:只能授予不超过自己权限和数据范围的角色,且不能修改自己持有的角色,并写成了回归测试。

测试全部基于 Testcontainers 跑真实 PostgreSQL,覆盖的是「会出事故」的场景,而不是 getter/setter:

  • A 租户的管理员改 B 租户的用户 → 404
  • 生产经理只能看到生产部及下属车间
  • 操作工只能看到自己
  • 经理不能在自己的数据范围外建用户,也不能给人分配超管角色
  • 角色编辑者不能通过改角色给自己提权

已经做完的:M1 前端底座

设计令牌 + 三态主题。 所有颜色、间距、圆角都收敛成语义化 Token,Element Plus 的变量全部由 Token 派生。切换深色主题只是换一组 Token 的值,业务页面零改动:

元数据驱动。 这是我认为企业系统里投入产出比最高的一层。一个实体的 Schema = 模块声明的内置字段 + 租户自己加的自定义字段,列表列、表单控件、校验规则都从同一份 Schema 生成:

「能不能在物料上加个颜色」这类需求,现在是管理员在页面上点两下,不用发版。自定义字段的值存在 JSONB 里,后端会按 Schema 严格校验:类型不对、选项不在范围内、必填为空都会被拒绝,未定义的字段直接丢弃。前端怎么改请求都绕不过去。

顺手做掉的一件事:Element Plus 从全量引入改成按需引入,最大的打包块从 500 kB 以上降到约 130 kB。

路线图

里程碑 内容 状态
M0 骨架 多租户、RBAC、数据权限、防提权、OpenAPI 契约、CI ✅
M1 前端底座 设计令牌、三态主题、元数据驱动、自定义字段、物料主数据 ✅
M2 核心单据 BOM → 销售订单 → 工单 → 报工 → 质检 → 发货 下一步
M3 AI 接入 Spring AI、业务 API 的 MCP Server、业务助手、AI 建单
M4 审批流 BPMN 引擎 + AI 预审节点,人工兜底,决策留痕
M5 排产 LangGraph 排产 Agent + 甘特图
M6 多端 小程序 / App / 车间平板 PWA
M7 可视化 报表、打印、看板、3D 数字孪生
M8 收尾 RAG、AI 评估、部署与可观测、老系统迁移

系列目录

链接随发布更新。

架构与底座

  • 01 我先用 Bun 写了一版 PoC,最后主后端还是选了 Spring Boot:ERP/MES 选型复盘
  • 02 2026 年的 Spring Boot 长什么样:JDK 21 虚拟线程 + 模块化单体重建业务后端
  • 03 订单 → 工单 → 报工 → 质检 → 发货:制造业核心单据的领域建模
  • 04 多租户 + RBAC + 数据权限:企业系统权限模型一次设计到位

AI-native 核心

  • 05 AI 预审、人工兜底:给审批流加上 AI 节点
  • 06 用 Spring AI 把整个 ERP 变成 Agent 的工具箱:业务 API 的 MCP 化设计
  • 07 Spring AI 业务助手工程化:Function Calling 查单据,从能用到好用的 8 个细节
  • 08 LangGraph 智能排产 Agent:约束求解 + 大模型,谁负责什么
  • 09 工艺文件问答:制造业 RAG 的切分、检索与本体(Ontology)
  • 10 粘贴一段合同,AI 生成单据:把大模型输出关进 Schema
  • 11 AI 功能怎么上线:评估集、审计留痕与成本控制

前端体系

  • 12 企业后台设计系统:Design Token + 三态主题,让 Element Plus 跟着你的 Token 走
  • 13 元数据驱动的列表与表单:一份 Schema 生成表格、表单和校验,客户加字段不用发版
  • 14 从零手写区块式打印设计器:pt 坐标、吸附、分页与多记录
  • 15 排产甘特图从零实现:连续时间线、三级 BOM、拖拽缩放与撤销重做
  • 16 报表设计器全栈实现:从 SQL 分组聚合到拖拽看板
  • 17 一套业务,四个终端:Web、小程序、App、车间平板 PWA
  • 18 SMT 产线数字孪生:Three.js 3D 大屏的性能与内存治理

工程化与落地

  • 19 Vite 8 + Rolldown:大型后台的构建与开发体验优化
  • 20 不停机换架构:老 Java 系统到新架构的绞杀者迁移
  • 21 一个人交付整套系统:我的 AI 协作开发方法论

关于我

科班出身,学校里写的是 Java、.NET、SQL,第一批项目就是 MVC + 三层架构的前后端一体应用。工作后在制造业软件一线,前端写得最多,但后端、移动端、AI 服务都在做。

这个系列想证明一件事:懂业务、懂分层、懂数据,再加上 AI 的杠杆,一个人可以把一整套企业系统做得既快又稳。

如果你也在做企业系统,或者对某一篇特别感兴趣,欢迎在评论区告诉我,我会调整顺序。


  • 仓库:待更新(目前为私有仓库,需要代码可以私信我)
相关推荐
vipxieliang1 小时前
ValidX 在微服务架构中的验证策略
java·spring boot
❀͜͡傀儡师1 小时前
20 年沉淀,CAS 8.0 重新定义企业级 SSO:适配 JDK 25 与 Spring Boot 4.1
java·开发语言·spring boot
牧瀬クリスだ2 小时前
Spring统一功能处理
java·spring boot·spring·状态模式
dsyyyyy11012 小时前
Vue 3 Watch 监视完全指南
前端·javascript·vue.js
航飞光电市场经理2 小时前
人员定位系统“全栈自研”技术解析:从射频前端到定位引擎的架构拆解
前端·架构
瞬时出道2 小时前
AI 回答为什么能一个字一个字蹦出来?前端搞懂 SSE 这一篇就够了
vue.js
szxinmai主板定制专家2 小时前
RK3576+CODESYS+RK182X+FPGA异构架构:半导体精密设备一体化控制器方案
人工智能·fpga开发·架构·rk3576+codesys
szxinmai主板定制专家2 小时前
半导体设备控制器:RK3576+CODESYS+RK182X异构架构,实现晶圆视觉检测与运动联动闭环
人工智能·fpga开发·架构·视觉检测·边缘计算·codesys·rk3576
Dreams_l3 小时前
基于SpringBoot实现的抽奖系统(一)
java·spring boot·后端