From 01152efce6750a969173c969599a2887895f6978 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 14 Jul 2026 10:00:04 +0800 Subject: [PATCH] first commit --- README.md | 189 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ee3b8b --- /dev/null +++ b/README.md @@ -0,0 +1,189 @@ +# 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