## 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 获取、取消任务等关键流程。