topfans/backend/proto/Proto定义完整性检查文档.md
2026-04-07 22:29:48 +08:00

139 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Proto定义完整性检查
## 一、开发功能顺序文档中的Service层需求
根据 `开发功能顺序.md`UserService用户与认证服务包含以下Service层
### 3.1 认证ServiceAuthService
- ✅ Register
- ✅ Login
- ✅ Logout
- ✅ RefreshToken
- ✅ ValidateToken
### 4.1 用户信息ServiceUserService
- ✅ GetUser
- ✅ GetFanProfile
- ✅ GetMyProfile对应GetProfile
- ✅ UpdateNickname
- ✅ UpdatePassword对应ChangePassword
### 4.2 粉丝身份ServiceIdentityService
- ✅ GetFanIdentities已添加keyword参数支持搜索
- ✅ AddIdentity
- ✅ SwitchIdentity
## 二、Proto定义完整性总结
### ✅ 已完整覆盖所有Service层需求
#### 1. 认证Service3.1- 完整 ✅
所有5个方法都已定义proto消息和RPC
- `RegisterRequest` / `RegisterResponse`
- `LoginRequest` / `LoginResponse`
- `LogoutRequest` / `LogoutResponse`
- `RefreshTokenRequest` / `RefreshTokenResponse`
- `ValidateTokenRequest` / `ValidateTokenResponse`
#### 2. 用户信息Service4.1- 完整 ✅
所有5个方法都已定义proto消息和RPC
- `GetUserRequest` / `GetUserResponse`
- `GetFanProfileRequest` / `GetFanProfileResponse`
- `GetMyProfileRequest` / `GetMyProfileResponse`对应GetProfile
- `UpdateNicknameRequest` / `UpdateNicknameResponse`
- `UpdatePasswordRequest` / `UpdatePasswordResponse`
#### 3. 粉丝身份Service4.2- 完整 ✅
所有3个方法都已定义proto消息和RPC
- `GetFanIdentitiesRequest` / `GetFanIdentitiesResponse`已添加keyword字段
- `AddIdentityRequest` / `AddIdentityResponse`
- `SwitchIdentityRequest` / `SwitchIdentityResponse`
## 三、Service接口与Proto对应关系
### 3.1 认证Service接口映射
| Service方法 | Proto RPC | Request | Response |
|------------|-----------|---------|----------|
| `Register(req)` | `rpc Register` | `RegisterRequest` | `RegisterResponse` |
| `Login(req)` | `rpc Login` | `LoginRequest` | `LoginResponse` |
| `Logout(req)` | `rpc Logout` | `LogoutRequest` | `LogoutResponse` |
| `RefreshToken(req)` | `rpc RefreshToken` | `RefreshTokenRequest` | `RefreshTokenResponse` |
| `ValidateToken(req)` | `rpc ValidateToken` | `ValidateTokenRequest` | `ValidateTokenResponse` |
### 3.2 用户信息Service接口映射
| Service方法 | Proto RPC | Request | Response |
|------------|-----------|---------|----------|
| `GetUser(userID)` | `rpc GetUser` | `GetUserRequest` | `GetUserResponse` |
| `GetFanProfile(userID, starID)` | `rpc GetFanProfile` | `GetFanProfileRequest` | `GetFanProfileResponse` |
| `GetProfile(userID, starID)` | `rpc GetMyProfile` | `GetMyProfileRequest` | `GetMyProfileResponse` |
| `UpdateNickname(...)` | `rpc UpdateNickname` | `UpdateNicknameRequest` | `UpdateNicknameResponse` |
| `ChangePassword(...)` | `rpc UpdatePassword` | `UpdatePasswordRequest` | `UpdatePasswordResponse` |
**注意**
- `GetProfile` 使用 `GetMyProfile`通常获取当前登录用户信息从Token中获取user_id和star_id
- `ChangePassword` 使用 `UpdatePassword`
### 3.3 粉丝身份Service接口映射
| Service方法 | Proto RPC | Request | Response |
|------------|-----------|---------|----------|
| `GetAvailableIdentities(keyword)` | `rpc GetFanIdentities` | `GetFanIdentitiesRequest` | `GetFanIdentitiesResponse` |
| `AddIdentity(userID, starID)` | `rpc AddIdentity` | `AddIdentityRequest` | `AddIdentityResponse` |
| `SwitchIdentity(...)` | `rpc SwitchIdentity` | `SwitchIdentityRequest` | `SwitchIdentityResponse` |
**注意**
- `GetAvailableIdentities` 的`keyword`参数已添加到`GetFanIdentitiesRequest.keyword`
- `AddIdentity`和`SwitchIdentity`的参数会通过Token获取user_id或通过请求参数传递
## 四、答案总结
### 问题除了用户信息Service还有其他Service需要进行proto编写吗
**答案**:✅ **没有所有Service的proto定义已完整**
在UserService用户与认证服务的开发功能顺序文档中定义了**3个Service层**
1.**认证Service3.1** - proto定义完整
2.**用户信息Service4.1** - proto定义完整
3.**粉丝身份Service4.2** - proto定义完整已添加keyword参数
所有Service层的接口都已定义了对应的proto消息类型和RPC方法。
## 五、注意事项
### 5.1 Service接口与Proto的差异
有些Service接口的参数和proto定义略有不同这是正常的
1. **Token参数**Service接口可能接收token字符串但proto通常从Token中解析获取user_id和star_id
2. **方法名**Service接口可能使用`GetProfile`但proto使用`GetMyProfile`(更明确)
3. **参数传递**Service接口可能直接传递userID/starID但proto可能通过Token获取
这些差异需要在Handler层进行适配将proto请求转换为Service层的调用参数。
### 5.2 后续其他微服务的Proto
虽然当前UserService的proto已完整但整个微服务架构中还有其他服务
- **Asset Service** - 资产服务(后续开发)
- **Social Service** - 社交服务(后续开发)
- **Gallery Service** - 展馆服务(后续开发)
- **Task Service** - 任务服务(后续开发)
这些服务的proto定义会在各自服务开发时再创建。
## 六、验证清单
- [x] 认证Service所有接口已定义proto
- [x] 用户信息Service所有接口已定义proto
- [x] 粉丝身份Service所有接口已定义proto
- [x] GetFanIdentities已添加keyword参数
- [x] 所有proto消息类型与Service接口匹配
- [x] 所有RPC方法已定义并映射到REST API
## 七、结论
**当前UserService的所有Service层proto定义已完整可以开始开发Service层代码**