Files
2026-07-14 10:00:04 +08:00

190 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI Chat - 类 ChatGPT 智能对话系统
基于 **Vue 3** + **ThinkPHP 8** + **MySQL** 构建的全栈 AI 聊天应用。
## 架构说明
| 层级 | 技术 | 目录 | 端口 |
|------|------|------|------|
| 后端 API | **ThinkPHP 8** | `backend/` | 8080 |
| 会员端 | Vue 3 | `frontend/` | 5173 |
| 管理后台 | Vue 3 | `frontend-admin/` | 5174 |
```
chat/
├── backend/ # ThinkPHP 8 后端
│ ├── app/ # 控制器、模型、服务、中间件
│ ├── config/ # 配置文件
│ ├── database/ # 数据库脚本
│ ├── public/ # Web 入口
│ ├── route/ # 路由定义
│ └── uploads/ # 上传文件
├── frontend/ # Vue 会员端
├── frontend-admin/ # Vue 管理后台
└── README.md
```
## 功能特性
### 会员端
- 响应式聊天界面(PC / 手机自适应)
- Markdown、图片、视频、语音、文档、表情
- 文件上传、粘贴图片、会话留存
- 流式 AI 回复(SSE
- 注册 / 登录
### 管理后台
- 数据概览、用户管理、会话管理
- AI 模型配置(OpenAI 格式 API
- 会员等级与权限、功能开关
### 后端 (ThinkPHP 8)
- RESTful API + JWT 认证
- 会员权限、会话消息持久化
- OpenAI 格式 API 代理(流式输出)
- 文件上传管理
## 快速开始
### 1. 环境要求
- PHP >= 8.0(需启用 curl、pdo_mysql、mbstring
- MySQL 5.7+
- Node.js 18+
### 2. 数据库
默认配置(`backend/.env`):
```
DB_HOST = 127.0.0.1
DB_NAME = ai_chat
DB_USER = root
DB_PASS = root
```
初始化数据库:
```bash
cd backend
php database/install.php
```
### 3. 启动后端
```bash
cd backend
php think run -p 8080
```
生产环境将 Web 服务器指向 `backend/public` 目录。
### 4. 启动会员端
```bash
cd frontend
npm install
npm run dev
```
访问 http://localhost:5173
### 5. 启动管理后台
```bash
cd frontend-admin
npm install
npm run dev
```
访问 http://localhost:5174
### 6. 配置 AI 模型
登录管理后台,进入「AI 模型」,填入 API Key 和接口地址(支持 OpenAI 兼容 API)。
## 默认账户
| 用途 | 用户名 | 密码 |
|------|--------|------|
| 管理后台 / 会员端 | admin | admin123 |
## API 路由
所有接口前缀 `/api`,主要路由:
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/auth/register | 注册 |
| POST | /api/auth/login | 登录 |
| GET | /api/conversations | 会话列表 |
| POST | /api/chat/completions | 发送消息(SSE |
| POST | /api/upload | 上传文件 |
| GET | /api/admin/stats | 管理统计 |
完整路由见 `backend/route/app.php`
## 生产部署
### 1. 一键编译并部署静态资源
在项目根目录执行:
```bash
npm install
npm --prefix frontend install
npm --prefix frontend-admin install
npm run build
```
编译完成后:
- 会员端静态文件 → `backend/public/`
- 管理后台静态文件 → `backend/public/admin/`
访问路径(同域部署):
- 会员端:`https://你的域名/`
- 管理后台:`https://你的域名/admin/`
### 2. 后端配置
编辑 `backend/.env`
```
APP_DEBUG = false
JWT_SECRET = 请改成随机长字符串
```
Web 服务器网站根目录指向 `backend/public`Nginx 示例见 `deploy/nginx.conf.example`phpstudy 详见 `deploy/phpstudy.md`
**若登录接口返回 nginx 404**:说明 `/api` 未转发到 PHP,需配置伪静态(见 `backend/public/.htaccess` 或 nginx 的 `location ^~ /api`)。
### 3. 生产环境要求
- PHP >= 8.0curl、pdo_mysql、mbstring
- MySQL 5.7+
- `backend/uploads/` 目录可写
- Nginx/Apache 配置 SPA 路由回退(`try_files`
- `/api` 请求转发到 `backend/public/index.php`
### 4. 开发 vs 生产
| 环境 | 会员端 | 管理后台 | API |
|------|--------|----------|-----|
| 开发 | :5173 | :5174 | :8080 |
| 生产 | `/` | `/admin/` | `/api` |
开发环境仍用 `npm run dev`;生产用 `npm run build` 后由 Nginx 托管静态文件。
## 生产部署建议(安全)
1. 修改 `.env``JWT_SECRET`
2. 设置 `APP_DEBUG = false`
3. `uploads/` 目录需写权限
4. 启用 HTTPS,修改默认管理员密码
## 技术栈
- **后端**: ThinkPHP 8, ThinkORM, JWT
- **前端**: Vue 3, Vite, Pinia, Vue Router
- **数据库**: MySQL