Sfoglia il codice sorgente

impl(S-cfc-158): dan.assessment.resultRecord 录入触发五维维度刷新(SC-T-30)与方案生成链(SC-T-07) 使 3 例契约测试全绿

Sisyphus Agent 22 ore fa
parent
commit
c36d6515b

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

@@ -73,6 +73,14 @@ public class AssessmentService extends ServiceImpl<AssessmentMaterialMapper, Ass
     @Resource
     private ReportMemberPermissionService reportMemberPermissionService;
 
+    /** SC-T-30:五维维度刷新钩子(测评录入触发五维维度变化) */
+    @Resource
+    private DimensionScoreService dimensionScoreService;
+
+    /** SC-T-07:方案生成钩子(参照 confirmUpload 的 planGenerator.generate 先例) */
+    @Resource
+    private AssessmentPlanGenerator planGenerator;
+
     public AssessmentMaterial getActiveMaterial() {
         LambdaQueryWrapper<AssessmentMaterial> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(AssessmentMaterial::getStatus, "active");
@@ -283,6 +291,32 @@ public class AssessmentService extends ServiceImpl<AssessmentMaterialMapper, Ass
             System.err.println("Auto-growth-record creation failed for assessment " + result.getId() + ": " + e.getMessage());
         }
 
+        // SC-T-30:录入测评结果触发五维维度变化(非致命,失败不影响落库)
+        try {
+            if (dimensionScoreService != null && result.getFamilyMemberId() != null) {
+                dimensionScoreService.refreshFromDanAssessment(
+                        result.getFamilyMemberId(), result.getId(), result.getDimension());
+            }
+        } catch (Exception e) {
+            log.warn("五维维度刷新失败 resultId={}: {}", result.getId(), e.getMessage());
+        }
+
+        // SC-T-07:录入测评结果触发方案生成链(参照 confirmUpload 的 planGenerator.generate 先例,非致命)
+        try {
+            if (planGenerator != null) {
+                Long planMemberId = result.getMemberId() != null ? result.getMemberId() : result.getFamilyMemberId();
+                if (planMemberId != null) {
+                    com.etotem.cfc.entity.User planUser = userMapper.selectById(planMemberId);
+                    Long familyId = planUser != null ? planUser.getFamilyId() : null;
+                    if (familyId != null) {
+                        planGenerator.generate(result, familyId, planMemberId);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.warn("自动生成测评方案失败 resultId={}: {}", result.getId(), e.getMessage());
+        }
+
         return result;
     }