huangzd1997
|
3ee281a433
|
fix(similarasin): LLM 默认模型改为 glm-5.3-flash(原 gemini-3.5-flash-lite/gemini-3.7-flash 在 ai.t8star 端点不可用,按指示统一)
|
2026-09-05 09:48:19 +08:00 |
|
huangzd1997
|
b468750d00
|
task-190: 日志脱敏契约(StructuredLog.maskToken 统一 Token 部分脱敏,ImageVideo maskForLog 委托;URL query/异常消息体不入日志、防注入)+ 8 条测试
|
2026-09-04 23:53:23 +08:00 |
|
huangzd1997
|
620ee15a48
|
task-178: 日志字段规范落地(StructuredLog 规范字段集+缺失占位+值消毒,字段名冻结)+ 8 条测试
- 规范字段 traceId/taskId/moduleType/stage/submissionId/chunkIndex/chunkTotal/jobId/result/errorType,顺序与 spec11 §2 一致
- format 只输出规范字段、缺失用 "-" 占位、换行/控制字符消毒、超长截断,防日志注入与字段漂移
- 源码锚点断言 Worker(task-file-job)/心跳(task-heartbeat) 代表性日志已带 taskId/moduleType 核心字段;不删现有日志
|
2026-09-04 23:37:50 +08:00 |
|
huangzd1997
|
05da03c5ba
|
task-176: 重试计数与日志字段(IdempotentRetryGuard 观测扩展:WARN 日志字段 + aiimage.http.retry 指标)+ 8 条测试
- 重试/最终失败打 WARN:client/url(去 query)/method/retry/耗时/延迟/原因类名,不打印含敏感信息的异常消息体
- 重试记 aiimage.http.retry 指标(method/client 标签),Micrometer 注册表可选,无注册表静默跳过
- 保留 task-172 原 API(构造器/execute 兼容),原 8 条测试不受影响;守卫仍不接调用点
|
2026-09-04 23:29:13 +08:00 |
|
huangzd1997
|
e248b2b935
|
task-172: 幂等重试守卫(仅 GET/HEAD 或显式幂等标记在传输错误时自动重试,次数/退避取自配置并封顶)+ 8 条测试
- IdempotentRetryGuard:isIdempotent/backoffMillis/isTransportError/execute 纯策略组件
- 非幂等(POST 等)不自动重试;退避 2 次幂增长、5s 封顶;总尝试严格受 aiimage.http-client.max-retries 约束防风暴
- 仅新增类与测试,不接调用点,零生产行为变化
|
2026-09-04 23:13:41 +08:00 |
|
huangzd1997
|
c1f03d64d1
|
task-171: 图片下载客户端配置接入(ImageDownloadHttpConfigResolver,download/prefetch 模块级现有配置优先、命名空间兜底)+ 8 条测试
- 真实基线:SimilarAsinImageEmbedder(OkHttp) connect/read=imageDownloadTimeoutSeconds(5s)、call=2×download(10s)、prefetch 1800s
- resolver 提供 connect/read/call/prefetch/maxRetries 访问面,模块级优先、命名空间兜底,不改调用点
- 仅新增类与测试,零生产行为变化
|
2026-09-04 23:10:36 +08:00 |
|
huangzd1997
|
ec23c0d77c
|
task-170: 紫鸟客户端配置接入(ZiniaoHttpConfigResolver 超时/重试读取,read 模块级现有配置优先、命名空间兜底)+ 8 条测试
- resolver 提供 connect/read/call/maxRetries/baseRetryDelay 访问面,不改动 ZiniaoClientImpl 调用点
- read 优先取 aiimage.ziniao.read-timeout-seconds(生产默认 15s,与 requestFactory(15000) 现状一致),未配置回退 aiimage.http-client.*
- 仅新增类与测试,零生产行为变化
|
2026-09-04 23:07:58 +08:00 |
|
huangzd1997
|
8241cd704e
|
feat(admin): A1 管理后台收敛 Java 单后台完整实现并修复 guard 误拦内部令牌
Build Backend JAR / build (push) Has been cancelled
- Java 补齐后台全部迁移差集:shopduplicatecheck 店铺数据重复检查模块(V108 扫描表+查询/扫描服务)、
PinyinAbbrUtil 拼音缩写、ImageHistory 接口调整为内部可用、AdminUser 支持内部令牌操作并放宽列表上限
- Flask 后台 admin_api.py 路由收敛转发 Java、admin.html/admin.js 适配新后台形态
- AdminApiGuardFilter 对可信 X-Internal-Token 放行(controller 自校验兜底),修复客户端仅凭
内部令牌调用 /api/admin/shop-manages/credential 被误拦 401
- 测试:AdminApiGuardFilterTest 补可信/假令牌用例;AdminUserServiceTest 补菜单权限 mock;
shopduplicatecheck 新增查询/聚合/CSV 单测
|
2026-09-04 11:30:09 +08:00 |
|
huangzd1997
|
3420c72c1d
|
fix(oss): 软件版本安装包显式上传公开 client 桶,对齐历史直链布局
Build Backend JAR / build (push) Has been cancelled
生产 Java 未设 AIIMAGE_OSS_BUCKET,默认桶为私有 nanri-ai-images;而 web_config
历史版本全部存于公开 client 桶(oss.aishufu.top/client/nanri-image/versions/...,
桌面端检测更新匿名下载)。原 uploadSoftwareVersionPackage 走默认桶会把新版本写入
私桶导致客户端无法下载。改为显式写 software-version-bucket(新增可配属性,默认
client,env AIIMAGE_OSS_SOFTWARE_VERSION_BUCKET)并保持 nanri-image/versions/ 前缀。
注:本提交含 OssStorageService 上"软件版本上传"方法与早前 readObjectBytesBounded
改动,为软件版本模块(见 ③)的配套存储能力。
|
2026-09-04 10:21:47 +08:00 |
|
huangzd1997
|
e5909c9977
|
fix(admin): 补齐 /api/admin 方法级鉴权并加兜底过滤器
ShopKey/SkipPriceAsin/QueryAsin/ShopManage/ProductCategory 五个 controller
此前无任何 require* 鉴权,SecurityConfig 全局 permitAll 且 nginx 无 ACL,
公网 18080 上可匿名读写店铺密钥等敏感数据。统一补 requireAdminOrInternal;
其中 ShopManage/SkipPrice/QueryAsin 原先信任调用方传入 operatorId/superAdmin,
改为从已认证 principal 推导,消除传 superAdmin=true 越权扩大数据范围的问题。
新增 AdminApiGuardFilter 对 /api/admin/** 兜底要求有效身份(JWT 或内部令牌),
防止后续新增端点遗漏鉴权再裸奔;支持 admin-guard-enabled/exempt-prefixes 配置。
|
2026-09-04 10:21:12 +08:00 |
|
huangzd1997
|
417a2bf831
|
后台店铺数据记录页新增 Tab 切换与重复 ASIN 分析;task-169/170 HTTP 客户端配置接入;dedupe/brand 相关改造
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/
|
2026-09-03 01:57:41 +08:00 |
|
huangzd1997
|
162ed7e406
|
task-168: LLM 客户端配置接入(LlmHttpConfigResolver 从 aiimage.http-client.* 读取超时/重试,默认值同现状、钳制、可覆盖)+ 8 条测试
|
2026-09-02 08:16:12 +08:00 |
|
huangzd1997
|
8ca5b1d53b
|
task-167: aiimage.http-client.* 配置命名空间(connect/read/call 超时与重试默认值同现状、非法值钳制、env 覆盖)+ 8 条测试;surefire 加 MaxMetaspaceSize 修复 fork 内存崩溃
|
2026-09-02 08:00:19 +08:00 |
|
huangzd1997
|
035ec9ac79
|
task-161: 巡检任务开关(aiimage.inspection.enabled 默认 disabled、cron 调度、分布式锁双实例去重、单巡检异常隔离、limit 透传)+ 8 条测试
|
2026-09-02 07:19:56 +08:00 |
|
huangzd1997
|
87a6d20f88
|
task-154: 临时目录磁盘容量告警(aiimage.storage.capacity-warn-bytes 阈值、告警含当前容量/阈值、10 分钟频率限制、测量失败容忍不阻塞)+ 8 条测试
|
2026-09-02 06:40:20 +08:00 |
|
huangzd1997
|
e2607ab723
|
task-98: 移除 similar-asin/appearance-patent 模块 Coze,状态机与共享组件改名 LLM
Build Backend JAR / build (push) Has been cancelled
- similarasin/appearancepatent 模块全部 Coze 工作流调用改走 direct-LLM(已确认唯一运行路径)
- 共享组件改名:CozeTaskQueueGate→TaskQueueGate、CozeGroupResultPropagator→GroupResultPropagator
- 状态机改名:biz_task_scope_state 的 coze_* 列→llm_*、stateJson coze 键→llm(V100 迁移已应用生产)
- 删除 biz_coze_credential 表、CozeCredential* 类、SimilarAsinCozeClient、AppearancePatentCozeClient→LlmClient
- 前端 brand 页 Coze 文案→LLM;Python 后端删除 cozepy 依赖与死配置
- 修复 TaskResultFileJobWorker 启动失败:TaskFileJobConfig 注册 ResultFileJobHandlerRegistry 与 13 个 handler bean(含 validateCoverage 启动校验)
|
2026-09-01 02:20:50 +08:00 |
|
huangzd1997
|
c8cd851b2f
|
feat: 外观专利改直连 LLM(DeepSeek/Gemini)、无效ASIN菜单更名 BRAND_DB、紫鸟店铺索引场景化
Build Backend JAR / build (push) Has been cancelled
- AppearancePatent:Coze 工作流切换为 llm-host 直连模型(title/appearance 双模型、行并发、重试),配置键迁移并保留旧环境变量兜底
- InvalidAsinDataMapper 补充按值+品牌唯一键查询
- ZiniaoShopIndexService 新增店铺分类/索引场景
- V98:无效ASIN菜单 rename 补充 BRAND_DB;docs 架构优化规划
- 配套单测更新
|
2026-08-31 17:04:59 +08:00 |
|
huangzd1997
|
483374744a
|
fix: Spring 多构造器类显式 @Autowired 标注 + V95 迁移兼容 MySQL 8.4
Build Backend JAR / build (push) Has been cancelled
- CapacityPlanService / ExternalCallMetricsRecorder / ZiniaoClientImpl:
双构造器(生产 + 测试入口)导致 Spring 6 不自动推断构造器注入,
启动报 'No default constructor found';生产构造器显式加 @Autowired
- V95:shop_key 列 V85 建表时已有,原 ADD COLUMN shop_key 会报
duplicate column;MySQL 8.4 不支持 ADD COLUMN IF NOT EXISTS,改
information_schema 动态 SQL;shop_key 缩到 VARCHAR(255) 以容纳
(shop_key, business_date) 唯一键(1000 在 utf8mb4 下超 3072 字节
索引上限);删除多余行改为单表 DELETE
|
2026-08-31 01:09:19 +08:00 |
|
huangzd1997
|
c517711169
|
task-80: 补充 JVM 堆、直接内存、临时磁盘和连接池容量配置说明
|
2026-08-30 22:30:56 +08:00 |
|
huangzd1997
|
39e52858d1
|
task-77: 统一 Coze、品牌检查和紫鸟 HTTP 客户端的连接复用策略
|
2026-08-30 21:08:28 +08:00 |
|
huangzd1997
|
6a4a115260
|
task-75: 虚拟线程任务等待队列上限与拒绝/延迟指标
|
2026-08-30 20:39:31 +08:00 |
|
huangzd1997
|
5105ca95c5
|
task-74: 隔离调度线程池、文件作业线程池和外部 Coze/图片执行池
|
2026-08-30 20:31:39 +08:00 |
|
huangzd1997
|
9de4603484
|
task-70: 历史清理改为 keyset 分页、小批量和短事务
|
2026-08-30 19:48:59 +08:00 |
|
huangzd1997
|
e2d6875ef9
|
task-66: 限制 RustFS 并发读写与重试的总资源预算
- 新增 aiimage.transient-storage.max-total-concurrent-operations 配置
(默认 0 不启用):跨 upload/read/delete 的总并发预算
- executeWithRetry 入口获取一个总许可,整次操作(含全部重试)全程占用,
重试不额外消耗,超预算立即拒绝并计入 operation=total rejected 指标
- 失败/完成后 finally 释放总许可,无残留锁;负值/0 视为未启用保持原行为
|
2026-08-30 18:57:26 +08:00 |
|
huangzd1997
|
9b1978aec8
|
task-65: transient payload 读取流式解压 + 解压后字节上限
- 新增 aiimage.transient-storage.max-decompressed-payload-bytes 配置
(默认 100MB,即 2x 存储上限),覆盖 gzip 二进制与 gzip64 兼容两条路径
- decodeGzipStream 按 8KB 缓冲流式解压,累计输出超过上限立即中止并报错,
防止压缩炸弹(zip bomb)在读取时无界膨胀内存
- 超限错误保留可识别消息(exceeds configured limit),由 resolvePayload 统一包装
|
2026-08-30 18:49:55 +08:00 |
|
huangzd1997
|
2cd5e07248
|
task-32: 将 task entity 本地缓存替换为有容量和过期回收的实现
|
2026-08-29 20:11:16 +08:00 |
|
huangzd1997
|
0e3dbe450f
|
task-16: 图片预取改短预算 best-effort,超时取消在途并回退 URL
prefetchToDiskBestEffort 在 budgetSeconds 内尽力预取,预算耗尽即取消
在途任务并返回未预取数量;缺图单元格由既有 fallback 直接写 URL。
put 前检查中断标志,避免取消后写盘与 spool close 竞态产生残留文件。
预算通过 aiimage.similar-asin.image-prefetch-budget-seconds 配置(默认 60s),
长预算后台预热路径 prefetchToDisk 行为不变。
|
2026-08-29 17:37:11 +08:00 |
|
huangzd1997
|
dc69b002db
|
task-15: async batched last_used_at touch refresh
|
2026-08-29 17:24:25 +08:00 |
|
huangzd1997
|
e201b13301
|
task-13: cap chunk merge row count and payload bytes with orphan fallback
|
2026-08-29 17:05:49 +08:00 |
|
huangzd1997
|
3b051bbafe
|
task-8: WorkbookFactory 输入解析改为受控读取,验证超大 Excel 失败提示
解析前用 ZipFile 中央目录探测 xlsx(zip) 条目数与解压总字节(不读压缩
内容),超过 maxWorkbookZipEntries(20000)/maxWorkbookUncompressedBytes
(512MB) 立即拒绝并给出可识别提示;非 zip/损坏文件跳过探测交给
WorkbookFactory 兜底转业务异常。0/负值配置回退默认。新增 8 个测试覆盖
正常路径、多文件、幂等、空输入、单行、解压超限、条目超限、损坏文件、
依赖失败恢复。
|
2026-08-29 15:11:53 +08:00 |
|
huangzd1997
|
68b7d9a4a4
|
task-7: 限制单文件大小、最大行数和最大字段长度,防止解析任务无界增长
新增 maxSourceFileBytes(50MB)/maxParseRows(50000)/maxFieldLength(2000)
三个配置项:文件超限在解析入口拒绝(异常消息可识别)、行数超限拒绝、
超长单元格字段截断。0/负值配置回退默认。新增 8 个测试覆盖正常路径、
多文件、幂等、空文件、单行、边界(恰好=上限通过、超限拒绝)、
非法输入(文件超限/字段截断)、依赖失败恢复。
|
2026-08-29 15:08:14 +08:00 |
|
huangzd1997
|
16bec1c0fa
|
task-5: 预览行数量改为配置驱动并做边界校验
解析响应预览上限从硬编码常量改为 SimilarAsinProperties.parseResponsePreviewLimit,
0/负值回退默认 100,超过 1000 clamp 到 1000 防止误配导致响应体无界膨胀。
新增 8 个测试覆盖默认路径、自定义值、幂等、空文件、单行、超限 clamp、非法配置回退、依赖失败恢复。
|
2026-08-29 14:48:01 +08:00 |
|
huangzd1997
|
18db20099a
|
OSS 结果文件下载分流:新增 aiimage.oss.download-endpoint 配置,result/ 前缀对象生成独立下载域名直链(默认未配置时回退原行为)
Build Backend JAR / build (push) Has been cancelled
|
2026-08-26 13:37:11 +08:00 |
|
huangzd1997
|
338493ecaa
|
安全加固:CORS白名单、JWT密钥自动生成、SSRF防护、路径遍历与错误信息泄露修复
Build Backend JAR / build (push) Has been cancelled
|
2026-08-25 18:05:28 +08:00 |
|
supernijia
|
159d52194c
|
更新任务存储、权限与货源查询流程
Build Backend JAR / build (push) Has been cancelled
|
2026-08-22 21:23:01 +08:00 |
|
supernijia
|
7a7f1dfa21
|
完善任务存储、权限及货源查询流程
Build Backend JAR / build (push) Has been cancelled
|
2026-08-14 22:49:15 +08:00 |
|
supernijia
|
5b1ccad40e
|
后台更新 服务优化
Build Backend JAR / build (push) Failing after 16m54s
|
2026-08-11 14:50:21 +08:00 |
|
supernijia
|
38216a1885
|
处理后台新需求
Build Backend JAR / build (push) Failing after 16m58s
|
2026-08-09 20:08:39 +08:00 |
|
supernijia
|
28e7fce11c
|
新需求更新 同步更新
|
2026-08-06 01:11:54 +08:00 |
|
supernijia
|
9048bbb7f8
|
处理数据量binlog问题
|
2026-07-28 15:49:41 +08:00 |
|
supernijia
|
7c3c9e53a0
|
菜单修改优化
|
2026-07-28 13:40:19 +08:00 |
|
supernijia
|
4ddb8b47b0
|
完成上架相关优化、oss迁移
|
2026-07-25 17:57:34 +08:00 |
|
supernijia
|
8ab36b1aaf
|
上架需求增加
|
2026-07-25 09:58:29 +08:00 |
|
super
|
69784b8d32
|
添加新需求
|
2026-07-16 13:12:46 +08:00 |
|
super
|
d8ca8de537
|
完成视频部分的前后端
|
2026-07-11 19:42:42 +08:00 |
|
super
|
aab4ce942c
|
更新带货视频工作流接口和页面
|
2026-07-09 00:27:49 +08:00 |
|
super
|
0ecf5cd45a
|
后端优化修复问题
|
2026-06-18 18:53:16 +08:00 |
|
super
|
ac19637ad6
|
处理修复BUG
|
2026-06-14 16:48:20 +08:00 |
|
super
|
c85e5b278f
|
新增内容,新增拉起软件层
|
2026-06-08 09:19:15 +08:00 |
|
super
|
8ab647c419
|
提交更改
|
2026-06-05 21:25:03 +08:00 |
|