Files
junhong_cmp_fiber/openspec/changes/unified-export-task-system/proposal.md
huang fe4c545308
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
修正数据
2026-04-27 18:10:08 +08:00

41 lines
2.4 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.
## Why
当前系统已有设备与单卡导入任务,但缺少统一的异步导出任务能力,随着数据规模持续增长,直接同步导出会带来超时、内存占用和用户体验问题。现在需要先落地可复用的“导出任务骨架”,为后续多个业务场景复用,避免重复建设。
## What Changes
- `feature-001-unified-export-task-center`:新增全局导出任务中心,统一创建、查询、详情、取消导出任务。
- `feature-002-export-format-selectable`:创建导出任务时支持用户选择 `xlsx/csv` 格式。
- `feature-003-scene-plugin-support`:首批支持 `device``iot_card` 两个导出场景,并设计为可扩展插件式接入。
- `feature-004-async-shard-export`:导出采用 Asynq 异步执行,支持分片处理与进度回写,面向大数据量场景。
- `feature-005-export-oss-delivery`:导出产物上传 OSS任务详情直接返回可下载 URL默认有效期 24 小时)。
- `feature-006-export-task-cancel`:支持取消待处理/执行中的导出任务,并在 Worker 侧协作停止。
- 架构遵循 `Handler -> Service -> Store -> Model` 分层,导出能力以通用引擎 + 场景策略方式实现。
## Capabilities
### New Capabilities
- `unified-export-task-system`统一导出任务系统能力覆盖全局任务入口、异步分片导出、OSS 交付、详情直出下载 URL 与任务取消。
### Modified Capabilities
-
## Impact
- 影响模块:
- `internal/routes`:新增导出任务全局路由。
- `internal/handler`:新增导出任务 Handler。
- `internal/service`:新增导出任务编排服务与场景策略注册。
- `internal/store`:新增导出任务与分片任务存储。
- `internal/task``pkg/queue`:新增导出 dispatch/shard/finalize/cancel 相关任务处理。
- `pkg/constants`新增导出任务类型、状态、Redis Key 常量。
- 影响 API
- 新增全局导出任务创建/列表/详情/取消接口(按 `scene` 过滤展示)。
- 影响数据与基础设施:
- 新增导出主任务与分片任务表。
- 复用现有 OSS 能力与 Asynq 队列能力。
- 性能考虑:
- 使用分片、流式写出、批量进度更新、Keyset 分页策略,避免大数据量导出时超时与内存峰值。
- 验证计划:
- 按项目约束采用 PostgreSQL MCP + Postman/curl 的手工验证,覆盖创建任务、分片执行、下载 URL 获取、取消任务等关键流程。