e9530604cf021e8a518cf6465bef8916aec427cb
				
			
			
		
	ai 繪圖
ai 繪圖服務端(快速重構)
列表接口:
列表接口-請求方式
| Method | URL | Info | 
|---|---|---|
| GET | /api/{name} | 分頁:顺序查询 | 
| GET | /api/{name}?page=1&pageSize=20 | 分頁:页码和數量 | 
| GET | /api/{name}?user_id=1234 | 篩選:按用戶 | 
| GET | /api/{name}?tag=xxx | 篩選:按標籤 | 
| GET | /api/{name}?public=true | 篩選:公開狀態(true | 
| POST | /api/{name} | 篩選:創建新對象 | 
- 選取條件有多個的,以逗號分隔(並集)
 - 過濾條件有多個的,複寫query(交集)
 
詳情接口:
- /api/tags/{tag_id} #標籤詳情
 - /api/users/{user_id} #用戶詳情
 - /api/tasks/{task_id} #任務詳情
 - /api/models/{model_id} #模型詳情
 - /api/images/{image_id} #圖片詳情
 
詳情接口-請求方式:
| Method | URL | Info | 
|---|---|---|
| GET | /api/{name}/{item_id} | 獲取對象詳情 | 
| PATCH | /api/{name}/{item_id} | 修改對象字段 | 
| DELETE | /api/{name}/{item_id} | 刪除對象 | 
| WS | /api/{name}/{item_id} | Websocket 連接對象 | 
- GET查詢以外的操作都必須在headers中攜帶token驗證身份權限
 - GET查詢私有模型也必須登錄, 否則不會被展示
 
對象模型:
//// TODO
////训练专属模型模块
////创建模型=>前端对图片列表进行编辑=>获取右侧操作栏数据=>开始训练接=>我的数据集(模型列表)
////  創建模型
////      POST    /api/models
//        type:缺少创建模型的类型枚举
////    上传图片
////        缺少oss接口文档
////  训练模型
//        获取右侧操作栏数据(缺少接口)
////  开始训练接口websocket
////      会根据任务id一直返回进度=>(缺少接口)
////  我的数据集列表
////      缺少小图标统计描述,缺少任务id
////      GET     /api/models
////    模型详情
////        GET     /api/models/12345
////        缺少任务id,和模型进度
////  工作状态列表接口
//        - 需要补充字段描述
////      GET /api/tasks
// ListView 列表分頁
{
    page: 1,             // 当前页码
    pageSize: 20,        // 分页数
    next: true,          // 是否存在下一页
    list: []             // 列表數據
}
// Image 圖片對象
{
    id: 1234,        // 原图ID
    width: 512,      // 原图宽度
    height: 512,     // 原图高度
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
    user: {          // 来源用户
        id: 1234,
        user_name: 'LAST',
        createdAt: '',
        updatedAt: '',
    },
    article: {       // 来源文章
        id: 1234,
        title: 'GAMEX',
    }
}
// Model 模型對象
{
    id: 'xxxxx',     // 模型ID
    name: 'xxx',     // 模型名稱
    type: '',        // 模型類型(RoLa|SD2|SD1.5)
    status: 'xxx',   // 模型狀態(waiting|running|success|error)
    progress: 100,   // 訓練進度(0~100)
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
}
// Task 任務對象
{
    id: 'xxxxx',     // 任務ID
    name: 'xxx',     // 任務名稱
    status: 'xxx',   // 任務狀態(waiting|running|success|error)
    progress: 100,   // 任務進度(0~100)
    type: '',        // 任務類型(train|Inference)
    data: {          // 任務數據
        id: '',      // 模型ID
        ...          // 其它參數
    },
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
}
// User 用戶對象
{
    id: 'xxxxx',     // 用戶ID
    name: 'xxx',     // 用戶名稱
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
}
// Tag 標籤對象
{
    id: 'xxxxx',     // 標籤ID
    name: 'xxx',     // 標籤名稱
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
}
圖片列表
GET /api/images
{
    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
{
    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 | 按標籤分類篩選 | 
| GET | /api/models?public=true | 僅取公開的 | 
| GET | /api/models?public=false | 僅取私有的 | 
- 如果未登錄, 返回的結果將過濾掉無權限查看的內容
 - 如果已登錄, 返回的結果將包含私有的
 
POST /api/models
// 發送數據
{
    name: '',    // 設定名稱
    type: '',    // 指定訓練類型
    source: '',  // 指定源模型ID
    type: '',    // 模型類型(RoLa|SD2|SD1.5)
    data: {
        oss:     [], // 直接上傳到OSS的圖片地址列表
        images:  [], // 指定圖片的ID們
        choices: [], // 精選集的ID們
    },   // 指定數據集(可以是上傳到OSS的文件列表, 也可以是已有的圖片ID, 也可以是精選集ID)
}
// 返回數據
{
    id: 'xxx',     // 模型ID
    name: '',      // 模型名稱
    status: '',    // 模型狀態(必須訓練完成的才可用)
    createdAt: '', // 創建時間
    updatedAt: '', // 更新時間
}
模型詳情
GET /api/models/{model_id}
{
    id: 'xxxxx',     // 模型ID
    name: 'xxx',     // 模型名稱
    createdAt: '',   // 創建時間
    updatedAt: '',   // 更新時間
}
PATCH /api/models/{model_id}
{
    name: 'xxx',     // 修改模型名稱
}
- 修改指定字段, 只傳遞需要修改的字段
 
DELETE /api/models/{model_id}
- 刪除指定模型
 
獲取標籤
GET /api/tags
{
    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
{
    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}
{
    id: 'xxxx',    // 任務ID
    status: 'xxx', // 任務狀態(waiting|running|success|error)
    progress: 100, // 任務進度(0~100)
    data: {},      // 返回數據
}
- 使用websocket建立連接以對指定任務監聽狀態變化
 - 離開頁面時,或是任務結束時, 應斷開websocket連接
 - 當任務狀態發生變化時, 服務端向瀏覽器主動發送消息
 - 返回數據:任務執行中爲預覽, 任務完成時爲生成結果
 
Description
				
					Languages
				
				
								
								
									Go
								
								94.6%
							
						
							
								
								
									Shell
								
								5.4%