# ai 繪圖 ai 繪圖服務端(快速重構) 接口列表: - [ ] /api/tags - [ ] /api/users - [ ] /api/tasks - [ ] /api/models - [ ] /api/images 請求方式: - [ ] GET - [ ] POST - [ ] PATCH - [ ] DELETE * GET查詢以外的操作都必須在headers中攜帶token驗證身份權限 * GET查詢私有模型也必須登錄, 否則不會被展示 ### 获取图片列表(标准查询) GET /api/images ```javascript { page: 1, // 当前页码 pageSize: 20, // 分页数 next: true, // 是否存在下一页 list: [{ id: 1234, // 原图ID width: 512, // 原图宽度 height: 512, // 原图高度 createdAt: '', // 創建時間 updatedAt: '', // 更新時間 user: { // 来源用户 id: 1234, user_name: 'LAST', }, article: { // 来源文章 id: 1234, title: 'GAMEX', } }] } ``` 列表视图:(输出控制) Method | URL | Info | Status -------|--------------------------------|-----------------------------------|-------- GET | /api/images | 标准顺序查询 | ok GET | /api/images?page=1&pageSize=20 | 指定页码和指定分页大小 | ok DELETE | /api/images/{image_id} | 刪除指定圖片 筛选规则:(数据过滤) Method | URL | Info | Statu -------|--------------------------------|-----------------------------------|-------- GET | /api/images?user=1234 | 筛选指定某用户发表的图片 | GET | /api/images?choice=1234 | 筛选指定精选集下的图片 | GET | /api/images?like=1234 | 筛选指定用户点赞的图片 | GET | /api/images?tag=1234 | 筛选含有指定标签的图片 | GET | /api/images?tag=1234,1235 | 筛选含有多个标签之一的图片(并集) | GET | /api/images?tag=1234&tag=1235 | 筛选含有指定多个标签的图片(交集) | GET | /api/images?user=1234&tag=123 | 筛选指定用户的指定标签图片(交集) | GET | /api/images?date=20220214+ | 时间范围(之后) | GET | /api/images?date=20220214- | 时间范围(之前) | GET | /api/images?date=2022~2023 | 时间范围(之间) | 排序规则:(权重强化) Method | URL | Info | Status -------|--------------------------------|-----------------------------------|-------- GET | /api/images?similar=1234 | 根据指定图片的相似图片(指定图片ID) | ok GET | /api/images?sort=date+ | 排序规则(相似图片查询时此项无效) | GET | /api/images?sort=like | 根据用户偏好推荐(指定用户的偏好) | GET | /api/images?sort=history | 根据浏览记录推荐(指定用户的记录) | GET | /api/images?sort=choice | 根据精选集推荐(指定精选集ID,取一组权重) | * 注意, 筛选规则为多条件取交集, 单条件的复数取并集 * 权重强化属于排序规则而非过滤规则 ### 獲取模型列表 GET /api/models ```javascript { page: 1, // 当前页码 pageSize: 20, // 分页数 next: true, // 是否存在下一页 list: [{ id: 'xxxxx', // 模型ID name: 'xxx', // 模型名稱 createdAt: '', // 創建時間 updatedAt: '', // 更新時間 }] } ``` 篩選規則:(數據過濾) Method | URL | Info -------|--------------------------------|------------------ GET | /api/models?user=1234 | 按用戶ID篩選 GET | /api/models?tag=xxx | 按標籤分類篩選 DELETE | /api/model/{model_id} | 刪除指定模型 ### 獲取標籤 GET /api/tags ```javascript { page: 1, // 当前页码 pageSize: 20, // 分页数 next: true, // 是否存在下一页 list: [{ id: 'xxxxx', // 標籤ID name: 'xxx', // 標籤名稱 createdAt: '', // 創建時間 updatedAt: '', // 更新時間 }] } ``` 篩選規則:(數據過濾) Method | URL | Info -------|--------------------------------|------------------ GET | /api/tags?user=1234 | 按用戶ID篩選 GET | /api/tags?tag=xxx | 按標籤分類篩選 DELETE | /api/tags/{tag_id} | 刪除指定標籤 ### 獲取任務 GET /api/tasks ```javascript { page: 1, // 当前页码 pageSize: 20, // 分页数 next: true, // 是否存在下一页 list: [{ id: 'xxxxx', // 任務ID name: 'xxx', // 任務名稱 status: 'xxx', // 任務狀態(waiting|running|success|error) progress: 100, // 任務進度(0~100) data: {}, // 任務數據 createdAt: '', // 創建時間 updatedAt: '', // 更新時間 }] } ``` 篩選規則:(數據過濾) Method | URL | Info -------|--------------------------------|------------------ GET | /api/tasks?user=1234 | 按用戶ID篩選 GET | /api/tasks?tag=xxx | 按標籤分類篩選 DELETE | /api/tasks/{task_id} | 刪除指定任務 ### 監聽任務 WebSocket /api/tasks/{task_id} ```javascript { id: 'xxxx', // 任務ID status: 'xxx', // 任務狀態(waiting|running|success|error) progress: 100, // 任務進度(0~100) data: {}, // 返回數據 } ``` * 使用websocket建立連接以對指定任務監聽狀態變化 * 離開頁面時,或是任務結束時, 應斷開websocket連接 * 當任務狀態發生變化時, 服務端向瀏覽器主動發送消息 * 返回數據:任務執行中爲預覽, 任務完成時爲生成結果