FastGPT-Admin后台管理系统:基于Tushan的AI应用管理实践
【免费下载链接】fastgpt-adminfastgpt项目的简略后台项目地址: https://gitcode.com/gh_mirrors/fa/fastgpt-admin
在当今AI应用快速发展的时代,如何高效管理复杂的AI模型、知识库和用户数据成为开发者面临的重要挑战。FastGPT-Admin项目基于Tushan框架构建,为AI应用提供了完整的后台管理解决方案。本文将深入探讨该项目的架构设计、核心功能实现和部署实践,为开发者提供一套可复用的AI应用管理方案。
项目架构与设计原理
技术栈选型分析
FastGPT-Admin采用现代化的技术栈组合,前端基于Tushan框架构建,后端使用Express.js和MongoDB,实现了前后端分离的架构设计。
前端技术栈:
- React 18.2.0 + TypeScript 4.9.3
- Tushan 0.2.13(基于React Admin)
- Vite 4.2.1(构建工具)
后端技术栈:
- Express.js 4.18.2(Web框架)
- Mongoose 7.2.2(MongoDB ODM)
- CORS 2.8.5(跨域支持)
数据模型设计
项目定义了完整的MongoDB数据模型,涵盖用户管理、支付记录、知识库和AI模型等核心业务实体:
用户模型(User):
const userSchema = new mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, username: String, password: String, // SHA-256加密存储 balance: Number, promotion: { rate: Number, }, openaiKey: String, avatar: String, createTime: Date, });AI模型模型(Model):
const modelSchema = new mongoose.Schema({ userId: mongoose.Schema.Types.ObjectId, name: String, avatar: String, status: String, chat: { relatedKbs: [mongoose.Schema.Types.ObjectId], searchMode: String, systemPrompt: String, temperature: Number, chatModel: String }, share: { isShare: Boolean, isShareDetail: Boolean, intro: String, collection: Number }, security: { domain: [String], contextMaxLen: Number, contentMaxLen: Number, expiredTime: Number, maxLoadAmount: Number }, updateTime: Date });核心功能模块实现
用户管理模块
用户管理是系统的核心功能之一,实现了完整的CRUD操作:
用户列表查询:
app.get('/users', async (req, res) => { try { const start = parseInt(req.query._start) || 0; const end = parseInt(req.query._end) || 20; const order = req.query._order === 'DESC' ? -1 : 1; const sort = req.query._sort || '_id'; const usersRaw = await User.find() .skip(start) .limit(end - start) .sort({ [sort]: order }); const users = usersRaw.map((user) => { const obj = user.toObject(); obj.id = obj._id; delete obj._id; return obj; }); const totalCount = await User.countDocuments(); res.header('Access-Control-Expose-Headers', 'X-Total-Count'); res.header('X-Total-Count', totalCount); res.json(users); } catch (err) { console.log(`Error fetching users: ${err}`); res.status(500).json({ error: 'Error fetching users' }); } });用户创建与密码加密:
const hashPassword = (psw) => { return crypto.createHash('sha256').update(psw).digest('hex'); }; app.post('/users', async (req, res) => { try { const { username, password, balance, promotion, openaiKey = '', avatar = '/icon/human.png', } = req.body; if (!username || !password || !balance) { return res.status(400).json({ error: 'Invalid user information' }); } const existingUser = await User.findOne({ username }); if (existingUser) { return res.status(400).json({ error: 'Username already exists' }); } const hashedPassword = hashPassword(password); const user = new User({ _id: new mongoose.Types.ObjectId(), username, password: hashedPassword, balance, promotion: { rate: promotion?.rate || 0, }, openaiKey, avatar, createTime: new Date(), }); const result = await user.save(); res.json(result); } catch (err) { console.log(`Error creating user: ${err}`); res.status(500).json({ error: 'Error creating user' }); } });支付记录管理
支付记录模块实现了与用户数据的关联查询和统计功能:
app.get('/pays', async (req, res) => { try { const start = parseInt(req.query._start) || 0; const end = parseInt(req.query._end) || 20; const order = req.query._order === 'DESC' ? -1 : 1; const sort = req.query._sort || '_id'; const paysRaw = await Pay.find() .skip(start) .limit(end - start) .sort({ [sort]: order }); const usersMap = new Map(); const pays = []; for (const payRaw of paysRaw) { const pay = payRaw.toObject(); if (!usersMap.has(pay.userId.toString())) { const user = await User.findById(pay.userId); usersMap.set(pay.userId.toString(), user.username); } const orderedPay = { id: pay._id.toString(), name: usersMap.get(pay.userId.toString()), price: pay.price, orderId: pay.orderId, status: pay.status, createTime: pay.createTime }; pays.push(orderedPay); } const totalCount = await Pay.countDocuments(); res.header('Access-Control-Expose-Headers', 'X-Total-Count'); res.header('X-Total-Count', totalCount); res.json(pays); } catch (err) { console.log(`Error fetching pays: ${err}`); res.status(500).json({ error: 'Error fetching pays', details: err.message }); } });知识库管理
知识库模块支持多标签管理和用户关联:
const kbSchema = new mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, userId: mongoose.Schema.Types.ObjectId, avatar: String, name: String, tags: [String], updateTime: Date, __v: Number, });前端界面设计与实现
Tushan框架配置
前端使用Tushan框架构建管理界面,配置了完整的数据提供者和资源路由:
import { createTextField, jsonServerProvider, ListTable, Resource, Tushan, } from 'tushan'; import { userFields, payFields, kbFields, ModelFields } from './fields'; import { Dashboard } from './Dashboard'; const dataProvider = jsonServerProvider('http://localhost:3001'); function App() { return ( <Tushan basename="/" header={'FastAI后台管理系统'} footer={'Build with stakeswky'} dataProvider={dataProvider} dashboard={<Dashboard />} > <Resource name="users" label="用户信息" list={ <ListTable filter={[ createTextField('q', { label: 'Search', }), ]} fields={userFields} action={{ create: true, detail: true, edit: true, delete: true }} /> } /> </Tushan> ); }字段定义与展示
系统定义了丰富的字段类型,支持灵活的数据展示:
export const userFields = [ createTextField('id', { label: 'ID' }), createTextField('username', { label: '用户名', list: { sort: true } }), createTextField('password', { label: '密码(加密)' }), createNumberField('balance', { label: '余额' }), createTextField('openaiKey', { label: 'OpenAI Key' }), createTextField('createTime', { label: 'Create Time' }), createAvatarField('avatar', { label: 'Avatar' }), ];部署与运行指南
环境准备
系统要求:
- Node.js 16.0+
- MongoDB 4.4+
- 现代浏览器支持
安装与配置
- 克隆项目:
git clone https://gitcode.com/gh_mirrors/fa/fastgpt-admin- 安装依赖:
pnpm install- 数据库配置: 在
server.js文件中配置MongoDB连接地址:
const mongoURI = 'mongodb://localhost:27017/fastgpt';- 启动服务:
pnpm dev默认登录信息
系统启动后,使用以下默认账号密码登录:
- 用户名:tushan
- 密码:tushan
性能优化实践
数据库查询优化
分页查询优化:
const usersRaw = await User.find() .skip(start) .limit(end - start) .sort({ [sort]: order });关联查询缓存:
const usersMap = new Map(); // 缓存用户信息,避免重复查询安全防护措施
密码加密存储:
const hashPassword = (psw) => { return crypto.createHash('sha256').update(psw).digest('hex'); };扩展功能规划
未来发展方向
Token充值功能:
- 支持在线支付
- 余额管理
- 消费记录
高级功能扩展:
- 数据统计分析
- 系统监控
- 权限管理
技术演进路线
短期目标:
- 完善现有功能模块
- 优化用户体验
- 增强系统稳定性
长期规划:
- 微服务架构改造
- 容器化部署
- 多云环境支持
总结与最佳实践
FastGPT-Admin项目展示了如何基于Tushan框架快速构建功能完善的AI应用后台管理系统。通过模块化的设计、清晰的架构和完整的CRUD操作实现,为开发者提供了一个高质量的技术参考。
核心价值:
- 完整的用户管理体系
- 灵活的字段配置机制
- 可扩展的架构设计
- 安全的数据处理流程
该项目不仅解决了AI应用管理的基本需求,更为后续功能扩展奠定了坚实的基础,是AI应用开发领域一个优秀的实践案例。
【免费下载链接】fastgpt-adminfastgpt项目的简略后台项目地址: https://gitcode.com/gh_mirrors/fa/fastgpt-admin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考