Files
yu-zhi-ran/platform/API_REQUIREMENTS.md
T
lt 277b13eaae feat: 完成布局优化 - 操作列固定、批量按钮自适应、分类标签带数量
优化内容:
1. 表格布局:
   - 使用 calc(100vw - 160px) 确保表格不超出视口
   - 操作列 fixed='right' 固定在右侧,宽度 300px
   - 按钮 3 个后自动换行 (max-width: 200px)
   - 恢复合理列宽,不再过度压缩

2. 批量操作区域:
   - 容器改为 inline-block,宽度自适应按钮内容
   - 背景宽度与按钮总宽度匹配

3. 分类标签:
   - 显示数量 (如 '待处理 (20)')
   - 点击切换筛选,去掉误导的 'X' 图标

4. 删除功能:
   - 操作列增加删除按钮
   - 删除前弹出确认对话框

5. 系统日志:
   - 修复后端日志路径 (parents[4])
   - 404 时显示友好提示

6. 其他:
   - 左侧菜单宽度 160px
   - 所有功能保留 (登录、用户管理、批量操作等)
2026-04-27 11:32:17 +08:00

297 lines
5.2 KiB
Markdown
Raw 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.
# 宇之然内容创作平台 - API 需求清单
## 🔐 认证相关
### 1. 用户登录
```http
POST /api/auth/login
Content-Type: application/json
{
"username": string,
"password": string
}
Response:
{
"token": string, // JWT token
"role": string, // "admin"
"user": {
"id": number,
"username": string,
"role": string,
"created_at": string
}
}
```
### 2. 获取当前用户信息
```http
GET /api/auth/me
Authorization: Bearer <token>
Response:
{
"id": number,
"username": string,
"role": string,
"created_at": string
}
```
## 📊 系统状态
### 3. 获取系统概览状态
```http
GET /api/system/status
Authorization: Bearer <token>
Response:
{
"total_topics": number,
"today_articles": number,
"topics_by_status": {
"": number,
"": number,
"": number,
"": number
},
"generated_count": number,
"published_count": number
}
```
### 4. 获取流水线状态
```http
GET /api/system/pipeline/status
Authorization: Bearer <token>
Response:
{
"status_distribution": {
"": number,
"": number,
"": number
},
"topics_count": number,
"pipeline_modules": {
"creator": {
"exists": boolean,
"has_error": boolean,
"last_run": string,
"error": string
},
"collector": {
"exists": boolean,
"has_error": boolean,
"last_run": string,
"error": string
}
}
}
```
## 📝 选题管理
### 5. 获取选题列表(支持筛选)
```http
GET /api/topics?status=&page=1&size=20
Authorization: Bearer <token>
Response:
[
{
"id": number,
"title": string,
"field": string,
"priority_score": number,
"status": string, // "" | "" | "" | ""
"compliance_score": number,
"created_at": string, // ISO 8601
"updated_at": string, // ISO 8601
"generated_at": string, // ISO 8601 ()
"published_at": string, // ISO 8601 ()
"published_urls": object // { platform: url }
}
]
```
### 6. 批量创建选题
```http
POST /api/system/generate/run
Authorization: Bearer <token>
Content-Type: application/json
{
"topic_ids": [number] //
}
Response:
{
"result": {
"ok": true,
"count": number
}
}
```
### 7. 批量优化选题
```http
POST /api/system/optimize/run
Authorization: Bearer <token>
Content-Type: application/json
{
"topic_ids": [number]
}
Response:
{
"summary": {
"passed_auto": number,
"need_manual": number,
"total": number
}
}
```
### 8. 单个选题操作(创建/优化)
```http
POST /api/system/generate/run?topic_id=123
Authorization: Bearer <token>
POST /api/system/optimize/run
Authorization: Bearer <token>
Content-Type: application/json
{
"topic_ids": [123]
}
```
### 9. 发布选题
```http
POST /api/publishing/create
Authorization: Bearer <token>
Content-Type: application/json
{
"topic_id": number
}
Response:
{
"success": true,
"urls": {
"zhihu": "https://...",
"wechat": "https://...",
"xiaohongshu": "https://..."
}
}
```
## 📄 预览功能
### 10. 获取文章预览
```http
GET /api/articles/{topic_id}/preview?platform=zhihu
Authorization: Bearer <token>
Response:
{
"html": string // HTML
}
```
## 📜 日志系统
### 11. 获取日志内容
```http
GET /api/system/logs/{date}?log_type=creator
Authorization: Bearer <token>
Response:
{
"content": [
"2026-04-26 10:00:00 INFO ",
"2026-04-26 10:05:00 INFO ",
"..."
]
}
```
## 👥 用户管理(管理员)
### 12. 获取用户列表
```http
GET /api/admin/users
Authorization: Bearer <token>
Response:
[
{
"id": number,
"username": string,
"role": string,
"created_at": string,
"last_login": string
}
]
```
### 13. 创建用户
```http
POST /api/admin/users
Authorization: Bearer <token>
Content-Type: application/json
{
"username": string,
"password": string,
"role": string // "admin" or "user"
}
Response:
{
"id": number,
"username": string,
"role": string,
"created_at": string
}
```
### 14. 删除用户
```http
DELETE /api/admin/users/{id}
Authorization: Bearer <token>
Response:
{ "success": true }
```
## 🛡️ 中间件要求
1. **JWT验证中间件** - 所有受保护路由都需要
2. **权限检查中间件** - 用户管理接口只允许 admin
3. **CORS配置** - 允许前端域名跨域请求
4. **错误处理** - 统一错误格式和HTTP状态码
## 📈 性能考虑
1. **分页** - topics 列表支持 page/size 参数
2. **缓存** - system/status 可设置缓存(5秒)
3. **并发控制** - generate/optimize 接口需防止重复提交
## 🔒 安全要求
1. **密码加密** - 使用 bcrypt 存储密码
2. **JWT过期** - token 有效期 7天
3. **输入验证** - 所有用户输入需验证
4. **SQL注入防护** - 使用 ORM 或参数化查询
5. **XSS防护** - HTML输出需转义
---
**优先级**:高(必须实现)
**完成时间**3-5个工作日
**技术栈建议**FastAPI + SQLAlchemy + JWT