# 功能管理

## 接口设计

### 设计准则

#c 设计准则
为了满足以下需求:

1. 不同协议下的调用效果一致
2. 准确告知调用结果
3. 能够查询调用状态

#c 数据结构设计
所以就不给接口设计路由, 一切操作都通过同一个接口进行, 通过对应的参数来进行对应的区分
为了能够在不同的协议上获取到相同效果,还需要一个调用id,用于区分是那一次调用
因为调用接口是需要有参数的, 所以应该包含一个params字段,用于存储参数  
同时数据应该包含一个字段用于区分是响应, 还是调用, 还是通知  
通知字段用于不同端之间进行主动触发

#d 结构体设计  
使用json进行数据传递

| 字段名    | 描述                      | 可选值              |
|--------|-------------------------|------------------|
| type   | 类型, 用于区分是响应, 还是调用, 还是通知 | req, res, notify |
| action | 执行的什么操作                 |                  |
| callId | 调用id,用于区分是那一次调用         |                  |
| params | 参数, 使用传递参数              |                  |
| code   | 返回值                     |                  |
| msg    | 描述文字                    |                  |

## 桌面小组件管理功能

### 桌面编辑

1. 组件更改
   type: req
   action: magnet_edit
   params: 修改的组件信息
2. 移除组件
   

## 图像管理功能
### 功能设计
1. 图像浏览
浏览分类好后的图像库, 或者直接浏览指定目录下的图像. 可区分文件类型
2. 图像对比
在图片库中选择两张图片, 进行对比 . 
3. 图片库分享
可以将图像库分享给其他人, 让其他人可以浏览你的图像库, 也可以标记图片, 分享者能够查看对应的图片列表
4. 图像筛选
图片筛选完成后将指定图片直接移动图像到筛选完后的文件夹
5. 图像分类
图片可以直接移动至对应的分类文件夹, 也可以添加标签
6. 动态相册编辑
图片相册可以被动态变化
### 入口方式
1. 桌面小组件直接进入
2. 下方滚动条进入