@optifye/dashboard-core 6.12.41 → 6.12.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +22 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.js +195 -34
- package/dist/index.mjs +195 -35
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -14897,12 +14897,14 @@ var logDebug = (...args) => {
|
|
|
14897
14897
|
if (!DEBUG_DASHBOARD_LOGS) return;
|
|
14898
14898
|
console.log(...args);
|
|
14899
14899
|
};
|
|
14900
|
-
var buildMetricsScopeKey = (lineId, lineIds, blueComparisonLineIds) => {
|
|
14900
|
+
var buildMetricsScopeKey = (lineId, lineIds, blueComparisonLineIds, selectorLineIds) => {
|
|
14901
14901
|
const normalizedLineIds = Array.from(new Set((lineIds || []).filter(Boolean))).sort();
|
|
14902
14902
|
const normalizedBlueComparisonLineIds = Array.from(new Set((blueComparisonLineIds || []).filter(Boolean))).sort();
|
|
14903
|
+
const normalizedSelectorLineIds = Array.from(new Set((selectorLineIds || []).filter(Boolean))).sort();
|
|
14903
14904
|
const lineKey = normalizedLineIds.length > 0 ? normalizedLineIds.join(",") : lineId;
|
|
14904
14905
|
const comparisonKey = normalizedBlueComparisonLineIds.length > 0 ? normalizedBlueComparisonLineIds.join(",") : lineKey;
|
|
14905
|
-
|
|
14906
|
+
const selectorKey = normalizedSelectorLineIds.length > 0 ? normalizedSelectorLineIds.join(",") : "";
|
|
14907
|
+
return `${lineId}|${lineKey}|blue:${comparisonKey}|selector:${selectorKey}`;
|
|
14906
14908
|
};
|
|
14907
14909
|
var parseEfficiencyLegend = (legend) => {
|
|
14908
14910
|
if (!legend) return null;
|
|
@@ -14925,6 +14927,7 @@ var useDashboardMetrics = ({
|
|
|
14925
14927
|
lineId,
|
|
14926
14928
|
lineIds,
|
|
14927
14929
|
blueComparisonLineIds,
|
|
14930
|
+
selectorLineIds,
|
|
14928
14931
|
userAccessibleLineIds,
|
|
14929
14932
|
enabled = true
|
|
14930
14933
|
}) => {
|
|
@@ -14951,6 +14954,10 @@ var useDashboardMetrics = ({
|
|
|
14951
14954
|
() => Array.from(new Set((blueComparisonLineIds || []).filter(Boolean))),
|
|
14952
14955
|
[blueComparisonLineIds]
|
|
14953
14956
|
);
|
|
14957
|
+
const normalizedSelectorLineIds = useMemo(
|
|
14958
|
+
() => Array.from(new Set((selectorLineIds || []).filter(Boolean))),
|
|
14959
|
+
[selectorLineIds]
|
|
14960
|
+
);
|
|
14954
14961
|
const { shiftConfig: staticShiftConfig } = useDashboardConfig();
|
|
14955
14962
|
const {
|
|
14956
14963
|
shiftConfigMap: multiLineShiftConfigMap,
|
|
@@ -14986,9 +14993,9 @@ var useDashboardMetrics = ({
|
|
|
14986
14993
|
const configuredLineMetricsTable = databaseConfig?.tables?.lineMetrics ?? "line_metrics";
|
|
14987
14994
|
const schema = databaseConfig?.schema ?? "public";
|
|
14988
14995
|
const supabase = useSupabase();
|
|
14989
|
-
const [metrics2, setMetrics] = useState({ workspaceMetrics: [], lineMetrics: [] });
|
|
14996
|
+
const [metrics2, setMetrics] = useState({ workspaceMetrics: [], lineMetrics: [], selectorLineMetrics: [] });
|
|
14990
14997
|
const [metricsLineId, setMetricsLineId] = useState(lineId ?? null);
|
|
14991
|
-
const [metricsScopeKey, setMetricsScopeKey] = useState(() => buildMetricsScopeKey(lineId, lineIds, blueComparisonLineIds));
|
|
14998
|
+
const [metricsScopeKey, setMetricsScopeKey] = useState(() => buildMetricsScopeKey(lineId, lineIds, blueComparisonLineIds, selectorLineIds));
|
|
14992
14999
|
const [isLoading, setIsLoading] = useState(true);
|
|
14993
15000
|
const [error, setError] = useState(null);
|
|
14994
15001
|
const lineIdRef = useRef(lineId);
|
|
@@ -15007,6 +15014,7 @@ var useDashboardMetrics = ({
|
|
|
15007
15014
|
const configuredLineIdsRef = useRef(configuredLineIds);
|
|
15008
15015
|
const userAccessibleLineIdsRef = useRef(userAccessibleLineIds);
|
|
15009
15016
|
const explicitLineIdsRef = useRef(lineIds);
|
|
15017
|
+
const selectorLineIdsRef = useRef(selectorLineIds);
|
|
15010
15018
|
useEffect(() => {
|
|
15011
15019
|
onLineMetricsUpdateRef.current = onLineMetricsUpdate;
|
|
15012
15020
|
}, [onLineMetricsUpdate]);
|
|
@@ -15025,6 +15033,9 @@ var useDashboardMetrics = ({
|
|
|
15025
15033
|
useEffect(() => {
|
|
15026
15034
|
explicitLineIdsRef.current = lineIds;
|
|
15027
15035
|
}, [lineIds]);
|
|
15036
|
+
useEffect(() => {
|
|
15037
|
+
selectorLineIdsRef.current = selectorLineIds;
|
|
15038
|
+
}, [selectorLineIds]);
|
|
15028
15039
|
const companySpecificMetricsTable = useMemo(
|
|
15029
15040
|
() => getCompanyMetricsTableName(entityConfig.companyId, "performance_metrics"),
|
|
15030
15041
|
[entityConfig.companyId]
|
|
@@ -15033,9 +15044,10 @@ var useDashboardMetrics = ({
|
|
|
15033
15044
|
() => buildMetricsScopeKey(
|
|
15034
15045
|
lineId,
|
|
15035
15046
|
isFactoryView ? targetFactoryLineIds : void 0,
|
|
15036
|
-
normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0
|
|
15047
|
+
normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0,
|
|
15048
|
+
normalizedSelectorLineIds.length ? normalizedSelectorLineIds : void 0
|
|
15037
15049
|
),
|
|
15038
|
-
[isFactoryView, lineId, targetFactoryLineIds, normalizedBlueComparisonLineIds]
|
|
15050
|
+
[isFactoryView, lineId, targetFactoryLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
|
|
15039
15051
|
);
|
|
15040
15052
|
useEffect(() => {
|
|
15041
15053
|
lineIdRef.current = lineId;
|
|
@@ -15067,13 +15079,15 @@ var useDashboardMetrics = ({
|
|
|
15067
15079
|
const targetLineIdsKey = targetLineIds.slice().sort().join(",");
|
|
15068
15080
|
const effectiveBlueComparisonLineIds = normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : targetLineIds;
|
|
15069
15081
|
const blueComparisonLineIdsKey = effectiveBlueComparisonLineIds.slice().sort().join(",");
|
|
15082
|
+
const selectorLineIdsKey = normalizedSelectorLineIds.slice().sort().join(",");
|
|
15070
15083
|
const usesShiftGroups = isFactory && shiftGroups.length > 0;
|
|
15071
15084
|
const singleShiftDetails = usesShiftGroups ? null : shiftConfig ? getCurrentShift(defaultTimezone, shiftConfig) : shiftGroups.length === 1 ? { date: shiftGroups[0].date, shiftId: shiftGroups[0].shiftId } : getCurrentShift(defaultTimezone, staticShiftConfig);
|
|
15072
|
-
const fetchKey = usesShiftGroups ? `factory|${companyId || "unknown"}|${shiftGroupsKey}|blue:${blueComparisonLineIdsKey}` : isFactory ? `factory|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|${targetLineIdsKey}|blue:${blueComparisonLineIdsKey}` : `${currentLineIdToUse}|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|blue:${blueComparisonLineIdsKey}`;
|
|
15085
|
+
const fetchKey = usesShiftGroups ? `factory|${companyId || "unknown"}|${shiftGroupsKey}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}` : isFactory ? `factory|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|${targetLineIdsKey}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}` : `${currentLineIdToUse}|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}`;
|
|
15073
15086
|
const responseScopeKey = buildMetricsScopeKey(
|
|
15074
15087
|
currentLineIdToUse,
|
|
15075
15088
|
isFactory ? targetLineIds : void 0,
|
|
15076
|
-
normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0
|
|
15089
|
+
normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0,
|
|
15090
|
+
normalizedSelectorLineIds.length ? normalizedSelectorLineIds : void 0
|
|
15077
15091
|
);
|
|
15078
15092
|
logDebug("[useDashboardMetrics] Fetch key details:", {
|
|
15079
15093
|
isFactory,
|
|
@@ -15105,6 +15119,7 @@ var useDashboardMetrics = ({
|
|
|
15105
15119
|
workspaceMetrics: [],
|
|
15106
15120
|
blueComparisonWorkspaceMetrics: [],
|
|
15107
15121
|
lineMetrics: [],
|
|
15122
|
+
selectorLineMetrics: [],
|
|
15108
15123
|
metadata: void 0,
|
|
15109
15124
|
efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND
|
|
15110
15125
|
});
|
|
@@ -15116,6 +15131,7 @@ var useDashboardMetrics = ({
|
|
|
15116
15131
|
let allWorkspaceMetrics = [];
|
|
15117
15132
|
let allBlueComparisonWorkspaceMetrics = [];
|
|
15118
15133
|
let allLineMetrics = [];
|
|
15134
|
+
let allSelectorLineMetrics = [];
|
|
15119
15135
|
let hasFlowBuffers = false;
|
|
15120
15136
|
let idleTimeVlmByLine = {};
|
|
15121
15137
|
let efficiencyLegend;
|
|
@@ -15125,7 +15141,8 @@ var useDashboardMetrics = ({
|
|
|
15125
15141
|
const buildMetricsEndpoint = (params) => {
|
|
15126
15142
|
const lineIdsParam = isFactory ? `line_ids=${params.groupLineIds.join(",")}` : `line_id=${params.groupLineIds[0]}`;
|
|
15127
15143
|
const blueComparisonParam = effectiveBlueComparisonLineIds.length ? `&blue_comparison_line_ids=${effectiveBlueComparisonLineIds.join(",")}` : "";
|
|
15128
|
-
|
|
15144
|
+
const selectorParam = normalizedSelectorLineIds.length ? `&selector_line_ids=${encodeURIComponent(normalizedSelectorLineIds.join(","))}` : "";
|
|
15145
|
+
return `/api/dashboard/metrics?${lineIdsParam}${blueComparisonParam}${selectorParam}&date=${params.date}&shift_id=${params.shiftId}&company_id=${companyId}${forceParam}${qaGreenStreakParams}`;
|
|
15129
15146
|
};
|
|
15130
15147
|
if (usesShiftGroups) {
|
|
15131
15148
|
logDebug("[useDashboardMetrics] Factory view shift groups fetch:", {
|
|
@@ -15181,6 +15198,9 @@ var useDashboardMetrics = ({
|
|
|
15181
15198
|
if (result.line_metrics) {
|
|
15182
15199
|
allLineMetrics.push(...result.line_metrics);
|
|
15183
15200
|
}
|
|
15201
|
+
if (result.selector_line_metrics) {
|
|
15202
|
+
allSelectorLineMetrics.push(...result.selector_line_metrics);
|
|
15203
|
+
}
|
|
15184
15204
|
});
|
|
15185
15205
|
if (allBlueComparisonWorkspaceMetrics.length === 0) {
|
|
15186
15206
|
allBlueComparisonWorkspaceMetrics = allWorkspaceMetrics;
|
|
@@ -15224,6 +15244,7 @@ var useDashboardMetrics = ({
|
|
|
15224
15244
|
allWorkspaceMetrics = backendData.workspace_metrics || [];
|
|
15225
15245
|
allBlueComparisonWorkspaceMetrics = backendData.blue_comparison_workspace_metrics || allWorkspaceMetrics;
|
|
15226
15246
|
allLineMetrics = backendData.line_metrics || [];
|
|
15247
|
+
allSelectorLineMetrics = backendData.selector_line_metrics || [];
|
|
15227
15248
|
hasFlowBuffers = Boolean(backendData?.metadata?.has_flow_buffers);
|
|
15228
15249
|
if (backendData?.metadata?.idle_time_vlm_by_line && typeof backendData.metadata.idle_time_vlm_by_line === "object") {
|
|
15229
15250
|
idleTimeVlmByLine = backendData.metadata.idle_time_vlm_by_line;
|
|
@@ -15255,6 +15276,7 @@ var useDashboardMetrics = ({
|
|
|
15255
15276
|
workspaceMetrics: transformedWorkspaceData,
|
|
15256
15277
|
blueComparisonWorkspaceMetrics: transformedBlueComparisonWorkspaceData.length ? transformedBlueComparisonWorkspaceData : transformedWorkspaceData,
|
|
15257
15278
|
lineMetrics: allLineMetrics || [],
|
|
15279
|
+
selectorLineMetrics: allSelectorLineMetrics || [],
|
|
15258
15280
|
metadata: { hasFlowBuffers, idleTimeVlmByLine },
|
|
15259
15281
|
efficiencyLegend: efficiencyLegend ?? DEFAULT_EFFICIENCY_LEGEND
|
|
15260
15282
|
};
|
|
@@ -15325,6 +15347,7 @@ var useDashboardMetrics = ({
|
|
|
15325
15347
|
configuredLineIds,
|
|
15326
15348
|
targetFactoryLineIds,
|
|
15327
15349
|
normalizedBlueComparisonLineIds,
|
|
15350
|
+
normalizedSelectorLineIds,
|
|
15328
15351
|
isFactoryView,
|
|
15329
15352
|
multiLineShiftConfigMap,
|
|
15330
15353
|
staticShiftConfig,
|
|
@@ -15441,7 +15464,8 @@ var useDashboardMetrics = ({
|
|
|
15441
15464
|
const isFactory = lineId === (entityConfig.factoryViewId || "factory");
|
|
15442
15465
|
if (isFactory && shiftGroups.length === 0) return null;
|
|
15443
15466
|
const shiftGroupsKeyPart = isFactory ? shiftGroups.map((g) => `${g.date}-${g.shiftId}-${g.lineIds.join("_")}`).join("|") : operationalShiftKey;
|
|
15444
|
-
|
|
15467
|
+
const selectorLineIdsKeyPart = (selectorLineIds || []).filter(Boolean).slice().sort().join(",");
|
|
15468
|
+
return `${lineId}|${entityConfig.companyId}|${shiftGroupsKeyPart}|selector:${selectorLineIdsKeyPart}`;
|
|
15445
15469
|
}, [
|
|
15446
15470
|
enabled,
|
|
15447
15471
|
supabase,
|
|
@@ -15451,7 +15475,8 @@ var useDashboardMetrics = ({
|
|
|
15451
15475
|
shiftLoading,
|
|
15452
15476
|
isTimezoneLoading,
|
|
15453
15477
|
shiftGroups,
|
|
15454
|
-
operationalShiftKey
|
|
15478
|
+
operationalShiftKey,
|
|
15479
|
+
selectorLineIds
|
|
15455
15480
|
]);
|
|
15456
15481
|
useEffect(() => {
|
|
15457
15482
|
const currentLineIdToUse = lineIdRef.current;
|
|
@@ -15488,7 +15513,7 @@ var useDashboardMetrics = ({
|
|
|
15488
15513
|
});
|
|
15489
15514
|
const targetFactoryLineIdsForSubscriptions = explicitLineIdsRef.current !== void 0 ? explicitLineIdsRef.current : currentUserAccessibleLineIds !== void 0 ? currentUserAccessibleLineIds : currentConfiguredLineIds;
|
|
15490
15515
|
const targetFactoryLineIdSet = new Set(
|
|
15491
|
-
|
|
15516
|
+
[...targetFactoryLineIdsForSubscriptions || [], ...selectorLineIdsRef.current || []].filter(Boolean)
|
|
15492
15517
|
);
|
|
15493
15518
|
currentShiftGroups.forEach((group, index) => {
|
|
15494
15519
|
const groupLineIds = group.lineIds.filter(
|
|
@@ -15658,7 +15683,10 @@ var useDashboardMetrics = ({
|
|
|
15658
15683
|
const currentShiftDetails = shiftConfig ? getCurrentShift(defaultTimezone, shiftConfig) : getCurrentShift(defaultTimezone, staticShiftConfig);
|
|
15659
15684
|
const operationalDateForSubscription = currentShiftDetails.date;
|
|
15660
15685
|
const targetLineIds = isFactory ? explicitLineIdsRef.current || currentUserAccessibleLineIds || currentConfiguredLineIds : [currentLineIdToUse];
|
|
15661
|
-
const filteredLineIds =
|
|
15686
|
+
const filteredLineIds = Array.from(/* @__PURE__ */ new Set([
|
|
15687
|
+
...targetLineIds,
|
|
15688
|
+
...selectorLineIdsRef.current || []
|
|
15689
|
+
])).filter((id3) => id3 && id3 !== factoryViewIdentifier);
|
|
15662
15690
|
if (filteredLineIds.length === 0) {
|
|
15663
15691
|
logDebug("[useDashboardMetrics] Realtime setup skipped: no line IDs after filtering", {
|
|
15664
15692
|
targetLineIds,
|
|
@@ -15765,11 +15793,12 @@ var useDashboardMetrics = ({
|
|
|
15765
15793
|
const isCurrentScopeResolved = metricsScopeKey === requestedScopeKey;
|
|
15766
15794
|
const hasLastGoodMetrics = metrics2.workspaceMetrics.length > 0 || metrics2.lineMetrics.length > 0;
|
|
15767
15795
|
const canReuseLastGoodMetrics = hasLastGoodMetrics && !isCurrentScopeResolved && (isLoading || !!error);
|
|
15768
|
-
const safeMetrics = isCurrentScopeResolved || canReuseLastGoodMetrics ? metrics2 : { workspaceMetrics: [], blueComparisonWorkspaceMetrics: [], lineMetrics: [], metadata: void 0, efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND };
|
|
15796
|
+
const safeMetrics = isCurrentScopeResolved || canReuseLastGoodMetrics ? metrics2 : { workspaceMetrics: [], blueComparisonWorkspaceMetrics: [], lineMetrics: [], selectorLineMetrics: [], metadata: void 0, efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND };
|
|
15769
15797
|
return {
|
|
15770
15798
|
workspaceMetrics: safeMetrics?.workspaceMetrics || [],
|
|
15771
15799
|
blueComparisonWorkspaceMetrics: safeMetrics?.blueComparisonWorkspaceMetrics || safeMetrics?.workspaceMetrics || [],
|
|
15772
15800
|
lineMetrics: safeMetrics?.lineMetrics || [],
|
|
15801
|
+
selectorLineMetrics: safeMetrics?.selectorLineMetrics || [],
|
|
15773
15802
|
efficiencyLegend: safeMetrics?.efficiencyLegend || DEFAULT_EFFICIENCY_LEGEND,
|
|
15774
15803
|
metadata: safeMetrics?.metadata,
|
|
15775
15804
|
isLoading: enabled ? isLoading || !isCurrentScopeResolved && !canReuseLastGoodMetrics : false,
|
|
@@ -20114,6 +20143,77 @@ var useWorkspaceHourSummary = () => {
|
|
|
20114
20143
|
reset
|
|
20115
20144
|
};
|
|
20116
20145
|
};
|
|
20146
|
+
function useCompanyWorkspaceHourAiSummaryEnabled(companyId) {
|
|
20147
|
+
const { user, loading } = useAuth();
|
|
20148
|
+
const supabase = useSupabase();
|
|
20149
|
+
const company = user?.company || user?.properties?.company;
|
|
20150
|
+
const authCompanyId = company?.id || (typeof user?.company_id === "string" ? user.company_id : void 0) || (typeof user?.properties?.company_id === "string" ? user.properties.company_id : void 0);
|
|
20151
|
+
const targetCompanyId = companyId || authCompanyId || null;
|
|
20152
|
+
const authExplicitValue = company?.features?.workspace_hour_ai_summary;
|
|
20153
|
+
const canUseAuthCompanyFlag = Boolean(
|
|
20154
|
+
targetCompanyId && authCompanyId && targetCompanyId === authCompanyId
|
|
20155
|
+
);
|
|
20156
|
+
const [remoteFlag, setRemoteFlag] = useState(null);
|
|
20157
|
+
useEffect(() => {
|
|
20158
|
+
if (loading || !targetCompanyId || canUseAuthCompanyFlag) {
|
|
20159
|
+
setRemoteFlag(null);
|
|
20160
|
+
return;
|
|
20161
|
+
}
|
|
20162
|
+
let cancelled = false;
|
|
20163
|
+
setRemoteFlag(null);
|
|
20164
|
+
fetchBackendJson(
|
|
20165
|
+
supabase,
|
|
20166
|
+
`/api/dashboard/company-features?company_id=${encodeURIComponent(targetCompanyId)}`,
|
|
20167
|
+
{
|
|
20168
|
+
timeoutMs: 1e4,
|
|
20169
|
+
retries: 0,
|
|
20170
|
+
sentry: {
|
|
20171
|
+
surface: "workspace_hour_ai_summary_feature_flag",
|
|
20172
|
+
route: "/api/dashboard/company-features"
|
|
20173
|
+
}
|
|
20174
|
+
}
|
|
20175
|
+
).then((response) => {
|
|
20176
|
+
if (cancelled) return;
|
|
20177
|
+
setRemoteFlag({
|
|
20178
|
+
companyId: targetCompanyId,
|
|
20179
|
+
enabled: response.features?.workspace_hour_ai_summary === true
|
|
20180
|
+
});
|
|
20181
|
+
}).catch(() => {
|
|
20182
|
+
if (cancelled) return;
|
|
20183
|
+
setRemoteFlag({
|
|
20184
|
+
companyId: targetCompanyId,
|
|
20185
|
+
enabled: false
|
|
20186
|
+
});
|
|
20187
|
+
});
|
|
20188
|
+
return () => {
|
|
20189
|
+
cancelled = true;
|
|
20190
|
+
};
|
|
20191
|
+
}, [canUseAuthCompanyFlag, loading, supabase, targetCompanyId]);
|
|
20192
|
+
return useMemo(() => {
|
|
20193
|
+
if (!targetCompanyId) {
|
|
20194
|
+
return {
|
|
20195
|
+
isWorkspaceHourAiSummaryEnabled: false,
|
|
20196
|
+
isResolved: !loading
|
|
20197
|
+
};
|
|
20198
|
+
}
|
|
20199
|
+
if (canUseAuthCompanyFlag) {
|
|
20200
|
+
return {
|
|
20201
|
+
isWorkspaceHourAiSummaryEnabled: authExplicitValue === true,
|
|
20202
|
+
isResolved: !loading || typeof authExplicitValue === "boolean"
|
|
20203
|
+
};
|
|
20204
|
+
}
|
|
20205
|
+
if (remoteFlag?.companyId === targetCompanyId) {
|
|
20206
|
+
return {
|
|
20207
|
+
isWorkspaceHourAiSummaryEnabled: remoteFlag.enabled,
|
|
20208
|
+
isResolved: true
|
|
20209
|
+
};
|
|
20210
|
+
}
|
|
20211
|
+
return {
|
|
20212
|
+
isWorkspaceHourAiSummaryEnabled: false,
|
|
20213
|
+
isResolved: false
|
|
20214
|
+
};
|
|
20215
|
+
}, [authExplicitValue, canUseAuthCompanyFlag, loading, remoteFlag, targetCompanyId]);
|
|
20216
|
+
}
|
|
20117
20217
|
var MAX_RETRIES = 10;
|
|
20118
20218
|
var RETRY_DELAY = 500;
|
|
20119
20219
|
function useNavigation(customNavigate) {
|
|
@@ -65581,6 +65681,7 @@ var createEmptyState = () => ({
|
|
|
65581
65681
|
workspaceMetrics: [],
|
|
65582
65682
|
blueComparisonWorkspaceMetrics: [],
|
|
65583
65683
|
lineMetrics: [],
|
|
65684
|
+
selectorLineMetrics: [],
|
|
65584
65685
|
kpiTrend: null,
|
|
65585
65686
|
activeBreaks: [],
|
|
65586
65687
|
videoStreamsByWorkspaceId: {},
|
|
@@ -65594,7 +65695,7 @@ var normalizeMetadata = (metadata) => ({
|
|
|
65594
65695
|
cacheStatus: metadata?.cache_status,
|
|
65595
65696
|
warnings: metadata?.warnings ?? []
|
|
65596
65697
|
});
|
|
65597
|
-
var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorkspaces) => {
|
|
65698
|
+
var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorkspaces, selectorLineMetrics) => {
|
|
65598
65699
|
const lookup = /* @__PURE__ */ new Set();
|
|
65599
65700
|
const addEntry = (lineId, date, shiftId) => {
|
|
65600
65701
|
if (!lineId || !date || shiftId === void 0 || shiftId === null) return;
|
|
@@ -65603,11 +65704,13 @@ var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorksp
|
|
|
65603
65704
|
resolvedScope.forEach((entry) => addEntry(entry.line_id, entry.date, entry.shift_id));
|
|
65604
65705
|
workspaces.forEach((workspace) => addEntry(workspace.line_id, workspace.date, workspace.shift_id));
|
|
65605
65706
|
blueComparisonWorkspaces.forEach((workspace) => addEntry(workspace.line_id, workspace.date, workspace.shift_id));
|
|
65707
|
+
selectorLineMetrics.forEach((lineMetric) => addEntry(lineMetric.line_id, lineMetric.date, lineMetric.shift_id));
|
|
65606
65708
|
return lookup;
|
|
65607
65709
|
};
|
|
65608
65710
|
var useLiveMonitorBootstrap = ({
|
|
65609
65711
|
lineIds,
|
|
65610
65712
|
blueComparisonLineIds,
|
|
65713
|
+
selectorLineIds,
|
|
65611
65714
|
companyId,
|
|
65612
65715
|
enabled = true,
|
|
65613
65716
|
appTimezone,
|
|
@@ -65623,6 +65726,7 @@ var useLiveMonitorBootstrap = ({
|
|
|
65623
65726
|
const effectiveTimezone = appTimezone || "Asia/Kolkata";
|
|
65624
65727
|
const rawLineIdsKey = (lineIds || []).filter(Boolean).join(",");
|
|
65625
65728
|
const rawBlueComparisonLineIdsKey = (blueComparisonLineIds || lineIds || []).filter(Boolean).join(",");
|
|
65729
|
+
const rawSelectorLineIdsKey = (selectorLineIds || []).filter(Boolean).join(",");
|
|
65626
65730
|
const normalizedLineIds = useMemo(
|
|
65627
65731
|
() => Array.from(new Set(rawLineIdsKey ? rawLineIdsKey.split(",") : [])),
|
|
65628
65732
|
[rawLineIdsKey]
|
|
@@ -65631,13 +65735,17 @@ var useLiveMonitorBootstrap = ({
|
|
|
65631
65735
|
() => Array.from(new Set(rawBlueComparisonLineIdsKey ? rawBlueComparisonLineIdsKey.split(",") : [])),
|
|
65632
65736
|
[rawBlueComparisonLineIdsKey]
|
|
65633
65737
|
);
|
|
65738
|
+
const normalizedSelectorLineIds = useMemo(
|
|
65739
|
+
() => Array.from(new Set(rawSelectorLineIdsKey ? rawSelectorLineIdsKey.split(",") : [])),
|
|
65740
|
+
[rawSelectorLineIdsKey]
|
|
65741
|
+
);
|
|
65634
65742
|
const realtimeLineIds = useMemo(
|
|
65635
|
-
() => Array.from(new Set([...normalizedLineIds, ...normalizedBlueComparisonLineIds].filter(Boolean))).sort(),
|
|
65636
|
-
[normalizedLineIds, normalizedBlueComparisonLineIds]
|
|
65743
|
+
() => Array.from(new Set([...normalizedLineIds, ...normalizedBlueComparisonLineIds, ...normalizedSelectorLineIds].filter(Boolean))).sort(),
|
|
65744
|
+
[normalizedLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
|
|
65637
65745
|
);
|
|
65638
65746
|
const requestKey = useMemo(
|
|
65639
|
-
() => `${normalizedLineIds.slice().sort().join(",")}|blue:${normalizedBlueComparisonLineIds.slice().sort().join(",")}`,
|
|
65640
|
-
[normalizedLineIds, normalizedBlueComparisonLineIds]
|
|
65747
|
+
() => `${normalizedLineIds.slice().sort().join(",")}|blue:${normalizedBlueComparisonLineIds.slice().sort().join(",")}|selector:${normalizedSelectorLineIds.slice().sort().join(",")}`,
|
|
65748
|
+
[normalizedLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
|
|
65641
65749
|
);
|
|
65642
65750
|
const realtimeLineIdsKey = useMemo(() => realtimeLineIds.join(","), [realtimeLineIds]);
|
|
65643
65751
|
const companySpecificMetricsTable = useMemo(
|
|
@@ -65669,6 +65777,9 @@ var useLiveMonitorBootstrap = ({
|
|
|
65669
65777
|
if (normalizedBlueComparisonLineIds.length) {
|
|
65670
65778
|
searchParams.set("blue_comparison_line_ids", normalizedBlueComparisonLineIds.join(","));
|
|
65671
65779
|
}
|
|
65780
|
+
if (normalizedSelectorLineIds.length) {
|
|
65781
|
+
searchParams.set("selector_line_ids", normalizedSelectorLineIds.join(","));
|
|
65782
|
+
}
|
|
65672
65783
|
if (force) {
|
|
65673
65784
|
searchParams.set("force_refresh", "true");
|
|
65674
65785
|
}
|
|
@@ -65702,6 +65813,7 @@ var useLiveMonitorBootstrap = ({
|
|
|
65702
65813
|
company_id: resolvedCompanyId,
|
|
65703
65814
|
line_ids: normalizedLineIds,
|
|
65704
65815
|
blue_comparison_line_ids: normalizedBlueComparisonLineIds,
|
|
65816
|
+
selector_line_ids: normalizedSelectorLineIds,
|
|
65705
65817
|
force_refresh: force,
|
|
65706
65818
|
pathname: typeof window !== "undefined" ? window.location.pathname : "unknown"
|
|
65707
65819
|
}
|
|
@@ -65719,6 +65831,7 @@ var useLiveMonitorBootstrap = ({
|
|
|
65719
65831
|
resolvedCompanyId,
|
|
65720
65832
|
normalizedLineIds,
|
|
65721
65833
|
normalizedBlueComparisonLineIds,
|
|
65834
|
+
normalizedSelectorLineIds,
|
|
65722
65835
|
requestKey
|
|
65723
65836
|
]);
|
|
65724
65837
|
const fetchBootstrapRef = useRef(fetchBootstrap);
|
|
@@ -65830,6 +65943,7 @@ var useLiveMonitorBootstrap = ({
|
|
|
65830
65943
|
workspaceMetrics,
|
|
65831
65944
|
blueComparisonWorkspaceMetrics: blueComparisonWorkspaceMetrics.length ? blueComparisonWorkspaceMetrics : workspaceMetrics,
|
|
65832
65945
|
lineMetrics: rawState.response.line_metrics || [],
|
|
65946
|
+
selectorLineMetrics: rawState.response.selector_line_metrics || [],
|
|
65833
65947
|
kpiTrend: rawState.response.kpi_trend || null,
|
|
65834
65948
|
activeBreaks,
|
|
65835
65949
|
videoStreamsByWorkspaceId,
|
|
@@ -65866,8 +65980,9 @@ var useLiveMonitorBootstrap = ({
|
|
|
65866
65980
|
const realtimeScopeKey = useMemo(() => Array.from(createResolvedScopeLookup(
|
|
65867
65981
|
state.resolvedScope,
|
|
65868
65982
|
state.workspaceMetrics,
|
|
65869
|
-
state.blueComparisonWorkspaceMetrics
|
|
65870
|
-
|
|
65983
|
+
state.blueComparisonWorkspaceMetrics,
|
|
65984
|
+
state.selectorLineMetrics
|
|
65985
|
+
)).sort().join("||"), [state.resolvedScope, state.workspaceMetrics, state.blueComparisonWorkspaceMetrics, state.selectorLineMetrics]);
|
|
65871
65986
|
useEffect(() => {
|
|
65872
65987
|
if (!enabled || !resolvedCompanyId || !realtimeLineIdsKey || !supabase) {
|
|
65873
65988
|
return void 0;
|
|
@@ -65973,6 +66088,7 @@ var useLiveMonitorBootstrap = ({
|
|
|
65973
66088
|
workspaceMetrics: state.workspaceMetrics,
|
|
65974
66089
|
blueComparisonWorkspaceMetrics: state.blueComparisonWorkspaceMetrics,
|
|
65975
66090
|
lineMetrics: state.lineMetrics,
|
|
66091
|
+
selectorLineMetrics: state.selectorLineMetrics,
|
|
65976
66092
|
kpiTrend: state.kpiTrend,
|
|
65977
66093
|
activeBreaks: state.activeBreaks,
|
|
65978
66094
|
videoStreamsByWorkspaceId: state.videoStreamsByWorkspaceId,
|
|
@@ -66487,6 +66603,7 @@ function HomeView({
|
|
|
66487
66603
|
workspaceMetrics: legacyWorkspaceMetrics,
|
|
66488
66604
|
blueComparisonWorkspaceMetrics: legacyMetricsBlueComparisonWorkspaceMetrics,
|
|
66489
66605
|
lineMetrics: legacyLineMetrics,
|
|
66606
|
+
selectorLineMetrics: legacySelectorLineMetrics = [],
|
|
66490
66607
|
efficiencyLegend: legacyEfficiencyLegend,
|
|
66491
66608
|
metadata: legacyMetricsMetadata,
|
|
66492
66609
|
isLoading: legacyMetricsLoading,
|
|
@@ -66497,6 +66614,7 @@ function HomeView({
|
|
|
66497
66614
|
lineId: metricsScopeLineId,
|
|
66498
66615
|
lineIds: selectedLineIds,
|
|
66499
66616
|
blueComparisonLineIds,
|
|
66617
|
+
selectorLineIds: visibleLineIds,
|
|
66500
66618
|
onLineMetricsUpdate: handleLineMetricsUpdate,
|
|
66501
66619
|
userAccessibleLineIds: visibleLineIds,
|
|
66502
66620
|
enabled: shouldEnableMetricsFetch && !isBootstrapMonitorMode
|
|
@@ -66552,6 +66670,7 @@ function HomeView({
|
|
|
66552
66670
|
const bootstrapMonitor = useLiveMonitorBootstrap({
|
|
66553
66671
|
lineIds: selectedLineIds,
|
|
66554
66672
|
blueComparisonLineIds,
|
|
66673
|
+
selectorLineIds: visibleLineIds,
|
|
66555
66674
|
companyId: userCompanyId,
|
|
66556
66675
|
enabled: shouldEnableMetricsFetch && !isLegacyMonitorMode,
|
|
66557
66676
|
appTimezone: timezone,
|
|
@@ -66562,12 +66681,32 @@ function HomeView({
|
|
|
66562
66681
|
const currentWorkspaceMetrics = isBootstrapMonitorMode ? bootstrapMonitor.workspaceMetrics : legacyWorkspaceMetrics;
|
|
66563
66682
|
const currentBlueComparisonWorkspaceMetrics = isBootstrapMonitorMode ? bootstrapMonitor.blueComparisonWorkspaceMetrics : legacyMetricsBlueComparisonWorkspaceMetrics;
|
|
66564
66683
|
const currentLineMetrics = isBootstrapMonitorMode ? bootstrapMonitor.lineMetrics : legacyLineMetrics;
|
|
66684
|
+
const currentSelectorLineMetrics = isBootstrapMonitorMode ? bootstrapMonitor.selectorLineMetrics : legacySelectorLineMetrics;
|
|
66565
66685
|
const currentEfficiencyLegend = isBootstrapMonitorMode ? bootstrapMonitor.efficiencyLegend : legacyEfficiencyLegend;
|
|
66566
66686
|
const currentMetricsMetadata = isBootstrapMonitorMode ? bootstrapMonitor.metadata : legacyMetricsMetadata;
|
|
66567
66687
|
const currentMetricsLoading = isBootstrapMonitorMode ? bootstrapMonitor.isLoading : legacyMetricsLoading;
|
|
66568
66688
|
const currentIsCurrentScopeResolved = isBootstrapMonitorMode ? bootstrapMonitor.isCurrentScopeResolved : legacyIsCurrentScopeResolved;
|
|
66569
66689
|
const currentMetricsError = isBootstrapMonitorMode ? bootstrapMonitor.error : legacyMetricsError;
|
|
66570
66690
|
const currentRefetchMetrics = isBootstrapMonitorMode ? bootstrapMonitor.refetch : refetchLegacyMetrics;
|
|
66691
|
+
const lineSelectorSignalStatusByLine = useMemo(() => {
|
|
66692
|
+
const statusByLine = /* @__PURE__ */ new Map();
|
|
66693
|
+
const legend = currentEfficiencyLegend || DEFAULT_EFFICIENCY_LEGEND;
|
|
66694
|
+
const addRows = (rows) => {
|
|
66695
|
+
(rows || []).forEach((row) => {
|
|
66696
|
+
const lineId = typeof row?.line_id === "string" ? row.line_id : "";
|
|
66697
|
+
if (!lineId || statusByLine.has(lineId)) {
|
|
66698
|
+
return;
|
|
66699
|
+
}
|
|
66700
|
+
const status = getKpiSignalStatus(row?.line_signal, legend);
|
|
66701
|
+
if (status) {
|
|
66702
|
+
statusByLine.set(lineId, status);
|
|
66703
|
+
}
|
|
66704
|
+
});
|
|
66705
|
+
};
|
|
66706
|
+
addRows(currentSelectorLineMetrics);
|
|
66707
|
+
addRows(currentLineMetrics);
|
|
66708
|
+
return statusByLine;
|
|
66709
|
+
}, [currentEfficiencyLegend, currentLineMetrics, currentSelectorLineMetrics]);
|
|
66571
66710
|
const metricsDisplayNames = useMemo(() => {
|
|
66572
66711
|
const nextDisplayNames = {};
|
|
66573
66712
|
currentWorkspaceMetrics.forEach((workspace) => {
|
|
@@ -67425,6 +67564,8 @@ function HomeView({
|
|
|
67425
67564
|
] }),
|
|
67426
67565
|
/* @__PURE__ */ jsx("div", { className: "max-h-56 space-y-0.5 overflow-y-auto pr-1", children: visibleLineIds.map((lineId) => {
|
|
67427
67566
|
const isChecked = pendingSelectedLineIds.includes(lineId);
|
|
67567
|
+
const signalStatus = lineSelectorSignalStatusByLine.get(lineId);
|
|
67568
|
+
const signalDotClass = signalStatus === "stable" ? "bg-green-500" : signalStatus === "warning" ? "bg-yellow-400" : signalStatus === "attention" ? "bg-red-500" : "";
|
|
67428
67569
|
return /* @__PURE__ */ jsxs(
|
|
67429
67570
|
"label",
|
|
67430
67571
|
{
|
|
@@ -67449,7 +67590,15 @@ function HomeView({
|
|
|
67449
67590
|
}
|
|
67450
67591
|
}
|
|
67451
67592
|
),
|
|
67452
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: mergedLineNames[lineId] || `Line ${lineId.substring(0, 4)}` })
|
|
67593
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: mergedLineNames[lineId] || `Line ${lineId.substring(0, 4)}` }),
|
|
67594
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-2.5 w-2.5 flex-shrink-0 items-center justify-center", children: signalStatus ? /* @__PURE__ */ jsx(
|
|
67595
|
+
"span",
|
|
67596
|
+
{
|
|
67597
|
+
"data-testid": `line-selector-signal-dot-${lineId}`,
|
|
67598
|
+
className: `h-2 w-2 rounded-full ${signalDotClass}`,
|
|
67599
|
+
"aria-hidden": "true"
|
|
67600
|
+
}
|
|
67601
|
+
) : null })
|
|
67453
67602
|
]
|
|
67454
67603
|
},
|
|
67455
67604
|
lineId
|
|
@@ -67478,6 +67627,7 @@ function HomeView({
|
|
|
67478
67627
|
mergedLineNames,
|
|
67479
67628
|
selectedLineIds,
|
|
67480
67629
|
pendingSelectedLineIds,
|
|
67630
|
+
lineSelectorSignalStatusByLine,
|
|
67481
67631
|
visibleLineIds,
|
|
67482
67632
|
updateSelectedLineIds,
|
|
67483
67633
|
isAllLinesSelection
|
|
@@ -80102,8 +80252,18 @@ var WorkspaceDetailView = ({
|
|
|
80102
80252
|
const monitoringMode = workspace?.monitoring_mode ?? "output";
|
|
80103
80253
|
const isUptimeMode = monitoringMode === "uptime";
|
|
80104
80254
|
const idleTimeVlmEnabled = isIdleTimeVlmEnabled(resolvedLineId);
|
|
80105
|
-
const showHourSummaryPanel = Boolean(selectedHour && !isUptimeMode);
|
|
80106
80255
|
const hourSummaryCompanyId = workspace?.company_id || dashboardConfig?.entityConfig?.companyId || null;
|
|
80256
|
+
const {
|
|
80257
|
+
isWorkspaceHourAiSummaryEnabled,
|
|
80258
|
+
isResolved: isWorkspaceHourAiSummaryResolved
|
|
80259
|
+
} = useCompanyWorkspaceHourAiSummaryEnabled(hourSummaryCompanyId);
|
|
80260
|
+
const showHourSummaryPanel = Boolean(selectedHour && !isUptimeMode && isWorkspaceHourAiSummaryEnabled);
|
|
80261
|
+
useEffect(() => {
|
|
80262
|
+
if (isWorkspaceHourAiSummaryResolved && !isWorkspaceHourAiSummaryEnabled) {
|
|
80263
|
+
setSelectedHour(null);
|
|
80264
|
+
setAiSummaryHour(null);
|
|
80265
|
+
}
|
|
80266
|
+
}, [isWorkspaceHourAiSummaryEnabled, isWorkspaceHourAiSummaryResolved]);
|
|
80107
80267
|
const hourSummaryDate = workspace?.date || date || calculatedOperationalDate || null;
|
|
80108
80268
|
const hourSummaryShiftId = workspace?.shift_id ?? parsedShiftId ?? null;
|
|
80109
80269
|
useEffect(() => {
|
|
@@ -81022,8 +81182,8 @@ var WorkspaceDetailView = ({
|
|
|
81022
81182
|
showIdleTime: showChartIdleTime,
|
|
81023
81183
|
idleTimeData: hourlyIdleMinutes,
|
|
81024
81184
|
idleTimeSlots: hourlyIdleSlots,
|
|
81025
|
-
selectedHourIndex: selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
|
|
81026
|
-
onHourClick: handleCycleHourSelect
|
|
81185
|
+
selectedHourIndex: isWorkspaceHourAiSummaryEnabled && selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
|
|
81186
|
+
onHourClick: isWorkspaceHourAiSummaryEnabled ? handleCycleHourSelect : void 0
|
|
81027
81187
|
}
|
|
81028
81188
|
) : null : /* @__PURE__ */ jsx(
|
|
81029
81189
|
HourlyOutputChart2,
|
|
@@ -81042,10 +81202,10 @@ var WorkspaceDetailView = ({
|
|
|
81042
81202
|
timezone: effectiveCycleTimeTimezone,
|
|
81043
81203
|
skuSegments: isSkuAware ? skuSegments : void 0,
|
|
81044
81204
|
activeSkuId,
|
|
81045
|
-
selectedHourIndex: selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null,
|
|
81046
|
-
onHourClick: handleOutputHourSelect,
|
|
81205
|
+
selectedHourIndex: isWorkspaceHourAiSummaryEnabled ? selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null : null,
|
|
81206
|
+
onHourClick: isWorkspaceHourAiSummaryEnabled ? handleOutputHourSelect : void 0,
|
|
81047
81207
|
onWatchClipsClick: handleWatchClipsFromChart,
|
|
81048
|
-
onAiSummaryClick: handleAiSummaryClick
|
|
81208
|
+
onAiSummaryClick: isWorkspaceHourAiSummaryEnabled ? handleAiSummaryClick : void 0
|
|
81049
81209
|
}
|
|
81050
81210
|
)
|
|
81051
81211
|
}
|
|
@@ -81195,8 +81355,8 @@ var WorkspaceDetailView = ({
|
|
|
81195
81355
|
showIdleTime: showChartIdleTime,
|
|
81196
81356
|
idleTimeData: hourlyIdleMinutes,
|
|
81197
81357
|
idleTimeSlots: hourlyIdleSlots,
|
|
81198
|
-
selectedHourIndex: selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
|
|
81199
|
-
onHourClick: handleCycleHourSelect
|
|
81358
|
+
selectedHourIndex: isWorkspaceHourAiSummaryEnabled && selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
|
|
81359
|
+
onHourClick: isWorkspaceHourAiSummaryEnabled ? handleCycleHourSelect : void 0
|
|
81200
81360
|
}
|
|
81201
81361
|
) : null : /* @__PURE__ */ jsx(
|
|
81202
81362
|
HourlyOutputChart2,
|
|
@@ -81215,10 +81375,10 @@ var WorkspaceDetailView = ({
|
|
|
81215
81375
|
timezone: effectiveCycleTimeTimezone,
|
|
81216
81376
|
skuSegments: isSkuAware ? skuSegments : void 0,
|
|
81217
81377
|
activeSkuId,
|
|
81218
|
-
selectedHourIndex: selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null,
|
|
81219
|
-
onHourClick: handleOutputHourSelect,
|
|
81378
|
+
selectedHourIndex: isWorkspaceHourAiSummaryEnabled ? selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null : null,
|
|
81379
|
+
onHourClick: isWorkspaceHourAiSummaryEnabled ? handleOutputHourSelect : void 0,
|
|
81220
81380
|
onWatchClipsClick: handleWatchClipsFromChart,
|
|
81221
|
-
onAiSummaryClick: handleAiSummaryClick
|
|
81381
|
+
onAiSummaryClick: isWorkspaceHourAiSummaryEnabled ? handleAiSummaryClick : void 0
|
|
81222
81382
|
}
|
|
81223
81383
|
) })
|
|
81224
81384
|
]
|
|
@@ -81372,7 +81532,7 @@ var WorkspaceDetailView = ({
|
|
|
81372
81532
|
) })
|
|
81373
81533
|
] })
|
|
81374
81534
|
] }),
|
|
81375
|
-
aiSummaryHour && /* @__PURE__ */ jsx(
|
|
81535
|
+
isWorkspaceHourAiSummaryEnabled && aiSummaryHour && /* @__PURE__ */ jsx(
|
|
81376
81536
|
"div",
|
|
81377
81537
|
{
|
|
81378
81538
|
className: "fixed inset-0 bg-slate-900/40 backdrop-blur-sm flex items-center justify-center p-4 z-[9999]",
|
|
@@ -90711,4 +90871,4 @@ var RecentFlowSnapshotGrid = ({
|
|
|
90711
90871
|
);
|
|
90712
90872
|
};
|
|
90713
90873
|
|
|
90714
|
-
export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPI_SIGNAL_LABELS, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LineOvertakeNotificationManager, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProductionPlanApiError, ProductionPlanView_default as ProductionPlanView, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, aggregateLineSignals, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLegacyLineOvertakeEventKey, buildLineLeaderboardRows, buildLineOvertakeEventKey, buildLineSkuBreakdown, buildShiftGroupsKey, canPermissionEditProductionPlan, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleEditProductionPlan, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, detectLineOvertakeEvents, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getKpiSignalLabel, getKpiSignalStatus, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, productionPlanService, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceHourSummary, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
|
|
90874
|
+
export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPI_SIGNAL_LABELS, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LineOvertakeNotificationManager, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProductionPlanApiError, ProductionPlanView_default as ProductionPlanView, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, aggregateLineSignals, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLegacyLineOvertakeEventKey, buildLineLeaderboardRows, buildLineOvertakeEventKey, buildLineSkuBreakdown, buildShiftGroupsKey, canPermissionEditProductionPlan, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleEditProductionPlan, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, detectLineOvertakeEvents, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getKpiSignalLabel, getKpiSignalStatus, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, productionPlanService, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useCompanyWorkspaceHourAiSummaryEnabled, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceHourSummary, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
|