Nahversorgung: Luftlinien-Näherung (#564)
Aussage und unveränderte Berechnung
900 m Luftlinie als Näherung für 15 Minuten zu Fuß. Es wird keine Route berechnet; Umwege und Barrieren werden nicht berücksichtigt.
Der Präsenz-Indikator zählt Kategorien mit mindestens einer Einrichtung im Luftlinienradius. Er behauptet keine gemessene Gehstrecke oder tatsächliche Erreichbarkeit in 15 Minuten. Die fünf Kategorien, der Radius 900 m, die Ampelschwellen ≥4/5, 2–3/5, ≤1/5, der Pilotbereich und der OSM-/ODbL-Hinweis bleiben unverändert (#463). Es gibt keine Routingimplementation, Neubewertung oder zusätzliche Quellen-/Produktfreigabe.
Gemeinsame Ausgabe und historische Reports
lib/report/poi-display.ts enthält den gemeinsamen Hinweis und die reine
Darstellungsprojektion für ReportSections und den öffentlichen PDF-Renderer.
Neue Ergebnisse erhalten den präzisierten Hinweis bereits beim Erstellen.
Steckbrief, Ergebniszeile und PDF-Kategorieliste benennen den Luftlinienradius.
Die Projektion ersetzt ausschließlich den vollständig bekannten alten Hinweis und bei erkanntem 900-m-Hinweis die sechs bekannten Ampelerklärungstexte für 0–5 Kategorien. Sie korrigiert auch den identischen historischen Disclaimer-Baustein im PDF. Individuelle, unbekannte oder fehlende Texte bleiben erhalten; fehlende POI-Blöcke werden nicht erzeugt. Da kein Radiusfeld gespeichert ist, nennen Web, Steckbrief und PDF 900 m nur bei exakter Übereinstimmung mit dem bekannten alten oder aktuellen 900-m-Hinweis. Sonst steht dort neutral „laut gespeichertem Indikator“; auch ein bekannter Ampelsatz wird bei fremdem Hinweis nicht auf 900 m umgeschrieben. Das gilt insbesondere für den historischen 1200-m-/Sechs-Kategorien-Vertrag. Die Kategorienliste und ihre Anzahl stammen aus dem Snapshot, einschließlich der historischen sechsten ÖV-Kategorie. Score und Ampel werden nicht neu berechnet. Score, Ampel, Zähler, Quellenstand und übrige Snapshotdaten bleiben unverändert. Die Projektion ist idempotent und schreibt nichts in die Datenbank. Historische JSON-API-/Exportantworten behalten ihren gespeicherten Wortlaut. Fehlende/null POI-Hinweise und POI-Ampelerklärungen werden ausschließlich an ihren beiden PDF-Textstellen als leer gerendert, damit ein synthetischer Altbericht ohne diesen Text keinen PDF-Fehler verursacht. Das belegt keine entsprechende Produktionsdatenlage.
Reproduktion und Prüfung
npx vitest run tests/unit/lib/geo/poi-dichte.test.ts tests/unit/lib/report/poi-display.test.ts: Rot-/Grün-Vertrag für neue Lookup-Ergebnisse, historische Web-Ausgabe, PDF-Rechtshinweis, unveränderte Snapshots, unbekannte/fehlende Texte und Idempotenz.npx tsx scripts/verify-poi-report.ts: synthetische historische/aktuelle 900-m-PDFs sowie historische und individuelle 1200-m-Fälle sowie fehlende POI-Texte, beide Hinweise, Score/Quellenstand, SHA256 vor/nach, Seitengeometrie und Raster aller Seiten. Raster müssen zusätzlich visuell abgenommen werden.npm run test:e2e:permalink:build: echter gebauter Permalink und echter PDF-Endpunkt mit ausschließlich synthetischer Testtransportantwort, 320/390/1440 px, Tastatur und Touch; zusätzlich historischer 1200-m-Vertrag und fehlende POI-Texte bei 320/1440 px. Keine Datenbankverbindung und keine Reporterstellung.
Abnahmestand
Abgeschlossen am 13. September 2026: PR #569 (Merge-Commit
28e34ff7284059c5787b728a4048eac0650021eb) ist gemergt, das
Produktionsdeployment dpl_4AcQTv65MNneW5fPVhAvJcDFWNux war READY, und der
Produktions-Readback an einem bestehenden historischen POI-Report zeigte
Web und PDF mit dem präzisierten Hinweis bei unverändertem Score, unveränderter
Ampel und unverändertem Quellenstand (vollständiger JSON-Hash vor und nach den
Liveprüfungen identisch). Die Bindung steht im Abschlusskommentar von
#564. Für vorhandene
öffentliche Referenzen werden nur sichere Ausschnitte und Hashes
veröffentlicht; Report-IDs und Permalinks sind Bearer-Capabilities.
Produktionsdaten blieben unverändert.
PDF/UA #333, PV-Fachgate #291 und NÖGIS #413 werden damit nicht geschlossen.