{ "version": 1, "total_tasks": 100, "completed": 87, "rounds": 70, "started_at": "2026-08-29T14:10:48+08:00", "updated_at": "2026-08-30 22:53:12+08:00", "tasks": [ { "id": 1, "title": "建立 Similar ASIN 性能基线夹具:1000/5000 行、图片开关、chunk 数与 payload 大小采样", "module": "similarasin", "dependency": "无", "status": "done" }, { "id": 2, "title": "将解析载荷改为单一规范行集合,消除 items/groups/allItems 重复数据结构", "module": "similarasin", "dependency": "1", "status": "done" }, { "id": 3, "title": "保留旧 payload 读取兼容逻辑,并验证新旧结构均可恢复全量行", "module": "similarasin", "dependency": "2", "status": "done" }, { "id": 4, "title": "解析接口改为只返回固定数量预览行,完整行仅保存在后端任务载荷", "module": "similarasin", "dependency": "3", "status": "done" }, { "id": 5, "title": "为预览行数量增加配置边界、空文件和超限输入校验", "module": "similarasin", "dependency": "4", "status": "done" }, { "id": 6, "title": "将分组数据改为索引/范围引用,避免 groups 嵌套复制完整行对象", "module": "similarasin", "dependency": "5", "status": "done" }, { "id": 7, "title": "限制单文件大小、最大行数和最大字段长度,防止解析任务无界增长", "module": "similarasin", "dependency": "6", "status": "done" }, { "id": 8, "title": "将 WorkbookFactory 输入解析改为受控读取,并验证超大 Excel 的失败提示", "module": "similarasin", "dependency": "7", "status": "done" }, { "id": 9, "title": "将 chunk 查询从单行分页改为批量 keyset 分页,保持低内存读取", "module": "similarasin", "dependency": "8", "status": "done" }, { "id": 10, "title": "为 chunk 结果建立按 row key 的批量索引,消除跨 chunk 线性扫描", "module": "similarasin", "dependency": "9", "status": "done" }, { "id": 11, "title": "将 Coze 结果合并的重复检测从 O(n²) 改为 HashSet/稳定 row key", "module": "similarasin", "dependency": "10", "status": "done" }, { "id": 12, "title": "扩展 Coze 结果缓冲覆盖范围,减少频繁读写完整 chunk payload", "module": "similarasin", "dependency": "11", "status": "done" }, { "id": 13, "title": "为 chunk 合并增加单次最大行数与 payload 字节上限", "module": "similarasin", "dependency": "12", "status": "done" }, { "id": 14, "title": "图片 DB cache 改为批量读取缩略图,并只更新实际命中的 last_used_at", "module": "similarasin", "dependency": "13", "status": "done" }, { "id": 15, "title": "将图片缓存访问时间更新改为异步批量刷新,减少逐图 UPDATE", "module": "similarasin", "dependency": "14", "status": "done" }, { "id": 16, "title": "图片预取改为短预算 best-effort,超时后直接回退 URL", "module": "similarasin", "dependency": "15", "status": "done" }, { "id": 17, "title": "优化图片解码采样、像素上限和 JPEG 质量搜索,降低 CPU 与堆峰值", "module": "similarasin", "dependency": "16", "status": "done" }, { "id": 18, "title": "统一图片 spool 生命周期,确保超时、取消和异常路径删除临时文件", "module": "similarasin", "dependency": "17", "status": "done" }, { "id": 19, "title": "将 Coze 请求/响应及 Python 回传日志改为采样、截断和 DEBUG 级别", "module": "similarasin", "dependency": "18", "status": "done" }, { "id": 20, "title": "完成 Similar ASIN 端到端压测、JFR/GC 分析与结果文件兼容回归", "module": "similarasin", "dependency": "19", "status": "done" }, { "id": 21, "title": "建立店铺抓取性能基线:单店铺 1k/5k 行、多国家、图片成功/失败场景", "module": "shopdatacrawl", "dependency": "无", "status": "done" }, { "id": 22, "title": "将店铺 Excel 图片缓存替换为有界字节缓存", "module": "shopdatacrawl", "dependency": "21", "status": "done" }, { "id": 23, "title": "图片嵌入成功后立即释放外部缩略图字节副本", "module": "shopdatacrawl", "dependency": "22", "status": "done" }, { "id": 24, "title": "为店铺图片预取增加任务级数量、字节和超时上限", "module": "shopdatacrawl", "dependency": "23", "status": "done" }, { "id": 25, "title": "评估并实现店铺结果 workbook 的 SXSSF 或 spool 化写入路径", "module": "shopdatacrawl", "dependency": "24", "status": "done" }, { "id": 26, "title": "为模板 workbook 增加大行数下的样式、图片和工作表兼容测试", "module": "shopdatacrawl", "dependency": "25", "status": "done" }, { "id": 27, "title": "将 chunk 接收改为原子插入/幂等 upsert,减少先查后插", "module": "shopdatacrawl", "dependency": "26", "status": "done" }, { "id": 28, "title": "以 scope 计数器替代每个 chunk 的 COUNT(*) 完整统计", "module": "shopdatacrawl", "dependency": "27", "status": "done" }, { "id": 29, "title": "合并 scope 状态查询与更新,减少单 chunk 数据库往返", "module": "shopdatacrawl", "dependency": "28", "status": "done" }, { "id": 30, "title": "为国家结果行建立稳定去重键,替换线性重复扫描", "module": "shopdatacrawl", "dependency": "29", "status": "done" }, { "id": 31, "title": "将任务快照改为轻量进度字段,避免每次写入完整结果 JSON", "module": "shopdatacrawl", "dependency": "30", "status": "done" }, { "id": 32, "title": "将 task entity 本地缓存替换为有容量和过期回收的实现", "module": "shopdatacrawl", "dependency": "31", "status": "done" }, { "id": 33, "title": "将店铺源文件 key 映射改为确定路径,取消临时目录递归扫描", "module": "shopdatacrawl", "dependency": "32", "status": "done" }, { "id": 34, "title": "将 ownerInstanceId 从 JSON 查询迁移到显式列并补充索引", "module": "shopdatacrawl", "dependency": "33", "status": "done" }, { "id": 35, "title": "将每日累计文件改为数据层增量模型,避免每次下载并重写完整 XLSX", "module": "shopdatacrawl", "dependency": "34", "status": "done" }, { "id": 36, "title": "为每日累计文件引入版本号/CAS,缩短店铺级锁的持有时间", "module": "shopdatacrawl", "dependency": "35", "status": "done" }, { "id": 37, "title": "拆分每日累计文件组装与任务结果接收,增加异步文件作业状态", "module": "shopdatacrawl", "dependency": "36", "status": "done" }, { "id": 38, "title": "历史列表与进度查询增加分页、字段裁剪和批量任务加载", "module": "shopdatacrawl", "dependency": "37", "status": "done" }, { "id": 39, "title": "补充删除、超时、重复回传和累计文件失败的资源清理测试", "module": "shopdatacrawl", "dependency": "38", "status": "done" }, { "id": 40, "title": "完成店铺抓取压测并比较内存、CPU、DB QPS、对象存储流量和锁等待", "module": "shopdatacrawl", "dependency": "39", "status": "done" }, { "id": 41, "title": "建立 Collect Data 1k/10k 行、多个 chunk 和品牌检测场景基线", "module": "collectdata", "dependency": "无", "status": "done" }, { "id": 42, "title": "限制采集解析的文件大小、最大行数和单 chunk 行数", "module": "collectdata", "dependency": "41", "status": "done" }, { "id": 43, "title": "将采集源文件查找改为确定路径/索引查询", "module": "collectdata", "dependency": "42", "status": "done" }, { "id": 44, "title": "保留原始 chunk payload 的同时,减少逐行 extra JSON 的重复序列化", "module": "collectdata", "dependency": "43", "status": "done", "updated_at": "2026-08-30T13:20:04" }, { "id": 45, "title": "将 ASIN 去重查询与无效品牌查询统一为批量集合查询", "module": "collectdata", "dependency": "44", "status": "done", "updated_at": "2026-08-30T13:31:58" }, { "id": 46, "title": "跳过空品牌批次的无效远程品牌检查请求", "module": "collectdata", "dependency": "45", "status": "done", "updated_at": "2026-08-30T13:40:09" }, { "id": 47, "title": "为品牌检查结果增加任务内短期缓存,避免同品牌重复远程调用", "module": "collectdata", "dependency": "46", "status": "done", "updated_at": "2026-08-30T13:53:59" }, { "id": 48, "title": "将 invalid ASIN 记录改为批量 INSERT IGNORE/upsert", "module": "collectdata", "dependency": "47", "status": "done", "updated_at": "2026-08-30T14:15:36" }, { "id": 49, "title": "将结果明细从逐行 RustFS 对象改为 chunk 级 payload 存储", "module": "collectdata", "dependency": "48", "status": "done", "updated_at": "2026-08-30T14:31:08" }, { "id": 50, "title": "为结果明细设计批量 upsert mapper 与幂等唯一键", "module": "collectdata", "dependency": "49", "status": "done", "completed": 50, "rounds": 50, "updated_at": "2026-08-30T15:35:00+08:00" }, { "id": 51, "title": "将 accepted 行的序列化和 hash 计算改为批量处理", "module": "collectdata", "dependency": "50", "status": "done", "completed": 51, "rounds": 51, "updated_at": "2026-08-30T15:40:00+08:00" }, { "id": 52, "title": "生成结果文件时按 chunk 一次读取,取消逐行对象读取", "module": "collectdata", "dependency": "51", "status": "done", "completed": 52, "rounds": 52, "updated_at": "2026-08-30T16:00:00+08:00" }, { "id": 53, "title": "将 rawRows 与 finalRows 的内存生命周期分段,避免同时长期驻留", "module": "collectdata", "dependency": "52", "status": "done", "completed": 53, "rounds": 53, "updated_at": "2026-08-30T16:35:00+08:00" }, { "id": 54, "title": "将 finalRowCount 从每个 chunk COUNT(*) 改为任务内增量计数", "module": "collectdata", "dependency": "53", "status": "done", "completed": 54, "rounds": 54, "updated_at": "2026-08-30T17:05:00+08:00" }, { "id": 55, "title": "将进度统计更新改为节流/合并写,减少高频 task UPDATE", "module": "collectdata", "dependency": "54", "status": "done", "completed": 55, "rounds": 55, "updated_at": "2026-08-30T22:30:00+08:00" }, { "id": 56, "title": "为采集结果文件增加流式写入失败后的临时文件清理", "module": "collectdata", "dependency": "55", "status": "done", "completed": 56, "rounds": 56, "updated_at": "2026-08-30T23:10:00+08:00" }, { "id": 57, "title": "为采集结果对象增加数据库删除与物理对象删除的一致性处理", "module": "collectdata", "dependency": "56", "status": "done", "completed": 57, "rounds": 57, "updated_at": "2026-08-30T23:55:00+08:00" }, { "id": 58, "title": "补充外部品牌服务不可用、RustFS 超时和重复 chunk 的降级测试", "module": "collectdata", "dependency": "57", "status": "done", "completed": "2026-08-30T17:28:00+08:00", "rounds": 58, "updated_at": "2026-08-30T17:28:00+08:00" }, { "id": 59, "title": "完成采集模块数据库索引、批量 SQL 和对象存储调用次数验证", "module": "collectdata", "dependency": "58", "status": "done", "completed": "2026-08-30T17:40:00+08:00", "rounds": 59, "updated_at": "2026-08-30T17:40:00+08:00" }, { "id": 60, "title": "完成采集模块 10k 行压测并验收结果完整性、内存和吞吐", "module": "collectdata", "dependency": "59", "status": "done", "completed": "2026-08-30T17:48:00+08:00", "rounds": 60, "updated_at": "2026-08-30T17:48:00+08:00" }, { "id": 61, "title": "建立共享任务链路资源指标基线:线程、连接、队列、GC、Redis、RustFS 和 DB", "module": "shared", "dependency": "无", "status": "done", "completed": "2026-08-30T18:00:36+08:00", "rounds": 61, "updated_at": "2026-08-30T18:00:36+08:00" }, { "id": 62, "title": "为本地任务实体缓存增加最大条目数、TTL 和定时清理", "module": "shared", "dependency": "61", "status": "done", "completed": "2026-08-30T18:17:55+08:00", "rounds": 62, "updated_at": "2026-08-30T18:17:55+08:00" }, { "id": 63, "title": "为前端/后端进度快照增加写入去重和最小更新间隔", "module": "shared", "dependency": "62", "status": "done", "completed": "2026-08-30T18:28:19+08:00", "rounds": 63, "updated_at": "2026-08-30T18:28:19+08:00" }, { "id": 64, "title": "将 transient payload 压缩改为直接 gzip 二进制流上传", "module": "shared", "dependency": "63", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T18:42:22.724380+08:00" }, { "id": 65, "title": "为 transient payload 读取增加流式解压和解压后字节上限", "module": "shared", "dependency": "64", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T18:49:59.467019+08:00" }, { "id": 66, "title": "限制 RustFS 并发读写与重试的总资源预算,防止多任务叠加爆发", "module": "shared", "dependency": "65", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T18:57:31.246593+08:00" }, { "id": 67, "title": "复用 RustFS/MinIO 客户端与 HTTP 连接池,减少每次操作创建客户端", "module": "shared", "dependency": "66", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T19:04:37.016780+08:00" }, { "id": 68, "title": "将 payload 引用删除改为批量引用检查与异步物理删除", "module": "shared", "dependency": "67", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T19:13:47.257322+08:00" }, { "id": 69, "title": "为数据库删除任务补充 transient payload 指针收集和清理队列", "module": "shared", "dependency": "68", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T19:29:59.023068+08:00" }, { "id": 70, "title": "将历史清理改为 keyset 分页、小批量和短事务", "module": "shared", "dependency": "69", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T19:49:03.265056+08:00" }, { "id": 71, "title": "清理日志改为数量与 sample ID,禁止输出超长任务 ID 列表", "module": "shared", "dependency": "70", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T19:53:49.613507+08:00" }, { "id": 72, "title": "为文件作业实现数据库原子 claim,避免重复派发同一 job", "module": "shared", "dependency": "71", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T20:01:22.248696+08:00" }, { "id": 73, "title": "为本地文件作业队列增加 in-flight 去重和队列背压", "module": "shared", "dependency": "72", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T20:23:07+08:00" }, { "id": 74, "title": "隔离调度线程池、文件作业线程池和外部 Coze/图片执行池", "module": "shared", "dependency": "73", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T20:31:43+08:00" }, { "id": 75, "title": "为虚拟线程任务增加等待队列上限与拒绝/延迟指标", "module": "shared", "dependency": "74", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T20:39:35+08:00" }, { "id": 76, "title": "将 JSON owner 查询迁移到显式列并补充任务/状态复合索引", "module": "shared", "dependency": "75", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T20:51:14+08:00" }, { "id": 77, "title": "统一 Coze、品牌检查和紫鸟 HTTP 客户端的连接复用策略", "module": "shared", "dependency": "76", "status": "done", "completed": 1, "rounds": 1, "updated_at": "2026-08-30T21:08:32+08:00" }, { "id": 78, "title": "为所有外部调用增加耗时、重试、失败率和 payload 字节指标", "module": "shared", "dependency": "77", "status": "done" }, { "id": 79, "title": "为对象存储、数据库和队列增加故障注入测试", "module": "shared", "dependency": "78", "status": "done", "completed": 79, "rounds": 62, "updated_at": "2026-08-30T22:23:43.531511+08:00" }, { "id": 80, "title": "补充 JVM 堆、直接内存、临时磁盘和连接池容量配置说明", "module": "shared", "dependency": "79", "status": "done", "completed": 80, "rounds": 63, "updated_at": "2026-08-30T22:31:07.539232+08:00" }, { "id": 81, "title": "建立前端任务轮询请求量、响应体大小和页面内存基线", "module": "frontend", "dependency": "无", "status": "pending" }, { "id": 82, "title": "为进度响应 Map 增加 TTL 清理与最大条目数", "module": "frontend", "dependency": "81", "status": "pending" }, { "id": 83, "title": "统一不同页面的轮询去重、in-flight 合并和终态清理", "module": "frontend", "dependency": "82", "status": "pending" }, { "id": 84, "title": "优化店铺抓取队列状态合并,消除 historyItems 的线性重复查找", "module": "frontend", "dependency": "83", "status": "pending" }, { "id": 85, "title": "优化 Similar ASIN 轮询与文件生成等待,避免重复 force 请求", "module": "frontend", "dependency": "84", "status": "pending" }, { "id": 86, "title": "将隐藏页面轮询间隔、前台恢复和退避策略统一配置化", "module": "frontend", "dependency": "85", "status": "pending" }, { "id": 87, "title": "限制 localStorage 中任务、快照和队列数据的最大数量/字节数", "module": "frontend", "dependency": "86", "status": "pending" }, { "id": 88, "title": "解析结果前端只接收预览数据,避免大 payload 进入响应式对象", "module": "frontend", "dependency": "87", "status": "pending" }, { "id": 89, "title": "清理页面卸载时的所有 timer、请求和临时 URL", "module": "frontend", "dependency": "88", "status": "pending" }, { "id": 90, "title": "为进度接口增加断网、超时、服务恢复和重复响应测试", "module": "frontend", "dependency": "89", "status": "pending" }, { "id": 91, "title": "按页面拆分 Element Plus 与公共业务 chunk", "module": "frontend", "dependency": "90", "status": "pending" }, { "id": 92, "title": "配置 Vite manualChunks 并比较各页面首屏传输大小", "module": "frontend", "dependency": "91", "status": "pending" }, { "id": 93, "title": "补充 Similar ASIN、店铺抓取和采集数据页面的 E2E 核心路径", "module": "frontend", "dependency": "92", "status": "pending" }, { "id": 94, "title": "补充移动端与桌面端响应式页面验收截图", "module": "frontend", "dependency": "93", "status": "pending" }, { "id": 95, "title": "补充深色主题、错误提示、重试和终态刷新验收", "module": "frontend", "dependency": "94", "status": "pending" }, { "id": 96, "title": "建立 Java/Python/Vue 三端统一的 API 字段兼容检查", "module": "frontend", "dependency": "95", "status": "pending" }, { "id": 97, "title": "执行 Java 全量测试、Python unittest、Vue 类型检查与构建", "module": "frontend", "dependency": "96", "status": "pending" }, { "id": 98, "title": "执行真实启动、健康检查、核心请求和外部依赖调用验证", "module": "frontend", "dependency": "97", "status": "pending" }, { "id": 99, "title": "执行全链路压测并记录 CPU、内存、GC、DB、Redis、RustFS、网络结果", "module": "frontend", "dependency": "98", "status": "pending" }, { "id": 100, "title": "完成发布前回滚演练、git commit 对应关系检查和交付清单", "module": "frontend", "dependency": "99", "status": "pending" } ], "pending": 13 }