# TaskService 未完成事项 > 生成时间:2026-04-14 ## 一、阻塞性问题(阻断编译/运行) ### 1. Proto 编译未执行 **问题**:编译脚本已修改但未执行,`pkg/proto/` 下无生成代码。 **影响**:`go build ./...` 会失败,找不到 `task.pb.go` 和 `task.triple.go`。 **操作**: ```bash cd backend && sh scripts/compile-proto.sh ``` **前提**:环境需安装 `go` 和 `protoc`。git --- ### 2. Dubbo Server 注册代码被注释 **文件**:`backend/services/taskService/main.go:120-124` ```go // 注意:这里需要 TaskMobileService 和 TaskInternalService 的 RegisterHandler // 这些会在 proto 编译后生成。在 proto 编译之前,这里会报编译错误。 // Task 15 完成 proto 编译后,需要将下面的注释替换为实际的注册代码。 logger.Logger.Info(fmt.Sprintf("taskService configured on port %d, awaiting proto registration", *port)) ``` **影响**:服务启动后没有注册任何 RPC handler,客户端无法调用。 **修复**:proto 编译后需添加类似以下代码: ```go pb.RegisterTaskMobileServiceHandler(srv, mobileProvider) pb.RegisterTaskInternalServiceHandler(srv, internalProvider) ``` --- ## 二、代码缺陷(运行时 Bug) ### 3. `UpdateOnboardingProgress` 方法缺失 **文件**:`backend/services/taskService/repository/onboarding_repo.go` **问题**: - 接口 `OnboardingRepository` 缺少 `UpdateOnboardingProgress` 方法 - `onboarding_service.go:172-176` 的 `updateOnboardingProgress` 直接返回 `nil`,未实际更新数据 ```go func (s *onboardingService) updateOnboardingProgress(progress *model.UserOnboardingProgress) error { // 需要在 repository 中添加 UpdateOnboardingProgress 方法 // 这里暂时用 GORM 直接更新 return nil // ← BUG: 没有真正更新 } ``` **影响**:`CompleteGuide` 完成任务后进度状态不会更新。 **修复**:在 `onboarding_repo.go` 添加: ```go // OnboardingRepository 接口添加: UpdateOnboardingProgress(progress *model.UserOnboardingProgress) error // 实现: func (r *onboardingRepository) UpdateOnboardingProgress(progress *model.UserOnboardingProgress) error { progress.UpdatedAt = gorm.NowFunc().Unix() return r.db.Save(progress).Error } ``` 然后 `onboarding_service.go` 中调用 `s.onboardingRepo.UpdateOnboardingProgress(progress)`。 --- ### 4. `ListCompletedDailyTasks` 方法缺失 **文件**:`backend/services/taskService/repository/daily_task_repo.go` **问题**:`daily_task_service.go:204` 调用 `s.dailyRepo.ListCompletedDailyTasks()`,但该方法不存在。 **影响**:`ClaimAllDailyTasks` 调用会编译报错。 **修复**:在 `daily_task_repo.go` 添加: ```go // DailyTaskRepository 接口添加: ListCompletedDailyTasks(userID, starID int64) ([]*model.UserDailyTaskProgress, error) // 实现: func (r *dailyTaskRepository) ListCompletedDailyTasks(userID, starID int64) ([]*model.UserDailyTaskProgress, error) { var progressList []*model.UserDailyTaskProgress err := r.db.Where("user_id = ? AND star_id = ? AND status = ?", userID, starID, "completed"). Find(&progressList).Error return progressList, err } ``` --- ### 5. `CompleteGuide` 中死代码 **文件**:`backend/services/taskService/onboarding_service.go:154-156` ```go if err := s.onboardingRepo.UpdateOnboardingStatus(&model.UserOnboardingStatus{UserID: userID}); err != nil { // UpdateOnboardingStatus is for status table, not progress } // ← 无意义的空调用,应该删除 ``` **影响**:代码冗余,不影响功能但影响可读性。 **修复**:删除第 154-156 行。 --- ## 三、前端缺陷 ### 6. `guide.vue` 任务完成状态判断错误 **文件**:`frontend/pages/tasks/guide.vue:129-134` ```javascript function isTaskCompleted(stage, taskKey) { // 这里需要根据实际数据结构判断 // 假设 completed 状态的任务 key 会被标记 // 暂时返回 false,实际需要后端返回更详细的状态 return false // ← BUG: 永远返回 false } ``` **影响**:引导页面的任务永远显示为未完成,用户无法正确看到进度。 **修复**:参考后端 `GetOnboardingStatus` 的逻辑,从 `stage.required_task_keys` 和进度数据判断。 --- ### 7. `daily_task_service.go` 错误被忽略 **文件**:`backend/services/taskService/service/daily_task_service.go:229,234` ```go // 发放水晶奖励 if def.CrystalReward > 0 { s.userClient.UpdateCrystalBalance(ctx, userID, starID, def.CrystalReward) // ← 错误被忽略 } // 发放经验奖励 if def.ExpReward > 0 { s.userClient.AddExperience(ctx, userID, starID, def.ExpReward) // ← 错误被忽略 } ``` **影响**:`ClaimAllDailyTasks` 中奖励发放失败时不报错,可能导致用户未收到奖励。 **修复**:添加错误处理和日志。 --- ## 四、已完成的修复 ### 8. `AddExperience` RPC 已添加 - **user.proto**:已添加 `AddExperienceRequest/Response` 消息和 RPC 定义 - **user_rpc_client.go**:已有完整实现 等待 proto 编译后即可使用。 --- ## 五、已完成的修复清单 | # | 修复项 | 文件 | 状态 | |---|--------|------|------| | 2 | `UpdateOnboardingProgress` 方法 | onboarding_repo.go | ✅ 已完成 | | 3 | `ListCompletedDailyTasks` 方法 | daily_task_repo.go | ✅ 已完成 | | 5 | guide.vue isTaskCompleted | guide.vue | ✅ 已完成 | | 6 | onboarding_service.go 死代码 | service 层重构 | ✅ 已解决(新建服务文件) | | 7 | ClaimAllDailyTasks 错误处理 | daily_task_service.go | ✅ 已完成 | | 9 | Service 层创建 | service/*.go | ✅ 已完成 | | 10 | gorm.NowFunc() 修复 | revenue_repo.go, onboarding_repo.go | ✅ 已完成 | | 11 | Proto 编译 | pkg/proto/task/*.go | ✅ 已完成 | | 12 | main.go Dubbo 注册代码 | main.go | ✅ 已完成 | --- ## 六、已完成的操作清单 所有计划中的任务已完成!TaskService 现已可以成功编译。 --- ## 七、编译验证 ```bash cd backend && go build ./services/taskService/... # ✅ BUILD SUCCESS ```