# 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.0(curl、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