Files
ai_wht_B/API接口文档.md
“shengyudong” 5a384b694e 2026-1-6
2026-01-06 14:18:39 +08:00

1384 lines
21 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文章生成管理平台 API接口文档
## 接口概述
- **Base URL**: `http://127.0.0.1:8216`
- **搜索服务**: `http://127.0.0.1:8321`
- **数据格式**: JSON
- **字符编码**: UTF-8
- **认证方式**: JWT Token (Bearer)
---
## 统一响应格式
### 成功响应
```json
{
"code": 200,
"message": "success",
"data": {}
}
```
### 错误响应
```json
{
"code": 400,
"message": "错误信息",
"data": null
}
```
### 状态码说明
| 状态码 | 说明 |
|--------|------|
| 200 | 请求成功 |
| 400 | 请求参数错误 |
| 401 | 未授权,需要登录 |
| 403 | 权限不足 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
---
## 一、基础接口
### 1.1 根路径
**接口**: `GET /`
**认证**: 无需认证
**响应数据**:
```json
{
"code": 200,
"message": "万花筒API服务正常运行",
"data": {
"version": "1.0",
"service": "wht_api"
}
}
```
---
### 1.2 健康检查
**接口**: `GET /health`
**认证**: 无需认证
**响应数据**:
```json
{
"code": 200,
"message": "服务正常",
"data": {
"status": "healthy",
"timestamp": 1704267825000,
"version": "2.0"
}
}
```
---
## 二、认证接口
### 2.1 统一登录
**接口**: `POST /api/auth/login`
**认证**: 无需认证
**支持方式**: 用户名登录、手机号登录
**请求参数(用户名方式)**:
```json
{
"username": "13621242430",
"password": "admin123"
}
```
**请求参数(手机号方式)**:
```json
{
"phone": "13621242430",
"password": "admin123"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "13621242430",
"enterprise_id": 1
}
}
}
```
---
### 2.2 员工登录
**接口**: `POST /api/auth/employee/login`
**认证**: 无需认证
**请求参数**:
```json
{
"phone": "13800138001",
"password": "123456"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"employee": {
"id": 1,
"name": "张三",
"phone": "13800138001",
"enterprise_id": 1
}
}
}
```
---
### 2.3 用户登出
**接口**: `POST /api/auth/logout`
**认证**: 可选建议携带token
**请求头**:
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
**响应数据**:
```json
{
"code": 200,
"message": "登出成功",
"data": null
}
```
---
## 三、工作台接口
### 3.1 工作台概览
**接口**: `GET /api/dashboard/overview`
**认证**: 需要token
**请求头**:
```
Authorization: Bearer {token}
```
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total_articles": 1250,
"published_today": 45,
"total_authors": 128,
"active_products": 23
}
}
```
---
### 3.2 最近发布
**接口**: `GET /api/dashboard/recent-publishes`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| limit | int | 否 | 返回条数默认10 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"title": "冬季护肤小技巧",
"author_name": "张医生",
"product_name": "保湿面霜",
"published_at": "2024-12-29 15:30:00"
}
]
}
}
```
---
### 3.3 热门产品
**接口**: `GET /api/dashboard/hot-products`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| limit | int | 否 | 返回条数默认5 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"product_name": "保湿面霜",
"publish_count": 156,
"image_url": "https://oss.example.com/product1.jpg"
}
]
}
}
```
---
## 四、企业管理接口
### 4.1 获取企业列表
**接口**: `GET /api/enterprises/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码默认1 |
| pageSize | int | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词 |
| status | string | 否 | 状态筛选 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 50,
"list": [
{
"id": 1,
"name": "示例医疗集团",
"short_name": "示例医疗",
"phone": "13800138000",
"email": "admin@example.com",
"status": "active",
"created_at": "2024-01-15 10:00:00"
}
]
}
}
```
---
### 4.2 企业统计
**接口**: `GET /api/enterprises/stats`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total_count": 50,
"active_count": 45,
"disabled_count": 5
}
}
```
---
### 4.3 获取企业信息
**接口**: `GET /api/enterprises/info`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"name": "示例医疗集团",
"short_name": "示例医疗",
"phone": "13800138000",
"email": "admin@example.com",
"created_at": "2024-01-15 10:00:00"
}
}
```
---
### 4.4 更新企业信息
**接口**: `PUT /api/enterprises/info`
**认证**: 需要token
**请求参数**:
```json
{
"short_name": "新名称",
"email": "new@example.com"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "更新成功",
"data": null
}
```
---
### 4.5 修改密码
**接口**: `PUT /api/enterprises/change-password`
**认证**: 需要token
**请求参数**:
```json
{
"old_password": "123456",
"new_password": "654321"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "密码修改成功",
"data": null
}
```
---
## 五、图片管理接口
### 5.1 图片列表
**接口**: `GET /api/images/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 100,
"list": [
{
"id": 1,
"image_name": "产品展示图",
"image_url": "https://oss.example.com/image1.jpg",
"image_type_name": "产品图",
"width": 1920,
"height": 1080,
"file_size": 524288,
"created_at": "2024-12-29 10:00:00"
}
]
}
}
```
---
### 5.2 图片仪表盘
**接口**: `GET /api/images/list_dashboard`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total_images": 1250,
"total_types": 8,
"total_tags": 45,
"recent_uploads": 23
}
}
```
---
### 5.3 上传图片
**接口**: `POST /api/images/upload`
**认证**: 需要token
**请求参数**: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| image | file | 是 | 图片文件 |
| image_name | string | 是 | 图片名称 |
| image_type_name | string | 否 | 图片类型 |
| tag_keywords | string | 否 | 标签,逗号分隔 |
**响应数据**:
```json
{
"code": 200,
"message": "上传成功",
"data": {
"id": 1,
"image_url": "https://oss.example.com/image1.jpg",
"thumbnail_url": "https://oss.example.com/thumb1.jpg"
}
}
```
---
### 5.4 删除图片
**接口**: `DELETE /api/images/:id`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
---
### 5.5 标签名称列表
**接口**: `GET /api/images/tags/names/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 50,
"list": [
{
"id": 1,
"tag_name": "美白",
"description": "美白相关标签",
"usage_count": 156
}
]
}
}
```
---
### 5.6 创建标签名称
**接口**: `POST /api/images/tags/names/create`
**认证**: 需要token
**请求参数**:
```json
{
"tag_name": "美白",
"description": "美白相关标签"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "创建成功",
"data": {
"id": 1
}
}
```
---
### 5.7 更新标签名称
**接口**: `PUT /api/images/tags/names/:id`
**认证**: 需要token
**请求参数**:
```json
{
"tag_name": "美白淡斑",
"description": "美白淡斑相关"
}
```
---
### 5.8 删除标签名称
**接口**: `DELETE /api/images/tags/names/:id`
**认证**: 需要token
---
### 5.9 标签关系列表
**接口**: `GET /api/images/tags/relations/list`
**认证**: 需要token
**说明**: 查询图片与标签的关联关系
---
### 5.10 图片类型列表
**接口**: `GET /api/images/types/list`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"type_name": "产品图",
"description": "产品展示图片",
"image_count": 156
}
]
}
}
```
---
### 5.11 创建类型
**接口**: `POST /api/images/types/create`
**认证**: 需要token
**请求参数**:
```json
{
"type_name": "产品图",
"description": "产品展示图片"
}
```
---
### 5.12 更新类型
**接口**: `PUT /api/images/types/:id`
**认证**: 需要token
---
### 5.13 删除类型
**接口**: `DELETE /api/images/types/:id`
**认证**: 需要token
---
### 5.14 标签列表
**接口**: `GET /api/images/tags/list`
**认证**: 需要token
**说明**: 获取图片标签列表(图片-标签关联)
---
### 5.15 创建标签
**接口**: `POST /api/images/tags/create`
**认证**: 需要token
**说明**: 为图片添加标签
---
### 5.16 删除标签
**接口**: `DELETE /api/images/tags/:id`
**认证**: 需要token
**说明**: 删除图片标签关联
---
## 六、日志管理接口
### 6.1 获取操作日志
**接口**: `GET /api/log/logs`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
| action | string | 否 | 操作类型 |
| status | string | 否 | 状态success/error |
| start_date | string | 否 | 开始日期 |
| end_date | string | 否 | 结束日期 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 1000,
"list": [
{
"id": 1,
"user_id": 1,
"action": "create_article",
"description": "创建文章:冬季护肤小技巧",
"status": "success",
"created_at": "2024-12-29 14:30:00"
}
]
}
}
```
---
### 6.2 日志文件列表
**接口**: `GET /api/log/logs/files`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"files": [
{
"filename": "article_server.log",
"size": 1024000,
"modified_at": "2024-12-29 15:00:00"
}
]
}
}
```
---
### 6.3 文件日志内容
**接口**: `GET /api/log/logs/file`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| filename | string | 是 | 文件名 |
| lines | int | 否 | 读取行数默认100 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"content": "[2024-12-29 15:00:00] INFO: 服务启动\n..."
}
}
```
---
## 七、文章管理接口
### 7.1 文章列表
**接口**: `GET /api/articles/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
| status | string | 否 | 状态筛选 |
| keyword | string | 否 | 搜索关键词 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 500,
"list": [
{
"id": 1,
"title": "冬季护肤小技巧",
"topic": "护肤",
"content": "文章内容...",
"author_name": "张医生",
"status": "published",
"created_at": "2024-12-29 10:00:00"
}
]
}
}
```
---
### 7.2 文章仪表盘
**接口**: `GET /api/articles/list_dashboard`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total_articles": 1250,
"published_count": 856,
"draft_count": 394,
"today_generated": 23
}
}
```
---
### 7.3 生成文章
**接口**: `POST /api/articles/generate`
**认证**: 需要token
**请求参数**:
```json
{
"topic": "冬季护肤",
"author_id": 1,
"product_id": 5,
"template_id": 2
}
```
**响应数据**:
```json
{
"code": 200,
"message": "生成成功",
"data": {
"id": 1,
"title": "冬季护肤小技巧",
"content": "..."
}
}
```
---
### 7.4 文章详情
**接口**: `GET /api/articles/:id`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"title": "冬季护肤小技巧",
"topic": "护肤",
"content": "详细内容...",
"author_id": 1,
"author_name": "张医生",
"status": "published",
"created_at": "2024-12-29 10:00:00"
}
}
```
---
### 7.5 更新文章
**接口**: `PUT /api/articles/:id`
**认证**: 需要token
**请求参数**:
```json
{
"title": "新标题",
"content": "新内容",
"status": "published"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "更新成功",
"data": null
}
```
---
### 7.6 批量发布(账号循环)
**接口**: `POST /api/articles/batch-published-account-cycle`
**认证**: 需要token
**请求参数**:
```json
{
"article_ids": [1, 2, 3, 4, 5],
"cycle_mode": "round_robin"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "批量发布成功",
"data": {
"success_count": 5,
"failed_count": 0
}
}
```
---
### 7.7 批量发布(指定作者)
**接口**: `POST /api/articles/batch-published-review`
**认证**: 需要token
**请求参数**:
```json
{
"article_ids": [1, 2, 3],
"author_id": 5
}
```
**响应数据**:
```json
{
"code": 200,
"message": "批量发布成功",
"data": {
"success_count": 3,
"failed_count": 0
}
}
```
---
## 八、员工管理接口
### 8.1 员工列表
**接口**: `GET /api/employees/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
| keyword | string | 否 | 搜索关键词 |
| status | string | 否 | 状态筛选 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 50,
"list": [
{
"id": 1,
"name": "张三",
"phone": "13800138001",
"role": "员工",
"status": "active",
"created_at": "2024-01-15 10:00:00"
}
]
}
}
```
---
### 8.2 员工统计
**接口**: `GET /api/employees/stats`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total_count": 50,
"active_count": 45,
"inactive_count": 5
}
}
```
---
### 8.3 添加员工
**接口**: `POST /api/employees/add`
**认证**: 需要token
**请求参数**:
```json
{
"name": "张三",
"phone": "13800138001",
"password": "123456",
"role": "员工"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "添加成功",
"data": {
"id": 1
}
}
```
---
### 8.4 删除员工
**接口**: `DELETE /api/employees/:id`
**认证**: 需要token
**说明**: 软删除,仅删除登录权限,保留发布记录
**响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
---
## 九、作者管理接口
### 9.1 作者列表(按科室分组)
**接口**: `GET /api/authors`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"departments": [
{
"department_name": "皮肤科",
"authors": [
{
"id": 1,
"author_name": "张医生",
"title": "主治医师",
"department": "皮肤科"
}
]
}
]
}
}
```
---
### 9.2 创建作者
**接口**: `POST /api/authors`
**认证**: 需要token
**请求参数**:
```json
{
"author_name": "张医生",
"title": "主治医师",
"department": "皮肤科",
"bio": "专注皮肤护理20年"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "创建成功",
"data": {
"id": 1
}
}
```
---
### 9.3 更新作者
**接口**: `PUT /api/authors/:id`
**认证**: 需要token
**请求参数**:
```json
{
"author_name": "张医生",
"title": "副主任医师",
"department": "皮肤科"
}
```
**响应数据**:
```json
{
"code": 200,
"message": "更新成功",
"data": null
}
```
---
### 9.4 删除作者
**接口**: `DELETE /api/authors/:id`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
---
### 9.5 作者列表(用户关联)
**接口**: `GET /api/authors/list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| user_id | int | 否 | 用户ID |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"author_name": "张医生",
"department": "皮肤科"
}
]
}
}
```
---
### 9.6 作者详细列表
**接口**: `GET /api/authors/detail_list`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码 |
| pageSize | int | 否 | 每页数量 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 128,
"list": [
{
"id": 1,
"author_name": "张医生",
"title": "主治医师",
"department": "皮肤科",
"bio": "专注皮肤护理20年",
"article_count": 45,
"created_at": "2024-01-15 10:00:00"
}
]
}
}
```
---
### 9.7 科室列表
**接口**: `GET /api/authors/departments`
**认证**: 需要token
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"departments": [
{
"department_name": "皮肤科",
"author_count": 12
},
{
"department_name": "内科",
"author_count": 15
}
]
}
}
```
---
### 9.8 搜索作者
**接口**: `GET /api/authors/search`
**认证**: 需要token
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| keyword | string | 是 | 搜索关键词 |
**响应数据**:
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"author_name": "张医生",
"title": "主治医师",
"department": "皮肤科"
}
]
}
}
```
---
## 附录
### A. 请求头说明
所有需要认证的接口都需要携带以下请求头:
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
```
### B. 分页参数说明
所有列表接口都支持以下分页参数:
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| page | int | 1 | 页码 |
| pageSize | int | 20 | 每页数量最大100 |
### C. 错误码说明
| 错误码 | 说明 | 处理建议 |
|--------|------|----------|
| 1001 | 用户名/手机号已存在 | 使用其他账号 |
| 1002 | 密码错误 | 检查密码 |
| 1003 | Token过期 | 重新登录 |
| 1004 | 权限不足 | 检查用户角色 |
| 1005 | 资源不存在 | 检查资源ID |
| 1006 | 参数错误 | 检查请求参数 |
### D. 业务规则说明
1. **文章生成规则**
- 支持AI自动生成文章
- 可指定作者、产品、模板
- 生成后状态为topic需人工审核
2. **批量发布规则**
- 支持账号循环模式
- 支持指定作者模式
- 发布后状态变为published
3. **权限管理规则**
- 不同企业之间的数据完全隔离
- 员工只能看到所属企业的数据
- 管理员可以管理所有数据
4. **图片管理规则**
- 支持OSS存储
- 自动生成缩略图
- 支持标签和类型管理
5. **日志记录规则**
- 所有关键操作必须记录日志
- 支持按多维度查询日志
- 日志文件每日自动切割
6. **作者管理规则**
- 支持按科室分组
- 记录作者的文章数量
- 支持模糊搜索
---
### E. 数据库表结构对应
本接口文档对应的数据库表结构:
| 模块 | 核心表 |
|------|------|
| 企业管理 | ai_enterprises |
| 员工管理 | ai_employees |
| 图片管理 | ai_images, ai_image_tags, ai_image_tag_names, ai_image_types |
| 文章管理 | ai_articles |
| 作者管理 | ai_authors |
| 系统管理 | ai_logs, ai_users |
**总计**: 10+张数据库表
---
### F. 接口数量统计
| 模块 | 接口数量 |
|------|----------|
| 基础接口 | 2个 |
| 认证接口 | 3个 |
| 工作台接口 | 3个 |
| 企业管理 | 5个 |
| 图片管理 | 16个 |
| 日志管理 | 3个 |
| 文章管理 | 7个 |
| 员工管理 | 4个 |
| 作者管理 | 8个 |
| **总计** | **51个接口** |
---
**文档版本**: v2.0
**最后更新**: 2025-12-29
**维护团队**: AI文章生成平台开发团队