recon/lib
malice f42b1fef3b
recon: add /api/wiki-enrich endpoint (extraction #5 prep, additive) (#8)
HTTP wrapper over the wiki_index lookup so the (future) navi-places service can
fetch wiki enrichment over HTTP instead of reading recon's 2.1 GB
data/wiki_index.db directly (Phase A option B — HTTP coupling).

  GET /api/wiki-enrich?wikidata=<Qid>           (primary key)
  GET /api/wiki-enrich?name=<name>&country=<cc>  (fallback key)
  -> 200 {wiki_summary?, wiki_population?, wiki_url?, wikivoyage_url?}
  -> 400 if no usable key; 404 on no match. Public (no auth, like /api/place/*).

Route keys are wikidata_id / name+country — NOT osm_type/osm_id — because that
is how wiki_index is actually queried (the in-process _enrich_with_wiki_index
looks up by result['wikidata_id'] then name+country_code, never by OSM id; see
extraction-5-wiki-enrich-investigation.md). An osm-keyed route would have forced
a redundant in-recon place lookup.

Changes (additive only):
  - lib/place_detail.py: new standalone lookup_wiki_index(wikidata_id, name,
    country_code) doing the same two SELECTs + field/URL mapping as the
    in-process path, returning a dict or None. Pure DB read, never raises.
    `_enrich_with_wiki_index` is LEFT UNTOUCHED — it can be DRY-refactored to
    delegate to this in a later PR; the in-process enrichment path is unchanged.
  - lib/wiki_enrich_api.py: new wiki_enrich_bp blueprint with the route.
  - lib/api.py: register the blueprint (one block).
  - lib/wiki_enrich_api_test.py: 4 tests (hit-by-wikidata + decoded fields,
    no-match -> 404, name+country fallback, no-key -> 400) over an in-memory
    fixture DB; plain-assert style + __main__ runner (recon venv has no pytest).
    Verified green against recon's venv (flask 3.1.2).

Does NOT remove the in-process _enrich_with_wiki_index call from place_detail —
that happens in a later PR once navi-places is live and serving.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:23:08 -06:00
..
acquisition Phase 6d: PeerTube acquisition module + service thread 2026-04-15 03:08:51 +00:00
offroute Switch /api/reverse/<lat>/<lon> elevation source from Valhalla to planet-DEM 2026-05-20 15:20:35 +00:00
processors fix: ZIM table extraction — pipe-delimited cells instead of concatenation 2026-05-07 01:32:25 +00:00
__init__.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
address_book.py fix(navi): address book prefix+boundary match for longer queries 2026-04-20 07:54:32 +00:00
address_book_api.py feat(navi): address book with geocoding integration 2026-04-20 04:02:11 +00:00
address_book_test.py fix(navi): address book prefix+boundary match for longer queries 2026-04-20 07:54:32 +00:00
api.py recon: add /api/wiki-enrich endpoint (extraction #5 prep, additive) (#8) 2026-05-22 13:23:08 -06:00
api_keys_admin.py Add Nav-I API key management UI 2026-04-23 06:50:44 +00:00
aurora_nav_tool.py fix(navi): format tool output as human-readable directions 2026-04-19 22:42:17 +00:00
auth.py Add contacts/phone book system with per-user scoping 2026-04-22 05:29:54 +00:00
contacts.py Add Nav-I dashboard section with restore-as conflict resolution 2026-04-22 06:26:25 +00:00
contacts_api.py Add Nav-I dashboard section with restore-as conflict resolution 2026-04-22 06:26:25 +00:00
deployment_config.py feat(navi): deployment profiles + /api/config endpoint 2026-04-20 23:35:39 +00:00
dispatcher.py Phase 6f-2: format normalizer in dispatcher 2026-04-15 23:08:19 +00:00
embedder.py Fix Kiwix download URL generation in embedder 2026-04-18 00:06:52 +00:00
enricher.py Add langdetect language filter to enricher + purge non-English ZIM articles 2026-04-17 14:37:13 +00:00
extractor.py fix: PDF extraction quality — word-boundary checks and layout mode 2026-05-07 01:36:23 +00:00
filing.py Phase 5c-1: dispatcher loop, filing worker loop, service rewire 2026-04-14 18:30:58 +00:00
geocode.py fix(geocode): apply viewport bias to Netsyms address results 2026-04-26 20:59:17 +00:00
geocode_test.py feat(navi): structured geocode with usaddress parsing and reranker 2026-04-20 16:29:47 +00:00
google_places.py Add Google Places (New) tertiary enrichment for business POIs 2026-04-22 04:08:12 +00:00
ingester.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
key_manager.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
landclass.py landclass: filter antimeridian-wrapping PAD-US records 2026-05-20 16:34:14 +00:00
landclass_test.py landclass: filter antimeridian-wrapping PAD-US records 2026-05-20 16:34:14 +00:00
nav_tools.py feat(geocode): add viewport bias for location-aware search 2026-04-26 04:03:44 +00:00
nav_tools_test.py feat(navi): add nav_tools with route() and reverse_geocode() - Phase H2 2026-04-19 22:14:26 +00:00
netsyms.py feat(navi): add netsyms tier-2 geocoding + geocode API 2026-04-20 07:24:09 +00:00
netsyms_api.py Switch /api/reverse/<lat>/<lon> elevation source from Valhalla to planet-DEM 2026-05-20 15:20:35 +00:00
netsyms_test.py feat(navi): add netsyms tier-2 geocoding + geocode API 2026-04-20 07:24:09 +00:00
new_pipeline.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
organizer.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
osm_categories.py Add place detail proxy with Nominatim-first routing and Overpass fallback 2026-04-21 03:06:51 +00:00
overture.py Add Overture Maps POI enrichment layer for place details 2026-04-21 16:51:25 +00:00
peertube_collector.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
peertube_scraper.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
place_detail.py recon: add /api/wiki-enrich endpoint (extraction #5 prep, additive) (#8) 2026-05-22 13:23:08 -06:00
query_router.py feat(navi): semantic query router for intelligent tool selection - Phase H2b 2026-04-19 23:50:35 +00:00
query_router_test.py feat(navi): semantic query router for intelligent tool selection - Phase H2b 2026-04-19 23:50:35 +00:00
reverse_bundle_test.py Switch /api/reverse/<lat>/<lon> elevation source from Valhalla to planet-DEM 2026-05-20 15:20:35 +00:00
scraper_runner.py Fix progress regex and SIGHUP/scan_zims race condition 2026-04-19 19:35:42 +00:00
status.py Add scraper Phase 2: smart crawl mode detection + browser fallback 2026-04-18 18:26:43 +00:00
utils.py Phase 3: dispatcher, transcript processor, text_dir resolution 2026-04-14 15:39:42 +00:00
web_scraper.py Initial commit: RECON codebase baseline 2026-04-14 14:57:23 +00:00
wiki_enrich_api.py recon: add /api/wiki-enrich endpoint (extraction #5 prep, additive) (#8) 2026-05-22 13:23:08 -06:00
wiki_enrich_api_test.py recon: add /api/wiki-enrich endpoint (extraction #5 prep, additive) (#8) 2026-05-22 13:23:08 -06:00
wiki_rewrite.py Add wiki link rewriting to local Kiwix 2026-04-23 06:34:22 +00:00
zim_monitor.py Phase 1: Kiwix foundation — ZIM monitor and kiwix-serve setup 2026-04-16 23:39:34 +00:00