diff --git a/API文档.md b/API文档.md
index a831d07..a395355 100644
--- a/API文档.md
+++ b/API文档.md
@@ -1,461 +1,853 @@
-### ✅ **一、普通用户接口**
+# Sycamore_whisper API 文档
-#### 1. 提交文章
-- **URL**: `POST /post`
-- **请求参数(JSON)**:
- ```json
- { "content": "你的文章内容" }
- ```
-- **返回**:
-
- ```json
- { "id": 123, "status": "Pass" } // 或 "Pending"(若需审核)
- ```
-- **说明**:内容含违禁词则拒绝(403),空内容则报错(400)
+**
----
+## 一、基础信息
-#### 2. 点赞文章
-- **URL**: `POST /up`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+| 项目 | 内容 |
+| ---------- | ------------------------------------------------------------ |
+| 响应格式 | 所有 API 响应均为 JSON 格式(除非特殊说明) |
+| 成功状态码 | 通常为 200(请求成功)或 201(资源创建成功) |
+| 权限说明 | 管理接口需在请求头中携带 Authorization: Bearer {ADMIN_TOKEN} 进行身份验证 |
----
+## 二、通用说明
-#### 3. 反对文章(踩)
-- **URL**: `POST /down`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+1. 错误响应均会附带明确错误信息,帮助定位问题;
----
+2. 图片上传大小限制为 10MB,支持常见图片格式(png, jpg, jpeg, gif, webp);
+3. 分页接口默认按 “ID 降序” 排列数据,未指定页码时默认返回第 1 页;
+4. 涉及 “帖子 ID”“评论 ID”“举报 ID” 的接口,若 ID 不存在则返回 404 错误。
-#### 4. 发布评论
-- **URL**: `POST /comment`
-- **请求参数(JSON)**:
- ```json
+## 三、公共接口(无需管理员权限)
+
+### 3.1 提交帖子
+
+- **URL**: /post
+
+- **请求方法**: POST
+
+- **功能描述**: 提交新帖子内容,是否需要审核取决于当前系统审核模式
+
+- **请求体(JSON)**:
+
+```
+{
+ "content": "帖子内容"
+}
+```
+
+- **成功响应(201 Created)**:
+
+```
+{
+ "id": 1, // 新创建帖子的ID
+ "status": "Pending" // 状态:Pending(待审核)/ Pass(直接通过,无需审核)
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:帖子内容为空
+
+- - 403 Forbidden:内容包含违规关键词
+
+### 3.2 帖子点赞 / 点踩
+
+#### 3.2.1 帖子点赞
+
+- **URL**: /up
+
+- **请求方法**: POST
+
+- **功能描述**: 给指定 ID 的帖子点赞
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 帖子ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:缺少帖子 ID
+
+- - 404 Not Found:帖子不存在
+
+#### 3.2.2 帖子点踩
+
+- **URL**: /down
+
+- **请求方法**: POST
+
+- **请求体、成功响应、错误响应**:与 “帖子点赞” 接口完全一致
+
+### 3.3 发布评论
+
+- **URL**: /comment
+
+- **请求方法**: POST
+
+- **功能描述**: 给帖子添加顶级评论,或回复已有评论
+
+- **请求体(JSON)**:
+
+```
+{
+ "content": "评论内容",
+ "submission_id": 1, // 关联的帖子ID
+ "parent_comment_id": 0, // 父评论ID:0=顶级评论,非0=回复指定评论
+ "nickname": "匿名用户" // 用户名
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "id": 1, // 新创建评论的ID
+ "status": "Pass"
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:缺少 content/submission_id/parent_comment_id,或 parent_comment_id 指向不存在的评论
+
+- - 403 Forbidden:评论内容包含违规关键词
+
+- - 404 Not Found:关联的帖子不存在
+
+### 3.4 图片上传与访问
+
+#### 3.4.1 上传图片
+
+- **URL**: /upload_pic
+
+- **请求方法**: POST
+
+- **请求体格式**: multipart/form-data,需包含名为file的图片文件
+
+- **功能描述**: 上传图片至服务器,返回图片访问 URL
+
+- **成功响应(201 Created)**:
+
+```
+{
+ "status": "OK",
+ "url": "/img/230615_abcd1.png" // 图片访问URL
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:未上传文件、文件格式不支持(非图片)、文件大小超过 10MB
+
+#### 3.4.2 访问图片
+
+- **URL**: /img/{filename} ({filename} 替换为图片文件名,如 230615_abcd1.png)
+
+- **请求方法**: GET
+
+- **功能描述**: 通过文件名直接访问图片
+
+- **成功响应(200 OK)**: 返回图片文件(如 PNG/JPG 格式)
+
+- **错误响应**: 403 Forbidden:访问的文件格式不允许(非图片文件)
+
+### 3.5 举报与状态查询
+
+#### 3.5.1 提交举报
+
+- **URL**: /report
+
+- **请求方法**: POST
+
+- **功能描述**: 举报违规帖子,需提供举报标题和具体理由
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1, // 被举报帖子的ID(必填)
+ "title": "举报标题(必填,如“帖子包含广告”)",
+ "content": "举报内容(必填,详细说明违规点)"
+}
+```
+
+- **成功响应(201 Created)**:
+
+```
+{
+ "id": 1, // 举报记录的ID
+ "status": "OK"
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:缺少 id/title/content
+
+- - 404 Not Found:被举报的帖子不存在
+
+#### 3.5.2 获取帖子状态
+
+- **URL**: /get/post_state
+
+- **请求方法**: GET
+
+- **请求参数(Query)**: id=1(帖子 ID,必填)
+
+- **功能描述**: 查询指定帖子的审核状态
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "Approved" | "Rejected" | "Pending" | "Deleted or Not Found"
+ // Approved=已通过,Rejected=已拒绝,Pending=待审核,Deleted or Not Found=已删除或不存在
+}
+```
+
+- **错误响应**: 400 Bad Request:缺少帖子 ID
+
+#### 3.5.3 获取举报状态
+
+- **URL**: /get/report_state
+
+- **请求方法**: GET
+
+- **请求参数(Query)**: id=1(举报 ID,必填)
+
+- **功能描述**: 查询指定举报的处理状态
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "Approved" | "Rejected" | "Pending" | "Deleted or Not Found"
+ // Approved=举报通过(帖子已处理),Rejected=举报驳回,Pending=待处理,Deleted or Not Found=举报记录已删除或不存在
+}
+```
+
+- **错误响应**: 400 Bad Request:缺少举报 ID
+
+### 3.6 帖子详情与列表
+
+#### 3.6.1 获取帖子详情
+
+- **URL**: /get/post_info
+
+- **请求方法**: GET
+
+- **请求参数(Query)**: id=1(帖子 ID,必填)
+
+- **功能描述**: 查询已通过审核的帖子详情(含点赞 / 点踩数)
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "id": 1,
+ "content": "帖子内容",
+ "upvotes": 10, // 点赞数
+ "downvotes": 2 // 点踩数
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:缺少帖子 ID
+
+- - 404 Not Found:帖子不存在或未通过审核
+
+#### 3.6.2 获取帖子评论
+
+- **URL**: /get/comment
+
+- **请求方法**: GET
+
+- **请求参数(Query)**: id=1(帖子 ID,必填)
+
+- **功能描述**: 查询指定帖子的所有评论
+
+- **成功响应(200 OK)**:
+
+```
+[
{
+ "id": 1,
+ "nickname": "用户名",
"content": "评论内容",
- "submission_id": 123,
- "parent_comment_id": 0, // 回复父评论时填 ID
- "nickname": "昵称" // 可为空,自动为“匿名用户”
+ "parent_comment_id": 0 // 0=顶级评论,非0=回复评论
}
- ```
-- **返回**:
- ```json
- { "id": 456, "status": "Pass" }
- ```
-- **说明**:违禁词拒绝(403),无效文章或父评论 ID 返回对应错误码
+]
+```
----
+- **错误响应**:
-#### 5. 上传图片
-- **URL**: `POST /upload_pic`
-- **请求参数**:
- - 表单字段:`file`(文件),支持 `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`
-- **返回**:
- ```json
- { "status": "OK", "url": "/img/240510_aBc12.png" }
- ```
-- **限制**:文件大小 ≤10MB,格式正确
+- - 400 Bad Request:缺少帖子 ID
----
+- - 404 Not Found:帖子不存在或未通过审核
-#### 6. 获取文章状态(是否通过审核)
-- **URL**: `GET /get/post_state`
-- **参数(query)**:
- - `id=123`
-- **返回**:
- ```json
- { "status": "Approved" } // 通过
- { "status": "Pending" } // 待审核
- { "status": "Rejected" } // 拒绝
- { "status": "Deleted or Not Found" } // 不存在
- ```
+#### 3.6.3 分页获取帖子列表
----
+- **URL**: /get/10_info
-#### 7. 获取投诉状态
-- **URL**: `GET /get/report_state`
-- **参数(query)**:
- - `id=789`
-- **返回**:
- ```json
- { "status": "Approved" } // 已通过
- { "status": "Pending" } // 待处理
- { "status": "Rejected" } // 已拒绝
- ```
+- **请求方法**: GET
----
+- **请求参数(Query)**: page=1(页码,可选,默认 1)
-#### 8. 获取公开文章详情(仅通过审核的)
-- **URL**: `GET /get/post_info`
-- **参数(query)**:
- - `id=123`
-- **返回**:
- ```json
+- **功能描述**: 分页返回已通过审核的帖子,每页 10 条,按 ID 降序排列
+
+- **成功响应(200 OK)**:
+
+```
+[
{
- "id": 123,
- "content": "文章内容",
- "created_at": "2024-05-10T12:00:00+00:00",
- "updated_at": "2024-05-10T12:00:00+00:00",
- "upvotes": 5,
- "downvotes": 1
+ "id": 1,
+ "content": "帖子内容",
+ "upvotes": 10,
+ "downvotes": 2
}
- ```
+]
+```
----
+### 3.7 其他公共接口
-#### 9. 获取评论列表
-- **URL**: `GET /get/comment`
-- **参数(query)**:
- - `id=123`
-- **返回**:
- ```json
- [
- {
- "id": 456,
- "nickname": "张三",
- "content": "这是一条评论",
- "parent_comment_id": 0,
- "upvotes": 2,
- "downvotes": 0,
- "created_at": "2024-05-10T12:05:00+00:00"
- }
- ]
- ```
+#### 3.7.1 获取统计信息
----
+- **URL**: /get/statics
-#### 10. 获取最新10条文章列表(分页)
-- **URL**: `GET /get/10_info`
-- **参数(query)**:
- - `page=1`(可选,缺省为1)
-- **返回**:
- ```json
- [
- {
- "id": 123,
- "content": "文章内容",
- "created_at": "2024-05-10T12:00:00+00:00",
- "updated_at": "2024-05-10T12:00:00+00:00",
- "upvotes": 114,
- "downvotes": 514,
- "status": "Pass"
- }
- ]
- ```
+- **请求方法**: GET
----
+- **功能描述**: 查询系统总数据统计(帖子、评论、图片数量)
-#### 11. 获取系统统计信息
-- **URL**: `GET /get/statics`
-- **返回**:
- ```json
+- **成功响应(200 OK)**:
+
+```
+{
+ "posts": 100, // 总帖子数
+ "comments": 500, // 总评论数
+ "images": 50 // 总图片数
+}
+```
+
+#### 3.7.2 测试接口
+
+- **URL**: /test
+
+- **请求方法**: GET / POST
+
+- **功能描述**: 验证 API 服务是否正常运行
+
+- **成功响应(200 OK)**: API OK!!!(文本格式)
+
+#### 3.7.3 获取 API 信息
+
+- **URL**: /get/api_info
+
+- **请求方法**: GET
+
+- **功能描述**: 获取 API 版本、开发者等信息
+
+- **成功响应(200 OK)**: 返回包含 API 信息的 HTML 页面
+
+#### 3.7.4 茶壶彩蛋
+
+- **URL**: /get/teapot
+
+- **请求方法**: GET
+
+- **响应**: 418 I'm a teapot
+
+## 四、管理接口
+
+### 4.1 审核模式管理
+
+#### 4.1.1 切换审核模式
+
+- **URL**: /admin/need_audit
+
+- **请求方法**: POST
+
+- **功能描述**: 开启 / 关闭帖子审核模式(开启后新帖子需审核才能通过)
+
+- **请求体(JSON)**:
+
+```
+{
+ "need_audit": true | false // true=开启审核,false=关闭审核(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**:
+
+- - 400 Bad Request:缺少 need_audit 参数,或参数不是布尔值
+
+- - 401 Unauthorized / 403 Forbidden:管理员权限验证失败
+
+#### 4.1.2 获取当前审核模式
+
+- **URL**: /admin/get/need_audit
+
+- **请求方法**: GET
+
+- **功能描述**: 查询当前系统的帖子审核模式
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": true | false // true=开启审核,false=关闭审核
+}
+```
+
+- **错误响应**: 401/403:管理员权限验证失败
+
+### 4.2 帖子管理
+
+#### 4.2.1 审核通过帖子
+
+- **URL**: /admin/approve
+
+- **请求方法**: POST
+
+- **功能描述**: 将待审核的帖子标记为 “已通过”
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 待审核帖子的ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少 ID;404:帖子不存在
+
+#### 4.2.2 拒绝帖子
+
+- **URL**: /admin/disapprove
+
+- **请求方法**: POST
+
+- **请求体、成功响应、错误响应**:与 “审核通过帖子” 接口一致
+
+#### 4.2.3 重新审核帖子
+
+- **URL**: /admin/reaudit
+
+- **请求方法**: POST
+
+- **功能描述**: 将已通过审核的帖子重新标记为 “待审核”
+
+- **请求体、成功响应、错误响应**:与 “审核通过帖子” 接口一致
+
+#### 4.2.4 删除帖子
+
+- **URL**: /admin/del_post
+
+- **请求方法**: POST
+
+- **功能描述**: 永久删除指定帖子
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 帖子ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少 ID;404:帖子不存在
+
+#### 4.2.5 修改帖子
+
+- **URL**: /admin/modify_post
+
+- **请求方法**: POST
+
+- **功能描述**: 修改指定帖子的内容
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1, // 帖子ID(必填)
+ "content": "新的帖子内容(必填)"
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少 ID 或 content;404:帖子不存在
+
+### 4.3 评论与图片管理
+
+#### 4.3.1 删除评论
+
+- **URL**: /admin/del_comment
+
+- **请求方法**: POST
+
+- **功能描述**: 永久删除指定评论
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 评论ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少 ID;404:评论不存在
+
+#### 4.3.2 修改评论
+
+- **URL**: /admin/modify_comment
+
+- **请求方法**: POST
+
+- **功能描述**: 修改指定评论的内容、用户名或父评论 ID
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1, // 评论ID(必填)
+ "content": "新评论内容(必填)",
+ "parent_comment_id": 0, // 新的父评论ID(必填)
+ "nickname": "新用户名(必填)"
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少必填字段;404:评论或父评论不存在
+
+#### 4.3.3 删除图片
+
+- **URL**: /admin/del_pic
+
+- **请求方法**: POST
+
+- **功能描述**: 永久删除服务器上的指定图片
+
+- **请求体(JSON)**:
+
+```
+{
+ "filename": "230615_abcd1.png" // 图片文件名(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 401/403:权限失败;400:缺少 filename;404:图片不存在
+
+### 4.4 举报管理
+
+#### 4.4.1 批准举报
+
+- **URL**: /admin/approve_report
+
+- **请求方法**: POST
+
+- **功能描述**: 批准用户提交的举报,系统将自动删除被举报的违规帖子
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 举报记录的ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**:
+
+- - 401/403:管理员权限验证失败
+
+- - 400 Bad Request:缺少举报 ID
+
+- - 404 Not Found:举报记录不存在或已处理
+
+#### 4.4.2 拒绝举报
+
+- **URL**: /admin/reject_report
+
+- **请求方法**: POST
+
+- **功能描述**: 驳回用户提交的举报,被举报帖子将保持原有状态
+
+- **请求体(JSON)**:
+
+```
+{
+ "id": 1 // 举报记录的ID(必填)
+}
+```
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**: 与 “批准举报” 接口完全一致
+
+### 4.5 数据备份与恢复
+
+#### 4.5.1 创建备份
+
+- **URL**: /admin/get/backup
+
+- **请求方法**: GET
+
+- **功能描述**: 自动备份系统数据库(含帖子、评论、举报数据)和所有上传图片,生成 ZIP 格式压缩包供下载
+
+- **成功响应(200 OK)**: 返回 ZIP 格式的备份文件(文件名为 “backup_YYYYMMDD_HHMMSS.zip”,如 “backup_20240520_143025.zip”)
+
+- **错误响应**: 401/403:管理员权限验证失败
+
+#### 4.5.2 恢复备份
+
+- **URL**: /admin/recover
+
+- **请求方法**: POST
+
+- **请求体格式**: multipart/form-data,需包含名为backup_file的 ZIP 备份文件
+
+- **功能描述**: 从备份文件恢复系统数据(覆盖现有数据库和图片,操作不可逆,建议提前二次备份)
+
+- **成功响应(200 OK)**:
+
+```
+{
+ "status": "OK"
+}
+```
+
+- **错误响应**:
+
+- - 401/403:管理员权限验证失败
+
+- - 400 Bad Request:未上传文件、文件不是 ZIP 格式或备份文件损坏
+
+- - 500 Internal Server Error:恢复过程中出现数据错误
+
+### 4.6 管理端数据查询
+
+#### 4.6.1 获取待审核帖子
+
+- **URL**: /admin/get/pending_posts
+
+- **请求方法**: GET
+
+- **功能描述**: 查询系统中所有状态为 “待审核” 的帖子列表(含未通过普通用户查询的待审核内容)
+
+- **成功响应(200 OK)**:
+
+```
+[
{
- "posts": 150,
- "comments": 300,
- "images": 80
+ "id": 1,
+ "content": "待审核的帖子内容",
+ "create_time": "2024-05-20 14:20:30", // 帖子创建时间
+ "upvotes": 0,
+ "downvotes": 0
}
- ```
+]
+```
----
+- **错误响应**: 401/403:管理员权限验证失败
-#### 12. 提交投诉
-- **URL**: `POST /report`
-- **请求参数(JSON)**:
-
- ```json
+#### 4.6.2 获取已拒绝帖子
+
+- **URL**: /admin/get/reject_posts
+
+- **请求方法**: GET
+
+- **功能描述**: 查询系统中所有状态为 “已拒绝” 的帖子列表
+
+- **成功响应(200 OK)**: 格式与 “获取待审核帖子” 一致,仅包含 “已拒绝” 状态的帖子
+
+- **错误响应**: 401/403:管理员权限验证失败
+
+#### 4.6.3 获取图片链接列表
+
+- **URL**: /admin/get/pic_links
+
+- **请求方法**: GET
+
+- **请求参数(Query)**: page=1(页码,可选,默认 1,每页返回 20 条图片链接)
+
+- **功能描述**: 查询系统中所有已上传图片的访问 URL 和文件名
+
+- **成功响应(200 OK)**:
+
+```
+[
{
- "id": 123,
+ "filename": "230615_abcd1.png",
+ "url": "/img/230615_abcd1.png",
+ "upload_time": "2024-05-18 10:15:22" // 图片上传时间
+ }
+]
+```
+
+- **错误响应**: 401/403:管理员权限验证失败
+
+#### 4.6.4 获取待处理举报
+
+- **URL**: /admin/get/pending_reports
+
+- **请求方法**: GET
+
+- **功能描述**: 查询系统中所有状态为 “待处理” 的举报记录列表
+
+- **成功响应(200 OK)**:
+
+```
+[
+ {
+ "id": 1, // 举报ID
+ "reported_post_id": 2, // 被举报帖子ID
+ "reported_post_content": "被举报的帖子内容", // 被举报帖子内容(便于审核)
"title": "举报标题",
- "content": "举报原因"
+ "content": "举报详细内容",
+ "submit_time": "2024-05-20 15:00:45" // 举报提交时间
}
- ```
-- **返回**:
- ```json
- { "id": 101, "status": "OK" }
- ```
+]
+```
----
+- **错误响应**: 401/403:管理员权限验证失败
-### ✅ **二、管理后台接口(需要 Bearer Token)**
+### 4.7 管理员工具接口
-> **调用方式**:在请求头加上:
-> ```
-> Authorization: Bearer your_admin_token
-> ```
+#### 4.7.1 管理员测试接口
-#### 1. 查看文章详情(完整信息)
-- **URL**: `GET /admin/get/post_info`
-- **参数(query)**:
- - `id=123`
-- **返回**:
- ```json
- {
- "id": 123,
- "content": "文章内容",
- "created_at": "2024-05-10T12:00:00+00:00",
- "updated_at": "2024-05-10T12:00:00+00:00",
- "status": "Pass",
- "upvotes": 5,
- "downvotes": 1
- }
- ```
+- **URL**: /admin/test
----
+- **请求方法**: GET / POST
-#### 2. 审核文章:通过
-- **URL**: `POST /admin/approve`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **功能描述**: 验证管理员权限接口是否正常运行(需携带管理员 Token)
----
+- **成功响应(200 OK)**: Admin API OK!!!(文本格式)
-#### 3. 审核文章:拒绝
-- **URL**: `POST /admin/disapprove`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **错误响应**: 401/403:管理员权限验证失败
----
+#### 4.7.2 获取管理员视角的帖子详情
-#### 4. 重新审核文章(置为 Pending)
-- **URL**: `POST /admin/reaudit`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **URL**: /admin/get/post_info
----
+- **请求方法**: GET
-#### 5. 删除文章(包括评论)
-- **URL**: `POST /admin/del_post`
-- **请求参数(JSON)**:
- ```json
- { "id": 123 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **请求参数(Query)**: id=1(帖子 ID,必填)
----
+- **功能描述**: 查看指定帖子的完整信息(含创建时间、更新时间、审核状态,不受 “未通过审核” 限制)
-#### 6. 修改文章内容
-- **URL**: `POST /admin/modify_post`
-- **请求参数(JSON)**:
- ```json
- { "id": 123, "content": "新内容" }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **成功响应(200 OK)**:
----
+```
+{
+ "id": 1,
+ "content": "帖子内容",
+ "status": "Pending", // 帖子状态:Approved/Rejected/Pending
+ "create_time": "2024-05-20 14:20:30",
+ "update_time": "2024-05-20 14:20:30", // 最后更新时间(如审核时间、修改时间)
+ "upvotes": 10,
+ "downvotes": 2
+}
+```
-#### 7. 删除评论
-- **URL**: `POST /admin/del_comment`
-- **请求参数(JSON)**:
- ```json
- { "id": 456 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- **错误响应**:
----
+- - 401/403:管理员权限验证失败
-#### 8. 修改评论
-- **URL**: `POST /admin/modify_comment`
-- **请求参数(JSON)**:
- ```json
- {
- "id": 456,
- "content": "新内容",
- "parent_comment_id": 0,
- "nickname": "新昵称"
- }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+- - 400 Bad Request:缺少帖子 ID
----
+- - 404 Not Found:帖子不存在
-#### 9. 删除图片
-- **URL**: `POST /admin/del_pic`
-- **请求参数(JSON)**:
- ```json
- { "filename": "240510_aBc12.png" }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
+## 五、附录
----
+### 5.1 常见状态码说明
-#### 10. 管理投诉:通过
-- **URL**: `POST /admin/approve_report`
-- **请求参数(JSON)**:
- ```json
- { "id": 101 }
- ```
-- **行为**:标记投诉为通过,并**删除对应文章及其所有评论**
-
----
-
-#### 11. 管理投诉:拒绝
-- **URL**: `POST /admin/reject_report`
-- **请求参数(JSON)**:
- ```json
- { "id": 101 }
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
-
----
-
-#### 12. 开启/关闭审核功能
-- **URL**: `POST /admin/need_audit`
-- **请求参数(JSON)**:
- ```json
- { "need_audit": true } // 或 false
- ```
-- **返回**:
- ```json
- { "status": "OK" }
- ```
-
----
-
-#### 13. 获取当前是否需审核
-- **URL**: `GET /admin/get/need_audit`
-- **返回**:
- ```json
- { "status": true }
- ```
-
----
-
-#### 14. 获取待审核文章列表
-- **URL**: `GET /admin/get/pending_posts`
-- **返回**:
- ```json
- [
- {
- "id": 123,
- "content": "待审内容",
- "created_at": "2024-05-10T12:00:00+00:00",
- "updated_at": "2024-05-10T12:00:00+00:00",
- "status": "Pending"
- }
- ]
- ```
-
----
-
-#### 15. 获取被拒绝文章
-- **URL**: `GET /admin/get/reject_posts`
-- **返回**:
- - 结构同上,仅状态为 "Deny"
-
----
-
-#### 16. 获取所有图片链接(分页)
-- **URL**: `GET /admin/get/pic_links`
-- **参数(query)**:
- - `page=1`
-- **返回**:
- ```json
- [
- "/img/240510_aBc12.png",
- "/img/240510_xYz34.jpg"
- ]
- ```
-
----
-
-#### 17. 获取待处理投诉
-- **URL**: `GET /admin/get/pending_reports`
-- **返回**:
- ```json
- [
- {
- "id": 101,
- "submission_id": 123,
- "title": "举报标题",
- "content": "举报内容",
- "status": "Pending",
- "created_at": "2024-05-10T12:00:00+00:00"
- }
- ]
- ```
-
----
-
-#### 18. 下载备份文件
-- **URL**: `GET /admin/get/backup`
-- **返回**:一个 `.zip` 文件,包含数据库和 `img/` 文件夹
-
----
-
-#### 19. 恢复备份
-- **URL**: `POST /admin/recover`
-- **请求**:上传一个 `.zip` 备份文件(form-data)
-- **返回**:
- ```json
- { "status": "OK" }
- ```
-- **行为**:解压覆盖当前数据库和图片目录
-
----
-
-### 🟩 总结说明
-
-| 功能 | 接口路径 | 是否需要 Token | 说明 |
-| ------------ | --------------------- | -------------- | ------------------------------ |
-| 提交文章 | `POST /post` | 否 | 含违禁词或空则拒绝 |
-| 点赞/踩 | `POST /up`, `/down` | 否 | 仅需文章 ID |
-| 发布评论 | `POST /comment` | 否 | 有合规校验 |
-| 上传图片 | `POST /upload_pic` | 否 | 仅支持特定格式 |
-| 获取文章状态 | `GET /get/post_state` | 否 | 无权限限制 |
-| 提交投诉 | `POST /report` | 否 | 带文章 ID |
-| 获取统计 | `GET /get/statics` | 否 | 公开数据 |
-| 后台操作 | 所有 `/admin/...` | ✅ 必须 | 使用 `Bearer your_admin_token` |
-
----
-
-> ✅ 所有返回均为 JSON 格式,状态码 200/201 表示成功,其余为错误(如 400, 403, 404, 500)。
+| 状态码 | 含义 | 适用场景 |
+| ------------------------- | -------------- | ------------------------------------------------------ |
+| 200 OK | 请求成功 | 点赞、获取数据、修改内容等操作成功 |
+| 201 Created | 资源创建成功 | 提交帖子、上传图片、提交举报等创建新资源的操作 |
+| 400 Bad Request | 请求参数错误 | 缺少必填字段、参数格式错误(如非布尔值、非数字 ID) |
+| 401 Unauthorized | 未授权 | 访问管理接口未携带管理员 Token |
+| 403 Forbidden | 权限拒绝 | 携带无效 Token、内容含违规关键词、访问不允许的文件格式 |
+| 404 Not Found | 资源不存在 | 帖子 ID / 评论 ID / 举报 ID / 图片文件名不存在 |
+| 418 I'm a teapot | 彩蛋状态码 | 访问/get/teapot接口 |
+| 500 Internal Server Error | 服务器内部错误 | 备份恢复失败、数据库异常等系统级错误 |
diff --git a/api_server.py b/api_server.py
index 63a2916..37c5507 100644
--- a/api_server.py
+++ b/api_server.py
@@ -100,7 +100,7 @@ BANNED_KEYWORDS = [
"割腕", "跳楼"
]
-ADMIN_TOKEN = "LeonXieNeko14235^"
+ADMIN_TOKEN = "I_Love_SFLS_128936^"
UPLOAD_FOLDER = "img"
ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg", "gif", "webp"}
@@ -371,8 +371,6 @@ def get_post_info():
return jsonify({
"id": submission.id,
"content": submission.content,
- "created_at": submission.created_at.isoformat(),
- "updated_at": submission.updated_at.isoformat(),
"upvotes": submission.upvotes,
"downvotes": submission.downvotes
}), 200
@@ -415,8 +413,7 @@ def get_comments():
"id": comment.id,
"nickname": comment.nickname,
"content": comment.content,
- "parent_comment_id": comment.parent_comment_id,
- "created_at": comment.created_at.isoformat()
+ "parent_comment_id": comment.parent_comment_id
}
comments = [serialize_comment(c) for c in submission.comments]
@@ -447,11 +444,8 @@ def get_10_info():
return jsonify([{
"id": s.id,
"content": s.content,
- "created_at": s.created_at.isoformat(),
- "updated_at": s.updated_at.isoformat(),
"upvotes": s.upvotes,
- "downvotes": s.downvotes,
- "status": s.status
+ "downvotes": s.downvotes
} for s in page_posts]), 200
@@ -471,6 +465,11 @@ def get_statics():
def return_418():
abort(418)
+# === Admin测试API接口 ===
+@app.route('/test', methods=['GET', 'POST'])
+def return_200():
+ return 'API OK!!!', 200
+
@app.route('/get/api_info', methods=['GET'])
def get_api_info():
return 'Sycamore_whisper API v1.0.0 Made with ❤️ By Leonxie', 200
@@ -803,6 +802,11 @@ def admin_pending_reports():
} for r in reports]), 200
+@app.route('/admin/test', methods=['GET', 'POST'])
+@require_admin
+def admin_return_200():
+ return 'Admin API OK!!!', 200
+
# === 数据库初始化 ===
def initialize_database():
"""若数据库不存在则创建并初始化"""