# Dauerhafte Charakterfarben `falukant_data.character` enthält `hair_color` und `eye_color` als `VARCHAR(7)`. Die Sequelize- und API-Felder heißen `hairColor` und `eyeColor`. Erlaubt sind sechsstellige Hex-Farben einschließlich `#`, z. B. `#69432d`. Migration: `20261104000001-add-character-appearance.cjs`. Im Backend-Verzeichnis mit `npm run db:migrate` ausführen, bevor der neue Backend-Code startet. Die Migration wird hier nur in einer isolierten Testdatenbank ausgeführt; die produktive Datenbank wird nicht verändert. Die Migration vergibt für bestehende Charaktere einmalig Farben aus einer Palette mit sieben Haar- und sechs Augenfarben. Bereits vorhandene Werte bleiben erhalten, auch beim erneuten Ausführen der Migration. Ein separater DB-Trigger vergibt Farben für neue Charaktere, einschließlich roher INSERTs des Rust-Daemons für NPCs und Neugeborene. NULL-Werte bei Updates behalten die bisherige Farbe. Andere explizite, gültige Hex-Farben sind ebenfalls zulässig. Die Farben ändern sich beim Altern nicht automatisch. Vererbung und Ergrauen sind noch nicht implementiert; die aktuelle Palette ist eine Spielverteilung. Familie (Partner, Kinder, Liebschaften), Taufliste, Direktoren sowie politische und kirchliche Amtsträger liefern die Farben an die vorhandene 3D-Anzeige. Die Spielerdaten und das Dashboard liefern sie ebenfalls. Die 3D-Komponenten verwenden die gespeicherten Farben nur in den markierten Haar-/Irisflächen. Unmarkierte Altersmodelle und die 2D-Porträts behalten ihre Originaltexturen. Der Modell-Editor bleibt eine Vorschau ohne Schreibzugriff auf Charakterdaten. Prüfung mit einer ausdrücklich bereitgestellten, wegwerfbaren Datenbank: ```bash TEST_DATABASE_URL='postgresql://…/yourpart_development_test' \ node --test tools/characterAppearance.test.mjs ``` Der Integrationstest prüft Bestandsdaten, wiederholte und teilweise manuell vorbereitete Migrationen, beide DB-Trigger zusammen, rohe INSERTs, Sequelize-Erstellung/-Updates, Farbvalidierung und Rollback. Er verwirft das Schema `falukant_data` ausschließlich in `yourpart_development_test`.