feat: improve ai workflow runtime observability
This commit is contained in:
@@ -71,6 +71,43 @@ function createLightAiMenuRoute(
|
||||
return route as RouteRecordStringComponent;
|
||||
}
|
||||
|
||||
const PREFETCH_LIGHT_PAGE_KEYS = [
|
||||
'../views/_core/agent-chat/index.vue',
|
||||
'../views/_core/menu/index.vue',
|
||||
'../views/_core/page-render/index.vue',
|
||||
'../views/_core/role/index.vue',
|
||||
'../views/_core/user/index.vue',
|
||||
'../views/ai-platform/agent/index.vue',
|
||||
'../views/ai-platform/model/index.vue',
|
||||
'../views/ai-platform/workflow-runs/index.vue',
|
||||
'../views/ai-platform/workflow/index.vue',
|
||||
];
|
||||
|
||||
let lightPagesPrefetched = false;
|
||||
|
||||
function scheduleIdleTask(callback: () => void) {
|
||||
if (typeof window === 'undefined') return;
|
||||
const requestIdle = (window as any).requestIdleCallback;
|
||||
if (typeof requestIdle === 'function') {
|
||||
requestIdle(callback, { timeout: 3000 });
|
||||
return;
|
||||
}
|
||||
window.setTimeout(callback, 1200);
|
||||
}
|
||||
|
||||
function prefetchLightPages(pageMap: ComponentRecordType) {
|
||||
if (lightPagesPrefetched) return;
|
||||
lightPagesPrefetched = true;
|
||||
scheduleIdleTask(() => {
|
||||
for (const key of PREFETCH_LIGHT_PAGE_KEYS) {
|
||||
const loader = pageMap[key];
|
||||
if (typeof loader === 'function') {
|
||||
void loader().catch(() => undefined);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const LIGHT_AI_PLATFORM_MENU_ROUTES = [
|
||||
createLightAiMenuRoute({
|
||||
component: '/_core/agent-chat/index',
|
||||
@@ -220,7 +257,7 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) {
|
||||
};
|
||||
const routePageMap = normalizePageMap(pageMap);
|
||||
|
||||
return await generateAccessible(preferences.app.accessMode, {
|
||||
const accessible = await generateAccessible(preferences.app.accessMode, {
|
||||
...options,
|
||||
fetchMenuListAsync: async () => {
|
||||
const appContextStore = useAppContextStore();
|
||||
@@ -235,6 +272,8 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) {
|
||||
layoutMap,
|
||||
pageMap,
|
||||
});
|
||||
prefetchLightPages(pageMap);
|
||||
return accessible;
|
||||
}
|
||||
|
||||
export { generateAccess };
|
||||
|
||||
Reference in New Issue
Block a user