feat(04-02): Overpass top-up proposer (D-06) + JSON-to-SQLite converter (D-05)
overpass-topup.mjs — maintainer-time repo tool, six hard laws: - never imported by bot/src or web/src (TP1 gate); Worker reads only the committed JSON - exactly ONE request per run: both live paths (Overpass POST, Nominatim GET) share a single requestJson helper — one fetch( call site (TP7) - identifying User-Agent araharah-gazetteer-topup/1.0 mandatory (missing UA = HTTP 406) - busy/saturated/unusable response -> 'Overpass instance busy — retry later', exit 0 (TP4) - output is a PROPOSAL only; source never names the curated file, so it cannot write it (TP6) - --source=overpass|nominatim|fixture (--fixture implies fixture), --endpoint/OVERPASS_ENDPOINT override, bbox-bounded single-family query pinned verbatim (3.05,101.55,3.25,101.80) (TP3) - --fixture selects the offline path by itself (a fixture flag silently hitting the live network would be a trap — fixed during GREEN) overpass-response.json — committed real-shape Overpass response (6 KL elements: nodes with lat/lon, ways/relation with center) so the test is deterministic. json-to-sqlite.mjs — backend #2's dataset format reachable today (D-05): - reads the same committed kl-gazetteer.json, emits kl-gazetteer.sqlite via node:sqlite (zero added deps) with the SAME id set (CV1), plus the ODbL notice embedded in a metadata table + NOTICE sidecar (ODbL s4.4, T-04-20) - deterministic: rows in dataset order, no timestamps
This commit is contained in:
+88
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"version": 0.6,
|
||||
"generator": "Overpass API 0.7.62.7",
|
||||
"osm3s": {
|
||||
"timestamp_osm_base": "2026-10-23T14:55:20Z",
|
||||
"copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"type": "way",
|
||||
"id": 23034336,
|
||||
"center": { "lat": 3.1408, "lon": 101.7047 },
|
||||
"tags": {
|
||||
"name": "Merdeka 118",
|
||||
"name:en": "Merdeka 118",
|
||||
"building": "yes",
|
||||
"building:levels": "118",
|
||||
"height": "678.9",
|
||||
"tourism": "attraction",
|
||||
"wikidata": "Q18166176"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "way",
|
||||
"id": 12345678,
|
||||
"center": { "lat": 3.1489, "lon": 101.6936 },
|
||||
"tags": {
|
||||
"name": "National Monument",
|
||||
"name:en": "National Monument",
|
||||
"alt_name": "Tugu Negara",
|
||||
"historic": "memorial",
|
||||
"tourism": "attraction"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "node",
|
||||
"id": 87654321,
|
||||
"lat": 3.1484,
|
||||
"lon": 101.6953,
|
||||
"tags": {
|
||||
"name": "Masjid Jamek",
|
||||
"name:en": "Jamek Mosque",
|
||||
"amenity": "place_of_worship",
|
||||
"religion": "muslim",
|
||||
"tourism": "attraction",
|
||||
"wikidata": "Q2713345"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "way",
|
||||
"id": 34567123,
|
||||
"center": { "lat": 3.1528, "lon": 101.7038 },
|
||||
"tags": {
|
||||
"name": "Kuala Lumpur Tower",
|
||||
"name:en": "Kuala Lumpur Tower",
|
||||
"short_name": "KL Tower",
|
||||
"man_made": "tower",
|
||||
"tourism": "attraction",
|
||||
"wikidata": "Q265917"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "way",
|
||||
"id": 45678123,
|
||||
"center": { "lat": 3.1454, "lon": 101.6953 },
|
||||
"tags": {
|
||||
"name": "Central Market",
|
||||
"name:en": "Central Market",
|
||||
"alt_name": "Pasar Seni",
|
||||
"building": "retail",
|
||||
"tourism": "attraction",
|
||||
"wikidata": "Q5061407"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "relation",
|
||||
"id": 56781234,
|
||||
"center": { "lat": 3.1436, "lon": 101.6975 },
|
||||
"tags": {
|
||||
"name": "Petaling Street",
|
||||
"name:en": "Petaling Street",
|
||||
"highway": "pedestrian",
|
||||
"tourism": "attraction",
|
||||
"wikidata": "Q1985815"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user