# Open Fixture Library ## Søgeflow 1. Web UI sender `POST /api/v1/fixtures/search-ofl?query=`. 2. Backend bruger OFL API, eller falder tilbage til lokale testfixtures i `test-data/fixtures`. 3. Resultater vises som `manufacturer/fixture`. ## Preview Preview kaldes via: ```http POST /api/v1/fixtures/preview-ofl?manufacturer_key=&fixture_key= ``` Preview returnerer normaliseret fixturedata uden at skrive til lokal fixtureliste. I UI kan brugeren: - åbne preview, - se schema-version, - se kategorier, - vælge og inspicere modes, - se kanalindeks, displaynavn, precedence og opløsning. ## Import Import kaldes via: ```http POST /api/v1/fixtures/import-ofl?manufacturer_key=&fixture_key= ``` Import: - henter rå OFL-data, - normaliserer til TuxDMX-format, - gemmer resultatet i lokal runtime/cache. ## Modevalg Modevalg bruges i preview til inspektion af kanalstruktur. Importen bevarer alle normaliserede modes i fixturemodellen, så patch/UI senere kan vælge korrekt mode. ## Fixture-normalisering Normalisering sker i `backend/app/fixtures/normalize.py`: - OFL JSON læses ikke direkte af runtime. - Hver mode bliver til en stabil intern struktur med: - `key` - `channel_count` - `channels[]` - Hver kanal får: - `index` - `key` - `display_name` - `precedence` - `resolution` Fallback-regel i denne leverance: - kanaler med `dim` i navnet bliver markeret som `HTP` - øvrige kanaler bliver markeret som `LTP`, medmindre OFL-data allerede angiver noget andet ## Offline fallback Hvis OFL ikke kan nås, søger klienten i lokale fixtures under `test-data/fixtures`. ## Begrænsninger i denne leverance - OFL update-diff, warnings og backup før fixturemigration er endnu ikke fuldt implementeret. - Runtime persistence til database for importerede fixtures er kun delvist implementeret; preview/import virker i simulator-runtime og kan verificeres via API/UI.