File size: 2,299 Bytes
6a82282 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # Phase 0 — Endpoints smoke tests
8/8 endpoints reachable from local dev machine. Run with:
```bash
/Users/amsrahman/riprap-nyc/.venv/bin/python run_all.py
```
| Endpoint | Status | Latency | Notes |
|----------|:------:|--------:|-------|
| Microsoft PC STAC (Sentinel-2 L2A search) | PASS | 1.2 s | keyless; 3 items in S2 Brooklyn bbox |
| NYC Open Data Socrata (311, PLUTO, Sandy) | PASS | 5.8 s | each dataset returns its row keys |
| USGS NWIS (Bronx River at NYBG) | PASS | 0.3 s | 2 series, 190 obs/24h |
| NOAA Tides (Battery 8518750) | PASS | 0.1 s | latest WL=1.056 ft |
| NOAA NWPS (gauges in NY+PA bbox) | PASS | 4.1 s | 750 gauges; **needs `srid=EPSG_4326`** |
| NWS API (NY active alerts) | PASS | 0.5 s | 10 active alerts (cold day) |
| FEMA OpenFEMA (FimaNfipClaims, NY) | PASS | 0.1 s | 1-row probe; aggregated only per project policy |
| HF Hub (small Apache-2.0 model) | PASS | 0.3 s | sentence-transformers/all-MiniLM-L6-v2 metadata |
## Sharp edges discovered
1. **NWPS silently empty without `srid=EPSG_4326`.** Default `srid` is
apparently a non-WGS84 system; bbox in geographic coords matches no
gauges. Endpoint returns `200 OK` with an empty array — no error
signal. Recorded in the smoke test comments so the next person
doesn't lose 20 minutes.
2. **NYC Open Data Socrata is slow on cold connection.** ~6 s for three
sequential single-row fetches. Probably PoP-routing or DNS warmup.
Cache aggressively and batch.
3. **NWS API requires User-Agent.** The smoke test sets one; without a
UA you'd get HTTP 403 (NWS docs say so but it's a quiet failure
mode in production).
4. **OpenFEMA FimaNfipClaims schema is wide.** First-row keys include
`amountPaidOnBuildingClaim`, `amountPaidOnContentsClaim`,
`baseFloodElevation`, etc — these are the property-level fields we
are NOT allowed to surface. Specialists using OpenFEMA must
aggregate (e.g., `$select=count(*)&$filter=...&$apply=...`) before
ingesting, never store property-level rows.
## Cache contents
`.cache/*.json` — one per smoke test, holds the parsed first row /
metadata so subsequent dev iterations don't re-hit the endpoint.
## Conclusion
All eight data sources are usable. Proceed to Phase 1 (Prithvi-EO
live water segmentation). No blocking issues.
|