169 lines
4.5 KiB
Markdown
169 lines
4.5 KiB
Markdown
|
|
# 真实任务清单 - 基于实际代码状态
|
|||
|
|
|
|||
|
|
> 生成时间: 2026-03-12
|
|||
|
|
> 基于code-explorer深入代码分析的真实情况
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 编译修复任务(P0 - 必须完成)
|
|||
|
|
|
|||
|
|
### Task 1: 修复main.go编译错误 - 缺少Handler定义
|
|||
|
|
|
|||
|
|
**问题**: `cmd/server/main.go:86` 调用了未定义的变量
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
// 当前代码(第86行)
|
|||
|
|
r := router.NewRouter(authHandler, userHandler, roleHandler, permissionHandler, deviceHandler, authMiddleware, rateLimitMiddleware)
|
|||
|
|
// ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^
|
|||
|
|
// 未定义 未定义 未定义
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**需要修复**:
|
|||
|
|
- ✅ 定义 `roleHandler = handler.NewRoleHandler(roleService)`
|
|||
|
|
- ✅ 定义 `permissionHandler = handler.NewPermissionHandler(permissionService)`
|
|||
|
|
- ✅ 定义 `deviceHandler = handler.NewDeviceHandler(deviceService)`
|
|||
|
|
- ✅ 初始化对应的Service
|
|||
|
|
|
|||
|
|
**文件**: `cmd/server/main.go`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Task 2: 修复main.go编译错误 - AuthService参数不匹配
|
|||
|
|
|
|||
|
|
**问题**: `service.NewAuthService()` 调用参数数量不匹配
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
// 当前代码(第63-70行)
|
|||
|
|
authService := service.NewAuthService(
|
|||
|
|
userRepo,
|
|||
|
|
jwtManager,
|
|||
|
|
cacheManager,
|
|||
|
|
cfg.Security.PasswordMinLength,
|
|||
|
|
cfg.Security.LoginMaxAttempts,
|
|||
|
|
cfg.Security.LoginLockDuration,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// 但实际AuthService构造函数签名
|
|||
|
|
func NewAuthService(
|
|||
|
|
userRepo *repository.UserRepository,
|
|||
|
|
socialRepo *repository.SocialAccountRepository, // 缺少这个参数
|
|||
|
|
jwt *auth.JWT,
|
|||
|
|
cache *cache.CacheManager,
|
|||
|
|
passwordMin int,
|
|||
|
|
maxAttempts int,
|
|||
|
|
lockTime time.Duration,
|
|||
|
|
) *AuthService
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**需要修复**:
|
|||
|
|
- ✅ 初始化 `socialRepo = repository.NewSocialAccountRepository(db.DB)`
|
|||
|
|
- ✅ 添加 `socialRepo` 到 `NewAuthService()` 调用
|
|||
|
|
|
|||
|
|
**文件**: `cmd/server/main.go`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Task 3: 验证代码能否成功编译
|
|||
|
|
|
|||
|
|
**前提**: 完成Task 1和Task 2后
|
|||
|
|
|
|||
|
|
**验证步骤**:
|
|||
|
|
```bash
|
|||
|
|
cd c:/Users/Admin/WorkBuddy/20260310215221
|
|||
|
|
go build -o server.exe ./cmd/server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**期望结果**: 编译成功,生成 `server.exe`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 功能实现任务(P1 - 核心功能)
|
|||
|
|
|
|||
|
|
### Task 4: 实现验证码系统
|
|||
|
|
|
|||
|
|
**现状**: Handler中调用了 `GenerateState()` 和 `ValidateState()` 但函数不存在
|
|||
|
|
|
|||
|
|
**需要实现**:
|
|||
|
|
- ✅ `GenerateState()` - 生成随机state
|
|||
|
|
- ✅ `ValidateState(state)` - 验证state有效性
|
|||
|
|
- ✅ State存储和过期机制
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Task 5: 实现OAuth真实集成到AuthService
|
|||
|
|
|
|||
|
|
**现状**: Handler调用了OAuth方法但AuthService中没有实现
|
|||
|
|
|
|||
|
|
**需要实现**:
|
|||
|
|
- ✅ `OAuthLogin(ctx context.Context, provider string, state string) (string, error)`
|
|||
|
|
- ✅ `OAuthCallback(ctx context.Context, provider string, code string) (*LoginResponse, error)`
|
|||
|
|
- ✅ `BindSocialAccount(ctx context.Context, userID int64, provider, openID string) error`
|
|||
|
|
- ✅ `UnbindSocialAccount(ctx context.Context, userID int64, provider string) error`
|
|||
|
|
- ✅ `GetSocialAccounts(ctx context.Context, userID int64) ([]*domain.SocialAccount, error)`
|
|||
|
|
- ✅ `GetEnabledOAuthProviders() []auth.OAuthProviderInfo`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Task 6: 实现OAuth工具函数
|
|||
|
|
|
|||
|
|
**需要实现**:
|
|||
|
|
- ✅ HTTP请求封装(带超时、重试)
|
|||
|
|
- ✅ 错误处理(OAuth API错误解析)
|
|||
|
|
- ✅ JSON响应解析
|
|||
|
|
- ✅ State生成和验证
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Task 7: 实现GetEnabledOAuthProviders方法
|
|||
|
|
|
|||
|
|
**需要实现**:
|
|||
|
|
- ✅ 从OAuth配置读取已启用的提供商
|
|||
|
|
- ✅ 返回提供商列表和配置信息
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 测试任务(P1 - 真实测试)
|
|||
|
|
|
|||
|
|
### Task 8: 实现真实的E2E测试
|
|||
|
|
|
|||
|
|
**现状**: E2E测试使用Mock Handler,完全没测试真实服务
|
|||
|
|
|
|||
|
|
**需要实现**:
|
|||
|
|
- ✅ 启动真实HTTP服务器
|
|||
|
|
- ✅ 使用真实的Handler和Service
|
|||
|
|
- ✅ 使用真实数据库
|
|||
|
|
- ✅ 测试完整的HTTP请求/响应
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 新功能任务(P2 - 次要功能)
|
|||
|
|
|
|||
|
|
### Task 9-14: PRD要求的其他功能
|
|||
|
|
|
|||
|
|
详见完整文档...
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 任务优先级总结
|
|||
|
|
|
|||
|
|
### P0 - 阻塞上线(必须完成)- 预计1-2小时
|
|||
|
|
- [ ] Task 1: 修复main.go Handler定义
|
|||
|
|
- [ ] Task 2: 修复main.go AuthService参数
|
|||
|
|
- [ ] Task 3: 验证代码编译
|
|||
|
|
|
|||
|
|
### P1 - 核心功能(必须完成)- 预计5-7天
|
|||
|
|
- [ ] Task 4: 实现验证码系统
|
|||
|
|
- [ ] Task 5: 实现OAuth集成
|
|||
|
|
- [ ] Task 6: 实现OAuth工具函数
|
|||
|
|
- [ ] Task 7: 实现GetEnabledOAuthProviders
|
|||
|
|
- [ ] Task 8: 实现真实E2E测试
|
|||
|
|
- [ ] Task 15: 真实集成测试
|
|||
|
|
|
|||
|
|
### P2 - 次要功能 - 预计15-20天
|
|||
|
|
- [ ] Task 9: 实现2FA认证
|
|||
|
|
- [ ] Task 10: 实现Admin后台
|
|||
|
|
- [ ] Task 11: 实现Webhook
|
|||
|
|
- [ ] Task 12: 实现批量导入导出
|
|||
|
|
- [ ] Task 13: 实现SDK
|
|||
|
|
- [ ] Task 14: 实现安全功能
|