Files
ephron-ren-prd/requirements/feature-requirements.md

509 lines
12 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.
# ephron.ren 功能需求文档
> 版本: v1.0
> 更新日期: 2026-05-05
> 状态: 待评审
---
## 概述
本文档记录 ephron.ren 建议新增的功能需求,按优先级和模块分类。
---
## 一、Home 服务
**现状**: 无API实现仅有页面路由
### 1.1 个人资料 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/profile` | 🟢 公开 | 获取个人资料 |
**响应示例**:
```json
{
"username": "ephron",
"display_name": "Ephron",
"bio": "全栈开发者",
"avatar_url": "https://cdn.ephron.ren/avatar.jpg",
"social": {
"github": "https://github.com/ephron",
"twitter": "https://twitter.com/ephron"
}
}
```
**实现建议**: 从数据库或配置文件读取个人资料
---
### 1.2 技能列表 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/skills` | 🟢 公开 | 获取技能列表 |
**响应示例**:
```json
{
"skills": [
{"name": "Python", "level": 90, "category": "后端"},
{"name": "React", "level": 85, "category": "前端"}
]
}
```
---
### 1.3 项目作品 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/projects` | 🟢 公开 | 项目列表 |
| GET | `/api/v1/projects/{id}` | 🟢 公开 | 项目详情 |
---
### 1.4 时间线 API
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/timeline` | 🟢 公开 | 经历时间线 |
---
## 二、Auth 服务
**现状**: 已实现基础认证缺少用户管理API
### 2.1 用户资料 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/users/{username}` | 🟢 公开 | 获取用户公开信息 |
| GET | `/api/v1/me` | 🔵 用户 | 获取当前用户信息 |
| PATCH | `/api/v1/me` | 🔵 用户 | 更新个人资料 |
**实现建议**:
- 用户公开信息:用户名、头像、简介、注册时间
- 当前用户信息:包含邮箱、角色等私有信息
---
### 2.2 密码管理 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/me/change-password` | 🔵 用户 | 修改密码 |
| POST | `/api/v1/auth/forgot-password` | 🟢 公开 | 发送重置邮件 |
| POST | `/api/v1/auth/reset-password` | 🟢 公开 | 重置密码 |
**实现建议**:
- 需要集成邮件服务SMTP
- 重置Token有效期24小时
- 使用安全的密码哈希bcrypt/argon2
---
### 2.3 API Key 管理
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/me/api-keys` | 🔵 用户 | 生成 API Key |
| GET | `/api/v1/me/api-keys` | 🔵 用户 | 列出 API Keys |
| DELETE | `/api/v1/me/api-keys/{key_id}` | 🔵 用户 | 删除 API Key |
**实现建议**:
- API Key 格式: `sk-xxxxxxxx`
- 存储时只保存哈希值
- 支持设置权限范围
---
## 三、Blog 服务
**现状**: 已实现文章CRUD和点赞缺少搜索、收藏、版本管理
### 3.1 公开文章 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/posts` | 🟢 公开 | 文章列表 |
| GET | `/api/v1/posts/{slug}` | 🟢 公开 | 文章详情 |
**实现建议**:
- 列表支持分页、分类筛选
- 详情包含完整内容和元数据
---
### 3.2 文章搜索 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/posts/search` | 🟢 公开 | 全文搜索 |
**请求参数**:
| 参数 | 类型 | 说明 |
|------|------|------|
| q | string | 搜索关键词 |
| tag | string | 标签筛选 |
| sort | string | 排序: newest/popular |
| page | int | 页码 |
**实现建议**:
- 使用 SQLite FTS5 全文搜索
- 返回匹配摘要和高亮
---
### 3.3 文章互动 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/posts/{slug}/view` | 🟢 公开 | 记录阅读 |
| POST | `/api/v1/posts/{slug}/favorite` | 🔵 用户 | 收藏文章 |
| DELETE | `/api/v1/posts/{slug}/favorite` | 🔵 用户 | 取消收藏 |
| GET | `/api/v1/user/favorites` | 🔵 用户 | 收藏列表 |
| GET | `/api/v1/posts/{slug}/stats` | 🟢 公开 | 文章统计 |
**实现建议**:
- 阅读统计基于IP去重
- 收藏需要用户登录
---
### 3.4 图片上传 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/upload/image` | 🔵 用户 | 上传图片 |
**实现建议**:
- 支持 jpg/png/gif/webp
- 限制文件大小5MB
- 生成缩略图
- 存储到 CDN 或本地
---
### 3.5 版本管理 API
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/posts/{slug}/versions` | 🔵 用户 | 版本历史 |
| POST | `/api/v1/posts/{slug}/rollback/{id}` | 🔵 用户 | 回滚版本 |
---
## 四、Canvas 服务
**现状**: 已实现服务API CRUD缺少公开API和互动功能
### 4.1 公开画布 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/canvas` | 🟢 公开 | 画布列表 |
| GET | `/api/v1/canvas/{slug}` | 🟢 公开 | 画布详情 |
| GET | `/api/v1/canvas/{slug}/raw` | 🟢 公开 | 原始内容 |
| POST | `/api/v1/canvas/{slug}/view` | 🟢 公开 | 记录浏览 |
---
### 4.2 画布互动 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/canvas/{slug}/like` | 🔵 用户 | 点赞 |
| DELETE | `/api/v1/canvas/{slug}/like` | 🔵 用户 | 取消点赞 |
| POST | `/api/v1/canvas/{slug}/favorite` | 🔵 用户 | 收藏 |
| DELETE | `/api/v1/canvas/{slug}/favorite` | 🔵 用户 | 取消收藏 |
---
### 4.3 画布模板 API
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/templates` | 🟢 公开 | 模板列表 |
| GET | `/api/v1/templates/{id}` | 🟢 公开 | 模板详情 |
| POST | `/api/v1/canvas/from-template/{id}` | 🔵 用户 | 从模板创建 |
---
### 4.4 画布分享 API
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/canvas/{slug}/share` | 🔵 用户 | 生成分享链接 |
| GET | `/api/v1/shared/{code}` | 🟢 公开 | 访问分享内容 |
---
## 五、Prompt 服务
**现状**: 已实现基础CRUD缺少搜索、互动、批量操作
### 5.1 高级搜索 API
**优先级**: P0
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/prompts/search` | 🟢 公开 | 高级搜索 |
| GET | `/api/v1/prompts/categories` | 🟢 公开 | 分类列表 |
| GET | `/api/v1/prompts/tags` | 🟢 公开 | 标签列表 |
| GET | `/api/v1/prompts/popular` | 🟢 公开 | 热门提示词 |
**实现建议**:
- 搜索支持全文、分类、标签筛选
- 返回分面统计facets
---
### 5.2 用户互动 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/prompts/{key}/use` | 🟢 公开 | 记录使用 |
| POST | `/api/v1/prompts/{key}/like` | 🔵 用户 | 点赞 |
| DELETE | `/api/v1/prompts/{key}/like` | 🔵 用户 | 取消点赞 |
| POST | `/api/v1/prompts/{key}/favorite` | 🔵 用户 | 收藏 |
| DELETE | `/api/v1/prompts/{key}/favorite` | 🔵 用户 | 取消收藏 |
| GET | `/api/v1/user/favorites` | 🔵 用户 | 收藏列表 |
---
### 5.3 批量操作 API
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/prompts/batch` | 🟡 服务 | 批量创建 |
| POST | `/api/v1/prompts/batch-delete` | 🟡 服务 | 批量删除 |
| GET | `/api/v1/prompts/export` | 🟡 服务 | 导出 |
| POST | `/api/v1/prompts/import` | 🟡 服务 | 导入 |
---
### 5.4 版本管理 API
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/prompts/{key}/versions` | 🟡 服务 | 版本历史 |
| GET | `/api/v1/prompts/{key}/versions/{v}` | 🟡 服务 | 特定版本 |
| POST | `/api/v1/prompts/{key}/rollback/{v}` | 🟡 服务 | 回滚版本 |
---
### 5.5 模板市场 API
**优先级**: P3
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/marketplace` | 🟢 公开 | 市场列表 |
| GET | `/api/v1/marketplace/{key}` | 🟢 公开 | 模板详情 |
| POST | `/api/v1/marketplace/{key}/publish` | 🔵 用户 | 发布到市场 |
| POST | `/api/v1/marketplace/{key}/install` | 🔵 用户 | 安装模板 |
---
## 六、通用功能
### 6.1 文件上传服务
**优先级**: P1
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/upload` | 🔵 用户 | 上传文件 |
**实现建议**:
- 支持图片、文档
- 生成唯一文件名
- 返回 CDN URL
---
### 6.2 通知服务
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/notifications` | 🔵 用户 | 通知列表 |
| POST | `/api/v1/notifications/{id}/read` | 🔵 用户 | 标记已读 |
| POST | `/api/v1/notifications/read-all` | 🔵 用户 | 全部已读 |
---
### 6.3 全局搜索
**优先级**: P2
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/v1/search` | 🟢 公开 | 跨服务搜索 |
---
### 6.4 Webhook 服务
**优先级**: P3
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | `/api/v1/webhooks` | 🔵 用户 | 创建 Webhook |
| GET | `/api/v1/webhooks` | 🔵 用户 | 列出 Webhooks |
| DELETE | `/api/v1/webhooks/{id}` | 🔵 用户 | 删除 Webhook |
---
## 七、数据库扩展
### 7.1 新增表
```sql
-- 用户收藏表
CREATE TABLE user_favorites (
id INTEGER PRIMARY KEY,
user_id TEXT NOT NULL,
resource_type TEXT NOT NULL, -- post | prompt | canvas
resource_id TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(user_id, resource_type, resource_id)
);
-- 使用统计表
CREATE TABLE usage_stats (
id INTEGER PRIMARY KEY,
resource_type TEXT NOT NULL,
resource_id TEXT NOT NULL,
user_id TEXT,
action TEXT NOT NULL, -- view | like | use
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- API Keys 表
CREATE TABLE api_keys (
id INTEGER PRIMARY KEY,
key_id TEXT UNIQUE NOT NULL,
user_id TEXT NOT NULL,
key_hash TEXT NOT NULL,
name TEXT,
permissions TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_used_at TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);
-- 通知表
CREATE TABLE notifications (
id INTEGER PRIMARY KEY,
user_id TEXT NOT NULL,
type TEXT NOT NULL,
title TEXT NOT NULL,
message TEXT,
link TEXT,
read BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
---
## 八、实现优先级总览
### P0 - 核心功能6个
| 服务 | 功能 | 说明 |
|------|------|------|
| Home | 个人资料API | 首页展示 |
| Auth | 用户资料API | 用户系统基础 |
| Blog | 公开文章API | 内容展示 |
| Blog | 文章搜索API | 用户体验 |
| Canvas | 公开画布API | 服务完整性 |
| Prompt | 高级搜索API | 用户体验 |
### P1 - 重要功能12个
| 服务 | 功能 | 说明 |
|------|------|------|
| Auth | 密码管理 | 用户体验 |
| Auth | API Key | 第三方集成 |
| Blog | 文章互动 | 用户参与 |
| Blog | 图片上传 | 内容创作 |
| Canvas | 画布互动 | 用户参与 |
| Prompt | 用户互动 | 用户参与 |
| Prompt | 批量操作 | 管理效率 |
| 通用 | 文件上传 | 多服务复用 |
### P2 - 增强功能8个
| 服务 | 功能 | 说明 |
|------|------|------|
| Home | 技能列表 | 首页展示 |
| Home | 项目作品 | 首页展示 |
| Blog | 版本管理 | 内容管理 |
| Canvas | 画布模板 | 用户便利 |
| Canvas | 画布分享 | 内容传播 |
| Prompt | 版本管理 | 内容管理 |
| 通用 | 通知服务 | 用户提醒 |
| 通用 | 全局搜索 | 用户体验 |
### P3 - 扩展功能5个
| 服务 | 功能 | 说明 |
|------|------|------|
| Home | 时间线 | 首页展示 |
| Prompt | 模板市场 | 社区生态 |
| 通用 | Webhook | 自动化 |
---
## 九、相关文档
- [API 文档](./api-specification.md)