Files
crawler-plugin/docs/plans/04-shared.md
T
huangzd1997 42bbf4904e
Build Backend JAR / build (push) Has been cancelled
feat-admin-ui-interaction
2026-08-30 22:09:22 +08:00

702 lines
65 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 04 共享任务、对象存储、调度与清理优化
> 对应总览任务:61-80
> 计划来源:`docs/plans/00-plan-overview.md`;仓库当前没有 `docs/specs/`,本模块计划根据现有代码审计结果生成。
## 模块目标
建立跨模块资源预算和可观测性,消除无界缓存、重复派发、长事务、物理对象泄漏和大 payload 读写放大。
## 模块级执行规则
- 开发阶段单线程串行执行,不并行实现多个任务;完成一个任务的测试、实现、验证和 commit 后才能进入下一个任务。
- 每个任务严格按“先写全部测试 → 运行确认 RED → 实现 → 运行确认 GREEN → lint/format → commit”执行。
- 每个普通任务至少包含 8 个语义化测试;涉及 I/O、数据库、HTTP、Redis、RustFS、文件或 UI 时,测试必须同时覆盖 mock 依赖和真实集成/启动调用。
- 禁止纯 echo、硬编码成功、空实现、跳过真实依赖调用或仅以 import 成功作为验收。
## 任务 61:建立共享任务链路资源指标基线:线程、连接、队列、GC、Redis、RustFS 和 DB
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**:无
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“建立共享任务链路资源指标基线:线程、连接、队列、GC、Redis、RustFS 和 DB”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_061_rustfs_metrics_normal_default_path` — 使用正常输入验证“建立共享任务链路资源指标基线:线程、连接、队列、GC、Redis、RustFS 和 DB”的默认成功路径和主输出。
2. `test_task_061_rustfs_metrics_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_061_rustfs_metrics_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_061_rustfs_metrics_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_061_rustfs_metrics_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_061_rustfs_metrics_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_061_rustfs_metrics_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_061_rustfs_metrics_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 62:为本地任务实体缓存增加最大条目数、TTL 和定时清理
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**61
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为本地任务实体缓存增加最大条目数、TTL 和定时清理”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_062_cache_cleanup_normal_default_path` — 使用正常输入验证“为本地任务实体缓存增加最大条目数、TTL 和定时清理”的默认成功路径和主输出。
2. `test_task_062_cache_cleanup_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_062_cache_cleanup_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_062_cache_cleanup_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_062_cache_cleanup_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_062_cache_cleanup_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_062_cache_cleanup_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_062_cache_cleanup_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 63:为前端/后端进度快照增加写入去重和最小更新间隔
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**62
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为前端/后端进度快照增加写入去重和最小更新间隔”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_063_progress_frontend_normal_default_path` — 使用正常输入验证“为前端/后端进度快照增加写入去重和最小更新间隔”的默认成功路径和主输出。
2. `test_task_063_progress_frontend_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_063_progress_frontend_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_063_progress_frontend_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_063_progress_frontend_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_063_progress_frontend_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_063_progress_frontend_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_063_progress_frontend_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 64:将 transient payload 压缩改为直接 gzip 二进制流上传
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**63
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“将 transient payload 压缩改为直接 gzip 二进制流上传”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_064_payload_compression_normal_default_path` — 使用正常输入验证“将 transient payload 压缩改为直接 gzip 二进制流上传”的默认成功路径和主输出。
2. `test_task_064_payload_compression_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_064_payload_compression_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_064_payload_compression_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_064_payload_compression_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_064_payload_compression_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_064_payload_compression_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_064_payload_compression_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 65:为 transient payload 读取增加流式解压和解压后字节上限
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**64
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为 transient payload 读取增加流式解压和解压后字节上限”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_065_payload_normal_default_path` — 使用正常输入验证“为 transient payload 读取增加流式解压和解压后字节上限”的默认成功路径和主输出。
2. `test_task_065_payload_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_065_payload_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_065_payload_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_065_payload_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_065_payload_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_065_payload_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_065_payload_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 66:限制 RustFS 并发读写与重试的总资源预算,防止多任务叠加爆发
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**65
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“限制 RustFS 并发读写与重试的总资源预算,防止多任务叠加爆发”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_066_rustfs_normal_default_path` — 使用正常输入验证“限制 RustFS 并发读写与重试的总资源预算,防止多任务叠加爆发”的默认成功路径和主输出。
2. `test_task_066_rustfs_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_066_rustfs_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_066_rustfs_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_066_rustfs_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_066_rustfs_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_066_rustfs_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_066_rustfs_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 67:复用 RustFS/MinIO 客户端与 HTTP 连接池,减少每次操作创建客户端
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**66
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“复用 RustFS/MinIO 客户端与 HTTP 连接池,减少每次操作创建客户端”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_067_rustfs_normal_default_path` — 使用正常输入验证“复用 RustFS/MinIO 客户端与 HTTP 连接池,减少每次操作创建客户端”的默认成功路径和主输出。
2. `test_task_067_rustfs_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_067_rustfs_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_067_rustfs_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_067_rustfs_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_067_rustfs_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_067_rustfs_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_067_rustfs_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 68:将 payload 引用删除改为批量引用检查与异步物理删除
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**67
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“将 payload 引用删除改为批量引用检查与异步物理删除”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_068_payload_normal_default_path` — 使用正常输入验证“将 payload 引用删除改为批量引用检查与异步物理删除”的默认成功路径和主输出。
2. `test_task_068_payload_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_068_payload_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_068_payload_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_068_payload_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_068_payload_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_068_payload_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_068_payload_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 69:为数据库删除任务补充 transient payload 指针收集和清理队列
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**68
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为数据库删除任务补充 transient payload 指针收集和清理队列”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_069_payload_cleanup_normal_default_path` — 使用正常输入验证“为数据库删除任务补充 transient payload 指针收集和清理队列”的默认成功路径和主输出。
2. `test_task_069_payload_cleanup_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_069_payload_cleanup_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_069_payload_cleanup_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_069_payload_cleanup_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_069_payload_cleanup_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_069_payload_cleanup_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_069_payload_cleanup_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 70:将历史清理改为 keyset 分页、小批量和短事务
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**69
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“将历史清理改为 keyset 分页、小批量和短事务”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_070_cleanup_normal_default_path` — 使用正常输入验证“将历史清理改为 keyset 分页、小批量和短事务”的默认成功路径和主输出。
2. `test_task_070_cleanup_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_070_cleanup_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_070_cleanup_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_070_cleanup_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_070_cleanup_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_070_cleanup_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_070_cleanup_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 71:清理日志改为数量与 sample ID,禁止输出超长任务 ID 列表
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**70
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“清理日志改为数量与 sample ID,禁止输出超长任务 ID 列表”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_071_cleanup_logging_normal_default_path` — 使用正常输入验证“清理日志改为数量与 sample ID,禁止输出超长任务 ID 列表”的默认成功路径和主输出。
2. `test_task_071_cleanup_logging_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_071_cleanup_logging_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_071_cleanup_logging_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_071_cleanup_logging_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_071_cleanup_logging_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_071_cleanup_logging_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_071_cleanup_logging_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 72:为文件作业实现数据库原子 claim,避免重复派发同一 job
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**71
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为文件作业实现数据库原子 claim,避免重复派发同一 job”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_072_job_normal_default_path` — 使用正常输入验证“为文件作业实现数据库原子 claim,避免重复派发同一 job”的默认成功路径和主输出。
2. `test_task_072_job_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_072_job_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_072_job_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_072_job_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_072_job_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_072_job_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_072_job_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 73:为本地文件作业队列增加 in-flight 去重和队列背压
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**72
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为本地文件作业队列增加 in-flight 去重和队列背压”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_073_job_normal_default_path` — 使用正常输入验证“为本地文件作业队列增加 in-flight 去重和队列背压”的默认成功路径和主输出。
2. `test_task_073_job_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_073_job_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_073_job_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_073_job_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_073_job_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_073_job_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_073_job_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 74:隔离调度线程池、文件作业线程池和外部 Coze/图片执行池
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**73
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“隔离调度线程池、文件作业线程池和外部 Coze/图片执行池”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_074_image_dispatch_job_normal_default_path` — 使用正常输入验证“隔离调度线程池、文件作业线程池和外部 Coze/图片执行池”的默认成功路径和主输出。
2. `test_task_074_image_dispatch_job_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_074_image_dispatch_job_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_074_image_dispatch_job_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_074_image_dispatch_job_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_074_image_dispatch_job_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_074_image_dispatch_job_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_074_image_dispatch_job_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 75:为虚拟线程任务增加等待队列上限与拒绝/延迟指标
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**74
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为虚拟线程任务增加等待队列上限与拒绝/延迟指标”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_075_metrics_normal_default_path` — 使用正常输入验证“为虚拟线程任务增加等待队列上限与拒绝/延迟指标”的默认成功路径和主输出。
2. `test_task_075_metrics_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_075_metrics_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_075_metrics_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_075_metrics_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_075_metrics_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_075_metrics_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_075_metrics_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 76:将 JSON owner 查询迁移到显式列并补充任务/状态复合索引
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**75
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“将 JSON owner 查询迁移到显式列并补充任务/状态复合索引”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_076_owner_normal_default_path` — 使用正常输入验证“将 JSON owner 查询迁移到显式列并补充任务/状态复合索引”的默认成功路径和主输出。
2. `test_task_076_owner_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_076_owner_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_076_owner_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_076_owner_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_076_owner_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_076_owner_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_076_owner_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 77:统一 Coze、品牌检查和紫鸟 HTTP 客户端的连接复用策略
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**76
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“统一 Coze、品牌检查和紫鸟 HTTP 客户端的连接复用策略”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_077_brand_normal_default_path` — 使用正常输入验证“统一 Coze、品牌检查和紫鸟 HTTP 客户端的连接复用策略”的默认成功路径和主输出。
2. `test_task_077_brand_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_077_brand_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_077_brand_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_077_brand_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_077_brand_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_077_brand_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_077_brand_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 78:为所有外部调用增加耗时、重试、失败率和 payload 字节指标
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**77
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为所有外部调用增加耗时、重试、失败率和 payload 字节指标”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_078_payload_metrics_normal_default_path` — 使用正常输入验证“为所有外部调用增加耗时、重试、失败率和 payload 字节指标”的默认成功路径和主输出。
2. `test_task_078_payload_metrics_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_078_payload_metrics_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_078_payload_metrics_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_078_payload_metrics_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_078_payload_metrics_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_078_payload_metrics_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_078_payload_metrics_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 79:为对象存储、数据库和队列增加故障注入测试
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**78
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“为对象存储、数据库和队列增加故障注入测试”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_079_object_storage_normal_default_path` — 使用正常输入验证“为对象存储、数据库和队列增加故障注入测试”的默认成功路径和主输出。
2. `test_task_079_object_storage_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_079_object_storage_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_079_object_storage_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_079_object_storage_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_079_object_storage_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_079_object_storage_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_079_object_storage_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 任务 80:补充 JVM 堆、直接内存、临时磁盘和连接池容量配置说明
**所属模块**:共享任务、对象存储、调度与清理优化
**依赖**79
**预估耗时**:8-15 分钟(写测试 + 实现 + 自测)
### 功能点要求
- 围绕“补充 JVM 堆、直接内存、临时磁盘和连接池容量配置说明”实现一个独立、可验证的功能点,不扩大到同模块其他未完成任务。
- 输入、输出、异常和资源上限必须明确;空输入、单元素、最大允许值和超限值必须有确定行为。
- 成功路径必须保留现有业务语义、幂等性和兼容字段;失败路径必须释放临时文件、连接、锁、线程任务和未引用对象。
- 实现范围限定在 backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。
### 测试用例(必须先写,确认 RED)
1. `test_task_080_task_normal_default_path` — 使用正常输入验证“补充 JVM 堆、直接内存、临时磁盘和连接池容量配置说明”的默认成功路径和主输出。
2. `test_task_080_task_normal_multiple_items` — 使用多个任务、行、chunk 或页面状态验证批量场景下结果不丢失且顺序稳定。
3. `test_task_080_task_normal_repeated_operation_is_idempotent` — 重复执行同一输入,验证不会产生重复记录、重复对象、重复请求或重复 UI 状态。
4. `test_task_080_task_boundary_empty_input` — 空集合、空字符串或无可处理数据时验证返回空结果/安全跳过,不创建无效资源。
5. `test_task_080_task_boundary_single_item` — 单任务、单行、单图片或单页面状态时验证不依赖批量路径且结果正确。
6. `test_task_080_task_boundary_limit_and_overflow` — 达到最大配置值以及超过最大值时验证限流、拒绝或降级行为,不发生无界内存增长。
7. `test_task_080_task_invalid_input_rejected` — 非法参数、缺少必填字段或格式错误时验证抛出项目约定异常及可识别错误消息。
8. `test_task_080_task_dependency_failure_releases_resources` — mock 数据库/Redis/RustFS/HTTP/文件依赖失败后验证错误可恢复,临时资源、锁和队列任务均释放。
### TDD 流程
1. 先写上述全部测试,运行项目测试命令,确认该功能测试 **RED**;如果测试一开始通过,必须先检查测试是否真正覆盖待实现行为。
2. 实现功能,运行该任务定向测试和相关模块测试,确认 **GREEN**
3. 执行 lint/format、编译或前端构建检查,确保没有新增错误。
4. 完成资源释放、异常路径和兼容性验证后创建该任务对应 commit。
### 验证方法
- `mvn -q test` 通过;涉及模块时补充定向测试命令。
- 涉及 I/O、外部服务或数据库时,必须再执行 mock 测试和真实集成/启动调用,并记录资源释放结果。
- 重点观察:backend-java 的 task、RustFS/MinIO、任务文件作业、调度线程池、历史清理和指标日志。中的功能结果正确,且 CPU、堆内存、GC、数据库/对象存储调用次数和临时磁盘占用没有超过任务设定上限。
## 模块完成 Gate
- 20 个任务全部有对应 commit,任务状态均更新为 `done` 前不得开始下一个模块。
- 运行模块定向测试、项目全量测试和 lint/format;真实依赖调用、异常降级和资源释放均有记录。
- 运行模块对应的性能基准,记录吞吐、P95/P99 延迟、峰值堆、GC、CPU、DB QPS、Redis/RustFS QPS 和临时磁盘。