后台店铺数据记录页新增 Tab 切换与重复 ASIN 分析;task-169/170 HTTP 客户端配置接入;dedupe/brand 相关改造
Build Backend JAR / build (push) Has been cancelled
Build Backend JAR / build (push) Has been cancelled
- 管理后台:店铺数据记录改为列表分页展示(去任务号/文件列/累计标题,'最新'改'更新时间'),新增'重复 ASIN' Tab 按跨店聚合展示 ASIN/店铺/分组/国家/日期/价格;修复失败/进行中任务被过滤不显示的问题 - task-169: BrandCheckHttpConfigResolver 从 aiimage.http-client.* 读取品牌检查超时/重试(默认同现状、钳制),附 8 条测试 - task-170: surefire 内存调整为 1536m - dedupe: DedupeRunService 重构(事务边界/进度)、新增 DedupeRunProgressVo、Controller 与结果 VO 调整,PermissionMenuService 相应适配 - brand/dedupe 前端:BrandDedupeTab/BrandPatrolDeleteTab 改造、新增 CountrySelector 组件与 country-options、类型与接口端对齐、测试更新 - 移除无引用文件:backend/static/logo.jpg、prompts/
This commit is contained in:
+83
@@ -0,0 +1,83 @@
|
||||
package com.nanri.aiimage.config;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* task-169:品牌检查客户端配置接入契约(plan 10,同 168 模式)。
|
||||
* 从 aiimage.http-client.* 读取;默认与 BrandCheckProperties 现状一致
|
||||
* (connect 10s / read 60s);覆盖生效;非法值钳制。
|
||||
*/
|
||||
class BrandCheckHttpConfigResolverTest {
|
||||
|
||||
private HttpClientProperties properties;
|
||||
private BrandCheckHttpConfigResolver resolver;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
properties = new HttpClientProperties();
|
||||
resolver = new BrandCheckHttpConfigResolver(properties);
|
||||
}
|
||||
|
||||
@Test
|
||||
void timeoutFromConfigApplied() {
|
||||
assertEquals(10_000L, resolver.connectTimeoutMillis());
|
||||
assertEquals(60_000L, resolver.readTimeoutMillis());
|
||||
assertEquals(90_000L, resolver.callTimeoutMillis());
|
||||
}
|
||||
|
||||
@Test
|
||||
void defaultKeptSameAsBrandCheckCurrent() {
|
||||
// 现状基线:BrandCheckProperties connect 10s / read 60s
|
||||
assertEquals(10_000L, resolver.connectTimeoutMillis());
|
||||
assertEquals(60_000L, resolver.readTimeoutMillis());
|
||||
}
|
||||
|
||||
@Test
|
||||
void overrideTakesEffect() {
|
||||
properties.setConnectTimeoutMillis(15_000);
|
||||
properties.setReadTimeoutMillis(45_000);
|
||||
properties.setMaxRetries(2);
|
||||
|
||||
assertEquals(15_000L, resolver.connectTimeoutMillis());
|
||||
assertEquals(45_000L, resolver.readTimeoutMillis());
|
||||
assertEquals(2, resolver.maxRetries());
|
||||
}
|
||||
|
||||
@Test
|
||||
void callTimeoutReflected() {
|
||||
properties.setCallTimeoutMillis(120_000);
|
||||
assertEquals(120_000L, resolver.callTimeoutMillis());
|
||||
}
|
||||
|
||||
@Test
|
||||
void retryConfigApplied() {
|
||||
assertEquals(3, resolver.maxRetries());
|
||||
properties.setMaxRetries(0);
|
||||
assertEquals(0, resolver.maxRetries());
|
||||
}
|
||||
|
||||
@Test
|
||||
void invalidTimeoutsClamped() {
|
||||
properties.setConnectTimeoutMillis(-100);
|
||||
assertEquals(1_000L, resolver.connectTimeoutMillis());
|
||||
properties.setReadTimeoutMillis(99_999_999L);
|
||||
assertEquals(3_600_000L, resolver.readTimeoutMillis());
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolverWired() {
|
||||
assertTrue(resolver.connectTimeoutMillis() > 0);
|
||||
assertTrue(resolver.readTimeoutMillis() > 0);
|
||||
assertTrue(resolver.maxRetries() >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void behaviorSameAsCurrent() {
|
||||
assertEquals(10_000L, resolver.connectTimeoutMillis());
|
||||
assertEquals(60_000L, resolver.readTimeoutMillis());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user