huangzd1997
|
745e3fe2c4
|
task-35: 未知状态不判终态固化
8 个测试固化未知状态语义:PENDING/SYNCING/空串/undefined 均为
非终态(FSM 层走重试语义、循环层不触发 onTerminal、任务保留在
轮询集合);同批终态+未知分开处理;自定义 isTerminal 生效;
小写值不误判。
|
2026-08-31 20:35:10 +08:00 |
|
huangzd1997
|
e16aa63974
|
task-34: HTTP 4xx/5xx 分类
8 个测试固化 HTTP 错误语义:4xx/5xx 记 onError 并进入退避、
不触发 onTerminal(5xx 不可解析明细时不误判 FAILED)、不清空已有
状态、恢复后继续轮询且部分 items 照常处理、未知状态不受影响。
行为由 http 层抛错与既有 catch 路径实现,本次为验证型测试。
|
2026-08-31 20:31:48 +08:00 |
|
huangzd1997
|
dd0a32e89a
|
task-33: 网络错误走退避且不触发终态
8 个测试固化网络错误语义:fetch 拒绝不触发 onTerminal、不修改
taskStatuses、任务集合不丢失、onError 上报、失败后不立即自动重试
(退避)、恢复后继续轮询并正常触发终态。
行为由任务 31 的失败计数与既有 catch 路径实现,本次为验证型测试。
|
2026-08-31 20:30:45 +08:00 |
|
huangzd1997
|
3e45aa2a91
|
task-32: 退避封顶
8 个测试固化退避封顶语义:达到 maxMs 后保持恒定(含低 maxMs、
高 factor 提前封顶)、成功后从基数重新起算、恰等于 maxMs 不溢出、
循环内失败计数映射退避间隔的集成、非法 maxMs 配置拒绝。
行为由任务 29/30 的 factor 与 maxMs 配置已实现,本次为验证型测试。
|
2026-08-31 20:27:29 +08:00 |
|
huangzd1997
|
ab55b20edd
|
task-31: 连续失败计数
useTaskProgressLoop 轮询循环维护连续失败计数:refreshOnce 成功
(收到响应)归零;失败递增(封顶 100);onError 回调增加第二参数
attempt(0 起),供上层决定退避策略;dispose 后不再上报。
同时把该组合式函数内部 @/ 别名 import 改为相对路径(带 .ts 扩展),
使其可在 node --test 下直接运行(此前无任何测试覆盖该文件)。
新增 8 个测试:递增、成功后归零、收到响应归零、onError 带 attempt、
初始 0、交错、封顶、dispose 清理。
|
2026-08-31 20:26:31 +08:00 |
|
huangzd1997
|
9e224929fb
|
task-30: getTaskPollBackoffMs 递增序列
getTaskPollBackoffMs 签名改为 attempt 可选(省略视为 0,向后兼容),
序列 500×factor^attempt、封顶 maxMs 行为由任务 29 的 factor 配置驱动。
新增 8 个测试:attempt0/1/2 值、序列单调、封顶、省略参数默认、
负 attempt 当 0、自定义 factor。
|
2026-08-31 20:16:30 +08:00 |
|
huangzd1997
|
37eabcbb2e
|
task-29: 退避配置项(MaxMs/Factor)
task-progress-config.ts 新增 getTaskPollBackoffMaxMs()(默认 10000,
由 5000 提升)与 getTaskPollBackoffFactor()(默认 2,<1 钳制为 1);
configureTaskPolling 支持 backoffFactor;getTaskPollBackoffMs 改用
base × factor^attempt 计算。
既有 task-086 边界测试中封顶 5000 的快照随新默认更新为 10000。
新增 8 个测试:max/factor 默认、可覆盖、非正钳制、factor 下限、
配置隔离、默认值快照。
|
2026-08-31 20:14:43 +08:00 |
|
huangzd1997
|
71606e9fe5
|
task-28: 死代码清理
删除拆分后失去引用的 API 残留文件:
- src/shared/api/call.ts(已由 http.ts 取代)
- src/shared/api/download.ts(已由 download-url.ts 取代)
- src/shared/api/status.ts(页面内已有本地实现)
及其孤儿测试 tests/call.test.ts / call-abort.test.ts / download.test.ts / status.test.ts。
endpoints/url/user 仍被模块文件引用,保留。
新增 8 个验证测试(dead-code-cleanup.test.ts):无重复导出、
vue-tsc 零错误、全量测试绿、无调试日志、无残留函数体、
16+ HTML 入口存在、build 产物齐全、提交变更仅限 frontend-vue。
|
2026-08-31 20:11:49 +08:00 |
|
huangzd1997
|
3fe8d5d05c
|
task-27: api-field-compat 高频响应 schema
新增 src/shared/api-field-schemas.ts:task 核心字段、result 文件阶段
字段、task-result 组合 schema 注册表(带版本号);12 个业务模块
注册同一 task-result schema;getApiFieldSchema()/createModuleFieldChecker()
供契约测试与联调前跑字段漂移检查。
10 个测试:schema 必填/结果字段声明、checker 合法/缺必填/类型不符/
批量、模块注册齐全、版本标记、未知模块抛错。
|
2026-08-31 20:07:02 +08:00 |
|
huangzd1997
|
e896e0bef4
|
task-26: 模块 API 快照契约测试基建
新增集中式 assertApiCall() helper(tests/helpers/api-snapshot.ts):
断言 url/method/params/data 快照,params/data 白名单外字段报错,
失败信息含实际与期望 URL 上下文;isApiModule() 覆盖 16 个已拆模块。
8 个测试:helper url/method/params/body、all_modules_covered、
fail_message、allowlist、regression_guard。
|
2026-08-31 20:05:53 +08:00 |
|
huangzd1997
|
f177a15105
|
task-25: applyFilePhaseDefaults 兼容旧 Java 响应的文件阶段字段默认值
|
2026-08-31 20:01:52 +08:00 |
|
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 |
|