ARTICLE · 1097260
一个带业务 AI 助手的生鲜供应链管理系统
前言
生鲜供应链的管理端,很多团队的做法是先上一套通用 Admin 模板,再把订单、采购、库存这些模块一个个往上堆。堆到后来,页面越来越多,权限越来越乱,AI 助手想接进来却发现根本没有合适的位置。
本项目就把生鲜供应链的业务闭环和 AI 助手放在同一个架构里设计,而不是事后补一个聊天窗口。
项目介绍
一个基于 React 19 的企业级中后台。它把订单、采购、库存、配送、财务、溯源串成一条可协作的供应链,并内置了 DeepSeek 业务 AI 助手。
项目基于 Soybean Admin 的 React 实现演进而来,当前版本 v2.5.0,采用 pnpm monorepo 管理。定位不是一套漂亮的 Admin 模板,而是能直接问业务、查单据、看履约、在确认后提议创建销售订单的工作台。
业务功能
经营驾驶舱:整体经营情况总览
订单管理:销售订单与履约跟踪
采购管理:采购计划与采购单
库存管理:出入库与批次管理
配送管理:配送任务与状态跟踪
财务管理:应收应付
溯源管理:商品溯源信息
报表统计:经营数据报表
AI 助手
有 ai:assistant:use 权限的用户,会在顶栏看到青绿胶囊“AI 助手”,右下角同时有一颗会呼吸的悬浮按钮。点开后是完整会话工作台,不是一个玩具聊天框。
能做什么
用自然语言问经营、订单、采购、库存、配送、财务或售后。助手会按当前账号权限选择工具,而不是把整库暴露给模型。
只读业务查询:全权限共 26 个工具,覆盖经营概览、商品与客户搜索、销售订单与履约、采购计划与采购单、出入库与批次、配送、应收应付、售后等
受控写操作:持有 business:order:create 时增加 propose_create_sale_order,工具只挂起确认卡片,点“确认创建”才写入待审核销售订单
建议下一步:查询成功后给出最多 3 个白名单按钮,打开已有列表页并带上 keyword、customerId、goodsId 或 saleOrderId
通用问答:写作、翻译、编程等走模型自身知识,不联网搜索
安全边界
不审批、不付款、不删除、不直接改库
确认卡片不含电话、地址、内部备注
单价只取客户报价或协议价
运营页只看运行次数、状态、耗时、Token、工具调用和反馈,不展示问题或答案
交互与协议
前端基于 Ant Design X(@ant-design/x-sdk 加 @ant-design/x-markdown)和 Zod 解析 SSE 事件:
流式 Markdown:边生成边渲染,支持加粗、列表、表格
结构化块:业务表格、实体卡片、数据来源、建议下一步、销售订单确认卡片
工具状态:查询中、已完成、失败,过程对用户可见
会话体验:搜索、分页、置顶、重命名、删除
反馈:对助手消息赞或踩,运营侧只聚合统计
配额方面,单用户单并发、滚动一分钟 5 次、自然日 50 次。管理员角色跳过次数配额,仍受并发与幂等约束。标准 MCP 端点 /mcp 目前只暴露只读的 get_current_time,不把业务查询或写操作挂上去。
技术栈
项目特点
代码质量:严格 TypeScript、分层清晰、约定式路由
业务组件:远程搜索下拉、分区卡片详情、数量 6 位与金额 4 位精度
权限:JWT 加
module:resource:action,菜单由后端动态下发国际化:中英文切换,Antd 与 Dayjs 同步
响应式:桌面驾驶舱与移动登录都按真机适配
Keep-Alive:多标签页缓存,关闭签后回列表
AI 原生:助手入口、消息协议、运营页都是一等公民
快速开始
Node.js 大于等于 18.12.0,推荐 18.19+
pnpm 大于等于 10.4.1
本地联调 AI 与业务数据时,还需要仓库根目录的 .NET 9 后端(默认
http://localhost:5293)
git clone https://github.com/960602906/SkyrocAdmin.gitcd SkyrocAdminpnpm i本仓库是 pnpm monorepo,不要用 npm 或 yarn 安装依赖。
pnpm dev开发服务器在 http://localhost:9530。pnpm dev 使用 test 模式,接口默认代理到 http://localhost:5293/api。
其他常用命令:
pnpm build # 生产构建pnpm build:test# 测试环境构建pnpm typecheck # TypeScriptpnpm lint # ESLint + Prettierpnpm commit # Conventional Commitspnpm preview # 预览构建产物(9725)项目结构
skyroc-admin/├── build/ # Vite 代理、插件、路由元数据├── packages/ # @sa/* 子包├── src/│ ├── components/ # 全局组件(含 RemoteOptionSelect)│ ├── features/ # 领域模块│ │ ├── ai-assistant/ # AI 抽屉、会话、消息协议、确认卡片│ │ ├── auth/ # 登录态│ │ ├── theme/ # 主题│ │ └── ...│ ├── layouts/ # 顶栏 / 菜单 / 页签(AI 入口在顶栏)│ ├── pages/ # 约定式路由│ │ ├── (base)/ # 主布局:驾驶舱、订单、库存、AI 运营…│ │ └── (blank)/ # 登录等│ ├── service/ # API 分层(types / urls / api / hooks / schemas)│ ├── store/ # Redux│ └── locales/ # 中英文案└── public/readme-screenshots/ # README 截图数据层约定
分页 CRUD 列表用 features/table 的 useTable 与 useTableOperate。非分页缓存(登录信息、路由、下拉选项、AI 运营概览)走 TanStack Query,key 必须来自 QUERY_KEYS。
// src/service/urls 集中管理路径exportconst AUTH_URLS = { LOGIN: '/auth/login', GET_USER_INFO: '/auth/getUserInfo'} asconst;// 组件里只消费 hooks,不直接拼 URLimport { useLogin, useUserInfo } from'@/service/hooks';增长型主数据(客户、商品、供应商、订单)用 RemoteOptionSelect 远程搜索,禁止一次性拉全量当 Select。
项目效果



AI助手


总结
在生鲜供应链这个具体场景里,把业务闭环和 AI 助手一起做了出来。26 个只读工具按权限裁剪、写操作走人工确认、运营页只看指标不看内容,这几处设计说明它在 AI 集成上是认真考虑过边界问题的。
技术选型上紧跟 React 19、Vite 6、Ant Design X 这些较新的版本,monorepo 分包也做得比较规整。对于正在做中后台或者想把 AI 接进业务系统的团队,这个项目有一些可以直接参考的做法。
关键词
#鲜链智管、#生鲜供应链、React 19、Vite 6、Ant Design、#AI 助手、DeepSeek、SSE、MCP、TanStack Query、Redux Toolkit、#TypeScript、Zod、pnpm monorepo、#权限管理、约定式路由、Keep-Alive、中后台、#供应链管理
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!
别再重写后台登录和权限了,这套 React 脚手架已经做好了
Vue 3 写的项目管理软件,免费、可私有化部署(需求/任务/测试/缺陷/资源/财务)
智能客服系统(多租户 SaaS 版):开箱即用的 AI + 人工接管方案


方便大家交流、资源共享和共同成长
纯技术交流群、需要的小伙伴请扫码
有收获?不妨分享让更多人受益
关注「程序员开源栈」,共同提升技术实力



