task-2: 解析载荷改为单一规范行集合,消除 allItems 重复序列化
SimilarAsinParsedPayloadDto.allItems 标记 @JsonInclude(NON_EMPTY) 并仅作反序列化 兼容字段(新写入不再输出);buildParsedPayloadJson 只写 items 一份全量行, 消除每任务双倍行序列化的内存与 payload 体积。读取侧 getAllItems() 消费点保留 以兼容旧载荷(task-3 再统一收敛)。9 个测试覆盖默认/批量/幂等/空/单行/超限/ 旧格式吸收/依赖失败恢复。
This commit is contained in:
+5
-2
@@ -1,5 +1,6 @@
|
||||
package com.nanri.aiimage.modules.similarasin.model.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.nanri.aiimage.modules.similarasin.model.vo.SimilarAsinParsedGroupVo;
|
||||
import com.nanri.aiimage.modules.similarasin.model.vo.SimilarAsinParsedRowVo;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -29,12 +30,14 @@ public class SimilarAsinParsedPayloadDto {
|
||||
@Schema(description = "Excel 原始表头列表")
|
||||
private List<String> headers = new ArrayList<>();
|
||||
|
||||
@Schema(description = "平铺的全量有效行")
|
||||
@Schema(description = "平铺的全量有效行(单一规范行集合,写入侧唯一全量行来源)")
|
||||
private List<SimilarAsinParsedRowVo> items = new ArrayList<>();
|
||||
|
||||
@Schema(description = "按主数据块分组后的完整数据,每个 group.items 都是需要 Python 抓取的全量子行")
|
||||
private List<SimilarAsinParsedGroupVo> groups = new ArrayList<>();
|
||||
|
||||
@Schema(description = "全量有效行,用于兼容旧链路与结果文件组装")
|
||||
/** 兼容字段:仅用于反序列化旧版本 payload(items 为空时兜底),写入侧不再输出。 */
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
@Schema(description = "兼容旧链路字段,仅读取旧 payload 时使用;新写入不再输出", hidden = true)
|
||||
private List<SimilarAsinParsedRowVo> allItems = new ArrayList<>();
|
||||
}
|
||||
|
||||
-1
@@ -5876,7 +5876,6 @@ public class SimilarAsinTaskService {
|
||||
payload.setHeaders(headers == null ? List.of() : headers);
|
||||
payload.setItems(allRows == null ? List.of() : new ArrayList<>(allRows));
|
||||
payload.setGroups(groups == null ? List.of() : groups);
|
||||
payload.setAllItems(allRows == null ? List.of() : new ArrayList<>(allRows));
|
||||
return writeJson(payload, "保存解析结果失败");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user