Commit Graph

275 Commits

Author SHA1 Message Date
huangzd1997 11d1951c7f fix(collect-data): 品牌检测查询失败不再写入无效品牌表,避免故障期误杀永久拉黑
线上 task-27265 采集结果 0 行的根因:.env 缺 export 导致 Java 请求
16890 不带 X-Token 全线 422 -> 整批 queryFailed,而 filterByBrandCheck
把 queryFailed 与 rejected 一并写入 biz_invalid_asin_data,故障品牌被
永久拉黑,后续任务同品牌商品全部被 invalidFiltered 误杀(9-01 起所有
采集任务均 0 行)。改为仅真正判定无效的 rejected 才写表,rejected 为空
不触发写入;新增 2 个单测固化契约。
2026-09-09 10:26:56 +08:00
huangzd1997 45fdd8a294 feat(software-version): 安装包改浏览器直传 MinIO,支持批量删除
- 后端新增 /api/admin/version/presign、confirm、delete 端点;直传后服务端校验对象并写 web_config
- OSS 层新增软件版本对象 presign PUT/大小校验/删除与 client 桶 URL 识别
- 后台前端上传改 presign→PUT→confirm 三段式直传,带进度条;成功提示精简为"发布成功"
- 版本列表加勾选/表头全选、批量删除与单行删除;操作按钮样式对齐其他子菜单
2026-09-08 23:51:18 +08:00
huangzd1997 197643a8fa fix: 商标查询失败自动重试、货源结果图切回Excel内嵌防WPS #REF、外观专利标题模型改gemini-3.8-flash
- brand-check: 单品牌商标查询失败(异常/空响应/query_faild_data 非空)自动重试,
  次数与间隔可配(retry-times 默认3含首次 / retry-interval-millis 1000),命中侵权不重试;
  collectdata 品牌过滤与外观专利商标核验两侧同时受益
- similarasin: 货源结果Excel图片由WPS DISPIMG 切回 Excel 365 richData 单元格内嵌,
  修复 WPS 打开 DISPIMG 显示 #REF 的兼容回归;下载失败单元格回退为URL文本
- appearance-patent: 标题商标提取模型由 deepseek-v4-flash 切 gemini-3.8-flash
2026-09-08 19:01:08 +08:00
huangzd1997 f2906e8d6f fix(delete-brand): 分片缺失降级组装收尾+失败兜底生成可下载结果
- 结果分片缺失 ≤ missingChunkFallbackLimit(默认20) 时降级组装,缺失行标「未回传」,任务不再整体白跑
- 超阈值失败/组装异常时通过 ResultFileJobHandler.fallbackAssembleOnFailure 兜底生成部分结果文件
- 组装失败文案带缺失分片号明细(如 缺失分片: [247](已收 4283/4284))
- 新增 GET /api/delete-brand/tasks/{taskId}/missing-chunks,补传后自动恢复终态失败组装 job
- stale-check 失败文案改为含最后心跳时间与最近组装失败真实原因(修复误导性「回传长时间无响应」)
- 新增降级合并/缺失分片单测,Handler/Worker 日志审计 stage 白名单补 FALLBACK
2026-09-08 13:18:58 +08:00
huangzd1997 abcfa5bef7 perf(similarasin): LLM 输入图转存前压缩,规避网关拉图超时
- 主图/拼图转存 MinIO supply_images 前统一走 SimilarAsinImageEmbedder.resizeImage
  (长边 1280 / JPEG q0.75 / 迭代降质至 ≤150KB),体积 1~5MB → 100~300KB
- 根因:LLM 网关按 URL 拉取 OSS 图片,原图过大偶发 context deadline exceeded
  (convert_request_failed),27117 等任务 1 行 LLM 500 即整任务卡死
- 压缩失败降级原字节不阻断行处理;压缩前后字节数 INFO 日志便于线上排查
- SimilarAsinImageEmbedder.resizeImage 由包私有改 public 供复用
2026-09-07 22:28:13 +08:00
huangzd1997 83e38d4278 fix(similarasin): LLM 切换 gemini-3.8-flash + 修复双实例 stale 判死盲区
- 模型切换:glm-5.3-flash / gemini-3.7-flash(类目/合规/图片对比,appearancepatent)→ gemini-3.8-flash
  涉及 SimilarAsinProperties、AppearancePatentProperties、application.yml、TLS 探针与测试断言
- stale 判死盲区:finalizeStaleTasks 去掉 isOwnerCurrent 过滤,改由 job 锁持有实例全局判死
  (任务 27117 线上死因:客户端 done 信号被任务锁拒后断线,owner 过滤导致无人判死,
  被另一实例 job stuck 扫描误判为"文件生成任务运行超时";appearancepatent 同源盲区一并修复)
- 客户端回传重试:3x2s → 8 次,40902 锁忙固定等 15s(app_client/similar_asin.py,随客户端发包生效)
2026-09-07 22:10:20 +08:00
huangzd1997 c5982dd900 feat(admin): 最低价ASIN列表操作列新增整条删除按钮——后端DELETE /skip-price-asins/{id}(权限校验+日志),前端确认弹窗+删空页回退,补单测与对齐测试 2026-09-07 16:05:57 +08:00
huangzd1997 6d6cfcb6ff fix(权限): 店铺数据重复检查仅勾菜单无「店铺数据记录」仍403——校验口径与自动补权对齐(任务/重复检查任一菜单+数据权限即可放行,镜像魏振峰反馈: 只勾103未勾94且数据权限已补仍被拒); 顺带修复 controller 直连 mapper 架构违规 resolveVisibleShopNameKeys 下沉 ShopDataCrawlAdminTasksService 2026-09-07 15:08:43 +08:00
huangzd1997 4994142a67 feat(需求): ①创建/编辑用户菜单权限勾选父菜单自动全选子菜单(el-tree去check-strictly走父子联动,提交前压缩为最小直接授权集,父勾选时后代不重复落库) ②修复管理员勾选店铺数据菜单仍提示'无权查看店铺数据任务'——admin分区授权后若有效授权含店铺数据任务/重复检查菜单(含经'店铺管理'分组展开),自动补内部数据权限 admin_shop_data_crawl_task_data(镜像V84惯例只增不删,回收仍走超管数据范围授权UI) 2026-09-07 14:22:53 +08:00
huangzd1997 5f8c469b8e feat(需求): 撞款重复检查改查数据库——①采集明细先落库再更新文件(V111 biz_shop_data_crawl_item行级明细,归档时countryResults展开,同店同日幂等替换) ②撞款扫描换源直接查明细表(不再解析OSS xlsx,修复旧文件表头差异致4家店静默丢弃) ③存量Excel数据自动迁移(日报快照row_payload优先+OSS宽松表头回退:ASIN码/小写兼容) ④移除84家店铺全量空态注入(重复检查基数=已采集店,超管口径8家) ⑤新增明细聚合/宽松解析单测6个 2026-09-07 02:43:37 +08:00
huangzd1997 26e062d32c task-284(收尾/在途批次): 页头按钮归位卡内toolbar+店铺数据记录改名+弹窗报错清除; Java page_size配对/按角色数据范围过滤/撞款导出XLSX/Excel图改WPS DISPIMG/V110查询索引 2026-09-07 02:43:36 +08:00
huangzd1997 898fae4cb3 align(用户菜单授权): 创建/编辑用户菜单权限补齐前端客户端(app)菜单并按类型分区落库
用户管理菜单权限此前只含后台 admin(单类型):前端授权树/回显仅拉 menuType=admin,
后端 replaceDirectPermissions 也固定用 ADMIN 作用域写。现改为同时覆盖 后台(admin)+前端客户端(app):
- 前端 user-menu-auth 节点携带 type,api 并行拉取 admin/app 两类可授权树与已授权 id 合并去重,树内两类根并存(账号与权限/视频/前端工具/运营工具/后勤工具等)
- 后端 PermissionMenuService 新增 resolveMenuTypes(按 id 解析类型);AdminUserService create/update 把勾选 id 拆 admin/app 分区整树替换(internal 不纳入)
- 前端 1556 测试全绿 + build 通过;后端单测(AdminUserServiceTest/PermissionMenuServiceTest/Controller/PermissionMenuResolveTypeTest) EXIT 0
- 本地 E2E:创建用户写入 admin=7+app=3 → 按类型回读 admin[7]/app[3],删除正常
2026-09-07 02:43:36 +08:00
huangzd1997 4c88964473 task-283(后台迁移收尾/发布): admin-vue 后台工程入库 + Flask 后台整体退役
- 新后台 admin-frontend-vue 整工程入库(base=/admin-vue/、History 路由、Nginx 静态托管方案与 verify-dist 校验)
- Java AdminConsoleController 改为入口重定向: /admin|/admin.html、/login|/login.html -> /admin-vue/; 删除 classpath:static 旧 admin.html/login.html 单页与 admin.js 副本
- Flask 后台整体退役: 删除 admin_api/auth/main 蓝图、web_source 页面、static 脚本与 admin 相关测试; app.py 收敛为仅注册 version_bp(/api/version、/api/version/latest, 供桌面端更新检查)
- AdminApiGuardFilterTest 豁免样例路径 /admin.html -> /admin-vue/
2026-09-06 10:41:47 +08:00
huangzd1997 ab787ceff7 task-280(验收反馈): 重复检测对齐reference P0(分组筛选生效/抽屉聚合+汇总徽章/台账计数预载/total_dup计数/矩阵表头吸顶;后端含工作区在途console化代码) 2026-09-06 02:41:44 +08:00
huangzd1997 6e2e4bf8e7 task-275(验收反馈): 菜单权限标识/路由后台自动生成(menu_auto_/auto/ 前缀),表单移除两项输入;编辑缺省保持原值 2026-09-06 01:57:17 +08:00
huangzd1997 5e5658b00d fix(backend-java): Flyway V100 撞号修复配套(迁移矩阵补全16键/测试引用改指V109) 2026-09-06 01:44:14 +08:00
huangzd1997 e45ab1da9e task-179(客户端公开版本接口兼容): Task179Test 契约测试 RED→GREEN。 2026-09-05 18:06:28 +08:00
huangzd1997 05d19626a1 task-178(客户端公开版本接口兼容): Task178Test 契约测试 RED→GREEN。 2026-09-05 18:06:28 +08:00
huangzd1997 cf750a26d4 task-177(客户端公开版本接口兼容): Task177Test 契约测试 RED→GREEN。 2026-09-05 18:06:28 +08:00
huangzd1997 656dc7ce2f task-176(客户端公开版本接口兼容): Task176Test 契约测试 RED→GREEN。 2026-09-05 18:06:27 +08:00
huangzd1997 37d3dc8a4c task-175(客户端公开版本接口兼容): Task175Test 契约测试 RED→GREEN。 2026-09-05 18:06:27 +08:00
huangzd1997 74691acdf9 task-174(客户端公开版本接口兼容): Task174Test 契约测试 RED→GREEN。 2026-09-05 18:06:27 +08:00
huangzd1997 46f1d27478 task-173(客户端公开版本接口兼容): Task173Test 契约测试 RED→GREEN。 2026-09-05 18:06:26 +08:00
huangzd1997 ea9b263af3 task-172(客户端公开版本接口兼容): Task172Test 契约测试 RED→GREEN。 2026-09-05 18:06:26 +08:00
huangzd1997 95af9667f6 task-171(客户端公开版本接口兼容): Task171Test 契约测试 RED→GREEN。 2026-09-05 18:06:26 +08:00
huangzd1997 1e8e173236 task-170(客户端公开版本接口兼容): Task170Test 契约测试 RED→GREEN。 2026-09-05 18:06:25 +08:00
huangzd1997 d3b7ea85eb task-169(客户端公开版本接口兼容): Task169Test 契约测试 RED→GREEN。 2026-09-05 18:06:25 +08:00
huangzd1997 4e7eb49e0d task-168(客户端公开版本接口兼容): Task168Test 契约测试 RED→GREEN。 2026-09-05 18:06:25 +08:00
huangzd1997 21e56d40e2 task-167(客户端公开版本接口兼容): Task167Test 契约测试 RED→GREEN。 2026-09-05 18:06:24 +08:00
huangzd1997 5e274878fe task-166(客户端公开版本接口兼容): Task166Test 契约测试 RED→GREEN。 2026-09-05 18:06:24 +08:00
huangzd1997 9a20b38bbd task-165(客户端公开版本接口兼容): Task165Test 契约测试 RED→GREEN。 2026-09-05 18:06:23 +08:00
huangzd1997 9aceedb2e2 task-164(客户端公开版本接口兼容): Task164Test 契约测试 RED→GREEN。 2026-09-05 18:06:22 +08:00
huangzd1997 23cb828162 task-163(客户端公开版本接口兼容): Task163Test 契约测试 RED→GREEN。 2026-09-05 18:06:22 +08:00
huangzd1997 3fc8746218 task-162(客户端公开版本接口兼容): 冻结 /api/version/latest 响应契约
PublicVersionLookup 增 latest/selectLatest 与路径常量 + Task162Test。

TDD: RED→GREEN。
2026-09-05 18:06:22 +08:00
huangzd1997 b134db134e task-161(客户端公开版本接口兼容): 冻结 /api/version 响应契约
新增 PublicVersionLookup.currentVersionResponse + Task161Test。

TDD: RED→GREEN。
2026-09-05 18:04:19 +08:00
huangzd1997 e461ceec2c task-159(Java 菜单树与 Flyway): Task159Test 8 用例 RED→GREEN。 2026-09-05 18:01:14 +08:00
huangzd1997 3056608e04 task-158(Java 菜单树与 Flyway): Task158Test 8 用例 RED→GREEN。 2026-09-05 18:01:14 +08:00
huangzd1997 4cdc7205e9 task-157(Java 菜单树与 Flyway): Task157Test 8 用例 RED→GREEN。 2026-09-05 18:01:13 +08:00
huangzd1997 6701c12178 task-156(Java 菜单树与 Flyway): Task156Test 8 用例 RED→GREEN。 2026-09-05 18:01:13 +08:00
huangzd1997 ee73d7d683 task-155(Java 菜单树与 Flyway): Task155Test 8 用例 RED→GREEN。 2026-09-05 18:01:12 +08:00
huangzd1997 6dcdbec63d task-154(Java 菜单树与 Flyway): 定义 route_path Flyway 迁移矩阵
新增 AdminMenuRouteMatrix + Task154Test(契约/唯一性)。

TDD: RED→GREEN。
2026-09-05 18:01:12 +08:00
huangzd1997 84cc592517 task-153(Java 菜单树与 Flyway): Task153Test 8 用例 RED→GREEN。 2026-09-05 17:58:24 +08:00
huangzd1997 51b88e4331 task-152(Java 菜单树与 Flyway): Task152Test 8 用例 RED→GREEN。 2026-09-05 17:58:23 +08:00
huangzd1997 16c17c5481 task-151(Java 菜单树与 Flyway): Task151Test 8 用例 RED→GREEN。 2026-09-05 17:58:23 +08:00
huangzd1997 f2d3b08e2f task-150(Java 菜单树与 Flyway): Task150Test 8 用例 RED→GREEN。 2026-09-05 17:56:52 +08:00
huangzd1997 e3cb97fb49 task-149(Java 菜单树与 Flyway): Task149Test 8 用例 RED→GREEN。 2026-09-05 17:56:52 +08:00
huangzd1997 d23fde1757 task-148(Java 菜单树与 Flyway): Task148Test 8 用例 RED→GREEN。 2026-09-05 17:56:51 +08:00
huangzd1997 9b8423bb9b task-147(Java 菜单树与 Flyway): Task147Test 8 用例 RED→GREEN。 2026-09-05 17:56:51 +08:00
huangzd1997 f41d8b127f task-146(Java 菜单树与 Flyway): Task146Test 8 用例 RED→GREEN。 2026-09-05 17:56:51 +08:00
huangzd1997 cea4db2c45 task-145(Java 菜单树与 Flyway): Task145Test 8 用例 RED→GREEN。 2026-09-05 17:56:50 +08:00