更新时间:2026-09-23。本文是代码导航和差异摘要,不替代源码。动态问题状态见 问题台账。
v2 先查可召唤目录、验证已召唤子记录,再召唤缺失项;召唤任务按字段与 UTC 时间窗口定位,按 ID 分页查询,每轮延迟约 60 秒重入队并释放 worker,最长 2 小时;DataDownloadReport.json;USER_AI,其任务查询限制为自身。| 领域 | 文件 |
|---|---|
| Domain | service/domain/dataDownloadDomain.go |
| Task planning / structured execution | service/services/dataDownloadService.go |
| RequestKey | service/services/dataDownloadRequestKey.go |
| Request lease | service/services/dataDownloadFileRequestService.go |
| Binary execution | service/services/dataDownloadBinaryService.go |
| FaultRecord execution | service/services/dataDownloadFaultRecordService.go |
| Renderer | service/services/dataDownloadRenderService.go |
| Package | service/services/dataDownloadPackageService.go |
| Admin deletion | service/services/dataDownloadAdminService.go |
| Mongo repository | service/repositories/mongo/dataDownloadRepo.go |
| PostgreSQL repository | service/repositories/pgsql/dataDownloadRepo.go |
| MinIO repository | service/repositories/minio/dataDownloadRepo.go |
| Queue | service/task/queue/dataDownloadQueue/dataDownloadQueue.go |
| HTTP controller/routes | service/controllers/dataDownloadControllers.go、service/routes/dataDownloadRoutes.go |
| MCP | service/cmd/mcp/tools/service/data_download.go |
| Frontend | src/views/data-download/、src/service/dataDownload/ |
| 领域 | 当前实现 | 尚缺 |
|---|---|---|
| content lock | Redis 排他锁;流式读取可续租 | writer-preference 读写锁、统一 fencing |
| Generation | Mongo Document/Slot 比较 | 每次命中校验 PostgreSQL 权威 Generation |
| RenderSlot | DocumentID、format、Generation、ArtifactID | RendererVersion、CacheKey、发布 token/CAS、状态机 |
| PostgreSQL migration | 自制 migration 表和 GORM SQL | goose/embed 或 migration advisory lock |
| PostgreSQL schema | 强类型列仍保留 payload jsonb | 完整类型化及 UpdateLog 细分 |
| Renderer | MQTT/EventAlarm 固定列,PowerFlow 基础 HTML | PowerFlow ECharts、UpdateLog 双 Sheet、JSON envelope |
| 前端预览 | 下载为主 | HTML/CSV/XLSX/JSON/TXT 真实预览、tar 浏览 |
| 批量操作 | 后端支持多 Task 打包,页面单任务整包 | 多选、部分文件选择、批量删除 |
| MCP | 自身任务列表、创建、全局文档分页 | 条件过滤、详情/读取、存在性判断、覆盖检查与幂等创建 |
| 大对象 | HTTP 读取流式;上游与 ZIP 多处 []byte |
流式生成/上传或临时文件 |
| FaultRecord 召唤轮询 | 每轮查询一次并延迟约 60 秒重入队,释放 worker;持久化任务信息和召唤占用,最长 2 小时 | 实际轮询间隔受队列调度影响 |
| FaultRecord 设备发现 | 站点和设备基本信息只规划 aGate/aPower | MPPT/aHub 本阶段不处理;未来启用前确定设备 SN 来源 |
以问题台账为准,当前主要风险包括:
已解决。每个 Kind 只采用影响正文身份的字段;DocumentID、请求租约和 Mongo Document 使用同一规范化 RequestKey。各 Kind 通过独立 content_version 管理内容语义升级。
已解决。规划按 DeviceSN/DevType/Date 拆分;执行保存多个 Entry 和每任务 FileAttempt;成功文件立即发布,失败不覆盖旧 current file;partial 可重试和打包;完整无失败且到达 D+2 才 Frozen。
当前相关验证命令:
cd service
GOCACHE=/tmp/fwh-toolbox-go-cache go test ./services ./cmd/mcp/tools/service ./controllers ./routes ./task/queue/dataDownloadQueue ./repositories/mongo ./repositories/pgsql
cd ..
pnpm exec vue-tsc --build
pnpm exec eslint src/service/dataDownload/index.ts src/service/dataDownload/interface.ts src/views/data-download/index.vue src/views/data-download/documents.vue
上述 DataDownload 相关测试与前端类型检查已通过。全仓 go test ./... 仍被与 DataDownload 无关的旧程序阻断,包括:
models/model_pgsql/siteOriginalData.go 语法错误;cmd/gen 使用已不存在的配置字段;logger.Init;archive/。