perf: Fix all 7 code analysis issues

HIGH (Performance):
- Replace 8 sync file operations with aiofiles in async context (storage, mail,
  report_generator, dms_bridge, ai_assistant)
- Frontend bundle splitting: manualChunks for react-vendor, ui-components, tanstack,
  markdown, icons, utils, i18n (ui chunk 936K → ~19K)

MEDIUM (Architecture):
- Worker circular deps: Replace direct plugin imports with job_registry.py pattern
  (register_job/get_all_jobs, importlib-based lazy loading)
- App-wide ErrorBoundary: New ErrorBoundary.tsx component, wrapped in AppShell
  and all standalone routes

LOW (Code Quality):
- N+1 query fix: selectinload(Contact.contact_persons) in list_contacts()
- O(n²) dedup fix: SQL GROUP BY for email/phone duplicates, Dict-based name grouping
- Response format standardization: 7 routes converted from plain arrays to
  {items: [...], total: N} format
This commit is contained in:
Agent Zero
2026-07-25 09:19:32 +02:00
parent 224a71ba56
commit aaa7406929
26 changed files with 436 additions and 225 deletions
+7 -1
View File
@@ -85,9 +85,15 @@ export default defineConfig({
if (id.includes('react-dom')) return 'react-vendor';
if (id.includes('/react/') || id.includes('\\react\\')) return 'react-vendor';
if (id.includes('@tanstack')) return 'tanstack';
if (id.includes('lucide-react') || id.includes('date-fns') || id.includes('clsx')) return 'ui';
if (id.includes('lucide-react')) return 'icons';
if (id.includes('react-markdown') || id.includes('remark-gfm')) return 'markdown';
if (id.includes('date-fns') || id.includes('clsx') || id.includes('class-variance-authority') || id.includes('tailwind-merge') || id.includes('zustand') || id.includes('immer')) return 'utils';
if (id.includes('i18next') || id.includes('react-i18next')) return 'i18n';
}
// Split @/components/ui into its own chunk
if (id.includes('/src/components/ui/')) {
return 'ui-components';
}
},
},
},