Files
ephron-ren-prd/api/prompt-api-specification.md

340 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 API 需求文档
> 版本: v1.0
> 更新日期: 2026-05-05
> Base URL: `https://{service}.ephron.ren/api/v1`
---
## 一、概述
### 1.1 服务架构
| 服务 | 域名 | 说明 |
|------|------|------|
| Home | www.ephron.ren | 个人主页 |
| Auth | auth.ephron.ren | 认证授权 |
| Blog | blog.ephron.ren | 博客系统 |
| Canvas | canvas.ephron.ren | 代码画布 |
| Prompt | prompt.ephron.ren | 提示词管理 |
### 1.2 权限级别
| 权限 | 标识 | 说明 |
|------|------|------|
| 🟢 公开 | `public` | 无需认证 |
| 🔵 用户 | `user` | 需要登录Cookie 或 Token |
| 🟡 服务 | `service` | 需要 Service Token |
| 🔴 管理 | `admin` | 需要管理员权限 |
### 1.3 认证方式
| 方式 | Header | 适用场景 |
|------|--------|----------|
| Cookie | `ephron_auth` | 浏览器访问 |
| Bearer Token | `Authorization: Bearer {token}` | 服务间调用 |
| API Key | `X-API-Key: {key}` | 第三方集成 |
---
## 二、Home 服务
**现状**: ❌ 无API实现
### 2.1 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| GET | `/api/v1/profile` | 🟢 公开 | 获取个人资料 | ❌ 待实现 |
| GET | `/api/v1/skills` | 🟢 公开 | 获取技能列表 | ❌ 待实现 |
| GET | `/api/v1/projects` | 🟢 公开 | 获取项目列表 | ❌ 待实现 |
| GET | `/api/v1/projects/{id}` | 🟢 公开 | 获取项目详情 | ❌ 待实现 |
| GET | `/api/v1/timeline` | 🟢 公开 | 获取经历时间线 | ❌ 待实现 |
---
## 三、Auth 服务
**现状**: 部分实现(主要是页面路由)
### 3.1 已实现
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/auth/verify` | 🟢 公开 | 验证认证状态 |
| GET | `/authz/service-admin` | 🟡 服务 | 验证服务管理员 |
| POST | `/login` | 🟢 公开 | 用户登录 |
| POST | `/register` | 🟢 公开 | 用户注册 |
| POST | `/logout` | 🔵 用户 | 用户登出 |
| GET | `/check-username` | 🟢 公开 | 检查用户名可用 |
### 3.2 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| GET | `/api/v1/users/{username}` | 🟢 公开 | 获取用户公开信息 | ❌ 待实现 |
| GET | `/api/v1/me` | 🔵 用户 | 获取当前用户信息 | ❌ 待实现 |
| PATCH | `/api/v1/me` | 🔵 用户 | 更新个人资料 | ❌ 待实现 |
| POST | `/api/v1/me/change-password` | 🔵 用户 | 修改密码 | ❌ 待实现 |
| POST | `/api/v1/auth/forgot-password` | 🟢 公开 | 发送重置邮件 | ❌ 待实现 |
| POST | `/api/v1/auth/reset-password` | 🟢 公开 | 重置密码 | ❌ 待实现 |
| 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 | ❌ 待实现 |
---
## 四、Blog 服务
**现状**: 部分实现
### 4.1 已实现
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/posts` | 🟢 公开 | 文章列表(页面) |
| GET | `/posts/{slug}` | 🟢 公开 | 文章详情(页面) |
| GET | `/api/service/posts` | 🟡 服务 | 文章列表API |
| GET | `/api/service/posts/{slug}` | 🟡 服务 | 文章详情API |
| POST | `/api/service/posts` | 🟡 服务 | 创建文章 |
| PATCH | `/api/service/posts/{slug}` | 🟡 服务 | 更新文章 |
| DELETE | `/api/service/posts/{slug}` | 🟡 服务 | 删除文章 |
| GET | `/posts/{post_slug}/comments` | 🟢 公开 | 获取评论 |
| POST | `/posts/{post_slug}/comments` | 🔵 用户 | 添加评论 |
| GET | `/feed` | 🟢 公开 | RSS 订阅 |
| GET | `/sitemap.xml` | 🟢 公开 | 站点地图 |
### 4.2 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| GET | `/api/v1/posts` | 🟢 公开 | 文章列表API | ❌ 待实现 |
| GET | `/api/v1/posts/{slug}` | 🟢 公开 | 文章详情API | ❌ 待实现 |
| GET | `/api/v1/posts/search` | 🟢 公开 | 全文搜索 | ❌ 待实现 |
| POST | `/api/v1/posts/{slug}/view` | 🟢 公开 | 记录阅读 | ❌ 待实现 |
| POST | `/api/v1/posts/{slug}/like` | 🔵 用户 | 点赞文章 | ❌ 待实现 |
| DELETE | `/api/v1/posts/{slug}/like` | 🔵 用户 | 取消点赞 | ❌ 待实现 |
| POST | `/api/v1/posts/{slug}/favorite` | 🔵 用户 | 收藏文章 | ❌ 待实现 |
| DELETE | `/api/v1/posts/{slug}/favorite` | 🔵 用户 | 取消收藏 | ❌ 待实现 |
| GET | `/api/v1/posts/{slug}/stats` | 🟢 公开 | 获取统计 | ❌ 待实现 |
| GET | `/api/v1/user/favorites` | 🔵 用户 | 收藏列表 | ❌ 待实现 |
| GET | `/api/v1/posts/{slug}/comments` | 🟢 公开 | 评论列表API | ❌ 待实现 |
| POST | `/api/v1/posts/{slug}/comments` | 🔵 用户 | 添加评论API | ❌ 待实现 |
| POST | `/api/v1/upload/image` | 🔵 用户 | 上传图片 | ❌ 待实现 |
| GET | `/api/v1/posts/{slug}/versions` | 🔵 用户 | 版本历史 | ❌ 待实现 |
| POST | `/api/v1/posts/batch` | 🟡 服务 | 批量操作 | ❌ 待实现 |
| GET | `/api/v1/posts/export` | 🟡 服务 | 导出文章 | ❌ 待实现 |
---
## 五、Canvas 服务
**现状**: ❌ 无API实现
### 5.1 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| GET | `/api/v1/canvas` | 🟢 公开 | 画布列表 | ❌ 待实现 |
| GET | `/api/v1/canvas/{slug}` | 🟢 公开 | 画布详情 | ❌ 待实现 |
| GET | `/api/v1/canvas/{slug}/raw` | 🟢 公开 | 原始内容 | ❌ 待实现 |
| POST | `/api/v1/canvas/{slug}/view` | 🟢 公开 | 记录浏览 | ❌ 待实现 |
| POST | `/api/v1/canvas` | 🟡 服务 | 创建画布 | ❌ 待实现 |
| PATCH | `/api/v1/canvas/{slug}` | 🟡 服务 | 更新画布 | ❌ 待实现 |
| DELETE | `/api/v1/canvas/{slug}` | 🟡 服务 | 删除画布 | ❌ 待实现 |
| POST | `/api/v1/canvas/{slug}/like` | 🔵 用户 | 点赞 | ❌ 待实现 |
| POST | `/api/v1/canvas/{slug}/favorite` | 🔵 用户 | 收藏 | ❌ 待实现 |
| GET | `/api/v1/templates` | 🟢 公开 | 模板列表 | ❌ 待实现 |
| POST | `/api/v1/canvas/{slug}/share` | 🔵 用户 | 生成分享链接 | ❌ 待实现 |
---
## 六、Prompt 服务
**现状**: ✅ 已实现7个API
### 6.1 已实现
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | `/api/prompts` | 🟢 公开 | 提示词列表 |
| GET | `/api/prompts/{key}` | 🟢 公开 | 提示词详情 |
| GET | `/api/service/prompts` | 🟡 服务 | 提示词列表 |
| GET | `/api/service/prompts/{key}` | 🟡 服务 | 提示词详情 |
| POST | `/api/service/prompts` | 🟡 服务 | 创建草稿 |
| PATCH | `/api/service/prompts/{key}` | 🟡 服务 | 更新草稿 |
| DELETE | `/api/service/prompts/{key}` | 🟡 服务 | 删除草稿 |
### 6.2 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| GET | `/api/v1/prompts/search` | 🟢 公开 | 高级搜索 | ❌ 待实现 |
| GET | `/api/v1/prompts/categories` | 🟢 公开 | 分类列表 | ❌ 待实现 |
| GET | `/api/v1/prompts/tags` | 🟢 公开 | 标签列表 | ❌ 待实现 |
| GET | `/api/v1/prompts/popular` | 🟢 公开 | 热门提示词 | ❌ 待实现 |
| 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` | 🔵 用户 | 收藏列表 | ❌ 待实现 |
| GET | `/api/v1/prompts/{key}/versions` | 🟡 服务 | 版本历史 | ❌ 待实现 |
| GET | `/api/v1/prompts/{key}/versions/{v}` | 🟡 服务 | 特定版本 | ❌ 待实现 |
| POST | `/api/v1/prompts/{key}/rollback/{v}` | 🟡 服务 | 回滚版本 | ❌ 待实现 |
| POST | `/api/v1/prompts/batch` | 🟡 服务 | 批量创建 | ❌ 待实现 |
| POST | `/api/v1/prompts/batch-delete` | 🟡 服务 | 批量删除 | ❌ 待实现 |
| GET | `/api/v1/prompts/export` | 🟡 服务 | 导出 | ❌ 待实现 |
| POST | `/api/v1/prompts/import` | 🟡 服务 | 导入 | ❌ 待实现 |
| GET | `/api/v1/marketplace` | 🟢 公开 | 模板市场 | ❌ 待实现 |
| POST | `/api/v1/marketplace/{key}/publish` | 🔵 用户 | 发布到市场 | ❌ 待实现 |
| POST | `/api/v1/marketplace/{key}/install` | 🔵 用户 | 安装模板 | ❌ 待实现 |
---
## 七、通用接口
**现状**: ❌ 无实现
### 7.1 需新增API
| 方法 | 路径 | 权限 | 说明 | 状态 |
|------|------|------|------|------|
| POST | `/api/v1/upload` | 🔵 用户 | 上传文件 | ❌ 待实现 |
| GET | `/api/v1/notifications` | 🔵 用户 | 通知列表 | ❌ 待实现 |
| POST | `/api/v1/notifications/{id}/read` | 🔵 用户 | 标记已读 | ❌ 待实现 |
| GET | `/api/v1/search` | 🟢 公开 | 全局搜索 | ❌ 待实现 |
| POST | `/api/v1/webhooks` | 🔵 用户 | 创建 Webhook | ❌ 待实现 |
| GET | `/api/v1/webhooks` | 🔵 用户 | 列出 Webhooks | ❌ 待实现 |
| DELETE | `/api/v1/webhooks/{id}` | 🔵 用户 | 删除 Webhook | ❌ 待实现 |
| GET | `/api/v1/admin/stats` | 🔴 管理 | 全站统计 | ❌ 待实现 |
---
## 八、实现统计
| 服务 | 已实现 | 待实现 | 总计 |
|------|--------|--------|------|
| Home | 0 | 5 | 5 |
| Auth | 6 | 9 | 15 |
| Blog | 11 | 16 | 27 |
| Canvas | 0 | 11 | 11 |
| Prompt | 7 | 20 | 27 |
| 通用 | 0 | 8 | 8 |
| **总计** | **24** | **69** | **93** |
**完成度**: 24/93 = **26%**
---
## 九、实现优先级
### P0 - 核心功能
| 服务 | API | 说明 |
|------|-----|------|
| Home | `/api/v1/profile` | 首页展示 |
| Auth | `/api/v1/me` | 用户系统基础 |
| Blog | `/api/v1/posts` | 文章列表API |
| Blog | `/api/v1/posts/search` | 文章搜索 |
| Canvas | `/api/v1/canvas` | 画布列表 |
| Prompt | `/api/v1/prompts/search` | 高级搜索 |
### P1 - 重要功能
| 服务 | API | 说明 |
|------|-----|------|
| Auth | `/api/v1/me/api-keys` | 第三方集成 |
| Blog | `/api/v1/posts/{slug}/like` | 用户互动 |
| Blog | `/api/v1/upload/image` | 图片上传 |
| Canvas | 服务API | 自动化支持 |
| Prompt | 批量操作 | 管理效率 |
### P2 - 增强功能
| 服务 | API | 说明 |
|------|-----|------|
| Auth | 密码重置 | 用户体验 |
| Blog | 版本管理 | 内容管理 |
| Canvas | 模板API | 用户便利 |
| Prompt | 模板市场 | 社区生态 |
### P3 - 扩展功能
| 服务 | API | 说明 |
|------|-----|------|
| 通用 | 通知服务 | 用户提醒 |
| 通用 | Webhook | 自动化 |
| 通用 | 全局搜索 | 用户体验 |
---
## 十、错误处理
```json
{
"detail": "错误信息",
"code": "ERROR_CODE"
}
```
| HTTP | 说明 |
|------|------|
| 400 | 请求参数错误 |
| 401 | 未认证 |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 429 | 请求过于频繁 |
| 500 | 服务器错误 |
---
## 十一、速率限制
| API 类型 | 限制 |
|----------|------|
| 公开 API (GET) | 100次/分钟 |
| 公开 API (POST) | 10次/分钟 |
| 用户 API | 60次/分钟 |
| 服务 API | 30次/分钟 |
| 文件上传 | 5次/分钟 |
---
## 十二、数据库扩展
```sql
-- 用户收藏表
CREATE TABLE user_favorites (
id INTEGER PRIMARY KEY,
user_id TEXT NOT NULL,
resource_type TEXT NOT NULL,
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,
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
);
```