# 用户交互与社交

## 功能描述

SkillHub 提供了丰富的社交功能，让团队成员可以互动、分享、推荐技能包。

![概念图](/diagrams/social-concept.png)

**核心功能**：

- **星标（Star）**：收藏喜欢的技能包，方便后续查找
- **评分（Rating）**：给技能包打分（1-5 星），帮助其他人判断质量
- **下载统计**：记录下载次数，展示热门技能包
- **通知系统**：及时接收审核结果、评论回复等通知

**社交数据**：

| 指标 | 说明 |
|------|------|
| **星标数** | 有多少人收藏了这个技能包 |
| **平均评分** | 所有用户评分的平均值 |
| **下载量** | 累计下载次数 |
| **活跃度** | 最近更新时间、发布频率 |

## 使用场景

**场景一：收藏常用技能包**

开发者发现一个好用的技能包，点击星标收藏。

![操作截图](/screenshots/skill-detail-star.png)

**场景二：评分推荐**

使用技能包后，给出评分和评价，帮助团队其他成员。

**场景三：查看通知**

收到审核通过的通知，或者有人评论了你的技能包。

![操作截图](/screenshots/notifications.png)

**场景四：浏览热门**

查看星标数最多、评分最高的技能包，学习最佳实践。

## 使用步骤

**星标技能包**：

1. 访问技能包详情页
2. 点击「Star」按钮
3. 技能包会出现在「我的收藏」列表中
4. 再次点击可以取消星标

**评分技能包**：

1. 访问技能包详情页
2. 点击星星图标选择评分（1-5 星）
3. 评分会立即生效，影响技能包的平均评分
4. 可以随时修改评分

**查看通知**：

1. 点击顶部导航栏的通知图标
2. 查看未读通知列表
3. 点击通知跳转到相关页面
4. 标记为已读或全部已读

**查看我的收藏**：

1. 访问 `/dashboard/stars`
2. 查看所有星标的技能包
3. 按星标时间、更新时间排序
4. 快速访问常用技能包

## API 接口

**星标技能包**：
```bash
PUT /api/v1/skills/{skillId}/star
```

**取消星标**：
```bash
DELETE /api/v1/skills/{skillId}/star
```

**检查星标状态**：
```bash
GET /api/v1/skills/{skillId}/star
```

**响应示例**：
```json
{
  "starred": true,
  "starredAt": "2026-03-15T10:30:00Z"
}
```

**评分技能包**：
```bash
PUT /api/v1/skills/{skillId}/rating
Content-Type: application/json

{
  "score": 5
}
```

**参数说明**：
| 参数 | 类型 | 说明 |
|------|------|------|
| skillId | string | 技能包 ID（路径参数） |
| score | number | 评分（1-5，必需） |

**获取我的星标**：
```bash
GET /api/v1/me/stars?page=0&size=20
```

**获取我的评分**：
```bash
GET /api/v1/skills/{skillId}/rating
```

**响应示例**：
```json
{
  "score": 5,
  "ratedAt": "2026-03-15T10:30:00Z"
}
```

## 注意事项

> **评分规则**：每个用户对每个技能包只能评分一次，可以修改评分但不能删除。

- **星标数量**：技能包的星标数会显示在搜索结果和详情页
- **平均评分**：技能包的平均评分会影响搜索排序
- **通知设置**：用户可以在设置中关闭某些类型的通知
- **下载统计**：每次下载都会增加下载计数，用于热门排序
