Skip to content

报表系统

EcoCtrl 的报表系统允许管理员定义定时报表计划,并从模板生成文档。报表生成通过队列系统异步运行,因此大型导出不会阻塞 API。

概念

术语说明
报表计划一个定时任务,定义收集哪些数据、如何格式化以及何时运行。
报表模板可复用的文档布局(例如 PDF 页眉、页脚、图表位置)。
报表实例执行计划产生的单个生成文档。

数据模型

report_plans

类型说明
iduuid PK
namevarchar计划名称。
descriptiontext可选。
templateIduuid FK→ report_templates(id)。
schedulevarcharCron 表达式或 manual
configjsonb数据源、筛选条件、格式(pdf / csv / xlsx)。
enabledboolean计划是否激活。
lastRunAttimestamptz可为空。
createdAttimestamptz

report_templates

类型说明
iduuid PK
namevarchar模板名称。
descriptiontext可选。
contentjsonb布局定义(页眉、章节、图表配置)。
createdAttimestamptz

Admin UI

admin 后台的报表页面提供:

  • 现有报表计划列表,含状态、上次运行时间和下次定时运行时间。
  • 计划的增删改查操作。
  • 模板库,展示可用布局。
  • 任何计划的立即执行触发器(通过队列立即运行)。
  • 已生成报表实例的下载链接。

API

方法路径说明
GET/api/reports/plans列出报表计划
POST/api/reports/plans创建计划
GET/api/reports/plans/:id获取计划详情
PUT/api/reports/plans/:id更新计划
DELETE/api/reports/plans/:id删除计划
POST/api/reports/plans/:id/run手动执行计划
GET/api/reports/templates列出模板

执行流程

定时触发(或手动触发)


队列任务:report-generation


Worker 从配置的数据源收集数据


应用模板布局


渲染为目标格式(PDF / CSV / XLSX)


存储结果并更新 plan.lastRunAt

添加报表数据源

  1. packages/server/src/services/reporting/ 中添加数据收集逻辑。
  2. 在报表计划配置 schema 中注册数据源名称。
  3. 更新 admin UI,允许在计划编辑器中选择新数据源。
  4. Worker 在运行时会自动按名称识别并使用新数据源。

基于 MIT 协议发布