recon/lib
malice 14ad2cd34a
recon: add /api/wiki-rewrite endpoint (extraction #5 prep, additive) (#9)
Per-tag HTTP wrapper over wiki_rewrite.rewrite_wiki_link so the (future)
navi-places service can rewrite OSM wiki tags to local Kiwix URLs over HTTP
instead of importing recon's wiki_rewrite module (which talks to Kiwix on
localhost:8430 and the wiki_cache table in /opt/recon/data/place_cache.db).
Companion to PR #8 (/api/wiki-enrich) — Matt picked option B (HTTP-couple the
Kiwix offline-wiki rewriting too, since it matters in prod).

  GET /api/wiki-rewrite?tag=<wikipedia|wikidata|wikivoyage|appropedia>&value=<raw>
  -> 200 {url, status}  where status is "local" | "public" | "original"
  -> 400 on missing value or unknown tag
  -> no 404 (unclassifiable value echoes back with status "original",
     mirroring rewrite_wiki_link)
  Public (no auth), like /api/place/* and /api/wiki-enrich.

Changes (additive only):
  - lib/wiki_rewrite_api.py: new wiki_rewrite_bp blueprint. Thin route directly
    over the existing rewrite_wiki_link(tag, value) — no extraction needed
    (it's already a clean standalone function, unlike wiki-enrich's lookup).
  - lib/api.py: register the blueprint (one block).
  - lib/wiki_rewrite_api_test.py: 5 tests (local Kiwix hit, public fallback,
    unclassifiable -> original, missing value -> 400, unknown tag -> 400),
    stubbing check_kiwix_has_article (no Kiwix/DB), plain-assert + __main__
    runner. Verified green against recon's venv (flask 3.1.2).

Does NOT touch place_detail's in-process _enrich_wiki_links — that gets removed
in a later PR once navi-places is live (same as PR #8). wiki_cache stays in
recon's own place_cache.db post-cutover (harmless positive-cache duplication).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:08:18 -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
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-rewrite endpoint (extraction #5 prep, additive) (#9) 2026-05-22 14:08:18 -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
key_manager.py
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
organizer.py
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
peertube_scraper.py
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
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
wiki_rewrite_api.py recon: add /api/wiki-rewrite endpoint (extraction #5 prep, additive) (#9) 2026-05-22 14:08:18 -06:00
wiki_rewrite_api_test.py recon: add /api/wiki-rewrite endpoint (extraction #5 prep, additive) (#9) 2026-05-22 14:08:18 -06:00
zim_monitor.py Phase 1: Kiwix foundation — ZIM monitor and kiwix-serve setup 2026-04-16 23:39:34 +00:00