huangzd1997
|
d3b499b596
|
feat(admin): 店铺重复检查导出「站点」列改「国家」中文显示;撞款抽屉按点击处定位
- 导出 CSV 列头 站点→国家,值映射中文(DE德国/UK英国/FR法国/IT意大利/ES西班牙,未知回退原值)
- 撞款详情抽屉以触发元素为垂直锚点并钳制在视口内,不再贴区块/页面顶部导致看不见需上滑
- 同步 Java 静态托管副本;更新 Java/Python 相关断言
|
2026-09-05 01:53:12 +08:00 |
|
huangzd1997
|
d6b223ba25
|
task-199: 超保留期活跃 job 巡检 SQL(06_over_retention_active_job.sql,RUNNING 超24h 候选,清理走 stuck 扫描)+ 8 条测试
|
2026-09-05 00:06:45 +08:00 |
|
huangzd1997
|
b6cf693e05
|
task-198: 终态任务活跃 job 巡检 SQL(05_terminal_task_active_job.sql)+ 8 条测试
|
2026-09-05 00:06:45 +08:00 |
|
huangzd1997
|
187c123071
|
task-197: 结果缺文件候选巡检 SQL(04_result_missing_file.sql,OSS 对象存在由 Java 反查)+ 8 条测试
|
2026-09-05 00:06:45 +08:00 |
|
huangzd1997
|
402c3e2cb3
|
task-196: 终态任务缺结果巡检 SQL(03_task_missing_result.sql,SUCCESS/FAILED 无结果)+ 8 条测试
|
2026-09-05 00:06:44 +08:00 |
|
huangzd1997
|
7f7090f433
|
task-195: 孤儿结果(payload) 巡检 SQL(02_orphan_result.sql,biz_file_result 无父任务)+ 8 条测试
|
2026-09-05 00:06:44 +08:00 |
|
huangzd1997
|
bcd5879a08
|
task-194: 孤儿 task_file_job 巡检 SQL(01_orphan_job.sql,只读 SELECT 反连无任务/结果;base 提供 8 项静态契约)+ 8 条测试
|
2026-09-05 00:06:44 +08:00 |
|
huangzd1997
|
05bda8915a
|
feat(admin): 店铺数据重复检查撞款抽屉样式优化与导入测试按钮
Build Backend JAR / build (push) Has been cancelled
- 撞款详情抽屉:上架时间默认降序(晚到早)、去掉列头(按时间升序)小括号、加宽至 760px、
去掉全屏遮罩(底层仍可点击)、抽屉贴到「撞款详情」区块位置而非浏览器顶部
- 修复抽屉 fixed 定位失效:.tab-panel.active 入场动画带 transform 会成为包含块,
打开时把 drawer mask 挂到 body 下恢复视口定位
- 新增导入(新增-测试)/ 导入(删除-测试)按钮与上传弹窗,对应后端端点
/api/admin/shop-data-crawl/duplicate-check-import(ADD=按店名替换基线记录、DELETE=移除该店记录)
- 新增 ShopDataDuplicateCheckImportService 导入服务(复用 WorkbookParser/Aggregator,与扫描共用 Redis 锁)
- 新增 3 个单测:导入替换重聚合、删除移除、无基线报错
- _preview_mock.py 加入 .gitignore(本地预览工具不入库)
|
2026-09-04 12:25:31 +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
|
bc5d5b3d2e
|
feat(admin): 管理后台页面同源托管到 Java(classpath:/static)并接入 Java 登录
把 Flask web_source/admin.html 与 static/* 拷入 backend-java resources/static,
经 Spring 默认静态映射同源服务于 api.aishufu.top:18080;/static 根相对引用通过
static/static 子目录镜像零改动保持。页面登录改直连 Java POST /login(cookie+
浏览器持久 deviceId),登出走 Java POST /logout。新增 AdminConsoleController:
GET /、/admin、/login、/logout 页面转发,及 /api/admin/current-user、
/current-user/menus(管理员角色,返回旧前端契约的 item/items 形状)。admin.js
增加全局 fetch 响应解包(ApiResponse data 展开且保留 data 键,401 跳登录)与
URL 兼容映射层(把 Flask 别名统一到 Java 规范路径)。
|
2026-09-04 10:21:24 +08:00 |
|
huangzd1997
|
d0db577a9c
|
后台店铺数据重复检查独立成菜单:删除店铺导入测试、新增撞款详情卡片区
- 删除「店铺导入测试」菜单及全部实现:admin.html 面板、admin.js 逻辑、
admin_api.py 路由/常量/权限映射、Java 默认菜单
- 「店铺数据记录」页内子 tab 移除,只保留店铺数据列表
- 「店铺管理」下新增「店铺数据重复检查」菜单(V106 导入测试菜单保留并新增
V107 清理 + 幂等插入新菜单,Java 清单同步)
- 新面板:筛选/指标卡/店铺上架分布/矩阵表格/撞款详情卡片区(同 ASIN 跨店
上架明细,查看明细开抽屉,上架时间倒序)
- 重复扫描结果改为 MySQL 缓存 + 每日定时扫描(start_duplicate_scan_scheduler)
- 新增 test_admin_shop_data_duplicate_check.py 单元测试
|
2026-09-04 00:16:14 +08:00 |
|
huangzd1997
|
152ea6eec0
|
下线店铺管理-检测店铺密码功能:后台 UI 按钮/徽标、Python 代理路由、Java 接口与 service 全套移除,V105 迁移删除 biz_shop_credential_check 表及历史记录
Build Backend JAR / build (push) Has been cancelled
|
2026-09-02 16:55:54 +08:00 |
|
huangzd1997
|
664047dbe0
|
修复店铺数据抓取新店铺归档 daily_file 报 user_id 无默认值
线上现象:店铺数据抓取任务 26401 失败,错误
"Field 'user_id' doesn't have a default value",
INSERT 列清单不含 user_id(MyBatis-Plus 对 null 字段跳过该列)。
根因链:
1. V95(97ae8a7)累计文件改为店铺级共享(去 user 维度),
persistDailyAggregation 新建 daily_file 时删掉了 setUserId;
2. 但 V95 只改了唯一键为 (shop_key, business_date),未把 user_id 列改可空;
3. 表列 user_id 仍为 NOT NULL 无默认值 → 新店铺首次插入必报错;
已有 daily_file 行的店铺走 update 分支不受影响,因此只在
新店铺(如 26401)出现。
修复:
- persistDailyAggregation 新建 daily_file 时补回 setUserId(row.getUserId()),
新店铺也写入正确归属;
- V104 迁移把 user_id 改可空,兼容存量/历史数据(保留兼容,不再使用);
- 新增回归断言(新建累计文件必须写入 user_id),
shopdatacrawl 全包 255 测试全绿,双机已部署验证。
|
2026-09-02 14:23:48 +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
|
5f4fcad2ef
|
修复双实例 owner-scoped 结果文件 job 被非归属实例误杀
Build Backend JAR / build (push) Has been cancelled
线上现象:货源查询任务 26402/26400(归属 server-121)在归属机正常推进,
却被 server-110 判为「结果生成失败」,错误为「该任务已绑定到另一台服务实例处理」。
两个缺陷叠加:
1. 两台实例共用一个 RocketMQ consumer group,dispatch 消息被轮询投递;
worker 对"PENDING + owner 不匹配"的 job 选择本地抢跑,模块层
ensureTaskOwnedByCurrentInstance 直接抛 TaskOwnerMismatchException,
异常落进通用 catch 被当成生成失败,5 次抢跑即耗尽 retryCount 并终态失败。
2. runPendingJobs 双重 claim:claimRunnableJobsForOwner 已把 job 翻成 RUNNING,
随后又走 claimRunning(条件 PENDING/FAILED)必然失败 → job 被静默丢弃,
归属机的定时兜底从未真正生效。
修复:
- worker:非归属实例一律跳过 owner-scoped job;抽出 processClaimed 供已持有
claim 的调用方使用;processInternal 单独捕获 TaskOwnerMismatchException,
只 deferRunning 退回 PENDING,不计入重试。
- TaskFileJobLocalDispatcher 新增 dispatchClaimed。
- dispatch 事件带上 owner,coordinator 按归属路由:本机 owner 直接本地派发不发 MQ,
他机 owner 不发不跑交由归属机轮询接手,owner 为空维持原有 MQ 行为。
- 新增 owner 路由回归测试两组,回滚配合"本地抢跑"的旧断言。
同时提交此前工作区内已随 JAR 上线的 backend-java 改动:SimilarAsin 解析载荷
groups 内嵌 items(Python 旧链路兼容)与 chunk 类型不匹配跳过、
PermissionMenuSchemaInitializer 与 V103 两级菜单分组迁移、相关测试。
|
2026-09-01 21:07:25 +08:00 |
|
huangzd1997
|
fa5a59e5cd
|
task-116: 后台管理新增/导入表单弹窗化 + 分组管理独立菜单与UI优化 + 轻量进度端点
Build Backend JAR / build (push) Has been cancelled
- 后台管理页(admin)所有面板的新增/导入表单改为弹窗操作,原有字段 ID 全部保留、提交逻辑不变;导入删除入口不再触发二次确认拦截
- 分组管理升级为独立菜单(V102 + schema initializer),移除 5 个面板内的管理分组按钮;分组列表改为蓝白主题、增加权限分组横幅
- Python 侧 group-manage 权限守卫(_ensure_backend_menu_access 补充 group-manage)
- 引入 V101(biz_task_file_job 复合索引)+ 新增 TaskProgressLight/TaskFileJob 轻量端点与进度聚合作
- 前端 progress-light / page-separated-loads / dispatch-guard 共享模块及单元测试
|
2026-09-01 12:54:13 +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
|
7f4737c800
|
feat: 店铺密码检测任务(后台发起→客户端领取→紫鸟真实登录判定→回传结果)
- 新增 biz_shop_credential_check 表(V99)与 ShopCredentialCheck 全链路
- Controller /api/admin/shop-credential-checks(create/poll/report/latest,X-Internal-Token 鉴权)
- ShopManageService 列表附带 latestCheck(每店铺最近一次检测结果)
- 客户端通过 poll 领取(60s 轮询、原子置 RUNNING),报告 SUCCESS/FAILED/OTP_REQUIRED/NO_NEED_LOGIN/ERROR
|
2026-08-31 17:02:49 +08:00 |
|
huangzd1997
|
26f4bb3f25
|
后台菜单重构:菜单类型分组排序(软件在前/后台在后)、新增同类型末尾排序;任务中心分组移除,视频任务记录归入记录与版本、店铺数据记录归入店铺管理;界面名词优化(菜单权限配置/去重数据汇总/无效ASIN数据/视频任务记录/店铺数据记录/生成记录)
Build Backend JAR / build (push) Has been cancelled
|
2026-08-31 01:48:05 +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
|
04f45bebec
|
task-76: JSON owner 查询迁移到显式列并补充任务/状态复合索引
|
2026-08-30 20:51:07 +08:00 |
|
huangzd1997
|
97ae8a7c51
|
店铺数据抓取累计文件改为店铺级共享,按国家覆盖更新
同店同日在不同账号下产生多份互不相干的累计文件(唯一键含 user_id),
后台管理页每店只显示最新一份,其他账号抓的国家看起来丢失。
- V95 迁移:加 shop_key/country_codes_json/compensation_done 列,按店铺
合并存量 daily_file 与成员行,唯一键改为 (shop_key, business_date)
- DailyFileService:findForUpdate/findOlder/acquireLock 去 user 维度,
店铺级锁跨账号串行
- TaskService:聚合按店铺定位;applyCountryCoverage 按国家覆盖(本次
回传的国家替换旧行,未更新的国家保留);启动补偿组件按成员快照重建
合并文件并回填国家列表
- 管理页:country_codes 改从 daily_file.country_codes_json 取,行数用
累计文件实际值
|
2026-08-30 16:30:09 +08:00 |
|
huangzd1997
|
1127e9c8bb
|
task-50: 结果明细批量 upsert 写入器与唯一键幂等
CollectDataResultItemBatchWriter 按唯一键 uk_task_scope_item 批量 upsert
biz_task_result_item:一次批量查询现有行(payload_hash 相等即跳过),
分批发 INSERT ... ON DUPLICATE KEY UPDATE,替代逐行 select/insert/update;
旧格式逐行 payload 升级为引用时物理删除(引用计数兜底)。CollectDataService
submitResult 接入批量写入,移除逐行 upsertResultItem。
|
2026-08-30 15:32:55 +08:00 |
|
huangzd1997
|
98c45486fa
|
task-48: invalid ASIN 记录改为批量 INSERT IGNORE/upsert,唯一键扩为 (data_value, brand)
|
2026-08-30 14:11:59 +08:00 |
|
huangzd1997
|
b92d3e688d
|
task-47: 品牌检查结果任务内短期缓存,避免同品牌重复远程调用
|
2026-08-30 13:53:38 +08:00 |
|
huangzd1997
|
0d99baea04
|
task-46: 跳过空品牌批次的无效远程品牌检查请求
新增 CollectDataBrandBatchFilter 接管品牌检查批次切分与分类:空品牌
批次不发起 checkAll 远程调用(行直接归 rejected),远程抛错整组降级
queryFailed 可恢复。service 委托查询器只做计数与无效 ASIN 落库,语义
与旧 filterByBrandCheck 完全等价。8 个测试覆盖默认/批量/幂等/空输入/
单元素/超限/非法参数/依赖失败,全量回归 720 通过。
|
2026-08-30 13:40:03 +08:00 |
|
huangzd1997
|
fec89b6b7b
|
task-42: 限制采集解析的文件大小、最大行数和单 chunk 行数
新增 CollectDataParseLimits 组件并在 CollectDataService 解析/回传路径
接入:源文件大小(默认 50MB)、累计解析行数(默认 50000)、单 chunk
回传行数(默认 5000)超限即拒绝,配置经 aiimage.collect-data.* 环境变量
可调、0/负值回退默认。8 个用例覆盖正常/批量/幂等/空/单元素/边界超限/
非法配置/失败后可恢复路径,mvn 全量测试通过。
|
2026-08-30 13:04:02 +08:00 |
|
huangzd1997
|
2f89f795f6
|
task-35
|
2026-08-29 21:28:28 +08:00 |
|
huangzd1997
|
11e19ef4f1
|
task-34: 将 ownerInstanceId 从 JSON 查询迁移到显式列并补充索引
|
2026-08-29 20:44:21 +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
|
c8fb93ff29
|
Redis 改为哨兵模式,双节点接入 A/B 机哨兵集群(mymaster)
Build Backend JAR / build (push) Has been cancelled
|
2026-08-25 15:33:50 +08:00 |
|
huangzd1997
|
bc8870f957
|
移除
Build Backend JAR / build (push) Has been cancelled
|
2026-08-24 00:08:13 +08:00 |
|
huangzd1997
|
a659132469
|
去重总数据国家限定五国并优化筛选布局
- 国家仅保留德国/英国/法国/意大利/西班牙,移除美国及US映射
- 保留服务器已有 V90 迁移,新增 V91 添加 country 列及索引
- ASIN列表筛选区改为两行布局:查询条件+按钮在上,日期+导出在下
|
2026-08-24 00:03:28 +08:00 |
|
huangzd1997
|
8712df2645
|
后台去重数据新增国家
|
2026-08-23 22:50:58 +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
|
bca1335dc6
|
后端优化,增加新需求
|
2026-07-21 19:53:47 +08:00 |
|
super
|
ba48bbc6af
|
更新ASIN库新需求
|
2026-07-20 20:12:38 +08:00 |
|
super
|
cbde22ec79
|
视频任务管理更新
|
2026-07-19 22:23:26 +08:00 |
|
super
|
69784b8d32
|
添加新需求
|
2026-07-16 13:12:46 +08:00 |
|