fix: 交互优化

This commit is contained in:
old burden 2026-03-31 14:40:52 +08:00
parent 15f5a20f7c
commit bb35045ff2
1 changed files with 20 additions and 6 deletions

View File

@ -268,20 +268,30 @@ public class PortalVideoController extends BaseController {
public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) { public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) {
List<ContentItem> contentList; List<ContentItem> contentList;
if (request.getContent() != null && !request.getContent().isEmpty()) { if (request.getContent() != null && !request.getContent().isEmpty()) {
contentList = request.getContent(); contentList = new ArrayList<>(request.getContent());
ContentItem head = contentList.get(0); ContentItem head = contentList.get(0);
if (head == null || !"text".equals(head.getType()) || StringUtils.isEmpty(head.getText())) { if (head == null || !"text".equals(head.getType()) || StringUtils.isEmpty(head.getText())) {
return AjaxResult.error("请输入视频描述文本(首条须为 type=text可含 [图n] 占位)"); return AjaxResult.error("请输入视频描述文本(首条须为 type=text可含 [图n] 占位)");
} }
// 保留 text + 合法 reference_image允许只有 text 没有参考图
List<ContentItem> filtered = new ArrayList<>();
filtered.add(head);
for (int i = 1; i < contentList.size(); i++) {
ContentItem it = contentList.get(i);
if (isReferenceImageContentItem(it)) {
filtered.add(it);
}
}
contentList = filtered;
String firstRef = contentList.stream() String firstRef = contentList.stream()
.skip(1)
.filter(PortalVideoController::isReferenceImageContentItem) .filter(PortalVideoController::isReferenceImageContentItem)
.map(it -> it.getImageUrl().getUrl()) .map(it -> it.getImageUrl().getUrl())
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (StringUtils.isEmpty(firstRef)) { // 无参考图也允许 text 提示词
return AjaxResult.error("请上传参考图content 中须含 image_url + role=reference_image"); if (StringUtils.isNotEmpty(firstRef) && StringUtils.isEmpty(request.getReferenceUrl())) {
}
if (StringUtils.isEmpty(request.getReferenceUrl())) {
request.setReferenceUrl(firstRef); request.setReferenceUrl(firstRef);
} }
} else { } else {
@ -318,7 +328,11 @@ public class PortalVideoController extends BaseController {
return false; return false;
} }
ImageUrl iu = item.getImageUrl(); ImageUrl iu = item.getImageUrl();
return iu != null && StringUtils.isNotEmpty(iu.getUrl()); if (iu == null || StringUtils.isEmpty(iu.getUrl())) {
return false;
}
String url = iu.getUrl().trim().toLowerCase();
return url.startsWith("http://") || url.startsWith("https://");
} }
private List<ContentItem> buildTextAndFirstFrame(String text, String firstUrl) { private List<ContentItem> buildTextAndFirstFrame(String text, String firstUrl) {