Add pyarrow/duckdb/openpyxl dependencies to KPI analysis requirements, fix KPI compare selector to expose all RATs KPIs regardless of group filter matching V1 behavior, and restrict top-N group additions to valid KPI candidates from compare options to avoid meta columns
Browse files
hf_spaces/kpi_analysis/requirements.txt
CHANGED
|
@@ -4,3 +4,7 @@ pandas>=2.0
|
|
| 4 |
numpy>=1.23
|
| 5 |
plotly>=5.0
|
| 6 |
xlsxwriter>=3.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
numpy>=1.23
|
| 5 |
plotly>=5.0
|
| 6 |
xlsxwriter>=3.0
|
| 7 |
+
|
| 8 |
+
pyarrow>=14.0
|
| 9 |
+
duckdb>=0.9
|
| 10 |
+
openpyxl>=3.1
|
panel_app/kpi_health_check_panel_v2.py
CHANGED
|
@@ -2108,11 +2108,11 @@ def _update_kpi_options() -> None:
|
|
| 2108 |
if kpi_select.value not in filtered_kpis:
|
| 2109 |
kpi_select.value = filtered_kpis[0] if filtered_kpis else None
|
| 2110 |
|
| 2111 |
-
|
|
|
|
|
|
|
| 2112 |
if kpi_compare_select.value:
|
| 2113 |
-
kpi_compare_select.value = [
|
| 2114 |
-
k for k in kpi_compare_select.value if k in filtered_kpis
|
| 2115 |
-
]
|
| 2116 |
return
|
| 2117 |
return
|
| 2118 |
|
|
@@ -2208,8 +2208,12 @@ def _update_site_view(event=None) -> None:
|
|
| 2208 |
selected = [str(kpi)] + selected
|
| 2209 |
|
| 2210 |
if "Add top" in str(kpi_group_mode.value):
|
|
|
|
| 2211 |
from_group = filter_kpis(
|
| 2212 |
-
|
|
|
|
|
|
|
|
|
|
| 2213 |
)[:12]
|
| 2214 |
for gk in from_group:
|
| 2215 |
if gk not in selected:
|
|
|
|
| 2108 |
if kpi_select.value not in filtered_kpis:
|
| 2109 |
kpi_select.value = filtered_kpis[0] if filtered_kpis else None
|
| 2110 |
|
| 2111 |
+
# Match V1 behavior: compare list always exposes all KPIs for the RAT,
|
| 2112 |
+
# while the main KPI dropdown can be filtered by group.
|
| 2113 |
+
kpi_compare_select.options = kpis
|
| 2114 |
if kpi_compare_select.value:
|
| 2115 |
+
kpi_compare_select.value = [k for k in kpi_compare_select.value if k in kpis]
|
|
|
|
|
|
|
| 2116 |
return
|
| 2117 |
return
|
| 2118 |
|
|
|
|
| 2208 |
selected = [str(kpi)] + selected
|
| 2209 |
|
| 2210 |
if "Add top" in str(kpi_group_mode.value):
|
| 2211 |
+
# Ensure we only add real KPI candidates (avoid meta columns)
|
| 2212 |
from_group = filter_kpis(
|
| 2213 |
+
list(kpi_compare_select.options or []),
|
| 2214 |
+
kpi_group_select.value,
|
| 2215 |
+
mode="Top-N",
|
| 2216 |
+
top_n=12,
|
| 2217 |
)[:12]
|
| 2218 |
for gk in from_group:
|
| 2219 |
if gk not in selected:
|