## 📌 项目简介
本项目是一个基于 **FastAPI + Next.js** 构建的工单管理系统,支持用户提交工单、实时聊天沟通、权限控制等功能。
系统采用前后端分离架构,并集成 **JWT 身份认证 + WebSocket 实时通信**,模拟企业级客服/工单处理流程。
适用于:
- 客服系统
- IT 支持系统
- 企业内部问题反馈平台
---
## 🚀 功能亮点
- 🔐 用户注册 / 登录(JWT认证)
- 👤 权限控制(普通用户 / 管理员)
- 🎫 工单创建与管理
- 💬 实时聊天(WebSocket)
- 📜 聊天记录持久化(数据库)
- 📡 前后端分离架构
- 🎨 现代化管理后台 UI
- 🔄 多用户实时消息广播
---
## 🧱 技术栈
### 后端
- FastAPI
- SQLAlchemy
- SQLite(支持扩展 MySQL)
- JWT(身份认证)
- WebSocket(实时通信)
### 前端
- Next.js(React)
- TypeScript
- WebSocket API
- Fetch API
### 架构
- RESTful API
- 前后端分离
---
## 🏗️ 系统架构
前端(Next.js)
↓ HTTP / REST API
后端(FastAPI)
↓
数据库(SQLite)
实时通信:
前端 ⇄ WebSocket ⇄ 后端
---
## 📂 项目结构
### 后端(fastapi-demo)
fastapi-demo/ ├── main.py ├── models.py ├── schemas.py ├── database.py ├── utils.py
### 前端(ticket-web)
ticket-web/ ├── app/ ├── components/ ├── lib/request.ts
---
## ⚙️ 本地运行
### 1️⃣ 启动后端
```bash
cd fastapi-demo
pip install -r requirements.txt
uvicorn main:app --reload
2️⃣ 启动前端
cd ticket-web
npm install
npm run dev
🔐 登录说明
登录成功后返回 JWT Token:
- 用于接口鉴权(Authorization: Bearer token)
- WebSocket 连接通过 query 传递 token
ws://127.0.0.1:8000/ws/{ticket_id}?token=你的token
📸 项目示例图

screenshots/ ├── tickets.png ├── admin.png ├── chat.png
📈 项目亮点
- 使用 WebSocket 实现实时聊天(非轮询)
- 基于 JWT 的统一身份认证体系
- 支持多用户按工单隔离聊天
- 前后端完全解耦
- 具备基础权限管理能力
🔮 后续优化
- 消息未读提醒
- 工单状态流转(待处理 / 已完成)
- 文件上传(附件支持)
- Docker 部署
- 引入 Redis 提升性能
- AI 自动回复(智能客服)
👨💻 作者
lijiahao
如果这个项目对你有帮助,欢迎点个 ⭐ Star 支持一下!





