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 - 所有功能保留 (登录、用户管理、批量操作等)
This commit is contained in:
@@ -0,0 +1,297 @@
|
||||
# 宇之然内容创作平台 - 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
|
||||
Reference in New Issue
Block a user