# ai 繪圖 ai 繪圖服務端(快速重構) 列表接口: - [ ] /api/tags [#標籤詳情](#標籤列表) - [ ] /api/users [#用戶詳情](#用戶列表) - [ ] /api/tasks [#任務詳情](#任務列表) - [ ] /api/models [#模型列表](#模型列表) - [ ] /api/images [#圖片列表](#圖片列表) 詳情接口: - [ ] /api/tags/{tag_id} [#標籤詳情](#標籤詳情) - [ ] /api/users/{user_id} [#用戶詳情](#用戶詳情) - [ ] /api/tasks/{task_id} [#任務詳情](#任務詳情) - [ ] /api/models/{model_id} [#模型詳情](#模型詳情) - [ ] /api/images/{image_id} [#圖片詳情](#圖片詳情) 請求方式: - [ ] GET - [ ] POST - [ ] PATCH - [ ] DELETE - [ ] WebSocket * 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 | 按標籤分類篩選 POST /api/models ```javascript // 發送數據 { name: '', // 設定名稱 type: '', // 指定訓練類型 source: '', // 指定源模型ID data: { oss: [], // 直接上傳到OSS的圖片地址列表 images: [], // 指定圖片的ID們 choices: [], // 精選集的ID們 }, // 指定數據集(可以是上傳到OSS的文件列表, 也可以是已有的圖片ID, 也可以是精選集ID) } // 返回數據 { id: 'xxx', // 模型ID name: '', // 模型名稱 status: '', // 模型狀態(必須訓練完成的才可用) createdAt: '', // 創建時間 updatedAt: '', // 更新時間 } ``` ### 模型詳情 ```javascript GET /api/models/{model_id} { id: 'xxxxx', // 模型ID name: 'xxx', // 模型名稱 createdAt: '', // 創建時間 updatedAt: '', // 更新時間 } ``` PATCH /api/models/{model_id} | 修改模型 DELETE /api/models/{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連接 * 當任務狀態發生變化時, 服務端向瀏覽器主動發送消息 * 返回數據:任務執行中爲預覽, 任務完成時爲生成結果