meldestelle/docs/migration-plan-de.md
stefan 65a0084f91 docs: Migrationsplan für Projekt-Restrukturierung hinzugefügt
- Detaillierter Plan zur Migration von alter zu neuer Modulstruktur
- Umfasst Überführung von shared-kernel zu core-Modulen
- Definiert Migration von Fachdomänen zu bounded contexts:
  * master-data → masterdata-Module
  * member-management → members-Module
  * horse-registry → horses-Module
  * event-management → events-Module
- Beschreibt Verlagerung von api-gateway zu infrastructure/gateway
- Strukturiert nach Domain-driven Design Prinzipien
- Berücksichtigt Clean Architecture Layering (domain, application, infrastructure, api)
2025-07-25 13:05:42 +02:00

13 KiB

Migrationsplan für die Meldestelle-Projekt-Restrukturierung

Dieses Dokument beschreibt den Plan zur Migration von Code aus der alten Modulstruktur in die neue Modulstruktur, wie in den Projekt-Restrukturierungsanforderungen beschrieben.

1. Shared-Kernel zu Core-Modulen

Core-Domain

  • shared-kernel/src/commonMain/kotlin/at/mocode/dto/base/BaseDto.ktcore/core-domain/src/main/kotlin/at/mocode/core/domain/model/
  • shared-kernel/src/commonMain/kotlin/at/mocode/enums/Enums.ktcore/core-domain/src/main/kotlin/at/mocode/core/domain/model/

Core-Utils

  • shared-kernel/src/commonMain/kotlin/at/mocode/serializers/Serialization.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/serialization/
  • shared-kernel/src/commonMain/kotlin/at/mocode/validation/ApiValidationUtils.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/validation/
  • shared-kernel/src/commonMain/kotlin/at/mocode/validation/ValidationResult.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/validation/
  • shared-kernel/src/commonMain/kotlin/at/mocode/validation/ValidationUtils.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/validation/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/config/AppConfig.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/config/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/config/AppEnvironment.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/config/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseConfig.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/database/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseFactory.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/database/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseMigrator.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/database/
  • shared-kernel/src/jvmMain/kotlin/at/mocode/shared/discovery/ServiceRegistration.ktcore/core-utils/src/main/kotlin/at/mocode/core/utils/discovery/

Tests

  • shared-kernel/src/jvmTest/kotlin/at/mocode/shared/database/test/SimpleDatabaseTest.ktcore/core-utils/src/test/kotlin/at/mocode/core/utils/database/
  • shared-kernel/src/jvmTest/kotlin/at/mocode/validation/test/ValidationTest.ktcore/core-utils/src/test/kotlin/at/mocode/core/utils/validation/

2. Master-Data zu Masterdata-Modulen

Masterdata-Domain

  • master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/AltersklasseDefinition.ktmasterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/
  • master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/BundeslandDefinition.ktmasterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/
  • master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/LandDefinition.ktmasterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/
  • master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/Platz.ktmasterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/
  • master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/repository/LandRepository.ktmasterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/repository/

Masterdata-Application

  • master-data/src/commonMain/kotlin/at/mocode/masterdata/application/usecase/CreateCountryUseCase.ktmasterdata/masterdata-application/src/main/kotlin/at/mocode/masterdata/application/usecase/
  • master-data/src/commonMain/kotlin/at/mocode/masterdata/application/usecase/GetCountryUseCase.ktmasterdata/masterdata-application/src/main/kotlin/at/mocode/masterdata/application/usecase/

Masterdata-Infrastructure

  • master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/repository/LandRepositoryImpl.ktmasterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/
  • master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/repository/LandTable.ktmasterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/
  • master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/table/LandTable.ktmasterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/

Masterdata-API

  • master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/api/CountryController.ktmasterdata/masterdata-api/src/main/kotlin/at/mocode/masterdata/api/rest/

Client UI

  • master-data/src/jsMain/kotlin/at/mocode/masterdata/ui/components/StammdatenListe.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/components/masterdata/

3. Member-Management zu Members-Modulen

Members-Domain

  • member-management/src/commonMain/kotlin/at/mocode/members/domain/model/*.ktmembers/members-domain/src/main/kotlin/at/mocode/members/domain/model/
  • member-management/src/commonMain/kotlin/at/mocode/members/domain/repository/*.ktmembers/members-domain/src/main/kotlin/at/mocode/members/domain/repository/
  • member-management/src/commonMain/kotlin/at/mocode/members/domain/service/*.ktmembers/members-domain/src/main/kotlin/at/mocode/members/domain/service/
  • member-management/src/jvmMain/kotlin/at/mocode/members/domain/service/*.ktmembers/members-domain/src/main/kotlin/at/mocode/members/domain/service/

Members-Application

  • member-management/src/commonMain/kotlin/at/mocode/members/application/usecase/*.ktmembers/members-application/src/main/kotlin/at/mocode/members/application/usecase/

Members-Infrastructure

  • member-management/src/jvmMain/kotlin/at/mocode/members/infrastructure/repository/*.ktmembers/members-infrastructure/src/main/kotlin/at/mocode/members/infrastructure/persistence/
  • member-management/src/jvmMain/kotlin/at/mocode/members/infrastructure/table/*.ktmembers/members-infrastructure/src/main/kotlin/at/mocode/members/infrastructure/persistence/

Client UI

  • member-management/src/jsMain/kotlin/at/mocode/members/ui/components/*.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/components/members/

4. Horse-Registry zu Horses-Modulen

Horses-Domain

  • horse-registry/src/commonMain/kotlin/at/mocode/horses/domain/model/DomPferd.kthorses/horses-domain/src/main/kotlin/at/mocode/horses/domain/model/
  • horse-registry/src/commonMain/kotlin/at/mocode/horses/domain/repository/HorseRepository.kthorses/horses-domain/src/main/kotlin/at/mocode/horses/domain/repository/

Horses-Application

  • horse-registry/src/commonMain/kotlin/at/mocode/horses/application/usecase/*.kthorses/horses-application/src/main/kotlin/at/mocode/horses/application/usecase/

Horses-Infrastructure

  • horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/repository/HorseRepositoryImpl.kthorses/horses-infrastructure/src/main/kotlin/at/mocode/horses/infrastructure/persistence/
  • horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/repository/HorseTable.kthorses/horses-infrastructure/src/main/kotlin/at/mocode/horses/infrastructure/persistence/

Horses-API

  • horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/api/HorseController.kthorses/horses-api/src/main/kotlin/at/mocode/horses/api/rest/

Client UI

  • horse-registry/src/jsMain/kotlin/at/mocode/horses/ui/components/PferdeListe.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/components/horses/

5. Event-Management zu Events-Modulen

Events-Domain

  • event-management/src/commonMain/kotlin/at/mocode/events/domain/model/Veranstaltung.ktevents/events-domain/src/main/kotlin/at/mocode/events/domain/model/
  • event-management/src/commonMain/kotlin/at/mocode/events/domain/repository/VeranstaltungRepository.ktevents/events-domain/src/main/kotlin/at/mocode/events/domain/repository/
  • event-management/src/commonMain/kotlin/at/mocode/events/EventManagement.ktevents/events-domain/src/main/kotlin/at/mocode/events/

Events-Application

  • event-management/src/commonMain/kotlin/at/mocode/events/application/usecase/*.ktevents/events-application/src/main/kotlin/at/mocode/events/application/usecase/

Events-Infrastructure

  • event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/repository/VeranstaltungRepositoryImpl.ktevents/events-infrastructure/src/main/kotlin/at/mocode/events/infrastructure/persistence/
  • event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/repository/VeranstaltungTable.ktevents/events-infrastructure/src/main/kotlin/at/mocode/events/infrastructure/persistence/

Events-API

  • event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/api/VeranstaltungController.ktevents/events-api/src/main/kotlin/at/mocode/events/api/rest/

Client UI

  • event-management/src/jsMain/kotlin/at/mocode/events/ui/components/VeranstaltungsListe.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/components/events/
  • event-management/src/jsMain/kotlin/at/mocode/events/ui/utils/EventComponent.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/components/events/

6. API-Gateway zu Infrastructure/Gateway

Infrastructure/Gateway

  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/Application.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/auth/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/auth/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/config/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/config/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/discovery/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/discovery/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/migrations/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/migrations/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/plugins/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/plugins/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/routing/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/routing/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/validation/*.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/validation/
  • api-gateway/src/jvmMain/kotlin/at/mocode/gateway/module.ktinfrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/
  • api-gateway/src/jvmMain/resources/openapi/documentation.yamlinfrastructure/gateway/src/main/resources/openapi/
  • api-gateway/src/jvmMain/resources/static/docs/*infrastructure/gateway/src/main/resources/static/docs/
  • api-gateway/src/test/kotlin/at/mocode/gateway/ApiIntegrationTest.ktinfrastructure/gateway/src/test/kotlin/at/mocode/infrastructure/gateway/

7. ComposeApp zu Client-Modulen

Client/Common-UI

  • composeApp/src/commonMain/kotlin/at/mocode/ui/theme/Theme.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/theme/
  • composeApp/src/commonMain/kotlin/at/mocode/di/AppDependencies.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/di/
  • composeApp/src/commonMain/kotlin/App.ktclient/common-ui/src/main/kotlin/at/mocode/client/common/

Client/Web-App

  • composeApp/src/commonMain/kotlin/at/mocode/ui/screens/*.ktclient/web-app/src/main/kotlin/at/mocode/client/web/screens/
  • composeApp/src/commonMain/kotlin/at/mocode/ui/viewmodel/*.ktclient/web-app/src/main/kotlin/at/mocode/client/web/viewmodel/
  • composeApp/src/jsMain/kotlin/main.ktclient/web-app/src/main/kotlin/at/mocode/client/web/
  • composeApp/src/commonTest/kotlin/at/mocode/ui/viewmodel/*.ktclient/web-app/src/test/kotlin/at/mocode/client/web/viewmodel/

Client/Desktop-App

  • composeApp/src/desktopMain/kotlin/main.ktclient/desktop-app/src/main/kotlin/at/mocode/client/desktop/

Migrationsprozess

Für jede zu migrierende Datei:

  1. Zielverzeichnis erstellen, falls es nicht existiert
  2. Datei an den Zielort kopieren
  3. Paket-Deklaration in der Datei entsprechend der neuen Paketstruktur aktualisieren
  4. Imports entsprechend der neuen Paketstruktur aktualisieren
  5. Alle Referenzen zu alten Modulnamen im Code aktualisieren

Verifikation

Nach der Migration:

  1. Build ausführen, um sicherzustellen, dass alle Module korrekt kompilieren
  2. Tests ausführen, um die Funktionalität zu verifizieren
  3. Verbleibende Migrationsaufgaben dokumentieren

Letzte Aktualisierung: 25. Juli 2025