跳到主要内容

8-仪表盘

概览

目录:doc/product/financial/dashboard

该模块基于元数据服务的视图、指标与仪表盘能力,提供一套可直接落地的「发票风险驾驶舱」:

  • 视图定义:view.*.json
  • 指标定义:metric.*.json
  • 仪表盘定义:dashboard.*.json

初始化脚本 init/init.py 中的 init_views_metrics_dashboards 会批量读取这些配置,并通过 /metadata/views/upsert/metadata/metrics/upsert/metadata/dashboards 完成落地。

仪表盘:dashboard.fin_invoice_risk.json

文件:dashboard/dashboard.fin_invoice_risk.json

该仪表盘以「近 30 天发票金额、数量、规则命中」为核心,提供 KPI 卡片、趋势图与规则命中明细。

完整 JSON:

{
"code": "fin_invoice_risk",
"title": "发票风险驾驶舱",
"grid": { "cols": 12, "rowHeight": 40, "gutter": 12 },
"widgets": [
{
"id": "kpi_invoice_amount_30d",
"type": "kpi",
"title": "近30天发票金额",
"grid": { "x": 0, "y": 0, "w": 3, "h": 2 },
"style": { "unit": "¥", "valueFormat": ",0.00" },
"dataSource": { "type": "view", "viewId": "metric.fin_invoice_amount_30d" }
},
{
"id": "chart_invoice_amount_by_day",
"type": "chart",
"title": "近30天每日发票金额",
"grid": { "x": 3, "y": 0, "w": 6, "h": 6 },
"chart": { "kind": "line", "xField": "date", "yField": "amount", "area": true, "smooth": true },
"dataSource": { "type": "view", "viewId": "view.fin_invoices_daily_amount" }
},
{
"id": "chart_invoice_risk_by_level",
"type": "chart",
"title": "发票风险等级分布",
"grid": { "x": 9, "y": 0, "w": 3, "h": 6 },
"chart": { "kind": "pie", "categoryField": "risk_level", "valueField": "invoice_count" },
"dataSource": { "type": "view", "viewId": "view.fin_invoice_risk_by_level" }
},
{
"id": "table_rule_hits_recent",
"type": "table",
"title": "规则命中明细(近30天)",
"grid": { "x": 0, "y": 6, "w": 12, "h": 6 },
"table": {
"columns": [
{ "key": "hit_at", "title": "命中时间", "width": 160, "align": "center" },
{ "key": "invoice_id", "title": "发票ID", "width": 120, "align": "left" },
{ "key": "rule_id", "title": "规则ID", "width": 160, "align": "left" }
],
"rowHeight": 32,
"autoScroll": true,
"scroll": { "step": 1, "interval": 16, "pauseMs": 1200 }
},
"dataSource": { "type": "view", "viewId": "view.fin_rule_hits_recent" }
},
{
"id": "kpi_invoice_count_30d",
"type": "kpi",
"title": "近30天发票数量",
"grid": { "x": 0, "y": 12, "w": 3, "h": 2 },
"style": { "unit": "笔", "valueFormat": ",0" },
"dataSource": { "type": "view", "viewId": "metric.fin_invoice_count_30d" }
},
{
"id": "kpi_high_risk_invoice_count_30d",
"type": "kpi",
"title": "近30天高风险发票数量",
"grid": { "x": 3, "y": 12, "w": 3, "h": 2 },
"style": { "unit": "笔", "valueFormat": ",0" },
"dataSource": { "type": "view", "viewId": "metric.fin_high_risk_invoice_count_30d" }
},
{
"id": "kpi_rule_hits_count_30d",
"type": "kpi",
"title": "近30天规则命中次数",
"grid": { "x": 6, "y": 12, "w": 3, "h": 2 },
"style": { "unit": "次", "valueFormat": ",0" },
"dataSource": { "type": "view", "viewId": "metric.fin_rule_hits_count_30d" }
}
]
}

其他视图与指标配置可在同目录下的 view.*.jsonmetric.*.json 中查看,它们与上面的仪表盘通过 viewId 做关联。