huangzd1997
|
eaf457c6c0
|
task-24: java-modules.ts 改为纯 re-export 聚合器,upload helpers 移至 upload.ts
|
2026-08-31 20:00:45 +08:00 |
|
huangzd1997
|
21c92afa7a
|
task-23: 拆分 image-video / brand / permission / digital-human 模块 API 至 types/modules/,旧文件转 re-export 存根
|
2026-08-31 19:57:38 +08:00 |
|
huangzd1997
|
8f119198fd
|
task-22: 拆分 collect-data 模块 API 至 types/modules/collect-data.ts,java-modules.ts re-export
|
2026-08-31 19:50:53 +08:00 |
|
huangzd1997
|
79e3513056
|
task-21: 拆分 withdraw / patrol-delete 模块 API 至 types/modules/withdraw.ts,java-modules.ts re-export
|
2026-08-31 19:48:49 +08:00 |
|
huangzd1997
|
71b482df6d
|
task-20: 拆分 shop-data-crawl / query-asin 模块 API 至 types/modules/query-asin.ts,java-modules.ts re-export
|
2026-08-31 19:45:59 +08:00 |
|
huangzd1997
|
be02833b11
|
task-19: 拆分 shop-match / product-risk 模块 API 至 types/modules/shop-match.ts,java-modules.ts re-export
- product-risk 15 函数 + shop-match 17 函数 + 全套类型(含 ShopMatch 对 ProductRisk 的 type alias)
- 保留模块的 PatrolDelete/QueryAsin/Withdraw alias 通过 import type 兜底引用
- QueryAsinCountryAsins 内联定义避免跨模块循环依赖
- 10 个测试:双模块 CRUD/preference/match/task 系列/progressBatch 双端/dashboard/skip-asins/download/export compat
|
2026-08-31 19:42:18 +08:00 |
|
huangzd1997
|
173ea3b074
|
task-18: 拆分 price-track 模块 API 至 types/modules/price-track.ts,java-modules.ts re-export
- candidates/preference/matchShops/createTask/tasksBatch/progressBatch/loopRun 系列/skipAsin 系列/dispatchFailed/pendingShopResult/dashboard/history/delete/download 共 23 函数
- price-track 全套类型(含 LoopRun/ExecutionMode/SkipPriceAsin 类型)随模块迁移
- 12 个测试:CRUD/preference/match/create/batch/loopRun/progressBatch/skipAsin 系列/dashboard/download/unwrap/export compat
|
2026-08-31 19:39:00 +08:00 |
|
huangzd1997
|
f8dad27957
|
task-17: 拆分 delete-brand 模块 API 至 types/modules/delete-brand.ts,java-modules.ts re-export
- runDeleteBrand/getDeleteBrandHistory/deleteDeleteBrandHistory/getDeleteBrandTaskDetail/getDeleteBrandTaskDetails/getDeleteBrandTaskDownloadUrl/getDeleteBrandResultDownloadUrl/submitDeleteBrandResult/getDeleteBrandTaskProgress
- delete-brand 全套类型(含 MatchStatus union)随模块迁移;progressBatch 内联缓存+超时实现
- 10 个测试:run URL/超时/history/delete/taskDetail/taskDetails/download×2/submitResult 请求体/progressBatch/export compat
|
2026-08-31 19:37:19 +08:00 |
|
huangzd1997
|
b27a686998
|
task-16: 拆分 appearance-patent 模块 API 至 types/modules/appearance-patent.ts,java-modules.ts re-export
- parseAppearancePatent/getAppearancePatentParsedPayload/getAppearancePatentQueuePayload/getAppearancePatentDashboard/getAppearancePatentHistory/getAppearancePatentTaskProgressBatch/activateAppearancePatentTask/deleteAppearancePatentTask/deleteAppearancePatentHistory/getAppearancePatentResultDownloadUrl
- appearance-patent 全套类型随模块迁移;progressBatch 内联缓存+超时实现
- 9 个测试:parse/parsedPayload/queuePayload/progressBatch/activate/dashboard/history/delete/download/export compat
|
2026-08-31 19:35:59 +08:00 |
|
huangzd1997
|
d7104d35da
|
task-15: 拆分 similar-asin 模块 API 至 types/modules/similar-asin.ts,java-modules.ts re-export
- parseSimilarAsin/getSimilarAsinDashboard/getSimilarAsinHistory/getSimilarAsinTaskProgressBatch/activateSimilarAsinTask/deleteSimilarAsinTask/deleteSimilarAsinHistory/getSimilarAsinResultDownloadUrl
- similar-asin 全套类型随模块迁移;progressBatch 内联缓存+超时实现(与 java-modules 同构)
- 9 个测试:parse URL/payload/默认值/dashboard/history/progressBatch 去重+超时/activate/delete/download/export compat
|
2026-08-31 19:34:56 +08:00 |
|
huangzd1997
|
b93d338eac
|
task-14: 拆分 publish 模块 API 至 types/modules/publish.ts,java-modules.ts re-export
- parsePublish/activatePublishTask/activatePublishFile/getPublishItemsPage/getPublishItemsPageUrl/getPublishTaskProgressBatch/submitPublishTaskResult/getPublishDashboard/getPublishHistory/deletePublishTask
- Publish 全套类型随模块迁移;progressBatch 保留 task_ids 请求体并应用进度超时
- 10 个测试:parse URL/超时/activate/itemsPage 参数/itemsPageUrl/progressBatch 去重+超时/submitResult 请求体/dashboard/delete/export compat
|
2026-08-31 19:33:16 +08:00 |
|
huangzd1997
|
fdbf681292
|
task-13: 拆分 convert 模块 API 至 types/modules/convert.ts,java-modules.ts re-export
- getExcelInfo/runConvert/getConvertHistory/deleteConvertHistory/getConvertResultDownloadUrl/getConvertTemplates/importConvertTemplate/setDefaultConvertTemplate/deleteConvertTemplate
- 模板相关类型 ConvertTemplateVo/ConvertTemplateImportRequest/ExcelInfoVo 随模块迁移
- 9 个测试:URL/method/payload/history/模板系列/签名/export compat/unwrap
|
2026-08-31 19:31:10 +08:00 |
|
huangzd1997
|
a98efb00f7
|
task-12: 拆分 split 模块 API 至 types/modules/split.ts,java-modules.ts re-export
|
2026-08-31 19:29:01 +08:00 |
|
huangzd1997
|
a4ca9d5a19
|
task-11: 拆分 dedupe 模块 API 至 types/modules/dedupe.ts(callJava+buildJavaUrl 化),java-modules.ts 改 re-export 保持旧 import 兼容
|
2026-08-31 19:27:39 +08:00 |
|
huangzd1997
|
22422bc9d2
|
task-10: types/task.ts 共享类型(TaskStatus/ResultFilePhase/PageResult/TaskProgressBatchVo)
|
2026-08-31 19:24:26 +08:00 |
|
huangzd1997
|
9349f8ff33
|
task-9: 进度类请求默认 10s 超时(progressTimeoutMs 可配置覆盖,postTaskProgressBatch 接入)
|
2026-08-31 19:23:13 +08:00 |
|
huangzd1997
|
980e6e91e0
|
task-8: callJava AbortController 透传契约测试(发送前/进行中中止、signal 透传、多调用独立)
|
2026-08-31 19:21:56 +08:00 |
|
huangzd1997
|
35de13f7f1
|
task-7: buildDownloadUrl()/resolveDownloadUrl() 下载 URL 统一构造(user_id 追加与去重、fresh 优先)
|
2026-08-31 19:20:56 +08:00 |
|
huangzd1997
|
1e1f533a24
|
task-6: isTerminalStatus() 终态判定(默认 SUCCESS/FAILED,extras 扩展且归一化,空值非终态)
|
2026-08-31 19:20:17 +08:00 |
|
huangzd1997
|
432b2c52b2
|
task-5: normalizeStatus() 状态归一(大写化、连字符/空格转下划线、空值安全)
|
2026-08-31 19:19:33 +08:00 |
|
huangzd1997
|
9f58350b4a
|
task-4: extractErrorMessage 命名导出并覆盖 error/message/msg 三字段(空白跳过、优先级 error>message>msg)
|
2026-08-31 19:18:57 +08:00 |
|
huangzd1997
|
6e227aa377
|
task-3: callJava() 统一响应解包(JavaApiResponse/Legacy 兼容、success=false 抛错);开启 allowImportingTsExtensions 支持 node --test
|
2026-08-31 19:18:21 +08:00 |
|
huangzd1997
|
f63ab837f5
|
task-2: buildJavaUrl() 统一 URL 构造(query 编码、尾斜杠规范化)
|
2026-08-31 19:16:19 +08:00 |
|
huangzd1997
|
d1870f1382
|
task-1: 新增 API_ENDPOINTS 路径常量表(frontend-api-adapter)
|
2026-08-31 19:15:10 +08:00 |
|
huangzd1997
|
4d84d362cf
|
task-100: 发布前回滚演练、commit 对应关系检查和交付清单
|
2026-08-30 23:18:25 +08:00 |
|
huangzd1997
|
2fb56632c9
|
task-99: 全链路压测记录 CPU、内存、GC、DB、Redis、RustFS、网络结果
|
2026-08-30 23:17:02 +08:00 |
|
huangzd1997
|
38e94e1f53
|
task-98: 真实启动、健康检查、核心请求和外部依赖调用验证执行器
|
2026-08-30 23:15:31 +08:00 |
|
huangzd1997
|
c08869f109
|
task-97: Java/Python/Vue 三端验证工作流编排器
|
2026-08-30 23:13:55 +08:00 |
|
huangzd1997
|
1b491d972a
|
task-96: Java/Python/Vue 三端统一 API 字段兼容检查器
|
2026-08-30 23:12:27 +08:00 |
|
huangzd1997
|
b03aaab493
|
task-95: 错误提示、重试和终态刷新的轮询状态机
|
2026-08-30 23:11:11 +08:00 |
|
huangzd1997
|
2bcb8955a5
|
task-94: 移动端与桌面端响应式页面验收截图计划
|
2026-08-30 23:10:00 +08:00 |
|
huangzd1997
|
85c8c66c4d
|
task-93: Similar ASIN、店铺抓取和采集数据页面 E2E 核心路径执行器
|
2026-08-30 23:08:56 +08:00 |
|
huangzd1997
|
eb158e76f0
|
task-92: manualChunks 拆包后比较各页面首屏传输大小
|
2026-08-30 23:07:08 +08:00 |
|
huangzd1997
|
72998b7d22
|
task-91: 按页面拆分 Element Plus 与公共业务 chunk 规划器
|
2026-08-30 23:05:08 +08:00 |
|
huangzd1997
|
bf38a1b9a0
|
task-90: 进度接口增加断网、超时、服务恢复和重复响应测试
|
2026-08-30 23:01:17 +08:00 |
|
huangzd1997
|
bb2f200d76
|
task-89: 清理页面卸载时的所有 timer、请求和临时 URL
新增纯 TS 页面卸载清理注册表 page-cleanup-registry:统一登记 blob
临时 URL(dispose 时 revokeUrl 释放)、AbortController(abort)与
timer 清理委托(clearTimers)。dispose 幂等且后注册拒绝并计数;
revokeUrl 抛错不中断其余条目;maxTrackedUrls 上限只保留最近注册的
URL。8 个测试覆盖默认、批量、幂等、空、单元素、上限驱逐、非法 hooks
与 revoke 故障恢复。
|
2026-08-30 22:57:04 +08:00 |
|
huangzd1997
|
6600bfaa99
|
task-88: 解析结果前端只接收预览数据,避免大 payload 进入响应式对象
新增纯 TS 预览裁剪 parse-preview:把解析 Vo 裁剪为摘要字段
(taskId/行数统计/开关/prompt),items/groups 整包剔除,可按
previewRowLimit/previewGroupLimit 有界保留样本行供表格展示。输入
对象永不修改,taskId 非法 fail-fast,属性读取抛错时零部分结果。
BrandSimilarAsinTab 的 parseFiles 改为只接收裁剪后的预览(保留
200 行样本),数千行 items 不再进入 Vue 响应式 ref。8 个测试覆盖
默认、批量、幂等、空、单元素、截断溢出、非法输入与 getter 故障。
|
2026-08-30 22:55:27 +08:00 |
|
huangzd1997
|
2da93414a5
|
task-87: 限制 localStorage 中任务、快照和队列数据的最大数量/字节数
新增纯 TS 有界 localStorage 包装 local-storage-limiter:maxKeys 与
maxBytes 双上限,超限驱逐最旧写入的 key(更新已存在 key 刷新新鲜度),
单条超限拒绝写入且无部分数据,存储抛错(QuotaExceededError)不污染
内部索引。重复写同 key 幂等,空 key 与不可序列化值拒绝,remove/clear
释放全部条目。8 个测试覆盖默认、批量、幂等、空、单元素、双上限驱逐、
非法输入与存储故障恢复。
|
2026-08-30 22:53:08 +08:00 |
|
huangzd1997
|
58e91589df
|
task-86: 将隐藏页面轮询间隔、前台恢复和退避策略统一配置化
task-progress-config 新增统一配置 API:getTaskPollBackoffMs(attempt)
指数退避(base×2^attempt 封顶 max)、前台恢复开关与延迟
(getTaskForegroundRefreshEnabled/DelayMs)、configureTaskPolling/
resetTaskPollingConfig 运行时配置。校验失败抛错且零状态变更,
document 缺失时按可见间隔降级。useTaskProgressLoop 改用退避配置
替代硬编码 500ms 重试,前台恢复走可配置开关与延迟(含 in-flight 防
并发)。8 个测试覆盖默认、多配置、幂等、空、单字段、封顶、非法输入
与故障恢复。
|
2026-08-30 22:51:21 +08:00 |
|
huangzd1997
|
25d5a5a5e3
|
task-85: 优化 Similar ASIN 轮询与文件生成等待,避免重复 force 请求
新增纯 TS force 节流守卫 asin-force-throttle:为每个 taskId 维护 TTL
冷却窗口,窗口内不重复发 force 请求(避免反复触发后端生成文件),到期
后允许重试,任务终态后 clear 立即释放记录。BrandSimilarAsinTab 的
refreshTaskProgress 改为按 pendingFileTaskIds 逐项查守卫决定本轮是否
带 force,请求成功后整批进入冷却。8 个测试覆盖默认、批量、幂等、空、
单元素、200 任务溢出、非法输入与时钟故障恢复。
|
2026-08-30 22:49:45 +08:00 |
|
huangzd1997
|
5caca86ad1
|
task-84: 优化店铺抓取队列状态合并,消除 historyItems 的线性重复查找
新增纯 TS 合并模块 merge-history-items:以 taskId→行列表 二级索引替代
原 mergeProgress 的 [...map.values()].find() 全表扫描(O(n×m)→O(n+m))。
命中语义与原实现一致(taskId 相同且 resultId 相同或 incoming 无
resultId),命中后删除旧 key 写入新 key,shopName 变化不再留下幽灵
重复条目,同批内后到条目可命中先到新增。BrandShopDataCrawlTab 的
mergeProgress 改用该模块。9 个测试覆盖默认、批量、幂等、空、单元素、
maxItems 限流、非法输入、keyOf 故障零变更与幽灵条目场景。
|
2026-08-30 22:47:41 +08:00 |
|
huangzd1997
|
e60bd8567a
|
task-83: 统一不同页面的轮询去重、in-flight 合并和终态清理
新增纯 TS 任务轮询协调器 task-polling-coordinator:重复 add 去重、
并发 runOnce 合并为单次请求并共享结果、markTerminal 幂等终态清理
(只回调一次)、maxTasks 上限拒绝超出条目。useTaskProgressLoop 新增
可选 coordinator 选项,add/remove/终态路径委托协调器统一处理(默认
不启用)。测试用 node:test 覆盖 8 个场景,含 3 路并发合并断言。
|
2026-08-30 22:44:12 +08:00 |
|
huangzd1997
|
83b93eb39b
|
task-82: 为进度响应 Map 增加 TTL 清理与最大条目数
新增纯 TS 进度响应缓存 progress-response-cache:写入后 ttlMs 过期、
条目数超 maxEntries 驱逐最旧、读取/枚举/清理惰性移除过期条目,时钟
可注入以便测试 TTL 边界。set 对非法 key fail-fast 抛错,时钟故障时
零部分写入,clear 释放全部条目。useTaskProgressLoop 新增可选
progressCache 选项,每轮响应快照写入有界缓存(默认不启用)。
|
2026-08-30 22:42:08 +08:00 |
|
huangzd1997
|
9bf25765dd
|
task-81: 建立前端任务轮询请求量、响应体大小和页面内存基线
新增纯 TS 轮询基线组件 task-polling-baseline:累计轮询请求数、每次
批量响应的总字节与单次最大响应、按条目数/字节双上限的有界内存缓存
(超限驱逐最旧条目),失败路径零状态变更。useTaskProgressLoop 新增
可选 onBaseline 选项接入基线(默认零行为变化)。测试用 Node 24 原生
type-stripping + node:test 运行(npm test),8 个用例覆盖默认路径、
批量、幂等、空输入、单元素、限流溢出、非法输入与失败恢复。
|
2026-08-30 22:38:51 +08:00 |
|