Files
leocrm/PROGRESS.md
T
Agent Zero b15a62bec6 Phase 1A: Remove company routes/services/models/schemas, unify to Contact
- Removed: app/routes/companies.py, app/services/company_service.py, app/models/company.py, app/schemas/company.py
- Updated: main.py, routes/__init__.py, models/__init__.py (removed company imports)
- Updated: action_mapper.py (company intents → contact intents, /api/v1/companies → /api/v1/contacts)
- Updated: workflows/engine.py (company.created → contact.created)
- Updated: worker.py (removed index_company)
- Updated: roles.py, permission_registry.py, permissions.py, deps.py (companies: → contacts:)
- Updated: permission_registry.py CORE_FIELD_DEFINITIONS (old field names → unified contact fields)
- Updated: address model/schema/service (entity_type company → contact only)
- Updated: ai_copilot_service.py (_exec_companies removed, _exec_contacts extended)
- Updated: ai_proactive services/jobs/context_tools (Company → Contact, company_contacts → contact_persons)
- Updated: unified_search jobs.py (removed index_company), query_understanding.py
- Updated: calendar/models.py, addresses.py docstrings
- Updated: conftest.py (Company → Contact, removed companies/company_contacts from TRUNCATE)
- Updated: test_unified_search.py (index_company → index_contact)
2026-07-23 17:29:53 +02:00

7.7 KiB

LeoCRM — Umbau Progress

Plan: MASTER-PLAN.md Start: 2026-07-23


Phase 0: Vorbereitung & Cleanup

Task Status Datum Notiz
0.1 done 2026-07-23 codebase-vs-requirements.md neu geschrieben, security-review-phase2.md Resolution Summary, architecture.md Implementation Status, MASTER-PLAN.md + PROGRESS.md erstellt
0.2 done 2026-07-23 lucide-react installieren + Icons migrieren
0.3 done 2026-07-23 date-fns installieren + Datum-Formatierung
0.4 done 2026-07-23 hooks.ts aufteilen — 1298 Zeilen → 12 Module + Re-Export-Hub
0.5 done 2026-07-23 calendarStore.ts nach store/ verschoben, stores/ entfernt
0.6 done 2026-07-23 frontend-gap-analysis.md gespeichert (176 Zeilen)
0.7 done 2026-07-23 UI-Design-Richtlinien erstellt (docs/ui-design-guidelines.md, 535 Zeilen)
0.8 done 2026-07-23 Theme-Customization Backend: 4 Felder (primary_color, accent_color, font_family, border_radius) zu model/schema/service, Migration 0023
0.9 done 2026-07-23 Theme-Customization Frontend: SettingsTheme.tsx, themeStore.ts, Route + Nav, i18n keys, Live-Preview, Dark-Mode-Toggle
0.10 done 2026-07-23 RBAC-Audit: 4 Plugins (calendar, dms, entity_links, tags) mit Permissions versehen, 53 Routes mit require_permission abgesichert
0.11 done 2026-07-23 LiteLLM-Cleanup: llm_client.py von httpx auf litellm.acompletion migriert, AI_PROVIDER env var, System-Prompt companies→contacts
0.12 done 2026-07-23 KI-Agent-Framework: docs/plugin-development-guide.md (348 Zeilen), agent_capabilities Feld im PluginManifest
0.13 done 2026-07-23 Heartbeat konfigurierbar: ProactiveSettings um heartbeat_enabled/interval/target_room erweitert, Migration 0024, Schema+Service+Routes, Frontend-UI, Jobs.py nutzt Settings
0.14 done 2026-07-23 Unified Search Field-Level RBAC: resolve_permissions + filter_fields_by_permission in search route, entity-to-module mapping
0.15 done 2026-07-23 Undo/History-System: EntityHistory model+service+routes, Migration 0025, contact_service Integration, HistoryViewer Komponente, ContactDetail Integration, i18n
0.16 done 2026-07-23 Storage Backend: app/core/storage.py (LocalStorage + S3Storage), DMS + Attachments + Mail auf Storage Backend umgestellt, minio zu requirements, S3 env vars
0.17 done 2026-07-23 Import/Export: unified Contact Fields (firstname, surname, email_1, phone_1, mobilephone, function), Company-Import als Contact type=company, Export mit unified Fields, Backward-compat für alte CSV-Spalten
0.18 done 2026-07-23 .gitignore: webui→frontend, python-jose entfernt, pyproject.toml Python 3.12, .env aus Git entfernt, dump.rdb+test.txt gelöscht, JWT-Vars aus .env.docker.example entfernt
0.19 done 2026-07-23 Mail-Salt Security-Fix: per-account random salt (generate_salt), encrypt/decrypt mit salt_b64, backward-compat mit Legacy-Salt, Migration 0026
0.20 done 2026-07-23 AGPL ersetzt: PyMuPDF→pypdf (BSD), OnlyOffice→Collabora (LGPL/MPL), requirements.txt, LICENSE (MIT), THIRD_PARTY_LICENSES.md

Phase 1B: Backend Plugins — entity_type='company' → 'contact'

Task Status Datum Notiz
1.9 done 2026-07-23 entity_links Plugin: entity_type pattern ^(company
1.10 done 2026-07-23 unified_search Plugin: CompanySearchProvider → ContactSearchProvider, index_company → index_contact, events company.created/updated → contact.created/updated, search_engine mapping aktualisiert
1.11 done 2026-07-23 calendar Plugin: entity_type pattern ^(company
1.12 done 2026-07-23 tags Plugin: entity_type pattern ^(company
1.13 done 2026-07-23 mail Plugin: company_id → contact_id in model, schemas, routes, services
1.14 done 2026-07-23 test_sample Plugin: company.created → contact.created
1.15 done 2026-07-23 Event Names Unify: Alle company.created/updated/deleted → contact.created/updated/deleted
1.16 done 2026-07-23 DB Migration 0027: entity_type 'company' → 'contact' in entity_links, tag_assignments, calendar_entry_links, addresses; mails company_id → contact_id
1.17 done 2026-07-23 Backend Tests Update: test_companies.py, test_unified_search.py, test_entity_links.py, test_calendar.py, test_tags.py, test_ai_proactive.py, test_tenant.py — entity_type='company' → 'contact'
1.18 done 2026-07-23 Permission-Registry-Cleanup: companies:read/write/delete aus CORE_PERMISSIONS entfernt (bereits in 1A)
1.19 done 2026-07-23 Addresses entity_type='company' → 'contact' in address_service.py (bereits in 1A)
1.20 done 2026-07-23 conftest.py Update: Company → Contact, CompanyContact → ContactPerson, TRUNCATE ohne companies/company_contacts

Phase 1B Gesamt: Complete


Phase 1C: Frontend — Unified Contact UI

Task Status Datum Notiz
1.18 done 2026-07-23 Contact-Detail-Route /contacts/:id mit React.lazy
1.19 done 2026-07-23 ContactList Type-Filter Toggle (Alle/Firmen/Personen)
1.20 done 2026-07-23 ContactDetail ContactPerson-Verwaltung (bereits vorhanden)
1.21 done 2026-07-23 ContactEditModal für beide Types (bereits vorhanden)
1.22 done 2026-07-23 Company-Hooks aus hooks.ts entfernt
1.23 done 2026-07-23 Frontend Type-Definitions aktualisiert (calendar, tags, search, mail, types)
1.24 done 2026-07-23 Dashboard.tsx aktualisiert (keine Änderung nötig)
1.25 done 2026-07-23 GlobalSearchResults.tsx aktualisiert
1.26 done 2026-07-23 ContactFolderTree in ContactList integriert (bereits vorhanden)
1.27 done 2026-07-23 React Hook Form + Zod in ContactEditModal
1.28 done 2026-07-23 Frontend-Tests aktualisiert, tsc --noEmit OK (nur pre-existing Dms-Fehler)

Phase 1C Gesamt: Complete


Phase 1-7: Noch nicht gestartet

Siehe MASTER-PLAN.md für alle Tasks.

Phase 2: Code-Splitting & Virtual Scrolling

Task Status Datum Notiz
2.1 done 2026-07-23 React.lazy + Suspense für 25 Pages, PageLoader Komponente
2.2 done 2026-07-23 @tanstack/react-virtual installiert
2.3 done 2026-07-23 DataGrid Virtual Scrolling (useVirtualizer, 53px rows, 10 overscan, auto-skip <50)
2.4 done 2026-07-23 MailList Virtual Scrolling (80px rows, 8 overscan, auto-skip <50)
2.5 done 2026-07-23 ContactList Virtual Scrolling (list/table/cards, dynamic row estimate)
2.6 done 2026-07-23 FileExplorer + FileGrid virtualisiert, AuditLog via DataGrid
2.7 done 2026-07-23 Manual chunks: react-vendor, tanstack, ui, i18n. Vite build OK (3212 modules, ~9s)

Phase 2 Gesamt: Complete (Commit a8331fb)