feat: add MET Norway provider with normalization#1
Open
henemm wants to merge 1 commit into
Open
Conversation
henemm
commented
Jan 11, 2026
Owner
- Implement MET LocationForecast 2.0 adapter
- Normalize API response to schema-compliant format
- Add symbol mapping (day/night suffix stripping)
- Add thunder detection (symbol contains "thunder" -> HIGH)
- Add unit conversion (m/s -> km/h)
- Include realistic test fixtures and expected outputs
- Tests: 4 new tests, all passing (6/6 total)
- Ruff clean, mypy clean for new code
- Implement MET LocationForecast 2.0 adapter - Normalize API response to schema-compliant format - Add symbol mapping (day/night suffix stripping) - Add thunder detection (symbol contains "thunder" -> HIGH) - Add unit conversion (m/s -> km/h) - Include realistic test fixtures and expected outputs - Tests: 4 new tests, all passing (6/6 total) - Ruff clean, mypy clean for new code
henemm
added a commit
that referenced
this pull request
May 10, 2026
#136) Erste sichtbare Komponente des neuen Trip-Wizards auf /trips/new — die Wrapper-Hülle mit Stepper, Step-Slot und Footer-Navigation. Step-Inhalte selbst sind leere Platzhalter; sie werden in den Folge-Issues #161–#164 gefüllt. ## Neue Dateien - frontend/src/lib/components/trip-wizard/TripWizardShell.svelte: Shell mit Header (h1 + Eyebrow), Stepper, Step-Slot (Step1Profile, Step2Stages, Step3Waypoints, Step4Briefings via {#if currentStep === N}), Save-Status-Region (role="status", aria-live="polite", nur sichtbar wenn saveStatus !== 'idle'), Footer-Buttons mit dynamischem Speichern-Label. - frontend/src/lib/components/trip-wizard/Stepper.svelte: Pure presentational 4-Step-Indikator. Atom Dot (tone="success") für done, Border-Kreis mit Akzent für active, gedämpfter Border-Kreis für pending. Connector-Linien zwischen Steps in Akzent oder Faint. - frontend/src/lib/components/trip-wizard/stepperState.ts: Pure-Function `stepperStateOf(index, current): 'done'|'active'|'pending'` — testbar ohne DOM-Setup. - frontend/src/lib/components/trip-wizard/steps/Step{1..4}*.svelte: Vier leere Platzhalter mit data-testid-Anker für E2E-Navigationstests. ## Änderungen - frontend/src/routes/trips/new/+page.svelte: Mountet TripWizardShell statt altem TripWizard. WizardState im <script>-Block instanziiert (Factory-Pattern, NIEMALS top-level — Safari-Reaktivitätsrisiko mit Svelte-5-Runen). Context per setContext('trip-wizard-state', state) bereitgestellt. - frontend/e2e/trip-wizard.spec.ts: Outer test.describe → test.describe.skip mit Cleanup-Verweis (alter Wizard läuft noch im Edit-Pfad TripEditView.svelte). - frontend/tsconfig.json + package.json: @types/node ergänzt, sodass Test-Dateien (`node:test`, `node:assert/strict`) typegeprüft werden können. ## Tests - Unit: 6 Cases für stepperStateOf — alle grün - Unit gesamt (inkl. Master-Spec-Tests): 29/29 grün - E2E: 9 Cases gegen Acceptance Criteria #1, #3-#8, #5a, #11 + 1 Bonus — alle grün - Build: clean - svelte-check: 0 Errors im #160-Code (verbleibende 23 Errors alle in vor-existenten Dateien außerhalb #160) ## TestID-Inventar (Spec §7) trip-wizard-shell, trip-wizard-stepper, trip-wizard-step-{1..4} (mit data-state="done|active|pending"), trip-wizard-step{1..4}-{name} (Step-Slot-Container), trip-wizard-back/cancel/next/save, trip-wizard-save-status. ## Acceptance Criteria 12/12 erfüllt — siehe docs/specs/modules/epic_136_step0_shell.md. ## Adversary-Validation VERIFIED. F001 (svelte-check Errors) und F003 (Save-Status-Region rendert im Idle leer) wurden vor diesem Commit behoben. ## Out of Scope - Step-Inhalte 1-4 (Folge-Issues #161-#164) - Step-Validation/canAdvance (Folge-Issue mit Master-Spec-Update) - Vorlagen-Picker (#165) - Edit-Pfad-Refactor (Folge-Issue nach #165) Master-Spec: docs/specs/modules/epic_136_trip_wizard.md (approved 2026-05-09) Sub-Spec: docs/specs/modules/epic_136_step0_shell.md (approved 2026-05-10) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
henemm
added a commit
that referenced
this pull request
May 17, 2026
#136) Erste sichtbare Komponente des neuen Trip-Wizards auf /trips/new — die Wrapper-Hülle mit Stepper, Step-Slot und Footer-Navigation. Step-Inhalte selbst sind leere Platzhalter; sie werden in den Folge-Issues #161–#164 gefüllt. ## Neue Dateien - frontend/src/lib/components/trip-wizard/TripWizardShell.svelte: Shell mit Header (h1 + Eyebrow), Stepper, Step-Slot (Step1Profile, Step2Stages, Step3Waypoints, Step4Briefings via {#if currentStep === N}), Save-Status-Region (role="status", aria-live="polite", nur sichtbar wenn saveStatus !== 'idle'), Footer-Buttons mit dynamischem Speichern-Label. - frontend/src/lib/components/trip-wizard/Stepper.svelte: Pure presentational 4-Step-Indikator. Atom Dot (tone="success") für done, Border-Kreis mit Akzent für active, gedämpfter Border-Kreis für pending. Connector-Linien zwischen Steps in Akzent oder Faint. - frontend/src/lib/components/trip-wizard/stepperState.ts: Pure-Function `stepperStateOf(index, current): 'done'|'active'|'pending'` — testbar ohne DOM-Setup. - frontend/src/lib/components/trip-wizard/steps/Step{1..4}*.svelte: Vier leere Platzhalter mit data-testid-Anker für E2E-Navigationstests. ## Änderungen - frontend/src/routes/trips/new/+page.svelte: Mountet TripWizardShell statt altem TripWizard. WizardState im <script>-Block instanziiert (Factory-Pattern, NIEMALS top-level — Safari-Reaktivitätsrisiko mit Svelte-5-Runen). Context per setContext('trip-wizard-state', state) bereitgestellt. - frontend/e2e/trip-wizard.spec.ts: Outer test.describe → test.describe.skip mit Cleanup-Verweis (alter Wizard läuft noch im Edit-Pfad TripEditView.svelte). - frontend/tsconfig.json + package.json: @types/node ergänzt, sodass Test-Dateien (`node:test`, `node:assert/strict`) typegeprüft werden können. ## Tests - Unit: 6 Cases für stepperStateOf — alle grün - Unit gesamt (inkl. Master-Spec-Tests): 29/29 grün - E2E: 9 Cases gegen Acceptance Criteria #1, #3-#8, #5a, #11 + 1 Bonus — alle grün - Build: clean - svelte-check: 0 Errors im #160-Code (verbleibende 23 Errors alle in vor-existenten Dateien außerhalb #160) ## TestID-Inventar (Spec §7) trip-wizard-shell, trip-wizard-stepper, trip-wizard-step-{1..4} (mit data-state="done|active|pending"), trip-wizard-step{1..4}-{name} (Step-Slot-Container), trip-wizard-back/cancel/next/save, trip-wizard-save-status. ## Acceptance Criteria 12/12 erfüllt — siehe docs/specs/modules/epic_136_step0_shell.md. ## Adversary-Validation VERIFIED. F001 (svelte-check Errors) und F003 (Save-Status-Region rendert im Idle leer) wurden vor diesem Commit behoben. ## Out of Scope - Step-Inhalte 1-4 (Folge-Issues #161-#164) - Step-Validation/canAdvance (Folge-Issue mit Master-Spec-Update) - Vorlagen-Picker (#165) - Edit-Pfad-Refactor (Folge-Issue nach #165) Master-Spec: docs/specs/modules/epic_136_trip_wizard.md (approved 2026-05-09) Sub-Spec: docs/specs/modules/epic_136_step0_shell.md (approved 2026-05-10) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This was referenced May 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.