Add project-bound OAuth MCP queries and controlled analysis with scoped evidence, limits, timeouts and a nearby-model spatial query using EPSG:4326 inputs. Default nearby searches to 200 meters and five results. Integrate investigation messaging/presentation, health/readiness and typed history; remove duplicate web search and fix online simulation and compressed baseline writes. Include project migrations 023-025; keep local credentials and demo seeding excluded. Validation: 319 focused pytest checks; real PostGIS temporary-table regression; read-only Jinqian bridge radius comparison; cross-language MCP discovery/calls.
20 lines
763 B
Python
20 lines
763 B
Python
from fastapi import APIRouter, HTTPException
|
|
|
|
from app.domain.schemas.place_search import PlaceSearchRequest, PlaceSearchResponse
|
|
from app.services.place_search import PlaceSearchError, search_tianditu_places
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post(
|
|
"/place-search-requests",
|
|
response_model=PlaceSearchResponse,
|
|
summary="Search Fengxian places",
|
|
description="调用天地图地名搜索,固定上海市奉贤区范围,只返回前 10 个可定位候选,不提供分页。",
|
|
)
|
|
async def tianditu_place_search(request: PlaceSearchRequest) -> PlaceSearchResponse:
|
|
try:
|
|
return await search_tianditu_places(request)
|
|
except PlaceSearchError as exc:
|
|
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|