package com.battery.business.service.report; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.ruoyi.common.exception.ServiceException; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.Size; /** 普通编辑只允许展示内容,不能提交来源身份或测量快照。 */ public record CompareReportEditRequest( @Positive int baseVersionNo, @NotBlank @Size(max = 100) String name, @Size(max = 2000) String description, @Size(max = 500) String experimentName, @NotNull @Valid CompareReportRequest.Settings settings, @NotBlank @Size(max = 500) String changeSummary) { /** 拒绝越过编辑边界的字段,避免将篡改测量请求报告为保存成功。 */ @JsonAnySetter public void rejectUnknown(String field, Object value) { throw new ServiceException("报表编辑不允许提交字段:" + field); } /** 主动更新只携带基准和原因,来源范围由后端确定;原因长度为系统追加的摘要前缀预留空间。 */ public record Refresh(@Positive int baseVersionNo, @NotBlank @Size(max = 480) String changeSummary) { /** 来源和测量不得由调用方替换。 */ @JsonAnySetter public void rejectUnknown(String field, Object value) { throw new ServiceException("更新来源不允许提交字段:" + field); } } }