Goal: 普通/多店外卖、自配送运费和闪送双地图可切换回滚。 Architecture: 统一选择器与自部署 HTTP 客户端;外卖矩阵和闪送有序路线保持独立,Google 原实现保留。新选址通过后端聚合。 Tech Stack: JDK21 / Spring Boot / HttpClient4 / fastjson2;Flask / OSRM。 Spec: spec.md 当日实施契约覆盖旧评估计划及历史假设。
后端沿用当前新分支,地图沿用 master;不另建 worktree。按已确认方案继续实施,无需重复确认。App 代码不改,交付接入文档。不自动提交/推送/部署/执行 SQL。外卖车型默认 car 保持现有口径;闪送按用户车型。外卖失败拒绝,闪送直线估时降级;历史订单不重算,改价提示重报。
切回 Google 后三类订单均恢复;矩阵顺序/重复/部分失败;车型与鉴权正确;旧订单与v2的距离/运费快照一致;地址反查不替换点选坐标。
app/map/MapSourceSelector、SelfHostedMapClient,修改闪送两个提供器;新增外卖 SelfHosted/DistanceSource 矩阵提供器。客户端接口 getObject(String, Map<String, ?>)、getArray(String, Map<String, ?>)、post(String, Object);统一超时/鉴权,严格解析距离,显式传 profile。app/map/LegacyMapLocationControllerTest、MapLegacyLocationServiceTest 覆盖旧入口的 SELF_HOSTED 成功/空结果/非法坐标/服务异常、无 Google/Baidu/Redis 调用,以及 GOOGLE 回滚原结构/语言。先观察旧控制器仍调用 Google 的失败。MapLegacyLocationService 专门转换旧地址响应,使用既有 SelfHostedMapClient;SysFileInfoController 在旧外部调用前判断共用来源。只在地图 app.py 放宽已受限 nearby 最大半径到10km并补边界测试,保留旧10km搜索范围。最终本地验证:完整reactor测试1484项(admin1314/system168/framework2)0失败/错误/跳过,package成功;地图64项及页面测试通过。I001–I008本地交付,V001–V003保留真实部署验收。无提交/推送/迁移/部署。
执行方式:在当前会话直接完成用户已确认的四项评估;不创建分支,不交付生产实现。本文件是研究与隔离试验计划,不是地图全量切换实施计划。
Goal: 确定现有 OSRM v5.27.1 是否足以承载当前配送机车规则,以及借鉴 Valhalla 的最小范围和明确限制。
Architecture: 以已部署机车 Lua 的文件指纹和固定上游提交为基线;使用合成小路网及临时 OSRM 容器验证规则。测试候选只在临时目录生成,不覆盖地图仓库或服务器正式文件。
Tech Stack: Python 标准库、SSH、OSRM v5.27.1 Docker、OSM XML 夹具、Lua API v4。
Spec: osm-requirements-assessment.md。用户于 2026-10-12 同意执行其中基线核对、规则对照、小样本验证和最终结论四项工作。
model-evaluation.md,包含固定版本、文件哈希、规则对照和结论。evaluation/run_model_probe.py,生成隔离夹具和一次性候选 Lua,执行真实 OSRM 请求。evaluation/model-probe-results.json,由脚本生成,包含验证结果、来源哈希及清理结果,不含凭据。执行顺序:先固定来源和部署指纹,再对照规则,随后运行隔离试验,最后依据实际结果写出结论和未验证项。脚本命令为:
& 'C:/Users/99029/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe' specs/032-self-hosted-map-integration/evaluation/run_model_probe.py
验收:四项均有可审计证据;失败样本明确分类;原有生产文件指纹和服务容器保持不变;不自动提交或推送。