Intern:Hauptseite/UVdesk: Unterschied zwischen den Versionen

Aus ArtisanCommerce Dokumentation
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 8: Zeile 8:
=== Der Tech-Stack ===
=== Der Tech-Stack ===
Das System basiert auf einer modernen PHP-Architektur:
Das System basiert auf einer modernen PHP-Architektur:
* **Framework:** [[Symfony]] (v4.4 / v5.4 LTS)
; Framework
* **Datenbank:** MySQL / MariaDB (Doctrine ORM)
: [[Symfony]] (v4.4 / v5.4 LTS)
* **Template-Engine:** Twig
; Datenbank
* **Mail-Handling:** Swiftmailer (in neueren Versionen Symfony Mailer)
: MySQL / MariaDB (Doctrine ORM)
* **Paketverwaltung:** Composer
; Template-Engine
: Twig
; Mail-Handling
: Swiftmailer (in neueren Versionen Symfony Mailer)
; Paketverwaltung
: Composer


=== Eigenheiten & Unterschiede zu Standard-Symfony ===
=== Eigenheiten & Unterschiede zu Standard-Symfony ===
Obwohl UVdesk auf Symfony basiert, gibt es einige architektonische Besonderheiten:
Obwohl UVdesk auf Symfony basiert, gibt es einige architektonische Besonderheiten:
* **Bundle-Architektur:** UVdesk ist stark modularisiert. Fast alle Funktionen (Tickets, Knowledgebase, Mailbox) liegen in separaten Bundles unter {{SMC|vendor/uvdesk/}}.
; Bundle-Architektur
* **Custom Routing:** Die Routing-Logik für Member- und Customer-Bereiche ist eng mit der Datenbank verknüpft.
: UVdesk ist stark modularisiert. Fast alle Funktionen liegen in separaten Bundles unter {{SMC|vendor/uvdesk/}}.
* **Service Decoration:** Viele Kern-Services sind so konzipiert, dass sie durch eigene Implementierungen erweitert werden können (wichtig für unsere Anpassungen ohne Vendor-Patching).
; Custom Routing
: Die Routing-Logik für Member- und Customer-Bereiche ist eng mit der Datenbank verknüpft.
; Service Decoration
: Viele Kern-Services sind so konzipiert, dass sie durch eigene Implementierungen erweitert werden können.


---
---


== Initial Setup ==
== Initial Setup ==
''Dieser Bereich wird noch ergänzt. Hier folgen Informationen zu:''
''Dieser Bereich wird noch ergänzt. Geplante Themen:''
* ''Datenbank-Initialisierung''
; DB-Init
* ''Ersteinrichtung des Admin-Accounts''
: Initialisierung der Schemata via Doctrine.
* ''Verzeichnisrechte auf bplaced''
; Admin-Setup
: Ersteinrichtung über die CLI.
; bplaced-Permissions
: Spezifische Rechte für das Temp-Verzeichnis.


---
---
Zeile 37: Zeile 48:


== Quirks & Fallstricke ==
== Quirks & Fallstricke ==
* **Zugehörigkeit:** Achten Sie beim Erstellen von Agents darauf, dass die Rollen-Zuweisung (Role) korrekt erfolgt, da Symfony-Security-Voter den Zugriff steuern.
; Zugehörigkeit
* **Cache:** Nach jeder Änderung an Konfigurationsdateien muss der Symfony-Cache physisch geleert werden (siehe Debugging-Sektion).
: Achten Sie beim Erstellen von Agents darauf, dass die Rollen-Zuweisung (Role) korrekt erfolgt, da Symfony-Security-Voter den Zugriff steuern.
; Cache-Inkonsistenz
: Nach jeder Änderung an Konfigurationsdateien muss der Symfony-Cache physisch geleert werden (siehe Debugging-Sektion).


---
---
Zeile 44: Zeile 57:
== Debugging-History ==
== Debugging-History ==


Hier werden spezifische Probleme und deren Lösungen dokumentiert, die während des Betriebs im ArtisanCommerce-Netzwerk aufgetreten sind.
Hier werden spezifische Probleme dokumentiert, die in der ArtisanCommerce-Umgebung aufgetreten sind.


=== Fall 01: Swiftmailer Alias & Memory Limit (bplaced Umgebung) ===
=== Fall 01: Swiftmailer Alias & Memory Limit ===
'''Datum:''' Februar 2026
; Datum
'''Symptom:''' {{SMC|cache:clear}} schlägt fehl mit {{SMC|ServiceNotFoundException}} oder {{SMC|Memory Limit Exhausted}}.
: Februar 2026
; Symptom
: {{SMC|cache:clear}} schlägt fehl mit {{SMC|ServiceNotFoundException}} oder {{SMC|Memory Limit Exhausted}}.


==== Lösung A: Swiftmailer Alias Fix ====
==== Lösung A: Swiftmailer Alias Fix ====
Da der interne Symfony-Compiler den Dienst {{SMC|swiftmailer.mailer}} erwartet, dieser aber bei benutzerdefinierten Mailer-Namen fehlt, muss ein Alias in der {{SMC|config/services.yaml}} gesetzt werden:
In der {{SMC|config/services.yaml}} den Alias manuell setzen:


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Zeile 62: Zeile 77:


==== Lösung B: Memory Limit via Wrapper ====
==== Lösung B: Memory Limit via Wrapper ====
Auf bplaced-Umgebungen überschreibt der PHP-Wrapper das Memory-Limit oft auf 64MB. Für Symfony-Operationen müssen mindestens 512MB erzwungen werden:
; Option 1 (Dauerhaft)
: In der {{SMC|.env}} oder {{SMC|.env.dev}} Variable setzen: {{SMC|MM{{=}}512}}
; Option 2 (CLI)
: Befehl manuell ausführen: {{SMC|MM&equals;512 php bin/console cache:clear}}
---
 
[[Kategorie:Software-Dokumentation]]
[[Kategorie:Helpdesk]]
[[Kategorie:Intern]]


# In der {{SMC|.env}} oder {{SMC|.env.dev}} Variable setzen: {{SMC|MM{{=}}512}}
# heul
# Befehl manuell ausführen: {{SMC|MM&equals;512 php bin/console cache:clear}}
# schluchz


---
---

Version vom 22. Februar 2026, 18:41 Uhr

UVdesk Helpdesk System

Übersicht

UVdesk ist eine Enterprise-Grade Helpdesk-Lösung, die speziell für die Automatisierung von Support-Prozessen entwickelt wurde.

Der Tech-Stack

Das System basiert auf einer modernen PHP-Architektur:

Framework
Symfony (v4.4 / v5.4 LTS)
Datenbank
MySQL / MariaDB (Doctrine ORM)
Template-Engine
Twig
Mail-Handling
Swiftmailer (in neueren Versionen Symfony Mailer)
Paketverwaltung
Composer

Eigenheiten & Unterschiede zu Standard-Symfony

Obwohl UVdesk auf Symfony basiert, gibt es einige architektonische Besonderheiten:

Bundle-Architektur
UVdesk ist stark modularisiert. Fast alle Funktionen liegen in separaten Bundles unter vendor/uvdesk/.
Custom Routing
Die Routing-Logik für Member- und Customer-Bereiche ist eng mit der Datenbank verknüpft.
Service Decoration
Viele Kern-Services sind so konzipiert, dass sie durch eigene Implementierungen erweitert werden können.

---

Initial Setup

Dieser Bereich wird noch ergänzt. Geplante Themen:

DB-Init
Initialisierung der Schemata via Doctrine.
Admin-Setup
Ersteinrichtung über die CLI.
bplaced-Permissions
Spezifische Rechte für das Temp-Verzeichnis.

---

How-to's

Konfiguration der Mailbox

Beschreibung der Anbindung von IMAP/SMTP (iCloud, Office365 etc.)

---

Quirks & Fallstricke

Zugehörigkeit
Achten Sie beim Erstellen von Agents darauf, dass die Rollen-Zuweisung (Role) korrekt erfolgt, da Symfony-Security-Voter den Zugriff steuern.
Cache-Inkonsistenz
Nach jeder Änderung an Konfigurationsdateien muss der Symfony-Cache physisch geleert werden (siehe Debugging-Sektion).

---

Debugging-History

Hier werden spezifische Probleme dokumentiert, die in der ArtisanCommerce-Umgebung aufgetreten sind.

Fall 01: Swiftmailer Alias & Memory Limit

Datum
Februar 2026
Symptom
cache:clear schlägt fehl mit ServiceNotFoundException oder Memory Limit Exhausted.

Lösung A: Swiftmailer Alias Fix

In der config/services.yaml den Alias manuell setzen:

services:
    # Fix für RegisterPluginsPass Bug
    swiftmailer.mailer:
        alias: swiftmailer.mailer.default
        public: true

Lösung B: Memory Limit via Wrapper

Option 1 (Dauerhaft)
In der .env oder .env.dev Variable setzen: MM=512
Option 2 (CLI)
Befehl manuell ausführen: MM=512 php bin/console cache:clear

---

  1. heul
  2. schluchz

---