Skip to content

[Niedrig] Altlasten und tote Konfiguration entfernen (ImportCache, ClassUtil/StringUtil, CronTwigExtension, Provider-Subsystem, stale Configs) #540

Description

@maltehuebner

Problem

Sammel-Issue für belegten toten Code und verwaiste Konfiguration (ergänzend zu #528, dort bereits erfasst: assets/js/limit-violation.js, StationRepository::findIndexedByProvider).

Toter PHP-Code (jeweils 0 Verwendungen per grep verifiziert)

  • src/Air/ImportCache/ImportCache.php + Interface — kein einziger Nutzer
  • src/Air/Util/ClassUtil.php — selbst als @deprecated markiert, ungenutzt; obendrein ist getUnderscoreShortname() (Z. 22–25) eine Copy-Paste-Kopie von getLowercaseShortname() ohne Underscore-Logik
  • src/Air/Util/StringUtil.php — ungenutzt
  • src/Twig/Extension/CronTwigExtension.php — nutzt Cron\CronExpression (Z. 5, 25), Paket dragonmantank/cron-expression ist nicht installiert; die Twig-Funktion cron() wird in keinem Template aufgerufen — erste Nutzung wäre ein Fatal
  • Provider-/Fetch-Subsystem weitgehend tot: ProviderInterface::fetchPollutant/ProviderList/FetchProcess/FetchResult haben keine Aufrufer; OpenWeatherMapProvider/SourceFetcher/SourceFetcher.php::fetch() (Z. 20–37) ruft die OWM-API auf und verwirft die Antworten (nur Counter); queryUVIndex zielt auf den abgeschalteten Endpoint /data/2.5/uvi. Lebendig ist nur queryTemperature via AdhocDataRetriever
  • src/Air/Geocoding/RequestConverter/RequestConverter.php:6use App\Entity\Zip; (Entity existiert nicht)

Tote/verwaiste Konfiguration

  • config/services.yaml:46-47 — Alias App\Air\Pollution\DataPersister\PersisterInterface → Namespace existiert seit dem Umzug nach App\Air\DataPersister\ nicht mehr (Symfony entfernt den Alias still; die echte Interface-Bindung funktioniert nur dank Auto-Aliasing)
  • config/services.yaml:20 — Bind $graphCacheDirectory (+ GRAPH_CACHE_DIRECTORY in .env/.env.test) hat keinen einzigen Consumer
  • config/packages/dev/easy_log_handler.yaml — registriert EasyCorp\EasyLog\EasyLogHandler; Paket nicht installiert und seit 2020 abandoned
  • config/routing/4_frontend.yaml — Route logout: path: /logout ohne Controller (Security-Relikt)
  • config/services.yaml:8 Parameter locale: 'de' wird nirgends referenziert, während config/packages/translation.yaml default_locale: en setzt — für eine rein deutsche Seite inkonsistent
  • phpunit.xml ist git-getrackt, steht aber in .gitignore (phpunit-bridge-Recipe-Zeile /phpunit.xml) — Foot-Gun; Ignore-Zeile entfernen oder auf phpunit.xml.dist umstellen
  • config/packages/sonata_seo.yaml Meta-Keywords-Tippfehler „Kohlemnonooxid"
  • CLAUDE.md/README beschreiben Elasticsearch als aktive Such-Komponente und „Typeahead/Bloodhound" als Suche — tatsächlich sucht das Frontend mit @algolia/autocomplete-js gegen Prefetch-Endpunkte + Nominatim (siehe 500er-Issue)

Kontext/Risiko

Kein unmittelbares Produktionsrisiko, aber die Altlasten verschleiern die tatsächliche Architektur, kosten bei jedem Upgrade Analysezeit und produzieren irreführende Doku für neue Mitwirkende (und für Coding-Agents, die CLAUDE.md lesen).

Aufgaben

  • Aufgeführte tote Klassen samt Interfaces löschen; use App\Entity\Zip entfernen
  • Provider-Subsystem auf den real genutzten Kern (SourceFetcher::queryTemperature + AdhocDataRetriever + JsonParser) eindampfen oder Roadmap dokumentieren
  • Stale Config-Einträge entfernen (Pollution\DataPersister-Alias, $graphCacheDirectory + Env-Var, easy_log_handler.yaml, logout-Route, locale-Parameter klären)
  • phpunit.xml-Gitignore-Konflikt auflösen; Tippfehler in sonata_seo.yaml fixen
  • CLAUDE.md/README nach Abschluss der Bug-Issues aktualisieren (Suche, Elasticsearch, PHP-Version)

Abhängigkeiten

Baut auf den Entscheidungen aus dem 500er-/Feature-Flag-Issue auf; überschneidungsfrei zu #528.

Metadata

Metadata

Assignees

No one assigned

    Labels

    AI-generatedcleanupAltlasten, toter Code, Aufräumarbeitencode-qualityCode-Qualität, statische Analyse, CIphpPull requests that update Php code

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions