从零搭建销售生产ERP系统——大三项目实战记录(二)

从零搭建销售生产ERP系统——大三项目实战记录(二)

项目背景

软件体系结构课程的大作业:开发一套面向中小制造企业的销售生产ERP系统,涵盖4个子系统——销售订单管理、生产计划排程、物料控制、销售发货。6人团队,我主要负责后端架构和飞书机器人集成。

系统架构

┌──────────┐     ┌──────────────┐     ┌──────────┐
│  React   │────▶│ Node Express │────▶│ SQLite   │
│  前端    │     │   :3001      │     │ erp.db   │
└──────────┘     └──────────────┘     └──────────┘
                        ▲                    
┌──────────┐     ┌─────┴────────┐     
│  飞书    │────▶│ Spring Boot  │     
│  机器人  │     │   :8080      │     
└──────────┘     └──────────────┘     
       │                                  
       └──── WebSocket ────▶ DeepSeek LLM

双后端设计:Node.js Express(端口3001)负责前端API和业务逻辑;Spring Boot(端口8080)专门处理飞书机器人的WebSocket长连接和DeepSeek LLM调用。两者共用同一SQLite数据库。

核心难点

1. 飞书机器人 + LLM 意图解析

飞书机器人"期末考试"(是的,这名字是课程要求)通过WebSocket接收用户消息,转发给DeepSeek进行意图识别和函数调用。关键挑战:

  • 中文数字解析:用户说"帮我创建二十三个订单"→ LLM要准确识别"二十"=20、"三"=3
  • 单位词处理:个/件/台/套等量词的归一化
  • 上下文保持:多轮对话中记住用户之前提到的订单号、产品名

2. 订单CRUD + 评审流程

不只是简单增删改查,还要实现: - 订单评审(多级审批状态流转) - 工单自动生成 - 待办事项推送 - 日报/KPI统计

3. SQLite并发问题

双后端同时读写SQLite,偶尔出现SQLITE_BUSY。解决方案:设置busy_timeout=5000ms + WAL模式,确保写入串行化。

技术栈清单

技术
后端1 Spring Boot 2.7.18 + Java 21 + Maven
后端2 Node.js Express
前端 React
数据库 SQLite
消息 飞书机器人 WebSocket
AI DeepSeek LLM(意图解析+函数调用)

小结

双后端架构在小型项目中其实有点过度设计了,但课程要求分别展示Java和Node.js能力。真正有价值的是飞书机器人+LLM的集成实践——让自然语言直接驱动业务操作,这个方向很有意思。


大三博客系列,持续更新中...

posted @ 2026-06-28 17:07  C(5,3)  阅读(18)  评论(0)    收藏  举报