[特殊字符] Ticket System(工单管理系统)

复制代码
## 📌 项目简介


本项目是一个基于 **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

访问: http://127.0.0.1:8000


2️⃣ 启动前端

复制代码
cd ticket-web
npm install
npm run dev

访问: http://localhost:3000


🔐 登录说明

登录成功后返回 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 支持一下!

前往仓库https://github.com/jilijhao/ticket-system-backend