Просмотр исходного кода

refactor(G1-L1): neutralize parent/child wording in user-visible copy

terminology-neutralize-l1 (L1 wording layer, spec 3.2):
- mini-app .vue (pages+components): 家长->本人/家庭成员, 孩子->家庭成员/儿童,
  age-context 成人/儿童/长者; comments included. Excluded (whitelist, A2):
  pages/activity/create.vue + activity-detail.vue (activity pricing UI).
- backend user-visible strings: toast/Result messages, @Operation/@Tag,
  message templates, AI prompts (application.yml, cognitive-recommendations.yml),
  seed copy (seed-test-data.sql, mbti_seed_data.sql, schema_service_guide.sql),
  comment/log wording swept for grep cleanliness.
- no DB column comments, no API paths, no page dirs, no Java identifiers changed.
- skipped (A2 parallel): Activity.java, ActivityDTO.java, ActivityOrderService.java,
  DatabaseInitializer.java (66 lines), schema.sql (45 lines).

verify: mvn compile EXIT=0; node scripts/verify-vue-compile.js PASS (385/385/385).
E2E Test Bot 2 недель назад
Родитель
Сommit
04d87cfd1a
100 измененных файлов с 230 добавлено и 230 удалено
  1. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java
  2. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/config/PromptConfig.java
  3. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/ActivityController.java
  4. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/BadgeController.java
  5. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/DanAssessmentController.java
  6. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/EmiReportController.java
  7. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/EnergyController.java
  8. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/FamilyChallengeController.java
  9. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthExerciseController.java
  10. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java
  11. 6 6
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthReportController.java
  12. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthSleepController.java
  13. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthWaterController.java
  14. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/InviteCardController.java
  15. 5 5
      cfc-backend/src/main/java/com/etotem/cfc/controller/ProblemSurveyController.java
  16. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/SeedEnergyController.java
  17. 5 5
      cfc-backend/src/main/java/com/etotem/cfc/controller/StreakController.java
  18. 9 9
      cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminController.java
  19. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DataMigrationController.java
  20. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentAppointmentController.java
  21. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentComparisonController.java
  22. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentReportController.java
  23. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentResultController.java
  24. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/CognitiveController.java
  25. 4 4
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindController.java
  26. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindInviteController.java
  27. 4 4
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/FamilyController.java
  28. 9 9
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/FamilyUserController.java
  29. 8 8
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/ParentController.java
  30. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/TeacherFamilyBindingController.java
  31. 5 5
      cfc-backend/src/main/java/com/etotem/cfc/controller/growth/GrowthPlanController.java
  32. 6 6
      cfc-backend/src/main/java/com/etotem/cfc/controller/growth/GrowthRecordController.java
  33. 6 6
      cfc-backend/src/main/java/com/etotem/cfc/controller/guide/GuideFamilyTaskController.java
  34. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/guide/GuideRecordController.java
  35. 7 7
      cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TeacherMessageController.java
  36. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TrainingPlanController.java
  37. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/mind/EmotionAlertController.java
  38. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/parent/ParentAssessmentController.java
  39. 4 4
      cfc-backend/src/main/java/com/etotem/cfc/controller/parent/ParentDashboardController.java
  40. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/reward/RewardWishlistController.java
  41. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/stats/StatsController.java
  42. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/task/TaskController.java
  43. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/tianpan/TianpanController.java
  44. 10 10
      cfc-backend/src/main/java/com/etotem/cfc/controller/wish/WishController.java
  45. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/AdjustPointsDTO.java
  46. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/AdminAdjustPointsDTO.java
  47. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/ApplyAfterPaymentDTO.java
  48. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/ApplyPackageDTO.java
  49. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/AssessmentCreateAppointmentDTO.java
  50. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/CompleteGameDTO.java
  51. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/CreateGrowthRecordDTO.java
  52. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/CreateRewardWishlistDTO.java
  53. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/dto/CreateTaskDTO.java
  54. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/dto/CreateWishDTO.java
  55. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/FamilyMemberVO.java
  56. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/InviteAcceptDTO.java
  57. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/LoginResultDTO.java
  58. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/MemberCoverageDTO.java
  59. 8 8
      cfc-backend/src/main/java/com/etotem/cfc/dto/MemberEnergyDTO.java
  60. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/MinigameCompleteDTO.java
  61. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/PackagePurchaseDTO.java
  62. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/PointsLogVO.java
  63. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/RecommendRequestDTO.java
  64. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/RewardDTO.java
  65. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/RewardExchangeDTO.java
  66. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/StudentInfoDTO.java
  67. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/SwitchToChildDTO.java
  68. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/dto/SyncExternalResultDTO.java
  69. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/UnlockStatusDTO.java
  70. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/UpdateUserDTO.java
  71. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/dto/WishDTO.java
  72. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/AssessmentResult.java
  73. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/entity/DanAssessmentResult.java
  74. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/EnergyBalance.java
  75. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/EnergyLog.java
  76. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/FamilyMember.java
  77. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/FollowUp.java
  78. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/MembershipLevel.java
  79. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/RecommendationLog.java
  80. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/ReportSurvey.java
  81. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/RewardWishlist.java
  82. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/ShoppingList.java
  83. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/Task.java
  84. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/TaskPlanInstance.java
  85. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/TaskReminderConfig.java
  86. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/TeacherFamilyBindingRequest.java
  87. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/TeacherMessage.java
  88. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/TrainingPlan.java
  89. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/TrainingPlanTask.java
  90. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/entity/User.java
  91. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/entity/Wish.java
  92. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/service/AccountCleanupService.java
  93. 4 4
      cfc-backend/src/main/java/com/etotem/cfc/service/ActivityService.java
  94. 5 5
      cfc-backend/src/main/java/com/etotem/cfc/service/AiContextService.java
  95. 3 3
      cfc-backend/src/main/java/com/etotem/cfc/service/ArticleService.java
  96. 2 2
      cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentComparisonService.java
  97. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentQuotaService.java
  98. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentService.java
  99. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/service/BadgeService.java
  100. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/service/BindInviteService.java

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java

@@ -174,7 +174,7 @@ private static final String[] PUBLIC_PATHS = {
             Long familyId = (Long) request.getAttribute("familyId");
             if (familyId != null) {
                 try {
-                    // T24-C:同 (user_id, family_id) 可能存在多条"家长本人"重复记录,
+                    // T24-C:同 (user_id, family_id) 可能存在多条"本人"重复记录,
                     // 旧实现 .last("LIMIT 1") 无排序、取值不确定,导致 currentMemberId 在
                     // 双身份下请求间漂移(睡眠打卡 500 根因之一)。改为确定性取值:
                     // 非 recycled(优先 status='active')→ is_admin=1(主成员)→ id 最小。

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/config/PromptConfig.java

@@ -13,10 +13,10 @@ import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "ai.prompts")
 public class PromptConfig {
 
-    /** 关系问卷·家长视角模板 */
+    /** 关系问卷·本人视角模板 */
     private String questionnaireParent = "";
 
-    /** 关系问卷·孩子视角模板 */
+    /** 关系问卷·成员视角模板 */
     private String questionnaireChild = "";
 
     /** 舌诊分析系统提示词 */

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/ActivityController.java

@@ -133,7 +133,7 @@ public class ActivityController {
         }
         // single registration (backward compatibility)
         Long memberId = ParamUtils.getLong(params.get("memberId"), currentMemberId);
-        if (memberId == null) return Result.error("孩子ID不能为空");
+        if (memberId == null) return Result.error("成员ID不能为空");
         return registrationService.register(activityId, userId, memberId);
     }
 
@@ -143,7 +143,7 @@ public class ActivityController {
         Long activityId = ParamUtils.getLong(params.get("id"));
         Long memberId = ParamUtils.getLong(params.get("memberId"), currentMemberId);
         if (activityId == null) return Result.error("活动ID不能为空");
-        if (memberId == null) return Result.error("孩子ID不能为空");
+        if (memberId == null) return Result.error("成员ID不能为空");
         return registrationService.cancel(activityId, userId, memberId);
     }
 

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/BadgeController.java

@@ -80,9 +80,9 @@ public class BadgeController {
         return Result.success("授予成功");
     }
 
-    // ===== 孩子勋章 =====
+    // ===== 家庭成员勋章 =====
 
-    @Operation(summary = "获取孩子的勋章列表")
+    @Operation(summary = "获取成员的勋章列表")
     @PostMapping("/child/list")
     public Result<List<Map<String, Object>>> getChildBadges(@RequestBody Map<String, Object> body,
                                                             @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
@@ -113,7 +113,7 @@ public class BadgeController {
 
     // ===== 统计与排行 =====
 
-    @Operation(summary = "孩子勋章统计")
+    @Operation(summary = "成员勋章统计")
     @PostMapping("/statistics/child")
     public Result<Map<String, Object>> getChildStats(@RequestBody Map<String, Object> body,
                                                      @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/DanAssessmentController.java

@@ -434,7 +434,7 @@ public class DanAssessmentController {
         return Result.error(r.getCode() == null ? 500 : r.getCode(), r.getMessage());
     }
 
-    @Operation(summary = "获取某孩子某维度的 DAN 报告列表")
+    @Operation(summary = "获取某成员某维度的 DAN 报告列表")
     @PostMapping("/report/child")
     public Result<List<DanAssessmentResult>> getChildDanReports(@RequestBody Map<String, Object> body) {
         Long memberId = ParamUtils.getLong(body.get("memberId"));

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/EmiReportController.java

@@ -20,7 +20,7 @@ public class EmiReportController {
     @Resource
     private EmiReportService emiReportService;
 
-    @Operation(summary = "获取孩子最新EMI心理报告")
+    @Operation(summary = "获取成员最新EMI心理报告")
     @PostMapping("/latest")
     public Result<EmiReportDTO> getLatestReport(@RequestBody Map<String, Object> body,
                                                 @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
@@ -36,7 +36,7 @@ public class EmiReportController {
         return Result.success(dto);
     }
 
-    @Operation(summary = "获取家庭所有孩子的EMI心理报告(用于计算家庭平均分)")
+    @Operation(summary = "获取家庭所有成员的EMI心理报告(用于计算家庭平均分)")
     @PostMapping("/family")
     public Result<List<EmiReportDTO>> getFamilyLatestReports(
             @RequestBody Map<String, Object> body,

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/EnergyController.java

@@ -151,7 +151,7 @@ public class EnergyController {
     }
 
     /**
-     * 获取孩子五维能量概览
+     * 获取家庭成员五维能量概览
      */
     @Operation(summary = "获取五维能量概览")
     @PostMapping("/overview")

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/FamilyChallengeController.java

@@ -40,7 +40,7 @@ public class FamilyChallengeController {
                                        @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
         // 新模型下 role 不再有 'child',此条件永远为 true(历史兼容)
         if (!"child".equals(role)) {
-            return Result.error("仅孩子可打卡");
+            return Result.error("仅家庭成员可打卡");
         }
         if (currentMemberId == null) {
             return Result.error("未识别当前成员");
@@ -85,7 +85,7 @@ public class FamilyChallengeController {
                                         @RequestAttribute(value = "familyId", required = false) Long familyId,
                                         @RequestAttribute("userId") Long userId) {
         if (!"parent".equals(role)) {
-            return Result.error("仅家长可修改挑战");
+            return Result.error("仅家庭主账号可修改挑战");
         }
         return familyChallengeService.updateChallenge(challengeId, userId, familyId, params);
     }
@@ -96,7 +96,7 @@ public class FamilyChallengeController {
                                         @RequestAttribute(value = "familyId", required = false) Long familyId,
                                         @RequestAttribute("userId") Long userId) {
         if (!"parent".equals(role)) {
-            return Result.error("仅家长可删除挑战");
+            return Result.error("仅家庭主账号可删除挑战");
         }
         return familyChallengeService.deleteChallenge(challengeId, userId, familyId);
     }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthExerciseController.java

@@ -94,7 +94,7 @@ public class HealthExerciseController {
             if (record.getTaskId() != null) {
                 Task linkedTask = taskMapper.selectById(record.getTaskId());
                 if (linkedTask != null) {
-                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家长切孩子视角场景)
+                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家庭主账号切成员视角场景)
                     if (linkedTask.getFamilyMemberId() != null &&
                         record.getMemberId() != null &&
                         !linkedTask.getFamilyMemberId().equals(record.getMemberId())) {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java

@@ -254,7 +254,7 @@ public class HealthMealController {
                 if (record.getTaskId() != null) {
                     Task linkedTask = taskMapper.selectById(record.getTaskId());
                     if (linkedTask != null) {
-                        // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家长切孩子视角场景)
+                        // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家庭主账号切成员视角场景)
                         if (linkedTask.getFamilyMemberId() != null &&
                             record.getMemberId() != null &&
                             !linkedTask.getFamilyMemberId().equals(record.getMemberId())) {

+ 6 - 6
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthReportController.java

@@ -289,7 +289,7 @@ public class HealthReportController {
     }
 
     /**
-     * 获取孩子的最新健康报告
+     * 获取家庭成员的最新健康报告
      */
     @Operation(summary = "获取最新健康报告")
     @PostMapping("/report/latest")
@@ -309,7 +309,7 @@ public class HealthReportController {
     }
 
     /**
-     * 获取孩子的所有健康报告列表
+     * 获取家庭成员的所有健康报告列表
      * 未传 memberId 时返回当前家庭的全部报告;传 memberId 时按成员过滤(兼容 users.id / family_members.id)
      */
     @Operation(summary = "获取健康报告列表")
@@ -559,7 +559,7 @@ public class HealthReportController {
 
 
     /**
-     * 获取孩子身体维度数据详情(健康指标解读)
+     * 获取家庭成员身体维度数据详情(健康指标解读)
      */
     @Operation(summary = "获取身体维度数据详情")
     @PostMapping("/body/detail")
@@ -1765,7 +1765,7 @@ public class HealthReportController {
         return Result.success(records);
     }
 
-    @Operation(summary = "获取孩子营养档案")
+    @Operation(summary = "获取家庭成员营养档案")
     @PostMapping("/nutrition/profile")
     public Result<Map<String, Object>> getNutritionProfile(
             @RequestBody Map<String, Object> params) {
@@ -1860,8 +1860,8 @@ public class HealthReportController {
             // 指定报告:返回该报告的食材推荐
             foods = foodService.listByReportId(reportId);
         } else {
-            // 未指定报告:优先用 memberId(孩子视角),其次 JWT userId(家长视角)
-            // food_recommend_idx 以 subjectId 维度写入,家长 JWT userId 查不到孩子的推荐
+            // 未指定报告:优先用 memberId(成员视角),其次 JWT userId(本人视角)
+            // food_recommend_idx 以 subjectId 维度写入,家庭主账号 JWT userId 查不到家庭成员的推荐
             Long memberId = params != null ? ParamUtils.getLong(params.get("memberId")) : null;
             Long uid = memberId != null ? memberId : (userId != null ? userId : -1L);
             foods = foodRecommendService.getCurrentFoodsAsFoodList(uid);

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthSleepController.java

@@ -72,7 +72,7 @@ public class HealthSleepController {
             if (record.getTaskId() != null) {
                 Task linkedTask = taskMapper.selectById(record.getTaskId());
                 if (linkedTask != null) {
-                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家长切孩子视角场景)
+                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家庭主账号切成员视角场景)
                     if (linkedTask.getFamilyMemberId() != null &&
                         record.getMemberId() != null &&
                         !linkedTask.getFamilyMemberId().equals(record.getMemberId())) {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthWaterController.java

@@ -70,7 +70,7 @@ public class HealthWaterController {
             try {
                 Task linkedTask = taskMapper.selectById(record.getTaskId());
                 if (linkedTask != null) {
-                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家长切孩子视角场景)
+                    // 以任务归属为准修正记录成员,避免打卡记录与任务串号(家庭主账号切成员视角场景)
                     // T24-B:与睡眠/运动/饮食打卡对齐,先自纠成员再按【具体 taskId】关闭
                     if (linkedTask.getFamilyMemberId() != null &&
                         record.getMemberId() != null &&

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/InviteCardController.java

@@ -63,10 +63,10 @@ public class InviteCardController {
             refId = Long.valueOf(refIdObj.toString());
             FamilyMember child = familyMemberMapper.selectById(refId);
             if (child == null) {
-                return Result.error("孩子不存在");
+                return Result.error("家庭成员不存在");
             }
             if (!Objects.equals(user.getFamilyId(), child.getFamilyId())) {
-                return Result.error("无权生成该孩子的邀请");
+                return Result.error("无权生成该家庭成员的邀请");
             }
         } else if ("family".equals(type) || "guide".equals(type)) {
             if (familyId == null) {

+ 5 - 5
cfc-backend/src/main/java/com/etotem/cfc/controller/ProblemSurveyController.java

@@ -391,16 +391,16 @@ public class ProblemSurveyController {
     private static Map<String, String> buildDefaultQuestions() {
         Map<String, String> map = new HashMap<>();
         map.put("weight_loss", "["
-                + "{\"id\":\"q1\",\"text\":\"目前孩子的体重情况如何?\",\"multi\":false,"
+                + "{\"id\":\"q1\",\"text\":\"目前儿童的体重情况如何?\",\"multi\":false,"
                 + "\"options\":[{\"id\":\"o1\",\"text\":\"偏瘦\",\"tag\":\"体重偏瘦\"},"
                 + "{\"id\":\"o2\",\"text\":\"正常\",\"tag\":\"\"},"
                 + "{\"id\":\"o3\",\"text\":\"偏胖\",\"tag\":\"体重偏胖\"}]},"
-                + "{\"id\":\"q2\",\"text\":\"孩子的饮食结构如何?(可多选)\",\"multi\":true,"
+                + "{\"id\":\"q2\",\"text\":\"儿童的饮食结构如何?(可多选)\",\"multi\":true,"
                 + "\"options\":[{\"id\":\"o1\",\"text\":\"零食饮料多\",\"tag\":\"零食饮料\"},"
                 + "{\"id\":\"o2\",\"text\":\"主食过量\",\"tag\":\"主食过量\"},"
                 + "{\"id\":\"o3\",\"text\":\"蔬菜水果少\",\"tag\":\"蔬果不足\"},"
                 + "{\"id\":\"o4\",\"text\":\"三餐规律\",\"tag\":\"\"}]},"
-                + "{\"id\":\"q3\",\"text\":\"孩子每天运动情况如何?\",\"multi\":false,"
+                + "{\"id\":\"q3\",\"text\":\"儿童每天运动情况如何?\",\"multi\":false,"
                 + "\"options\":[{\"id\":\"o1\",\"text\":\"很少运动\",\"tag\":\"运动不足\"},"
                 + "{\"id\":\"o2\",\"text\":\"每周1-2次\",\"tag\":\"运动不足\"},"
                 + "{\"id\":\"o3\",\"text\":\"每周3次以上\",\"tag\":\"运动良好\"}]},"
@@ -409,7 +409,7 @@ public class ProblemSurveyController {
                 + "{\"id\":\"o2\",\"text\":\"培养饮食习惯\",\"tag\":\"饮食管理\"},"
                 + "{\"id\":\"o3\",\"text\":\"增加运动\",\"tag\":\"运动习惯\"}]}]");
         map.put("sleep", "["
-                + "{\"id\":\"q1\",\"text\":\"孩子每晚睡眠时长大约多少?\",\"multi\":false,"
+                + "{\"id\":\"q1\",\"text\":\"儿童每晚睡眠时长大约多少?\",\"multi\":false,"
                 + "\"options\":[{\"id\":\"o1\",\"text\":\"不足8小时\",\"tag\":\"睡眠不足\"},"
                 + "{\"id\":\"o2\",\"text\":\"8-10小时\",\"tag\":\"睡眠正常\"},"
                 + "{\"id\":\"o3\",\"text\":\"超过10小时\",\"tag\":\"睡眠过多\"}]},"
@@ -428,7 +428,7 @@ public class ProblemSurveyController {
                 + "{\"id\":\"o3\",\"text\":\"情绪烦躁\",\"tag\":\"情绪波动\"},"
                 + "{\"id\":\"o4\",\"text\":\"精力充沛\",\"tag\":\"\"}]}]");
         map.put("constipation", "["
-                + "{\"id\":\"q1\",\"text\":\"孩子排便频率如何?\",\"multi\":false,"
+                + "{\"id\":\"q1\",\"text\":\"儿童排便频率如何?\",\"multi\":false,"
                 + "\"options\":[{\"id\":\"o1\",\"text\":\"每天1次以上\",\"tag\":\"\"},"
                 + "{\"id\":\"o2\",\"text\":\"2-3天1次\",\"tag\":\"排便频率低\"},"
                 + "{\"id\":\"o3\",\"text\":\"3天以上1次\",\"tag\":\"便秘\"}]},"

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/SeedEnergyController.java

@@ -45,7 +45,7 @@ public class SeedEnergyController {
         user.setTotalPoints(300);
         userMapper.updateById(user);
 
-        // 2. 插入家长任务 (executorType=parent, executorId=userId)
+        // 2. 插入家庭主账号任务 (executorType=parent, executorId=userId)
         // 身 — 运动/健康类
         createTask(familyId, userId, "parent", "晨跑30分钟", "运动", "completed");
         createTask(familyId, userId, "parent", "健身房训练", "体育", "completed");
@@ -59,7 +59,7 @@ public class SeedEnergyController {
         createTask(familyId, userId, "parent", "亲子沟通训练", "亲子", "completed");
         createTask(familyId, userId, "parent", "情绪管理笔记", "成长", "completed");
         createTask(familyId, userId, "parent", "听家庭教育讲座", "学习", "completed");
-        createTask(familyId, userId, "parent", "每天陪孩子聊天20分钟", "亲子", "completed");
+        createTask(familyId, userId, "parent", "每天陪家人聊天20分钟", "亲子", "completed");
 
         // 智 — 学习/培训类
         createTask(familyId, userId, "parent", "学习Python基础", "学习", "completed");
@@ -76,7 +76,7 @@ public class SeedEnergyController {
         createTask(familyId, userId, "parent", "每天冥想10分钟", "好习惯", "completed");
         createTask(familyId, userId, "parent", "不熬夜打卡", "自律", "pending");
 
-        return Result.success("种子数据生成成功,家长任务已插入,积分已更新");
+        return Result.success("种子数据生成成功,家庭任务已插入,积分已更新");
     }
 
     private void createTask(Long familyId, Long executorId,

+ 5 - 5
cfc-backend/src/main/java/com/etotem/cfc/controller/StreakController.java

@@ -28,7 +28,7 @@ public class StreakController {
     private FamilyMemberMapper familyMemberMapper;
 
     /**
-     * 获取孩子的打卡进度信息
+     * 获取家庭成员的打卡进度信息
      */
     @Operation(summary = "获取打卡进度")
     @PostMapping("/progress/{memberId}")
@@ -36,7 +36,7 @@ public class StreakController {
             @RequestAttribute(value = "userId", required = false) Long userId,
             @PathVariable Long memberId) {
 
-        // 权限校验:验证用户是否有权限查看该孩子
+        // 权限校验:验证用户是否有权限查看该家庭成员
         if (userId != null) {
             User user = userMapper.selectById(userId);
             if (user == null) {
@@ -45,12 +45,12 @@ public class StreakController {
 
             FamilyMember child = familyMemberMapper.selectById(memberId);
             if (child == null) {
-                return Result.error("孩子不存在");
+                return Result.error("家庭成员不存在");
             }
 
-            // 验证孩子是否属于用户的家庭
+            // 验证家庭成员是否属于用户的家庭
             if (!child.getFamilyId().equals(user.getFamilyId())) {
-                return Result.error("无权限查看该孩子的打卡记录");
+                return Result.error("无权限查看该家庭成员的打卡记录");
             }
         }
 

+ 9 - 9
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminController.java

@@ -100,7 +100,7 @@ public class AdminController {
 
     /**
      * 校验当前请求是否具备平台角色(admin/operator/finance)。
-     * 用于用户/孩子/任务模板等管理类端点,防止匿名或 C 端角色越权调用。
+     * 用于用户/家庭成员/任务模板等管理类端点,防止匿名或 C 端角色越权调用。
      * 返回 null 表示通过,否则返回应直接回传的错误结果。
      */
     private Result<?> requirePlatformRole(Object roleObj, Object rolesObj) {
@@ -314,7 +314,7 @@ public class AdminController {
         return ok ? Result.success(true) : Result.error("用户不存在或删除失败");
     }
 
-    // 孩子管理
+    // 家庭成员管理
     @PostMapping("/children")
     public Result<Page<FamilyMember>> getChildren(@RequestBody Map<String, Object> params,
                                                   @RequestAttribute(value = "role", required = false) Object roleObj,
@@ -369,7 +369,7 @@ public class AdminController {
 
         FamilyMember child = familyMemberMapper.selectById(id);
         if (child == null) {
-            return Result.error("孩子不存在");
+            return Result.error("家庭成员不存在");
         }
 
         int newBalance = child.getTotalPoints() + amount;
@@ -834,13 +834,13 @@ public class AdminController {
         }
 
         // 统一成员列表:family_members(含创建者)+ users 中 role=parent 且未落入 family_members 的成员
-        // 仅区分「管理员 / 成员」,不区分家长 / 孩子
+        // 仅区分「管理员 / 成员」,不区分家庭主账号 / 家庭成员
         LambdaQueryWrapper<FamilyMember> memberWrapper = new LambdaQueryWrapper<>();
         memberWrapper.eq(FamilyMember::getFamilyId, id);
         SortUtil.applySort(memberWrapper);
         java.util.List<FamilyMember> familyMembers = familyMemberMapper.selectList(memberWrapper);
 
-        // 收集已落入 family_members 的 user_id,避免与 users 家长重复
+        // 收集已落入 family_members 的 user_id,避免与 users 家庭主账号重复
         java.util.Set<Long> coveredUserIds = new java.util.HashSet<>();
         for (FamilyMember fm : familyMembers) {
             if (fm.getUserId() != null) {
@@ -848,7 +848,7 @@ public class AdminController {
             }
         }
 
-        // 通过邀请码加入、未写入 family_members 的家长
+        // 通过邀请码加入、未写入 family_members 的家庭主账号
         LambdaQueryWrapper<User> parentWrapper = new LambdaQueryWrapper<>();
         parentWrapper.eq(User::getFamilyId, id).eq(User::getRole, "parent");
         SortUtil.applySort(parentWrapper);
@@ -879,7 +879,7 @@ public class AdminController {
             members.add(m);
         }
 
-        // users 来源家长(未落入 family_members)
+        // users 来源家庭主账号(未落入 family_members)
         for (User u : parents) {
             if (coveredUserIds.contains(u.getId())) {
                 continue;
@@ -1947,7 +1947,7 @@ public class AdminController {
             User user = userMapper.selectById(app.getUserId());
             item.put("userName", user != null ? user.getNickname() : "未知用户");
 
-            // 关联查询家庭成员名称(孩子)
+            // 关联查询家庭成员名称(家庭成员)
             if (app.getChildId() != null) {
                 FamilyMember child = familyMemberMapper.selectById(app.getChildId());
                 item.put("childName", child != null ? child.getNickname() : "未知");
@@ -2047,7 +2047,7 @@ public class AdminController {
             User user = userMapper.selectById(app.getUserId());
             item.put("userName", user != null ? user.getNickname() : "未知用户");
 
-            // 关联查询孩子昵称
+            // 关联查询家庭成员昵称
             if (app.getChildId() != null) {
                 FamilyMember child = familyMemberMapper.selectById(app.getChildId());
                 item.put("childName", child != null ? child.getNickname() : "未知");

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DataMigrationController.java

@@ -20,7 +20,7 @@ public class DataMigrationController {
 
     /**
      * 从 SFMS 系统迁移数据到当前系统。
-     * 迁移顺序:家庭 → 家长用户 → 孩子用户+详情 → 规划师 → 规划师-家庭关系 → 订单 → 测评结果 → 成长档案 → 成长方案
+     * 迁移顺序:家庭 → 家庭主账号用户 → 家庭成员用户+详情 → 规划师 → 规划师-家庭关系 → 订单 → 测评结果 → 成长档案 → 成长方案
      */
     @PostMapping("/run")
     public Result<Map<String, Object>> runMigration() {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentAppointmentController.java

@@ -115,7 +115,7 @@ public class AssessmentAppointmentController {
         return Result.success(success);
     }
 
-    @Operation(summary = "我的预约列表(家长视角)")
+    @Operation(summary = "我的预约列表(本人视角)")
     @PostMapping("/my-list")
     public Result<List<Map<String, Object>>> getMyAppointments(@RequestAttribute("userId") Long userId) {
         List<AssessmentAppointment> appointments = appointmentService.getByUserId(userId);

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentComparisonController.java

@@ -29,7 +29,7 @@ public class AssessmentComparisonController {
     @Resource
     private UserMapper userMapper;
 
-    @Operation(summary = "对比孩子首次与最新测评")
+    @Operation(summary = "对比成员首次与最新测评")
     @PostMapping("/by-child")
     public Result<AssessmentComparisonService.CompareResult> compareByChild(
             @RequestBody Map<String, Object> params,
@@ -45,7 +45,7 @@ public class AssessmentComparisonController {
         return Result.success(result);
     }
 
-    @Operation(summary = "对比孩子单维度变化")
+    @Operation(summary = "对比成员单维度变化")
     @PostMapping("/by-child-dimension")
     public Result<AssessmentComparisonService.DimensionDelta> compareByChildDimension(
             @RequestBody Map<String, Object> params,
@@ -63,7 +63,7 @@ public class AssessmentComparisonController {
         return Result.success(result);
     }
 
-    @Operation(summary = "对比家庭所有孩子首次与最新测评")
+    @Operation(summary = "对比家庭所有成员首次与最新测评")
     @PostMapping("/by-family")
     public Result<List<AssessmentComparisonService.CompareResult>> compareByFamily(
             @RequestAttribute(value = "familyId", required = false) Long familyId) {

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentReportController.java

@@ -83,7 +83,7 @@ public class AssessmentReportController {
                 return Result.error("缺少familyId参数且无法从登录态获取家庭信息");
             }
 
-            // 如果传了 childId,只查该孩子的方案;否则查整个家庭的方案
+            // 如果传了 childId,只查该家庭成员的方案;否则查整个家庭的方案
             List<TaskPlanInstance> plans;
             if (childId != null) {
                 plans = taskPlanService.getChildPlans(childId);
@@ -100,7 +100,7 @@ public class AssessmentReportController {
         }
     }
 
-    @Operation(summary = "家长上传测评报告")
+    @Operation(summary = "家庭主账号上传测评报告")
     @PostMapping("/upload")
     public Result<DanAssessmentResult> uploadReport(
             @RequestParam("file") MultipartFile file,

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentResultController.java

@@ -29,7 +29,7 @@ public class AssessmentResultController {
     @Resource
     private DanAssessmentResultMapper danAssessmentResultMapper;
 
-    @Operation(summary = "获取孩子最新认知测评结果")
+    @Operation(summary = "获取成员最新认知测评结果")
     @PostMapping("/latest-result")
     public Result<AssessmentResultDTO> getLatestResult(@RequestBody Map<String, Object> body,
                                                        @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
@@ -60,7 +60,7 @@ public class AssessmentResultController {
         return Result.success(dto);
     }
 
-    @Operation(summary = "获取孩子测评历史记录")
+    @Operation(summary = "获取成员测评历史记录")
     @PostMapping("/history")
     public Result<List<AssessmentHistoryItemDTO>> getHistory(@RequestBody Map<String, Object> body,
                                                              @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/CognitiveController.java

@@ -34,7 +34,7 @@ public class CognitiveController {
     @Resource
     private DanAssessmentResultMapper danAssessmentResultMapper;
 
-    @Operation(summary = "获取孩子最新六维认知得分")
+    @Operation(summary = "获取成员最新六维认知得分")
     @PostMapping("/child")
     public Result<Map<String, Object>> getChildCognitiveScores(
             @RequestBody Map<String, Object> body,
@@ -65,7 +65,7 @@ public class CognitiveController {
         return Result.success(scores);
     }
 
-    @Operation(summary = "获取家庭所有孩子的最新六维认知得分")
+    @Operation(summary = "获取家庭所有成员的最新六维认知得分")
     @PostMapping("/family")
     public Result<List<Map<String, Object>>> getFamilyCognitiveScores(
             @RequestAttribute("userId") Long userId) {
@@ -92,7 +92,7 @@ public class CognitiveController {
         return Result.success(list);
     }
 
-    @Operation(summary = "更新孩子认知维度得分")
+    @Operation(summary = "更新成员认知维度得分")
     @PostMapping("/update")
     public Result<String> updateCognitiveScore(
             @RequestBody Map<String, Object> body,

+ 4 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindController.java

@@ -19,7 +19,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import com.etotem.cfc.util.ParamUtils;
 
-@Tag(name = "家长绑定", description = "家长绑定指导师接口")
+@Tag(name = "家庭主账号绑定", description = "家庭主账号绑定指导师接口")
 @RestController
 @RequestMapping("/api/bind")
 public class BindController {
@@ -37,7 +37,7 @@ public class BindController {
     private PlannerCertificationGuard plannerCertificationGuard;
 
     /**
-     * 家长确认绑定指导师
+     * 家庭主账号确认绑定指导师
      */
     @Operation(summary = "确认绑定指导师")
     @PostMapping("/accept")
@@ -89,7 +89,7 @@ public class BindController {
     }
 
     /**
-     * 家长解除绑定规划师(会通知规划师)
+     * 家庭主账号解除绑定规划师(会通知规划师)
      */
     @Operation(summary = "解除绑定规划师")
     @PostMapping("/unbind")
@@ -104,7 +104,7 @@ public class BindController {
             GuideFamily gf = guideFamilyService.unbindAndGet(id, familyId);
             // 发送解绑通知给规划师
             teacherMessageService.sendMessage(familyId, userId, gf.getGuideId(),
-                "家长已解除与您的绑定关系");
+                "家庭主账号已解除与您的绑定关系");
             return Result.success(true);
         } catch (RuntimeException e) {
             return Result.error(400, e.getMessage());

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindInviteController.java

@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;
 
-@Tag(name = "指导师绑定邀请", description = "指导师生成邀请、家长确认绑定等接口")
+@Tag(name = "指导师绑定邀请", description = "指导师生成邀请、家庭主账号确认绑定等接口")
 @RestController
 @RequestMapping("/api/guide/bind")
 public class BindInviteController {

+ 4 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/family/FamilyController.java

@@ -53,9 +53,9 @@ public class FamilyController {
     }
 
     /**
-     * 成长规划师申请绑定家庭(需要家长审批)
+     * 成长规划师申请绑定家庭(需要家庭主账号审批)
      */
-    @Operation(summary = "成长规划师申请绑定家庭(需家长审批)")
+    @Operation(summary = "成长规划师申请绑定家庭(需家庭主账号审批)")
     @PostMapping("/guide-bind")
     public Result<String> guideBindFamily(@RequestAttribute("userId") Long userId,
                                           @RequestBody Map<String, String> params) {
@@ -82,11 +82,11 @@ public class FamilyController {
             return Result.error("您已绑定该家庭,无需重复申请");
         }
 
-        // 创建绑定申请(家长审批后生效)
+        // 创建绑定申请(家庭主账号审批后生效)
         try {
             String message = params.get("message");
             Long requestId = bindingRequestService.createRequest(userId, inviteCode, message);
-            return Result.success("申请已提交,请等待家长审批");
+            return Result.success("申请已提交,请等待家庭主账号审批");
         } catch (RuntimeException e) {
             return Result.error(e.getMessage());
         }

+ 9 - 9
cfc-backend/src/main/java/com/etotem/cfc/controller/family/FamilyUserController.java

@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.Map;
 import com.etotem.cfc.util.ParamUtils;
 
-@Tag(name = "家庭用户管理", description = "家庭用户信息、孩子管理等接口")
+@Tag(name = "家庭用户管理", description = "家庭用户信息、家庭成员管理等接口")
 @RestController
 @RequestMapping("/api/family/user")
 public class FamilyUserController {
@@ -89,7 +89,7 @@ public class FamilyUserController {
         return Result.success(familyId);
     }
 
-    @Operation(summary = "切换家长/孩子模式(已废弃,使用 /api/family/member/switch)")
+    @Operation(summary = "切换本人/成员模式(已废弃,使用 /api/family/member/switch)")
     @Deprecated
     @PostMapping("/switch-mode")
     public Result<String> switchMode(@RequestAttribute("userId") Long userId,
@@ -116,7 +116,7 @@ public class FamilyUserController {
         return Result.success(roles);
     }
 
-    @Operation(summary = "家长切换到指定孩子身份(已废弃,使用 /api/family/member/switch)")
+    @Operation(summary = "本人切换到指定成员身份(已废弃,使用 /api/family/member/switch)")
     @Deprecated
     @PostMapping("/switch-to-child")
     public Result<Long> switchToFamilyMember(@RequestAttribute("userId") Long userId,
@@ -124,7 +124,7 @@ public class FamilyUserController {
         return Result.error(410, "该接口已废弃,请使用 /api/family/member/switch");
     }
 
-    @Operation(summary = "孩子切换回家长身份(已废弃,使用 /api/family/member/switch)")
+    @Operation(summary = "成员切换回本人身份(已废弃,使用 /api/family/member/switch)")
     @Deprecated
     @PostMapping("/switch-back-to-parent")
     public Result<Boolean> switchBackToParent(@RequestAttribute("userId") Long userId) {
@@ -149,7 +149,7 @@ public class FamilyUserController {
         return Result.success(true);
     }
 
-    @Operation(summary = "创建孩子")
+    @Operation(summary = "创建家庭成员")
     @PostMapping("/children")
     public Result<FamilyMemberInfoDTO> createFamilyMember(@RequestAttribute("userId") Long userId,
         @RequestBody CreateFamilyMemberDTO dto) {
@@ -157,14 +157,14 @@ public class FamilyUserController {
         return Result.success(child);
     }
 
-    @Operation(summary = "获取孩子列表")
+    @Operation(summary = "获取家庭成员列表")
     @PostMapping("/children/list")
     public Result<List<FamilyMemberInfoDTO>> getFamilyMemberren(@RequestAttribute("userId") Long userId) {
         List<FamilyMemberInfoDTO> children = userService.getFamilyMemberren(userId);
         return Result.success(children);
     }
 
-    @Operation(summary = "更新孩子信息")
+    @Operation(summary = "更新家庭成员信息")
     @PostMapping("/children/update")
     public Result<Boolean> updateFamilyMember(@RequestAttribute("userId") Long userId,
         @RequestBody UpdateFamilyMemberDTO dto) {
@@ -197,14 +197,14 @@ public class FamilyUserController {
             return Result.error("家庭不存在");
         }
 
-        // 查询家长列表
+        // 查询家庭主账号列表
         List<User> parents = userMapper.selectList(
             new LambdaQueryWrapper<User>()
                 .eq(User::getFamilyId, familyId)
                 .eq(User::getRole, "parent")
         );
 
-        // 查询孩子列表
+        // 查询家庭成员列表
         List<FamilyMember> children = familyMemberMapper.selectList(
             new LambdaQueryWrapper<FamilyMember>()
                 .eq(FamilyMember::getFamilyId, familyId)

+ 8 - 8
cfc-backend/src/main/java/com/etotem/cfc/controller/family/ParentController.java

@@ -30,23 +30,23 @@ public class ParentController {
     @Resource
     private WishMapper wishMapper;
 
-    /** F-5:家长心愿兑换扣减改投统一账本 cf_balance(家长自己的成员维度,幂等 refId = 心愿 ID) */
+    /** F-5:家庭主账号心愿兑换扣减改投统一账本 cf_balance(本人自己的成员维度,幂等 refId = 心愿 ID) */
     @Resource
     private CfSpendDispatchService cfSpendDispatchService;
 
     /**
-     * 家长心愿单 - 创建心愿(直接进入可用列表)
+     * 家庭主账号心愿单 - 创建心愿(直接进入可用列表)
      */
     @PostMapping("/wishlist")
     public Result<Long> createParentWishlist(@RequestAttribute("userId") Long userId,
                                               @RequestBody CreateRewardDTO dto) {
-        // 家长直接创建奖励,状态为available
+        // 家庭主账号直接创建奖励,状态为available
         Long rewardId = rewardService.createReward(userId, dto);
         return Result.success(rewardId);
     }
 
     /**
-     * 家长心愿单 - 获取列表(所有家庭成员的心愿)
+     * 家庭主账号心愿单 - 获取列表(所有家庭成员的心愿)
      */
     @PostMapping("/wishlist/list")
     public Result<List<RewardDTO>> getParentWishlist(@RequestAttribute("userId") Long userId) {
@@ -55,13 +55,13 @@ public class ParentController {
             return Result.noFamily("请先创建或加入家庭");
         }
         
-        // 获取家庭所有可用的奖励(包括孩子创建的待审批心愿)
+        // 获取家庭所有可用的奖励(包括家庭成员创建的待审批心愿)
         List<RewardDTO> rewards = rewardService.getFamilyRewardLibrary(user.getFamilyId());
         return Result.success(rewards);
     }
 
     /**
-     * 家长心愿单 - 获取家庭心愿列表(路由兼容)
+     * 家庭主账号心愿单 - 获取家庭心愿列表(路由兼容)
      */
     @PostMapping("/wishlist/family")
     public Result<List<RewardDTO>> getFamilyWishlist(@RequestAttribute("userId") Long userId) {
@@ -75,7 +75,7 @@ public class ParentController {
     }
 
     /**
-     * 家长心愿单 - 审批孩子的心愿并填写积分
+     * 家庭主账号心愿单 - 审批家庭成员的心愿并填写积分
      */
     @PostMapping("/wishlist/{id}/approve")
     public Result<Boolean> approveWishlist(@PathVariable Long id,
@@ -92,7 +92,7 @@ public class ParentController {
     }
 
     /**
-     * 家长心愿单 - 兑换家长的心愿
+     * 家庭主账号心愿单 - 兑换家庭主账号的心愿
      */
     @PostMapping("/wishlist/{id}/exchange")
     public Result<Map<String, Object>> exchangeParentWishlist(@PathVariable Long id,

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/family/TeacherFamilyBindingController.java

@@ -22,9 +22,9 @@ import com.etotem.cfc.util.ParamUtils;
 
 /**
  * 规划师绑定家庭审批接口
- * 家长查看/审批规划师的绑定申请
+ * 家庭主账号查看/审批规划师的绑定申请
  */
-@Tag(name = "规划师绑定审批", description = "家长审批规划师绑定家庭申请")
+@Tag(name = "规划师绑定审批", description = "家庭主账号审批规划师绑定家庭申请")
 @RestController
 @RequestMapping("/api/family/teacher-bindings")
 public class TeacherFamilyBindingController {

+ 5 - 5
cfc-backend/src/main/java/com/etotem/cfc/controller/growth/GrowthPlanController.java

@@ -35,21 +35,21 @@ public class GrowthPlanController {
     public Result<GrowthPlan> createPlan(@RequestBody GrowthPlan plan,
                                           @RequestAttribute("userId") Long userId) {
         if (plan.getChildId() == null) {
-            return Result.error("请选择孩子");
+            return Result.error("请选择家庭成员");
         }
         plan.setTeacherId(userId);
         GrowthPlan result = growthPlanService.createPlan(plan);
         return Result.success(result);
     }
 
-    @Operation(summary = "获取孩子的成长方案列表")
+    @Operation(summary = "获取家庭成员的成长方案列表")
     @PostMapping("/child/{memberId}")
     public Result<List<GrowthPlan>> getChildPlans(@PathVariable Long memberId) {
         List<GrowthPlan> plans = growthPlanService.getByChildId(memberId);
         return Result.success(plans);
     }
 
-    @Operation(summary = "获取孩子当前活跃方案")
+    @Operation(summary = "获取成员当前活跃方案")
     @PostMapping("/child/{memberId}/active")
     public Result<GrowthPlan> getActivePlan(@PathVariable Long memberId) {
         GrowthPlan plan = growthPlanService.getActivePlanByChildId(memberId);
@@ -142,14 +142,14 @@ public class GrowthPlanController {
             map.put("createdAt", plan.getCreatedAt());
             map.put("updatedAt", plan.getUpdatedAt());
 
-            // 查询孩子昵称
+            // 查询家庭成员昵称
             List<com.etotem.cfc.entity.User> users = userMapper.selectList(
                 new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<com.etotem.cfc.entity.User>()
                     .eq(com.etotem.cfc.entity.User::getId, plan.getChildId()));
             String childName = users.stream()
                 .map(u -> u.getNickname())
                 .findFirst()
-                .orElse("未知孩子");
+                .orElse("未知成员");
             map.put("childName", childName);
 
             return map;

+ 6 - 6
cfc-backend/src/main/java/com/etotem/cfc/controller/growth/GrowthRecordController.java

@@ -50,7 +50,7 @@ public class GrowthRecordController {
                                               @RequestAttribute("userId") Long userId) {
         record.setParentId(userId);
         if (record.getChildId() == null) {
-            return Result.error("请选择孩子");
+            return Result.error("请选择家庭成员");
         }
         GrowthRecord result = growthRecordService.createRecord(record);
         return Result.success(result);
@@ -81,7 +81,7 @@ public class GrowthRecordController {
 
         record.setParentId(userId);
         if (record.getChildId() == null) {
-            return Result.error("请选择孩子");
+            return Result.error("请选择家庭成员");
         }
 
         GrowthRecord growthResult = growthRecordService.createRecord(record);
@@ -125,21 +125,21 @@ public class GrowthRecordController {
         return Result.success(result);
     }
 
-    @Operation(summary = "获取家长的成长档案列表")
+    @Operation(summary = "获取本人的成长档案列表")
     @PostMapping("/record/list")
     public Result<List<GrowthRecord>> getRecordList(@RequestAttribute("userId") Long userId) {
         List<GrowthRecord> records = growthRecordService.getRecordsByParent(userId);
         return Result.success(records);
     }
 
-    @Operation(summary = "获取指定孩子的成长档案列表")
+    @Operation(summary = "获取指定家庭成员的成长档案列表")
     @PostMapping("/record/child/{memberId}")
     public Result<List<GrowthRecord>> getChildRecords(@PathVariable Long memberId) {
         List<GrowthRecord> records = growthRecordService.getRecordsByChild(memberId);
         return Result.success(records);
     }
 
-    @Operation(summary = "获取孩子的成长档案列表")
+    @Operation(summary = "获取家庭成员的成长档案列表")
     @PostMapping("/record/child-records")
     public Result<List<GrowthRecord>> getRecordsByChild(@RequestBody Long memberId,
                                                         @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
@@ -227,7 +227,7 @@ public class GrowthRecordController {
                                                   @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
         Long memberId = ParamUtils.getLong(body.get("memberId"), currentMemberId);
         if (memberId == null) {
-            return Result.error("请选择孩子");
+            return Result.error("请选择家庭成员");
         }
         String sourceFileUrl = body.get("sourceFileUrl") != null ? body.get("sourceFileUrl").toString() : null;
         if (sourceFileUrl == null || sourceFileUrl.isEmpty()) {

+ 6 - 6
cfc-backend/src/main/java/com/etotem/cfc/controller/guide/GuideFamilyTaskController.java

@@ -131,7 +131,7 @@ public class GuideFamilyTaskController {
         List<Map<String, Object>> result = new ArrayList<>();
 
         for (Long familyId : familyIds) {
-            // 获取家庭的家长用户
+            // 获取家庭的家庭主账号用户
             List<User> parents = userMapper.selectList(
                 new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<User>()
                     .eq("family_id", familyId)
@@ -148,7 +148,7 @@ public class GuideFamilyTaskController {
             item.put("familyName", "家庭" + familyId);
             item.put("parentName", parent.getNickname());
 
-            // 获取家庭孩子列表
+            // 获取家庭成员列表
             List<FamilyMember> children = familyMemberMapper.selectList(
                 new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<FamilyMember>()
                     .eq("family_id", familyId)
@@ -170,7 +170,7 @@ public class GuideFamilyTaskController {
     }
 
     /**
-     * 获取指定家庭的所有孩子任务概览
+     * 获取指定家庭的所有家庭成员任务概览
      */
     @Operation(summary = "获取家庭任务概览")
     @ApiResponses({
@@ -240,9 +240,9 @@ public class GuideFamilyTaskController {
     }
 
     /**
-     * 获取家庭孩子的任务列表
+     * 获取家庭成员的任务列表
      */
-    @Operation(summary = "获取孩子任务列表")
+    @Operation(summary = "获取成员任务列表")
     @ApiResponses({
         @ApiResponse(responseCode = "200", description = "成功返回分页任务"),
         @ApiResponse(responseCode = "403", description = "Access denied"),
@@ -268,7 +268,7 @@ public class GuideFamilyTaskController {
     }
 
     /**
-     * 获取家庭孩子的待审核任务
+     * 获取家庭成员的待审核任务
      */
     @Operation(summary = "获取待审核任务列表")
     @ApiResponses({

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/guide/GuideRecordController.java

@@ -15,7 +15,7 @@ import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
 
-@Tag(name = "成长规划师记录", description = "成长规划师录入测评结果(含孩子快照)")
+@Tag(name = "成长规划师记录", description = "成长规划师录入测评结果(含成员快照)")
 @RestController
 @RequestMapping("/api/guide/record")
 public class GuideRecordController {
@@ -31,7 +31,7 @@ public class GuideRecordController {
     @Resource
     private CfPathwayEarnService cfPathwayEarnService;
 
-    @Operation(summary = "录入测评结果(含孩子快照)")
+    @Operation(summary = "录入测评结果(含成员快照)")
     @PostMapping("/create")
     public Result<DanAssessmentResult> createRecord(
             @RequestAttribute("userId") Long userId,

+ 7 - 7
cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TeacherMessageController.java

@@ -16,7 +16,7 @@ import java.util.List;
 import java.util.Map;
 import com.etotem.cfc.util.ParamUtils;
 
-@Tag(name = "成长规划师消息", description = "成长规划师接受家长咨询的接口")
+@Tag(name = "成长规划师消息", description = "成长规划师接受家庭咨询的接口")
 @RestController
 @RequestMapping("/api/guide/messages")
 public class TeacherMessageController {
@@ -31,9 +31,9 @@ public class TeacherMessageController {
     private com.etotem.cfc.service.PlannerCertificationGuard plannerCertificationGuard;
 
     /**
-     * 家长发送咨询消息
+     * 家庭主账号发送咨询消息
      */
-    @Operation(summary = "家长发送咨询")
+    @Operation(summary = "家庭主账号发送咨询")
     @PostMapping("/send")
     public Result<Long> sendMessage(@RequestAttribute("userId") Long parentId,
                                      @RequestAttribute(value = "familyId", required = false) Long familyId,
@@ -92,12 +92,12 @@ public class TeacherMessageController {
 
         Page<TeacherMessage> messages = teacherMessageService.getMessagesByTeacher(teacherId, page, size);
 
-        // 补充家长信息
+        // 补充家庭主账号信息
         for (TeacherMessage msg : messages.getRecords()) {
             if (msg.getParentId() != null) {
                 User parent = userMapper.selectById(msg.getParentId());
                 if (parent != null) {
-                    msg.setContent(msg.getContent() + " [家长:" + parent.getNickname() + "]");
+                    msg.setContent(msg.getContent() + " [家庭主账号:" + parent.getNickname() + "]");
                 }
             }
         }
@@ -126,9 +126,9 @@ public class TeacherMessageController {
     }
 
     /**
-     * 家长获取自己的咨询消息
+     * 家庭主账号获取自己的咨询消息
      */
-    @Operation(summary = "家长获取咨询记录")
+    @Operation(summary = "家庭主账号获取咨询记录")
     @PostMapping("/my")
     public Result<List<TeacherMessage>> getMyMessages(@RequestAttribute("userId") Long parentId) {
         List<TeacherMessage> messages = teacherMessageService.getMessagesByParent(parentId);

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TrainingPlanController.java

@@ -124,7 +124,7 @@ public class TrainingPlanController {
         }
         Long planId = trainingPlanService.generateFromRecommendations(guideId, memberId);
         if (planId == null) {
-            return Result.error("生成失败,请确认该孩子已完成认知评估");
+            return Result.error("生成失败,请确认该家庭成员已完成认知评估");
         }
         return Result.success(planId);
     }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/mind/EmotionAlertController.java

@@ -101,7 +101,7 @@ public class EmotionAlertController {
 
         FamilyMember child = familyMemberMapper.selectById(alert.getChildId());
         if (child == null) {
-            return Result.error("孩子不存在");
+            return Result.error("家庭成员不存在");
         }
         User user = userMapper.selectById(userId);
         if (user == null || user.getFamilyId() == null) {

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/parent/ParentAssessmentController.java

@@ -19,7 +19,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Tag(name = "家长测评", description = "家长查看DAN测评任务与历史")
+@Tag(name = "家庭主账号测评", description = "家庭主账号查看DAN测评任务与历史")
 @RestController
 @RequestMapping("/api/parent/assessment")
 public class ParentAssessmentController {
@@ -87,7 +87,7 @@ public class ParentAssessmentController {
         return Result.success(records);
     }
 
-    @Operation(summary = "家长主动创建测评任务")
+    @Operation(summary = "家庭主账号主动创建测评任务")
     @PostMapping("/create")
     public Result<AssessmentRecord> createAssessment(@RequestAttribute("userId") Long userId) {
         Long familyId = getFamilyIdByUserId(userId);

+ 4 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/parent/ParentDashboardController.java

@@ -21,7 +21,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Tag(name = "家长首页", description = "家长首页数据接口")
+@Tag(name = "家庭首页", description = "家庭首页数据接口")
 @RestController
 @RequestMapping("/api/parent")
 public class ParentDashboardController {
@@ -41,7 +41,7 @@ public class ParentDashboardController {
     @Resource
     private UserMapper userMapper;
 
-    @Operation(summary = "获取家长首页仪表盘数据")
+    @Operation(summary = "获取家庭首页仪表盘数据")
     @PostMapping("/dashboard")
     public Result<Map<String, Object>> getDashboard(@RequestAttribute("userId") Long userId) {
         List<ChildInfoDTO> children = userService.getChildren(userId);
@@ -75,7 +75,7 @@ public class ParentDashboardController {
             }
         }
 
-        // 获取家长自身数据(积分 + 任务完成率)
+        // 获取家庭主账号自身数据(积分 + 任务完成率)
         User currentUser = userMapper.selectById(userId);
         int parentPoints = currentUser != null && currentUser.getTotalPoints() != null
             ? currentUser.getTotalPoints() : 0;
@@ -86,7 +86,7 @@ public class ParentDashboardController {
         Map<String, Object> result = new HashMap<>();
         result.put("familyId", currentUser != null ? currentUser.getFamilyId() : null);
         result.put("children", childStatsList);
-        // avgCompletionRate = (家长 + Σ孩子) / (1 + 孩子数)
+        // avgCompletionRate = (家庭主账号 + Σ家庭成员) / (1 + 家庭成员数)
         int totalRate = parentCompletionRate + totalCompletionRate;
         int avgRate = childCount > 0 ? totalRate / (childCount + 1) : parentCompletionRate;
         result.put("avgCompletionRate", avgRate);

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/reward/RewardWishlistController.java

@@ -14,7 +14,7 @@ import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
-@Tag(name = "家长心愿单管理")
+@Tag(name = "家庭心愿单管理")
 @RestController
 @RequestMapping("/api/reward-wishlist")
 public class RewardWishlistController {

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/stats/StatsController.java

@@ -150,7 +150,7 @@ public class StatsController {
 
     // ── 任务完成率 ──
 
-    @Operation(summary = "孩子任务完成率")
+    @Operation(summary = "家庭成员任务完成率")
     @PostMapping("/child-completion")
     public Result<Map<String, Object>> childCompletion(
             @RequestAttribute("userId") Long userId,
@@ -278,9 +278,9 @@ public class StatsController {
         return Result.success(data);
     }
 
-    // ── 孩子数据概览 ──
+    // ── 家庭成员数据概览 ──
 
-    @Operation(summary = "孩子数据概览")
+    @Operation(summary = "家庭成员数据概览")
     @PostMapping("/child/overview")
     public Result<Map<String, Object>> childOverview(@RequestBody Map<String, Object> body) {
         Long memberId = ParamUtils.getLong(body.get("memberId"));

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/task/TaskController.java

@@ -82,7 +82,7 @@ public class TaskController {
     public Result<List<Task>> getTodayTasks(@RequestBody Map<String, Object> params,
                                             @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId,
                                             @RequestAttribute(value = "familyId", required = false) Long familyId) {
-        // familyWide=true:按家庭聚合今日任务(家长查看方案分解到其他成员的任务)
+        // familyWide=true:按家庭聚合今日任务(家庭主账号查看方案分解到其他成员的任务)
         boolean familyWide = params.get("familyWide") != null
                 && ("true".equalsIgnoreCase(String.valueOf(params.get("familyWide")))
                     || Boolean.TRUE.equals(params.get("familyWide"))
@@ -192,14 +192,14 @@ public class TaskController {
     return Result.success(tasks);
   }
 
-    @Operation(summary = "获取家长今日任务")
+    @Operation(summary = "获取本人今日任务")
     @PostMapping("/today-parent")
     public Result<List<Task>> getTodayParentTasks(@RequestAttribute("userId") Long userId) {
         List<Task> tasks = taskService.getTodayParentTasks(userId);
         return Result.success(tasks);
     }
 
-    @Operation(summary = "家长完成任务")
+    @Operation(summary = "本人完成任务")
     @PostMapping("/{id}/complete-parent")
     public Result<Map<String, Object>> completeParentTask(@PathVariable Long id,
                                                         @RequestAttribute("userId") Long userId) {

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/tianpan/TianpanController.java

@@ -291,10 +291,10 @@ public class TianpanController {
                 // 管理员:所有访问
                 return true;
             case "parent":
-                // 家长:访问自己家庭
+                // 家庭主账号:访问自己家庭
                 return isFamilyMember(familyId, currentUserId, "parent");
             case "child":
-                // 孩子:访问自己家庭
+                // 家庭成员:访问自己家庭
                 // 非登录用户(不可登录成员)
                 return isFamilyMember(familyId, currentUserId, "child");
             case "teacher":

+ 10 - 10
cfc-backend/src/main/java/com/etotem/cfc/controller/wish/WishController.java

@@ -50,7 +50,7 @@ public class WishController {
 
     // ========== 定价流程 ==========
 
-    @Operation(summary = "家长定价")
+    @Operation(summary = "家庭主账号定价")
     @PostMapping("/{id}/set-price")
     public Result<Boolean> setPrice(
             @PathVariable Long id,
@@ -72,7 +72,7 @@ public class WishController {
         }
     }
 
-    @Operation(summary = "家长拒绝心愿")
+    @Operation(summary = "家庭主账号拒绝心愿")
     @PostMapping("/{id}/reject")
     public Result<Boolean> rejectWish(
             @PathVariable Long id,
@@ -93,7 +93,7 @@ public class WishController {
 
     // ========== 兑换流程 ==========
 
-    @Operation(summary = "孩子申请兑换")
+    @Operation(summary = "家庭成员申请兑换")
     @PostMapping("/{id}/exchange")
     public Result<Boolean> requestExchange(
             @PathVariable Long id,
@@ -110,7 +110,7 @@ public class WishController {
         }
     }
 
-    @Operation(summary = "家长审批兑换")
+    @Operation(summary = "家庭主账号审批兑换")
     @PostMapping("/{id}/approve-exchange")
     public Result<Boolean> approveExchange(
             @PathVariable Long id,
@@ -135,7 +135,7 @@ public class WishController {
 
     // ========== 兑现流程 ==========
 
-    @Operation(summary = "家长标记已购买")
+    @Operation(summary = "家庭主账号标记已购买")
     @PostMapping("/{id}/fulfill")
     public Result<Boolean> markFulfilled(
             @PathVariable Long id,
@@ -152,7 +152,7 @@ public class WishController {
         }
     }
 
-    @Operation(summary = "孩子确认收货")
+    @Operation(summary = "家庭成员确认收货")
     @PostMapping("/{id}/confirm")
     public Result<Boolean> confirmReceived(
             @PathVariable Long id,
@@ -203,13 +203,13 @@ public class WishController {
         try {
             List<WishDTO> wishes;
             if ("child".equals(role)) {
-                // 孩子只能看自己的心愿
+                // 家庭成员只能看自己的心愿
                 wishes = wishService.getChildWishes(userId);
             } else if (memberId != null) {
-                // 家长查看指定孩子的心愿
+                // 家庭主账号查看指定家庭成员的心愿
                 wishes = wishService.getChildWishes(memberId);
             } else if (familyId != null) {
-                // 家长查看家庭所有心愿
+                // 家庭主账号查看家庭所有心愿
                 wishes = wishService.getFamilyWishes(familyId);
             } else {
                 return Result.error("请指定查询条件(memberId或familyId)");
@@ -221,7 +221,7 @@ public class WishController {
         }
     }
 
-    @Operation(summary = "获取待处理列表(家长)")
+    @Operation(summary = "获取待处理列表(家庭主账号)")
     @PostMapping("/pending")
     public Result<List<WishDTO>> getPendingWishes(
             @RequestAttribute("userId") Long userId,

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/AdjustPointsDTO.java

@@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class AdjustPointsDTO {
 
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
     @NotNull(message = "调整金额不能为空")

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/AdminAdjustPointsDTO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import javax.validation.constraints.NotNull;
 
 /**
- * 管理员调整孩子积�?DTO(路径含memberId,故不含memberId�?
+ * 管理员调整成员积�?DTO(路径含memberId,故不含memberId�?
  */
 @Data
 public class AdminAdjustPointsDTO {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/ApplyAfterPaymentDTO.java

@@ -10,7 +10,7 @@ public class ApplyAfterPaymentDTO {
     @NotNull(message = "订单ID不能为空")
     private Long orderId;
 
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
     private List<Long> selectedItemIds;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/ApplyPackageDTO.java

@@ -8,5 +8,5 @@ import java.util.List;
 public class ApplyPackageDTO {
     private Long packageId;
     private Long memberId;
-    private List<Long> selectedItemIds;  // 家长勾选的任务项ID
+    private List<Long> selectedItemIds;  // 家庭主账号勾选的任务项ID
 }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/AssessmentCreateAppointmentDTO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import javax.validation.constraints.Min;
 
 /**
- * 创建评估预约 DTO(家长端�?
+ * 创建评估预约 DTO(家庭主账号端�?
  */
 @Data
 public class AssessmentCreateAppointmentDTO {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/CompleteGameDTO.java

@@ -7,7 +7,7 @@ import javax.validation.constraints.NotNull;
 
 @Data
 public class CompleteGameDTO {
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
     @NotBlank(message = "游戏代码不能为空")

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/CreateGrowthRecordDTO.java

@@ -6,7 +6,7 @@ import javax.validation.constraints.NotNull;
 
 @Data
 public class CreateGrowthRecordDTO {
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
     private String recordTitle;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/CreateRewardWishlistDTO.java

@@ -3,7 +3,7 @@ package com.etotem.cfc.dto;
 import lombok.Data;
 
 /**
- * 创建家长心愿单DTO
+ * 创建家庭心愿单DTO
  */
 @Data
 public class CreateRewardWishlistDTO {

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/dto/CreateTaskDTO.java

@@ -12,7 +12,7 @@ public class CreateTaskDTO {
     private String category;  // 类型:学习类/生活�?运动�?其他
     private Integer points;   // 积分
     private Integer duration; // 时长(分钟)
-    private List<Long> memberIds; // 完成的孩子(多选)
+    private List<Long> memberIds; // 完成的成员(多选)
     
     // 任务性质
     private String taskType;  // 一次�?循环 recurring
@@ -31,11 +31,11 @@ public class CreateTaskDTO {
     private Date earliestStart; // 最早开始时�?
     private Date latestEnd;    // 最晚结束时�?
     
-    // 执行者类�? child(孩子) �?parent(家长)
+    // 执行者类�? child(儿童) �?parent(本人)
     private String executorType;
     // 执行者ID
     private Long executorId;
-    // 兼容旧版 - 指定孩子ID
+    // 兼容旧版 - 指定成员ID
     private Long memberId;
 
     // 小游戏代码(当category�?小游戏类'时必填): schulte/1a2b/sudoku

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/dto/CreateWishDTO.java

@@ -20,9 +20,9 @@ public class CreateWishDTO {
 
     private Long estimatedPrice;   // 预估价格(选填),单位:分
 
-    private Long memberId;          // 目标孩子ID(家长创建时必填�?
+    private Long memberId;          // 目标成员ID(家庭主账号创建时必填�?
 
-    private Integer pointsRequired; // 所需积分(家长创建时必填�?
+    private Integer pointsRequired; // 所需积分(家庭主账号创建时必填�?
 
     // Explicit setters (Lombok fallback)
     public void setTitle(String title) { this.title = title; }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/FamilyMemberVO.java

@@ -52,7 +52,7 @@ public class FamilyMemberVO {
     /** 计算后的实际角色(前端展示用) */
     private String effectiveRole;
 
-    /** 角色标签显示文本(家长/孩子/配偶/父母等) */
+    /** 角色标签显示文本(本人/家庭成员/配偶/父母等) */
     private String roleLabel;
 
     /** 视角相关的关系标签(如 "我"/"儿子"/"女儿"/"父亲"/"母亲"/"哥哥"/"姐姐") */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/InviteAcceptDTO.java

@@ -5,6 +5,6 @@ import lombok.Data;
 @Data
 public class InviteAcceptDTO {
     private String token;          // 邀请令牌
-    private String familyRole;     // 家长身份: 爸爸/妈妈/爷爷/奶奶/姥爷/姥姥/其他
+    private String familyRole;     // 家庭角色: 爸爸/妈妈/爷爷/奶奶/姥爷/姥姥/其他
     private Boolean mergeFamily;   // 如果已有家庭,是否合并(默认为false则拒绝加入)
 }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/LoginResultDTO.java

@@ -11,7 +11,7 @@ public class LoginResultDTO {
     private Long familyId;
     private String nickname;
     private String phone;
-    private Long currentChildId; // 当前切换到的孩子ID(如果切换了)
+    private Long currentChildId; // 当前切换到的成员ID(如果切换了)
     private Boolean isNewUser; // 是否新用户
     private String openid; // 微信openid,用于前端缓存实现自动登录
     private Boolean needsRoleSelect; // 新用户是否需要选择角色

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/MemberCoverageDTO.java

@@ -52,7 +52,7 @@ public class MemberCoverageDTO implements Serializable {
     /** 重疾险覆盖状态 */
     private String criticalIllnessCoverage;
 
-    /** 教育金险覆盖状态(仅孩子) */
+    /** 教育金险覆盖状态(仅家庭成员) */
     private String educationCoverage;
 
     /** 意外险覆盖状态 */

+ 8 - 8
cfc-backend/src/main/java/com/etotem/cfc/dto/MemberEnergyDTO.java

@@ -32,10 +32,10 @@ public class MemberEnergyDTO {
     /** 个人综合能量值 */
     private Integer overallScore;
 
-    // ========== 富·利他创富模型(4子维度,家长/孩子共用字段) ==========
-    private Integer wealthSkill;        // 个人能力(家长:能力认证/服务商资质;孩子:学业能力)
-    private Integer wealthAltruism;     // 利他贡献(家长:帮助过多少人;孩子:帮助他人)
-    private Integer wealthIncome;       // 财务积累(家长:CF值;孩子:积分)
+    // ========== 富·利他创富模型(4子维度,本人/家庭成员共用字段) ==========
+    private Integer wealthSkill;        // 个人能力(本人:能力认证/服务商资质;家庭成员:学业能力)
+    private Integer wealthAltruism;     // 利他贡献(本人:帮助过多少人;家庭成员:帮助他人)
+    private Integer wealthIncome;       // 财务积累(本人:CF值;家庭成员:积分)
     private Integer wealthFx;           // 财务素养(记账/理财任务)
 
     // 富的子维度(旧版 parent,兼容保留)
@@ -89,7 +89,7 @@ public class MemberEnergyDTO {
     // ========== 心·自我概念(1维) ==========
     private Integer selfConceptOverall;       // 综合自我概念 (0-100)
 
-    // ========== 行·家长版(6维) ==========
+    // ========== 行·本人版(6维) ==========
     private Integer actionParentChild;        // 亲子关系 (0-100)
     private Integer actionMarital;            // 夫妻关系 (0-100)
     private Integer actionParental;           // 父母关系 (0-100)
@@ -97,7 +97,7 @@ public class MemberEnergyDTO {
     private Integer actionSociality;          // 社会性 (0-100)
     private Integer actionInterpersonal;      // 人际韧性 (0-100)
 
-    // ========== 行·孩子版(6维) ==========
+    // ========== 行·家庭成员版(6维) ==========
     private Integer actionChildParentChild;   // 亲子关系 (0-100)
     private Integer actionSibling;            // 同胞关系 (0-100)
     private Integer actionRelative;           // 亲属关系 (0-100)
@@ -109,8 +109,8 @@ public class MemberEnergyDTO {
     private Integer wisdomGrowthMindset;      // 成长型思维 (0-100)
 
     // ========== 富·家族传承 ==========
-    private Integer wealthLegacy;             // 家长版·家族传承 (0-100)
-    private Integer wealthChildLegacy;        // 孩子版·家族传承 (0-100)
+    private Integer wealthLegacy;             // 本人版·家族传承 (0-100)
+    private Integer wealthChildLegacy;        // 家庭成员版·家族传承 (0-100)
 
     // ========== 旧心子维度兼容(v2.0初步字段,迁移过渡用) ==========
     @Deprecated

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/MinigameCompleteDTO.java

@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class MinigameCompleteDTO {
 
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
     private Integer completionTime;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/PackagePurchaseDTO.java

@@ -36,7 +36,7 @@ public class PackagePurchaseDTO implements Serializable {
     private String inviteCode;
 
     /**
-     * 孩子ID(可选)
+     * 成员ID(可选)
      */
     private Long memberId;
 

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/PointsLogVO.java

@@ -7,7 +7,7 @@ import java.util.Date;
 /**
  * 积分流水VO(后台积分管理列表)
  * 在 points_log 实体基础上补充成员姓名与所属家庭信息,
- * 将历史"孩子ID"(points_log.child_id,实际为 family_members.id)展示为成员姓名,并支持按家庭筛选。
+ * 将历史"成员ID"(points_log.child_id,实际为 family_members.id)展示为成员姓名,并支持按家庭筛选。
  */
 @Data
 public class PointsLogVO {

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/RecommendRequestDTO.java

@@ -8,7 +8,7 @@ public class RecommendRequestDTO {
     /** 当前维度: body/mind/wisdom/action/wealth */
     private String dimensionCode;
 
-    /** 当前查看的孩子ID(文�?任务用) */
+    /** 当前查看的成员ID(文�?任务用) */
     private Long memberId;
 
     /** 返回条数 */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/RewardDTO.java

@@ -11,7 +11,7 @@ private String category;
 private String status;
 private Integer exchangeApproved;
 private Integer progress;
-// REWARD-002B: 支持多孩子隔�?
+// REWARD-002B: 支持多成员隔�?
 private Long memberId;
 private String childName;
 }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/RewardExchangeDTO.java

@@ -10,6 +10,6 @@ import javax.validation.constraints.NotNull;
 @Data
 public class RewardExchangeDTO {
 
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/StudentInfoDTO.java

@@ -16,5 +16,5 @@ public class StudentInfoDTO {
     private String gender;
     private Date birthday;
   private Long familyId;
-  private Long userId; // 关联的用户ID(家长或孩子自己的账号)
+  private Long userId; // 关联的用户ID(家庭主账号或家庭成员自己的账号)
 }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/SwitchToChildDTO.java

@@ -6,6 +6,6 @@ import javax.validation.constraints.NotNull;
 
 @Data
 public class SwitchToChildDTO {
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 }

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/dto/SyncExternalResultDTO.java

@@ -6,10 +6,10 @@ import javax.validation.constraints.NotNull;
 
 @Data
 public class SyncExternalResultDTO {
-    @NotNull(message = "孩子ID不能为空")
+    @NotNull(message = "成员ID不能为空")
     private Long memberId;
 
-    @NotNull(message = "家长ID不能为空")
+    @NotNull(message = "主账号ID不能为空")
     private Long parentId;
 
     @NotNull(message = "测评ID不能为空")

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/UnlockStatusDTO.java

@@ -20,7 +20,7 @@ public class UnlockStatusDTO implements Serializable {
     /** 全家沙盘是否锁定 */
     private boolean familySandboxLocked;
 
-    /** 孩子微行动是否锁定 */
+    /** 家庭成员微行动是否锁定 */
     private boolean childMicroActionLocked;
 
     /** 是否已加入家庭 */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/UpdateUserDTO.java

@@ -24,7 +24,7 @@ public class UpdateUserDTO {
     private String highestEducation; // 最高学历
     private String maritalStatus; // 婚姻状态
 
-    // 家长身份
+    // 家庭角色
     private String familyRole;
 
     private String hobbies;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/WishDTO.java

@@ -12,7 +12,7 @@ public class WishDTO {
     // 归属信息
     private Long familyId;
     private Long memberId;
-    private String childName;      // 孩子昵称(关联查询)
+    private String childName;      // 成员昵称(关联查询)
     private Long createdBy;
     private String creatorType;
     private String creatorName;    // 创建者名�?

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/AssessmentResult.java

@@ -32,7 +32,7 @@ public class AssessmentResult implements Serializable {
     private Date createdAt;
     private Date updatedAt;
 
-    // 孩子快照字段
+    // 家庭成员快照字段
     private String childName;
     private Date childBirthday;
     private String childGender;

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/entity/DanAssessmentResult.java

@@ -94,8 +94,8 @@ public class DanAssessmentResult implements Serializable {
 
     private Date updatedAt;
 
-    // === 孩子快照字段(每次测评时快照,存当时的值) ===
-    private String childName; // 孩子姓名
+    // === 家庭成员快照字段(每次测评时快照,存当时的值) ===
+    private String childName; // 家庭成员姓名
     private Date childBirthday; // 出生日期
     private String childGender; // 性别
     private Integer childAge; // 年龄(快照时计算)
@@ -134,7 +134,7 @@ public class DanAssessmentResult implements Serializable {
     private String dimension; // mind(心-A2)/wisdom(智-B4)
     private String reportFileId; // 上传文件媒资ID
     private String draftStatus; // pending(待确认)/confirmed(已确认)
-    /** DAN 等级 A/B/C/D(旧库必填列;家长上传无分数时写 U) */
+    /** DAN 等级 A/B/C/D(旧库必填列;家庭主账号上传无分数时写 U) */
     private String danLevel;
 
     // === 独立化扩展字段(迁移93新增) ===

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/EnergyBalance.java

@@ -15,7 +15,7 @@ public class EnergyBalance implements Serializable {
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
 
     /** 维度ID */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/EnergyLog.java

@@ -15,7 +15,7 @@ public class EnergyLog implements Serializable {
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
 
     /** 维度ID */

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/FamilyMember.java

@@ -80,8 +80,8 @@ public class FamilyMember implements Serializable {
 
     private Date createdAt;
 
-    /** 孩子专属字段(原children表) */
-    /** 身份证号(孩子) */
+    /** 家庭成员专属字段(原children表) */
+    /** 身份证号(家庭成员) */
     private String idCard;
 
     /** 是否扣减积分(0否1是) */

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/FollowUp.java

@@ -14,7 +14,7 @@ public class FollowUp implements Serializable {
     private Long id;
     /** 家庭ID */
     private Long familyId;
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
     /** 规划师ID */
     private Long teacherId;
@@ -28,7 +28,7 @@ public class FollowUp implements Serializable {
     private String priority;
     /** 描述 */
     private String description;
-    /** 家长反馈 */
+    /** 家庭主账号反馈 */
     private String parentFeedback;
     /** 规划师点评 */
     private String teacherReview;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/MembershipLevel.java

@@ -35,7 +35,7 @@ public class MembershipLevel implements Serializable {
 
     private String features;  // 功能权限列表(JSON)
 
-    private Integer maxChildren;  // 可添加孩子数量
+    private Integer maxChildren;  // 可添加家庭成员数量
 
     private Integer maxTasksPerDay;  // 每日任务上限
 

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/RecommendationLog.java

@@ -21,7 +21,7 @@ public class RecommendationLog implements Serializable {
     /** 家庭ID */
     private Long familyId;
 
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
 
     /** 内容类型: article/task/product/activity */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/ReportSurvey.java

@@ -24,7 +24,7 @@ public class ReportSurvey implements Serializable {
     /** 用户ID */
     private Long userId;
 
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
 
     /** 调研问卷结果JSON */

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/RewardWishlist.java

@@ -9,7 +9,7 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * 家长心愿单/奖励表
+ * 家庭主账号心愿单/奖励表
  */
 @Data
 @TableName("reward_wishlists")
@@ -20,7 +20,7 @@ public class RewardWishlist implements Serializable {
 
     private Long familyId;
 
-    private Long userId; // 家长用户ID
+    private Long userId; // 家庭主账号用户ID
 
     private String title;
 

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/ShoppingList.java

@@ -14,7 +14,7 @@ public class ShoppingList implements Serializable {
     private Long id;
     /** 用户ID */
     private Long userId;
-    /** 孩子ID */
+    /** 家庭成员ID */
     private Long childId;
     /** 健康报告ID */
     private Long reportId;

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/Task.java

@@ -21,7 +21,7 @@ private Long familyMemberId;
 
 private Long creatorId;
 
-// 执行者类型: child(孩子) 或 parent(家长)
+// 执行者类型: child(家庭成员) 或 parent(家庭主账号)
 private String executorType;
 
 // 执行者ID (当executorType=child时对应child表ID,executorType=parent时对应user表ID)
@@ -36,7 +36,7 @@ private String description;
 
 private Integer points;
 
-// 截止时间(允许NULL,支持多孩子任务和家长任务)
+// 截止时间(允许NULL,支持多家庭成员任务和家庭主账号任务)
 private Date deadline;
 
 // TASK-004: 重复类型 (none/daily/weekly)

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/TaskPlanInstance.java

@@ -19,7 +19,7 @@ public class TaskPlanInstance implements Serializable {
 
     private Long familyId;       // 所属家庭
 
-    private Long childId;        // 适用孩子
+    private Long childId;        // 适用家庭成员
 
     private String name;         // 实例名称
 
@@ -45,7 +45,7 @@ public class TaskPlanInstance implements Serializable {
 
     private String reviewComment;   // 审核意见
 
-    private Long confirmedBy;       // 确认人(家长ID)
+    private Long confirmedBy;       // 确认人(家庭主账号ID)
 
     private Date confirmedAt;       // 确认时间
 

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/TaskReminderConfig.java

@@ -15,7 +15,7 @@ public class TaskReminderConfig implements Serializable {
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 用户ID(users.id),家长账号 */
+    /** 用户ID(users.id),家庭主账号 */
     private Long userId;
 
     /** 提醒渠道(逗号分隔): in_app/wechat/sms/phone/email */

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/TeacherFamilyBindingRequest.java

@@ -10,7 +10,7 @@ import java.util.Date;
 
 /**
  * 规划师绑定家庭申请表
- * 规划师通过邀请码申请绑定家庭,家长审批后正式生效
+ * 规划师通过邀请码申请绑定家庭,家庭主账号审批后正式生效
  */
 @Data
 @TableName("teacher_family_binding_requests")
@@ -34,7 +34,7 @@ public class TeacherFamilyBindingRequest implements Serializable {
     /** 申请时间 */
     private Date requestedAt;
 
-    /** 审批人用户ID(家长) */
+    /** 审批人用户ID(家庭主账号) */
     private Long decidedBy;
 
     /** 审批时间 */

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/TeacherMessage.java

@@ -17,7 +17,7 @@ public class TeacherMessage implements Serializable {
 
     private Long familyId;          // 家庭ID
 
-    private Long parentId;          // 家长用户ID
+    private Long parentId;          // 家庭主账号用户ID
 
     private Long teacherId;         // 成长规划师用户ID
 

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/TrainingPlan.java

@@ -13,7 +13,7 @@ public class TrainingPlan implements Serializable {
     @TableId(type = IdType.AUTO)
     private Long id;
     private Long guideId;       // 规划师ID
-    private Long childId;       // 目标孩子ID
+    private Long childId;       // 目标家庭成员ID
     private String title;       // 方案标题
     private String description; // 方案描述
     private String status;      // draft / published / completed

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/TrainingPlanTask.java

@@ -15,7 +15,7 @@ public class TrainingPlanTask implements Serializable {
     private Long planId;        // 方案ID
     private Long planItemId;    // 方案项目ID
     private Long taskId;        // 实际Task ID(关联tasks表)
-    private Long childId;       // 执行孩子
+    private Long childId;       // 执行家庭成员
     private String status;      // pending / completed
     private Date createdAt;
 }

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/entity/User.java

@@ -57,7 +57,7 @@ public class User implements Serializable {
 
     private String gender; // 性别: male/female
 
-    // 家长积分 (孩子没有积分,用积分奖励家长)
+    // 家庭主账号积分 (家庭成员没有积分,用积分奖励家庭主账号)
     private Integer totalPoints;
 
     // 成长规划师关联的家庭ID列表 (逗号分隔)
@@ -95,7 +95,7 @@ public class User implements Serializable {
     private String hobbies; // 兴趣爱好
     private String dietPreferences; // 饮食偏好
 
-    // 家长身份: 爸爸/妈妈/爷爷/奶奶/姥爷/姥姥/其他
+    // 家庭主账号身份: 爸爸/妈妈/爷爷/奶奶/姥爷/姥姥/其他
     private String familyRole;
 
     // 服务商类型: null=普通用户 / planner / activity_provider / product_supplier

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/entity/Wish.java

@@ -10,7 +10,7 @@ import java.util.Date;
 
 /**
  * 心愿实体类
- * 统一管理孩子和家长创建的心愿
+ * 统一管理家庭成员和家庭主账号创建的心愿
  */
 @Data
 @TableName("wishes")
@@ -21,7 +21,7 @@ public class Wish implements Serializable {
 
     // ========== 归属信息 ==========
     private Long familyId;
-    private Long childId;           // 目标孩子ID
+    private Long childId;           // 目标家庭成员ID
     private Long createdBy;         // 创建者用户ID
     private String creatorType;     // 创建者类型: child/parent
 
@@ -47,7 +47,7 @@ public class Wish implements Serializable {
     // ========== 兑现流程 ==========
     private Long fulfilledBy;          // 兑现者ID
     private Date fulfilledAt;          // 兑现时间
-    private Date childConfirmedAt;     // 孩子确认收货时间
+    private Date childConfirmedAt;     // 家庭成员确认收货时间
 
     // ========== 拒绝记录 ==========
     private Long rejectedBy;           // 拒绝者ID

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/AccountCleanupService.java

@@ -162,7 +162,7 @@ public class AccountCleanupService {
         userInfo.put("memberLevel", user.getMemberLevel());
         data.put("userInfo", userInfo);
 
-        // 孩子信息(已迁移至 family_members 表)
+        // 家庭成员信息(已迁移至 family_members 表)
         data.put("children", familyMemberMapper.selectList(
                 new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<FamilyMember>()
                         .eq(FamilyMember::getUserId, userId)

+ 4 - 4
cfc-backend/src/main/java/com/etotem/cfc/service/ActivityService.java

@@ -232,21 +232,21 @@ public class ActivityService extends ServiceImpl<ActivityMapper, Activity> {
 
         // 2. If no memberId, can't create task
         if (memberId == null) {
-            result.put("error", "需要孩子身份签到");
+            result.put("error", "需要家庭成员身份签到");
             return result;
         }
 
         // 2.5 Identity: phone child self-checkin only; phone-less child allows same-family proxy
         FamilyMember child = familyMemberMapper.selectById(memberId);
         if (child == null) {
-            result.put("error", "孩子不存在");
+            result.put("error", "成员不存在");
             return result;
         }
         boolean childHasPhone = StringUtils.hasText(child.getPhone());
         if (childHasPhone) {
             boolean isSelf = child.getUserId() != null && child.getUserId().equals(userId);
             if (!isSelf) {
-                result.put("error", "有手机号的孩子只能本人签到");
+                result.put("error", "有手机号的成员只能本人签到");
                 return result;
             }
         } else {
@@ -389,7 +389,7 @@ public class ActivityService extends ServiceImpl<ActivityMapper, Activity> {
      * 签到奖励发放(积分/能量/CF)。免审签到在 checkin 内调用;需审核签到在审核通过时调用。
      */
     private void awardCheckinRewards(Activity activity, FamilyMember child, Task task, Long userId, int points) {
-        // 更新孩子总积分
+        // 更新家庭成员总积分
         if (child != null) {
             child.setTotalPoints(child.getTotalPoints() + points);
             child.setUpdatedAt(new Date());

+ 5 - 5
cfc-backend/src/main/java/com/etotem/cfc/service/AiContextService.java

@@ -162,7 +162,7 @@ public class AiContextService {
             for (ChildInfoDTO child : children) {
                 Long memberId = child.getId();
                 if (targetUserId != null && !targetUserId.equals(userId)) {
-                    // 如果指定了 memberId,只返回该孩子
+                    // 如果指定了 memberId,只返回该家庭成员
                     if (!memberId.equals(targetUserId)) {
                         continue;
                     }
@@ -185,19 +185,19 @@ public class AiContextService {
         return result;
     }
 
-    /** 孩子详细信息上下文 */
+    /** 家庭成员详细信息上下文 */
     private Map<String, Object> getChildInfoContext(Long userId, Map<String, Object> params) {
         Map<String, Object> result = new LinkedHashMap<>();
-        result.put("数据类型", "孩子信息");
+        result.put("数据类型", "成员信息");
 
         List<ChildInfoDTO> children = userService.getChildren(userId);
         if (children == null || children.isEmpty()) {
             result.put("has_data", false);
-            result.put("提示", "暂无孩子信息");
+            result.put("提示", "暂无成员信息");
             return result;
         }
 
-        // 如果指定了孩子姓名,筛选
+        // 如果指定了家庭成员姓名,筛选
         String childName = params != null ? (String) params.get("childName") : null;
         List<Map<String, Object>> childList = new ArrayList<>();
 

+ 3 - 3
cfc-backend/src/main/java/com/etotem/cfc/service/ArticleService.java

@@ -533,7 +533,7 @@ public class ArticleService {
     public void reportReadingTime(Long articleId, Long userId, Long memberId, int durationSeconds) {
         if (memberId == null) return;
 
-        // 查找当日已有记录(同文章+同孩子)
+        // 查找当日已有记录(同文章+同家庭成员)
         LambdaQueryWrapper<ArticleReadingRecord> wrapper = new LambdaQueryWrapper<ArticleReadingRecord>()
                 .eq(ArticleReadingRecord::getArticleId, articleId)
                 .eq(ArticleReadingRecord::getChildId, memberId)
@@ -947,7 +947,7 @@ public class ArticleService {
         Map<String, Object> fallback = new HashMap<>();
         fallback.put("id", null);
         fallback.put("title", "每日心理小贴士");
-        fallback.put("summary", "每天花5分钟与孩子聊聊今天的心情,倾听比建议更重要。");
+        fallback.put("summary", "每天花5分钟与家人聊聊今天的心情,倾听比建议更重要。");
         fallback.put("coverImage", null);
         return fallback;
     }
@@ -971,7 +971,7 @@ public class ArticleService {
             contentPreview = contentPreview.substring(0, 800);
         }
         String prompt = "你是一个家庭教育助手。根据以下文章内容,为儿童生成 2 道选择题(每题 4 个选项)。"
-            + "题目应该适合该年龄段的孩子理解。"
+            + "题目应该适合该年龄段的儿童理解。"
             + "请以 JSON 数组格式返回,格式:[{\"question\":\"问题\",\"options\":[\"A.选项 1\",\"B.选项 2\",\"C.选项 3\",\"D.选项 4\"],\"answer\":\"A\"}]"
             + "不要返回其他文字,只返回 JSON 数组。"
             + "\n\n文章标题:" + article.getTitle()

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentComparisonService.java

@@ -81,7 +81,7 @@ public class AssessmentComparisonService {
     }
 
     /**
-     * 对比某个孩子的首次 vs 最新测评
+     * 对比某个家庭成员的首次 vs 最新测评
      */
     public CompareResult compareByChild(Long memberId) {
         List<DanAssessmentResult> results = danAssessmentResultMapper.selectList(
@@ -204,7 +204,7 @@ public class AssessmentComparisonService {
     }
 
     /**
-     * 家庭维度:所有孩子的对比
+     * 家庭维度:所有家庭成员的对比
      */
     public List<CompareResult> compareByFamily(Long familyId) {
         List<FamilyMember> children = familyMemberMapper.selectList(

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentQuotaService.java

@@ -29,7 +29,7 @@ public class AssessmentQuotaService {
         AssessmentQuota quota = new AssessmentQuota();
         quota.setQuotaNo(generateQuotaNo());
         quota.setFamilyId(order.getFamilyId() != null ? order.getFamilyId() : 0L);
-        quota.setChildId(null); // 不绑定具体孩子
+        quota.setChildId(null); // 不绑定具体家庭成员
         quota.setProductOrderId(order.getId());
         quota.setProductId(order.getProductId());
         quota.setProductName(order.getProductName());

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentService.java

@@ -295,7 +295,7 @@ public class AssessmentService extends ServiceImpl<AssessmentMaterialMapper, Ass
     }
 
     public DanAssessmentResult getByAppointmentId(Long appointmentId) {
-        // 优先按主键查询(家长/教师通过 result/{id} 详情接口传入的可能是 dan_assessment_results.id)
+        // 优先按主键查询(家庭主账号/教师通过 result/{id} 详情接口传入的可能是 dan_assessment_results.id)
         DanAssessmentResult byId = danAssessmentResultMapper.selectById(appointmentId);
         if (byId != null) {
             return byId;

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/BadgeService.java

@@ -103,7 +103,7 @@ public class BadgeService {
         childBadgeMapper.insert(cb);
     }
 
-    // ===== 孩子勋章查询 =====
+    // ===== 家庭成员勋章查询 =====
 
     public List<ChildBadge> getChildBadges(Long memberId) {
         return childBadgeMapper.selectList(

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/BindInviteService.java

@@ -37,7 +37,7 @@ public class BindInviteService {
         // 创建待绑定关系
         GuideFamily gf = new GuideFamily();
         gf.setGuideId(guideId);
-        gf.setFamilyId(0L); // 暂时为0,家长确认时再设置
+        gf.setFamilyId(0L); // 暂时为0,家庭主账号确认时再设置
         gf.setServiceType("consulting");
         gf.setServicePrice(0);
         gf.setStatus("pending"); // 待确认状态

Некоторые файлы не были показаны из-за большого количества измененных файлов