User asked "Is there a BI engine?" Investigation found a substantial
metadata-driven BI layer that the wiki had no dedicated coverage for.
New page reference/maintainer/bi-engine.md:
- Charts: gdsconfigcharmaster (3,006 rows) + slave (1,951) +
CharServiceImpl (2,219 lines, one of the heaviest in
xlyBusinessService). 11 chart types catalogued by sCharType
distribution: Div(1558)/sLabel(1143)/Progress(137)/sPie(52)/
commonList(45)/sColumnarGroup(30)/sColumnar(28)/sBrokenLine(5)/
sBar(3)/ColorBlock(3)/sGauge(2).
- 20 Sp_chart_* aggregation procs catalogued by domain (homepage
cards, today/month sales, financial, equipment/shop-floor).
- 6 /indexPage/commonChar dashboard modules listed by sId+name.
- KPI subsystem: 6 kpi* tables (kpimaster=124,524 rows live),
KpiServiceImpl (833 lines), BusinessModelKpiServiceImpl (901),
FlushModleKpiThread, 2 Sp_KPI_* procs + spKPImodule.
- Render flow end-to-end (SPA → getModelBysId → CharServiceImpl
→ generic proc dispatch → ECharts).
- Customer-override KPI examples under script/客户/ noted.
- Explicit "what this is not": not self-service BI, not real-time
analytics, not OLAP-cube-backed.
- Added to mkdocs nav under Reference (Maintainer).
Tech-stack.md correction:
- The OLAP4J row previously claimed "1 file in xlyPersist imports
org.olap4j.*". Empirical re-grep returns ZERO Java imports of
org.olap4j anywhere in source. The jars are classpath dead weight
(the xmlaserver line is even commented out in build.gradle).
Updated row to reflect the actual state and link to bi-engine.md.