diff --git a/src/assets/data/README.md b/src/assets/data/README.md
index 8f4973c..16f89eb 100644
--- a/src/assets/data/README.md
+++ b/src/assets/data/README.md
@@ -2,10 +2,6 @@
这些 JSON 是早期演示数据,当前导览模块不再以这里作为数据源。
-当前室内导览、设施搜索、位置预览统一从:
+当前室内导览、设施搜索、位置预览统一通过 Provider / Adapter / Repository / UseCase 数据边界读取 `static/nav-assets/app_nav_assets_v2_clean_20260611_093623`,页面和展示组件不要直接依赖静态包 JSON 文件。
-`/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/app_nav_manifest.json`
-
-以及同目录下的 `data/poi_all.json`、`data/poi_by_floor/*.json` 读取。
-
-如需继续改造历史页面,请优先接入 `src/services/navAssets.ts`,不要新增对本目录 JSON 的业务依赖。
+如需继续改造历史页面,请优先接入 `GuideRepository`、`MuseumContentRepository`、`ExplainRepository` 或对应 use case,不要新增对本目录 JSON 的业务依赖。
diff --git a/src/components/explain/ExplainList.vue b/src/components/explain/ExplainList.vue
index ae65ffe..466f514 100644
--- a/src/components/explain/ExplainList.vue
+++ b/src/components/explain/ExplainList.vue
@@ -206,15 +206,11 @@
diff --git a/src/pages/route/detail.vue b/src/pages/route/detail.vue
index 6a1574d..0dfe185 100644
--- a/src/pages/route/detail.vue
+++ b/src/pages/route/detail.vue
@@ -10,6 +10,9 @@
>
([])
+const normalizeGuideFloorId = (labelOrId: string) => guideUseCase.normalizeFloorId(labelOrId)
-const startSourceLabels: Record = {
- 'facility-detail': '设施详情选择',
- manual: '手动选择'
-}
-
-const formatStartSourceLabel = (source?: string) => (
- source ? startSourceLabels[source] || source : ''
-)
-
-const formatStartStepText = (startLocation: RouteStartLocation) => {
- const sourceLabel = formatStartSourceLabel(startLocation.source)
- const floorSuffix = startLocation.floor && !startLocation.label.includes(startLocation.floor)
- ? ` · ${startLocation.floor}`
- : ''
- const sourceSuffix = sourceLabel ? `(${sourceLabel})` : ''
-
- return `起点:${startLocation.label}${floorSuffix}${sourceSuffix}`
-}
-
-const createPreviewSteps = (
- poi: CleanNavPoi | null,
- startLocation: RouteStartLocation | null
-): RouteStep[] => {
- if (startLocation) {
- return [
- {
- id: 'start',
- text: formatStartStepText(startLocation)
- },
- {
- id: 'target',
- text: poi
- ? `目标:${formatNavFloorLabel(poi.floorId)} · ${poi.primaryCategoryZh} · 位置预览`
- : '目标来自 clean 导览数据,暂仅支持位置预览'
- }
- ]
- }
-
- return [
- {
- id: 'floor',
- text: poi ? `目标位于 ${formatNavFloorLabel(poi.floorId)} · ${poi.primaryCategoryZh}` : '目标来自 clean 导览数据'
- },
- {
- id: 'status',
- text: NAV_ROUTE_UNAVAILABLE_MESSAGE
- }
- ]
-}
-
-const createRoutePlan = (
- facilityId: string,
- target: string,
- poi: CleanNavPoi | null = null,
- startLocation: RouteStartLocation | null = null
-): RoutePlan => ({
- id: `route-${facilityId || 'custom'}`,
- facilityId,
- target,
- summary: poi
- ? `${formatNavFloorLabel(poi.floorId)} · ${poi.primaryCategoryZh} · 位置预览`
- : '位置预览 · 尚未接入正式路线图',
- steps: createPreviewSteps(poi, startLocation),
- targetLocation: poi ? {
- poiId: poi.id,
- name: poi.name,
- floorId: poi.floorId,
- floorLabel: formatNavFloorLabel(poi.floorId),
- primaryCategoryZh: poi.primaryCategoryZh,
- positionGltf: poi.positionGltf
- } : null,
- startLocation
-})
-
-const route = ref(createRoutePlan('', '目标地点'))
+const route = ref(initialLocationPreviewPlan())
const hasRouteTarget = ref(false)
const routeViewState = ref('preview')
const activeFloor = ref('1F')
const targetFocusRequest = ref(null)
const targetFocusRequestId = ref(0)
-const manualFloors = NAV_FLOOR_OPTIONS.map((floor) => floor.label)
+const manualFloors = computed(() => guideFloors.value.map((floor) => floor.label))
+const guideFloorLabel = (floorId: string) => (
+ guideFloors.value.find((floor) => floor.id === floorId)?.label || floorId
+)
+const defaultGuideFloorLabel = () => (
+ guideFloors.value.find((floor) => floor.id === 'L1')?.label
+ || guideFloors.value[0]?.label
+ || '1F'
+)
+const loadGuideFloors = async () => {
+ if (guideFloors.value.length) return guideFloors.value
+
+ try {
+ guideFloors.value = await guideUseCase.getFloors()
+ } catch (error) {
+ console.error('加载导览楼层失败:', error)
+ guideFloors.value = []
+ }
+
+ return guideFloors.value
+}
const manualAreas = ['主入口', '服务台附近', '停车场入口']
const isManualLocationPanelOpen = ref(false)
const selectedManualFloor = ref('1F')
const selectedManualArea = ref('服务台附近')
-
const normalizeRouteOption = (value: unknown) => {
if (Array.isArray(value)) {
return value[0]
@@ -380,7 +312,36 @@ const createStartLocationFromOptions = (options: Record) => {
}
}
+const requestTargetFocus = (target: Partial | null, fallbackName = route.value.target) => {
+ if (!target?.poiId || !target.floorId) {
+ targetFocusRequest.value = null
+ return false
+ }
+
+ const floorLabel = target.floorLabel || guideFloorLabel(target.floorId)
+ const focusTarget: RouteTargetLocation = {
+ poiId: target.poiId,
+ name: target.name || fallbackName,
+ floorId: target.floorId,
+ floorLabel,
+ primaryCategoryZh: target.primaryCategoryZh,
+ positionGltf: target.positionGltf
+ }
+
+ activeFloor.value = floorLabel
+ routeViewState.value = 'preview'
+ targetFocusRequestId.value += 1
+ targetFocusRequest.value = toTargetFocusRequestViewModel(
+ focusTarget,
+ targetFocusRequestId.value
+ )
+
+ return true
+}
+
const applyRouteOptions = async (options: Record = {}) => {
+ await loadGuideFloors()
+
const facilityId = normalizeStringOption(options.facilityId)
const target = normalizeStringOption(options.target)
const state = normalizeRouteOption(options.state)
@@ -388,39 +349,42 @@ const applyRouteOptions = async (options: Record = {}) => {
if (!facilityId && !target) {
hasRouteTarget.value = false
- route.value = createRoutePlan('', '目标地点')
+ route.value = initialLocationPreviewPlan()
routeViewState.value = 'preview'
- activeFloor.value = '1F'
+ activeFloor.value = defaultGuideFloorLabel()
targetFocusRequest.value = null
isManualLocationPanelOpen.value = false
return false
}
- const matchedPoi = facilityId ? await loadCleanNavPoiById(facilityId) : null
+ const matchedPoi = facilityId ? await guideUseCase.getPoiById(facilityId) : null
if (!matchedPoi) {
hasRouteTarget.value = false
- route.value = createRoutePlan('', target || '目标地点')
+ route.value = await guideUseCase.createLocationPreviewPlan('', target || '目标地点', startLocation)
routeViewState.value = 'preview'
- activeFloor.value = startLocation?.floor || '1F'
+ activeFloor.value = startLocation?.floor || defaultGuideFloorLabel()
targetFocusRequest.value = null
isManualLocationPanelOpen.value = false
return false
}
- route.value = createRoutePlan(
+ route.value = await guideUseCase.createLocationPreviewPlan(
facilityId,
target || matchedPoi.name,
- matchedPoi,
startLocation
)
hasRouteTarget.value = true
routeViewState.value = isRouteViewState(state) ? state : 'preview'
- activeFloor.value = matchedPoi ? formatNavFloorLabel(matchedPoi.floorId) : startLocation?.floor || '1F'
- targetFocusRequest.value = null
isManualLocationPanelOpen.value = false
+ if (routeViewState.value === 'preview') {
+ requestTargetFocus(route.value.targetLocation, matchedPoi.name)
+ } else {
+ activeFloor.value = matchedPoi.floorLabel || guideFloorLabel(matchedPoi.floorId)
+ }
+
return true
}
@@ -479,23 +443,14 @@ const handleViewOutdoorMap = () => {
routeViewState.value = 'outdoor-preview'
}
-const handleShowTargetLocation = (target: RouteTargetLocation | null) => {
- const targetLocation = target || route.value.targetLocation
+const handleShowTargetLocation = (target: Partial | null) => {
+ const focused = requestTargetFocus(target || route.value.targetLocation)
- if (!targetLocation?.poiId || !targetLocation.floorId) {
+ if (!focused) {
uni.showToast({
title: '目标暂无三维位置数据',
icon: 'none'
})
- return
- }
-
- routeViewState.value = 'preview'
- activeFloor.value = targetLocation.floorLabel || formatNavFloorLabel(targetLocation.floorId)
- targetFocusRequestId.value += 1
- targetFocusRequest.value = {
- ...targetLocation,
- requestId: targetFocusRequestId.value
}
}
@@ -511,6 +466,7 @@ const handleTargetFocus = (result: TargetPoiFocusResult) => {
const handleReturnToPreview = () => {
isManualLocationPanelOpen.value = false
routeViewState.value = 'preview'
+ requestTargetFocus(route.value.targetLocation)
}
const handleRelocate = () => {
@@ -540,39 +496,24 @@ const createManualStartLocation = (): RouteStartLocation => ({
source: 'manual'
})
-const createCurrentTargetStep = (): RouteStep => {
- const targetLocation = route.value.targetLocation
-
- return {
- id: 'target',
- text: targetLocation
- ? `目标:${targetLocation.floorLabel || formatNavFloorLabel(targetLocation.floorId)} · ${targetLocation.primaryCategoryZh || route.value.target} · 位置预览`
- : '目标来自 clean 导览数据,暂仅支持位置预览'
- }
-}
-
-const handleConfirmLocation = () => {
+const handleConfirmLocation = async () => {
const startLocation = createManualStartLocation()
- route.value = {
- ...route.value,
- startLocation,
- steps: [
- {
- id: 'start',
- text: formatStartStepText(startLocation)
- },
- createCurrentTargetStep()
- ]
- }
+ route.value = await guideUseCase.createLocationPreviewPlan(
+ route.value.facilityId,
+ route.value.target,
+ startLocation
+ )
activeFloor.value = startLocation.floor || activeFloor.value
isManualLocationPanelOpen.value = false
routeViewState.value = 'preview'
+ requestTargetFocus(route.value.targetLocation)
}
const handleModeChange = (mode: GuideMode) => {
if (routeViewState.value === 'outdoor-preview' && mode === '3d') {
routeViewState.value = 'preview'
+ requestTargetFocus(route.value.targetLocation)
return
}
@@ -596,7 +537,7 @@ const handleToolClick = (tool: string) => {
}
uni.showToast({
- title: tool === '回正' ? '已回到三维总览' : NAV_ROUTE_UNAVAILABLE_MESSAGE,
+ title: tool === '回正' ? '已回到三维总览' : guideUseCase.getRouteReadiness().message,
icon: 'none'
})
}
diff --git a/src/pages/search/index.vue b/src/pages/search/index.vue
index 53e2d2c..c0ea50d 100644
--- a/src/pages/search/index.vue
+++ b/src/pages/search/index.vue
@@ -13,6 +13,9 @@
search-top="60px"
mode-top="104px"
floor-top="208px"
+ :indoor-model-source="indoorModelSource"
+ :floors="guideFloors"
+ :normalize-floor-id="normalizeGuideFloorId"
@search-tap="handleSearchTap"
@mode-change="handleModeChange"
@floor-change="handleFloorChange"
@@ -100,31 +103,31 @@ import { onLoad } from '@dcloudio/uni-app'
import GuidePageFrame from '@/components/navigation/GuidePageFrame.vue'
import GuideMapShell from '@/components/navigation/GuideMapShell.vue'
import {
- formatNavFloorLabel,
- isPoiAccessible,
- searchCleanNavPois,
- type CleanNavPoi
-} from '@/services/navAssets'
+ guideUseCase
+} from '@/usecases/guideUseCase'
+import {
+ toFacilityResultViewModel,
+ type FacilityResultViewModel
+} from '@/view-models/guideViewModels'
import {
navigateToGuideTopTab,
type GuideTopTab
} from '@/utils/guideTopTabs'
+import type {
+ MuseumFloor
+} from '@/domain/museum'
interface FilterItem {
id: 'all' | 'accessible' | 'floor'
label: string
}
-interface FacilityResult {
- id: string
- name: string
- floor: string
- meta: string
- accessible: boolean
- action: '查看'
-}
+interface FacilityResult extends FacilityResultViewModel {}
const searchKeyword = ref('卫生间')
+const indoorModelSource = guideUseCase.getModelSource()
+const guideFloors = ref([])
+const normalizeGuideFloorId = (labelOrId: string) => guideUseCase.normalizeFloorId(labelOrId)
const searchDraftKeyword = ref('')
const currentFilter = ref('all')
const isLoading = ref(false)
@@ -140,18 +143,6 @@ const filters: FilterItem[] = [
const facilities = ref([])
-const toFacilityResult = (poi: CleanNavPoi): FacilityResult => {
- const floor = formatNavFloorLabel(poi.floorId)
- return {
- id: poi.id,
- name: poi.name,
- floor,
- meta: `${floor}|${poi.primaryCategoryZh}|${poi.navigationReadiness || '展示点位'}`,
- accessible: isPoiAccessible(poi),
- action: '查看'
- }
-}
-
const visibleFacilities = computed(() => {
if (currentFilter.value === 'accessible') {
return facilities.value.filter((item) => item.accessible)
@@ -170,10 +161,10 @@ const resultTitle = computed(() => {
const loadFacilityResults = async () => {
isLoading.value = true
try {
- const pois = await searchCleanNavPois(searchKeyword.value)
+ const pois = await guideUseCase.searchPois(searchKeyword.value)
facilities.value = pois
- .filter((poi) => poi.primaryCategory !== 'touring_poi')
- .map(toFacilityResult)
+ .filter((poi) => poi.primaryCategory.id !== 'touring_poi')
+ .map(toFacilityResultViewModel)
} catch (error) {
console.error('加载 clean 导览搜索结果失败:', error)
facilities.value = []
@@ -186,11 +177,21 @@ const loadFacilityResults = async () => {
}
}
+const loadGuideFloors = async () => {
+ try {
+ guideFloors.value = await guideUseCase.getFloors()
+ } catch (error) {
+ console.error('加载导览楼层失败:', error)
+ guideFloors.value = []
+ }
+}
+
onLoad((options: any) => {
if (options.keyword) {
searchKeyword.value = decodeURIComponent(options.keyword)
}
searchDraftKeyword.value = searchKeyword.value
+ void loadGuideFloors()
void loadFacilityResults()
})
diff --git a/src/repositories/ExplainRepository.ts b/src/repositories/ExplainRepository.ts
new file mode 100644
index 0000000..324d5d8
--- /dev/null
+++ b/src/repositories/ExplainRepository.ts
@@ -0,0 +1,120 @@
+import type {
+ ExplainTrack,
+ MuseumExhibit,
+ MuseumHall,
+ SearchIndexItem
+} from '@/domain/museum'
+import {
+ mediaRepository,
+ type MediaRepository
+} from '@/repositories/MediaRepository'
+import {
+ museumContentRepository,
+ type MuseumContentRepository
+} from '@/repositories/MuseumContentRepository'
+
+export interface ExplainRepository {
+ listExhibits(): Promise
+ getExhibitById(id: string): Promise
+ listHalls(): Promise
+ getHallById(id: string): Promise
+ listTracks(): Promise
+ getTrackByExhibitId(exhibitId: string): Promise
+ searchExplain(keyword?: string): Promise
+}
+
+const trackTitleFor = (exhibit: MuseumExhibit) => `${exhibit.name}讲解`
+
+export class DefaultExplainRepository implements ExplainRepository {
+ constructor(
+ private readonly content: MuseumContentRepository = museumContentRepository,
+ private readonly media: MediaRepository = mediaRepository
+ ) {}
+
+ listExhibits() {
+ return this.content.listExhibits()
+ }
+
+ getExhibitById(id: string) {
+ return this.content.getExhibitById(id)
+ }
+
+ listHalls() {
+ return this.content.listHalls()
+ }
+
+ getHallById(id: string) {
+ return this.content.getHallById(id)
+ }
+
+ async listTracks() {
+ const exhibits = await this.content.listExhibits()
+
+ return Promise.all(exhibits.map(async (exhibit): Promise => {
+ const media = await this.media.getMediaForExplainTrack(exhibit.id)
+ return {
+ id: `track-${exhibit.id}`,
+ exhibitId: exhibit.id,
+ hallId: exhibit.hallId,
+ title: trackTitleFor(exhibit),
+ summary: exhibit.description,
+ mediaId: media?.id,
+ coverImage: exhibit.image,
+ poiId: exhibit.poiId,
+ floorId: exhibit.floorId,
+ available: media?.available === true
+ }
+ }))
+ }
+
+ async getTrackByExhibitId(exhibitId: string) {
+ const tracks = await this.listTracks()
+ return tracks.find((track) => track.exhibitId === exhibitId) || null
+ }
+
+ async searchExplain(keyword = '') {
+ const normalizedKeyword = keyword.trim().toLowerCase()
+ const [exhibits, halls] = await Promise.all([
+ this.content.listExhibits(),
+ this.content.listHalls()
+ ])
+
+ const exhibitItems = exhibits
+ .filter((exhibit) => !normalizedKeyword || [
+ exhibit.name,
+ exhibit.hallName,
+ exhibit.floorLabel,
+ ...(exhibit.tags || [])
+ ].filter(Boolean).join(' ').toLowerCase().includes(normalizedKeyword))
+ .map((exhibit) => ({
+ id: exhibit.id,
+ name: exhibit.name,
+ desc: `${exhibit.hallName || '展项'} · ${exhibit.floorLabel || ''}`.trim(),
+ type: 'exhibit',
+ exhibitId: exhibit.id,
+ hallId: exhibit.hallId,
+ poiId: exhibit.poiId,
+ floorId: exhibit.floorId
+ }))
+
+ const hallItems = halls
+ .filter((hall) => !normalizedKeyword || [
+ hall.name,
+ hall.floorLabel,
+ hall.description
+ ].filter(Boolean).join(' ').toLowerCase().includes(normalizedKeyword))
+ .map((hall) => ({
+ id: hall.id,
+ name: hall.name,
+ desc: `${hall.floorLabel || ''} · ${hall.exhibitCount || 0}件展项`.trim(),
+ type: 'hall',
+ hallId: hall.id,
+ poiId: hall.poiId,
+ floorId: hall.floorId
+ }))
+
+ return [...exhibitItems, ...hallItems]
+ }
+}
+
+export const explainRepository = new DefaultExplainRepository()
diff --git a/src/repositories/GuideModelRepository.ts b/src/repositories/GuideModelRepository.ts
new file mode 100644
index 0000000..4e97bf1
--- /dev/null
+++ b/src/repositories/GuideModelRepository.ts
@@ -0,0 +1,64 @@
+import type {
+ GuideModelFloorAsset,
+ GuideModelRenderPackage,
+ GuideModelSource,
+ GuideRenderPoi
+} from '@/domain/guideModel'
+import {
+ formatNavFloorLabel
+} from '@/data/adapters/navAssetsAdapter'
+import {
+ defaultStaticNavAssetsProvider,
+ type StaticNavAssetsProvider,
+ type StaticNavPoiPayload
+} from '@/data/providers/staticNavAssetsProvider'
+
+const toRenderPoi = (poi: StaticNavPoiPayload): GuideRenderPoi => ({
+ id: poi.id,
+ name: poi.name,
+ floorId: poi.floorId,
+ primaryCategory: poi.primaryCategory,
+ primaryCategoryZh: poi.primaryCategoryZh,
+ iconType: poi.iconType || poi.primaryCategory,
+ positionGltf: poi.positionGltf
+})
+
+export interface GuideModelRepository extends GuideModelSource {}
+
+export class StaticGuideModelRepository implements GuideModelRepository {
+ constructor(private readonly provider: StaticNavAssetsProvider = defaultStaticNavAssetsProvider) {}
+
+ async loadPackage(): Promise {
+ const [manifest, floorIndex] = await Promise.all([
+ this.provider.loadManifest(),
+ this.provider.loadFloorIndex()
+ ])
+
+ const floors: GuideModelFloorAsset[] = [...floorIndex.floors]
+ .sort((a, b) => a.order - b.order)
+ .map((floor) => ({
+ floorId: floor.floorId,
+ label: formatNavFloorLabel(floor.floorId),
+ order: floor.order,
+ modelUrl: this.provider.assetUrl(floor.modelAsset)
+ }))
+
+ return {
+ overviewModelUrl: this.provider.assetUrl(manifest.assets.overviewModel.asset),
+ floors
+ }
+ }
+
+ async loadFloorPois(floorId: string) {
+ const floorIndex = await this.provider.loadFloorIndex()
+ const floor = floorIndex.floors.find((item) => item.floorId === floorId)
+ if (!floor) return []
+
+ const pois = await this.provider.loadFloorPois(floor.poiDataAsset)
+ return pois
+ .map(toRenderPoi)
+ .filter((poi) => Array.isArray(poi.positionGltf) && poi.positionGltf.length === 3)
+ }
+}
+
+export const guideModelRepository = new StaticGuideModelRepository()
diff --git a/src/repositories/GuideRepository.ts b/src/repositories/GuideRepository.ts
new file mode 100644
index 0000000..9a70b80
--- /dev/null
+++ b/src/repositories/GuideRepository.ts
@@ -0,0 +1,122 @@
+import type {
+ GuideLocationPreview,
+ MuseumFloor,
+ MuseumPoi
+} from '@/domain/museum'
+import {
+ NAV_ROUTE_READINESS
+} from '@/domain/guideReadiness'
+import {
+ formatNavFloorLabel,
+ navFloorIdFromLabel,
+ toMuseumPoi
+} from '@/data/adapters/navAssetsAdapter'
+import {
+ defaultStaticNavAssetsProvider,
+ type StaticNavAssetsProvider
+} from '@/data/providers/staticNavAssetsProvider'
+
+const searchableCategories = new Set([
+ 'touring_poi',
+ 'basic_service_facility',
+ 'transport_circulation',
+ 'accessibility_special_service',
+ 'operation_experience'
+])
+
+const toSearchText = (poi: MuseumPoi) => [
+ poi.name,
+ poi.floorId,
+ poi.floorLabel,
+ poi.primaryCategory.label,
+ poi.primaryCategory.iconType,
+ ...poi.categories.flatMap((category) => [
+ category.label,
+ category.id,
+ category.iconType
+ ])
+]
+ .filter(Boolean)
+ .join(' ')
+ .toLowerCase()
+
+const toLocationPreview = (poi: MuseumPoi): GuideLocationPreview => ({
+ poiId: poi.id,
+ name: poi.name,
+ floorId: poi.floorId,
+ floorLabel: poi.floorLabel,
+ primaryCategoryZh: poi.primaryCategory.label,
+ positionGltf: poi.positionGltf
+})
+
+export interface GuideRepository {
+ getAssetBaseUrl(): string
+ getFloors(): Promise
+ normalizeFloorId(labelOrId: string): string
+ listPois(): Promise
+ getPoiById(id: string): Promise
+ searchPois(keyword?: string): Promise
+ getLocationPreview(poiId: string): Promise
+ getRouteReadiness(): typeof NAV_ROUTE_READINESS
+}
+
+export class StaticGuideRepository implements GuideRepository {
+ private poiCache: MuseumPoi[] | null = null
+
+ constructor(private readonly provider: StaticNavAssetsProvider = defaultStaticNavAssetsProvider) {}
+
+ getAssetBaseUrl() {
+ return this.provider.baseUrl
+ }
+
+ async getFloors() {
+ const floorIndex = await this.provider.loadFloorIndex()
+ return [...floorIndex.floors]
+ .sort((a, b) => b.order - a.order)
+ .map((floor) => ({
+ id: floor.floorId,
+ label: formatNavFloorLabel(floor.floorId),
+ order: floor.order
+ }))
+ }
+
+ normalizeFloorId(labelOrId: string) {
+ return navFloorIdFromLabel(labelOrId)
+ }
+
+ async listPois() {
+ if (this.poiCache) return this.poiCache
+
+ const pois = await this.provider.loadPoiIndex()
+ this.poiCache = pois
+ .filter((poi) => searchableCategories.has(poi.primaryCategory))
+ .map(toMuseumPoi)
+
+ return this.poiCache
+ }
+
+ async getPoiById(id: string) {
+ const pois = await this.listPois()
+ return pois.find((poi) => poi.id === id) || null
+ }
+
+ async searchPois(keyword = '') {
+ const pois = await this.listPois()
+ const normalizedKeyword = keyword.trim().toLowerCase()
+
+ if (!normalizedKeyword) return pois
+
+ return pois.filter((poi) => toSearchText(poi).includes(normalizedKeyword))
+ }
+
+ async getLocationPreview(poiId: string) {
+ const poi = await this.getPoiById(poiId)
+ return poi ? toLocationPreview(poi) : null
+ }
+
+ getRouteReadiness() {
+ return NAV_ROUTE_READINESS
+ }
+}
+
+export const guideRepository = new StaticGuideRepository()
diff --git a/src/repositories/MediaRepository.ts b/src/repositories/MediaRepository.ts
new file mode 100644
index 0000000..66d25b5
--- /dev/null
+++ b/src/repositories/MediaRepository.ts
@@ -0,0 +1,27 @@
+import type {
+ MediaAsset
+} from '@/domain/museum'
+
+export interface MediaRepository {
+ getMediaById(id: string): Promise
+ getMediaForExplainTrack(trackId: string): Promise
+}
+
+const unavailableAudio = (id: string): MediaAsset => ({
+ id,
+ type: 'audio',
+ available: false,
+ unavailableReason: '正式讲解音频尚未接入媒体仓储'
+})
+
+export class DefaultMediaRepository implements MediaRepository {
+ async getMediaById(id: string) {
+ return unavailableAudio(id)
+ }
+
+ async getMediaForExplainTrack(trackId: string) {
+ return unavailableAudio(`media-${trackId}`)
+ }
+}
+
+export const mediaRepository = new DefaultMediaRepository()
diff --git a/src/repositories/MuseumContentRepository.ts b/src/repositories/MuseumContentRepository.ts
new file mode 100644
index 0000000..22912bf
--- /dev/null
+++ b/src/repositories/MuseumContentRepository.ts
@@ -0,0 +1,124 @@
+import type {
+ MuseumExhibit,
+ MuseumHall,
+ MuseumPoi,
+ SearchIndexItem
+} from '@/domain/museum'
+import {
+ guideRepository,
+ type GuideRepository
+} from '@/repositories/GuideRepository'
+import {
+ staticMuseumContentProvider,
+ type MuseumContentProvider
+} from '@/data/providers/staticMuseumContentProvider'
+
+export interface MuseumContentRepository {
+ listFacilities(): Promise
+ getFacilityById(id: string): Promise
+ searchFacilities(keyword?: string): Promise
+ listExhibits(): Promise
+ getExhibitById(id: string): Promise
+ listHalls(): Promise
+ getHallById(id: string): Promise
+ searchContent(keyword?: string): Promise
+}
+
+const normalize = (value: string) => value.trim().toLowerCase()
+const includesKeyword = (values: Array, keyword: string) => (
+ values.filter(Boolean).join(' ').toLowerCase().includes(keyword)
+)
+
+export class DefaultMuseumContentRepository implements MuseumContentRepository {
+ constructor(
+ private readonly contentProvider: MuseumContentProvider = staticMuseumContentProvider,
+ private readonly guide: GuideRepository = guideRepository
+ ) {}
+
+ listFacilities() {
+ return this.guide.listPois()
+ }
+
+ getFacilityById(id: string) {
+ return this.guide.getPoiById(id)
+ }
+
+ searchFacilities(keyword = '') {
+ return this.guide.searchPois(keyword)
+ }
+
+ listExhibits() {
+ return this.contentProvider.listExhibits()
+ }
+
+ async getExhibitById(id: string) {
+ const exhibits = await this.contentProvider.listExhibits()
+ return exhibits.find((exhibit) => exhibit.id === id) || null
+ }
+
+ listHalls() {
+ return this.contentProvider.listHalls()
+ }
+
+ async getHallById(id: string) {
+ const halls = await this.contentProvider.listHalls()
+ return halls.find((hall) => hall.id === id) || null
+ }
+
+ async searchContent(keyword = '') {
+ const normalizedKeyword = normalize(keyword)
+ const facilities = await this.searchFacilities(keyword)
+ const exhibits = await this.listExhibits()
+ const halls = await this.listHalls()
+
+ const exhibitItems = exhibits
+ .filter((exhibit) => !normalizedKeyword || includesKeyword([
+ exhibit.name,
+ exhibit.hallName,
+ exhibit.floorLabel,
+ ...(exhibit.tags || [])
+ ], normalizedKeyword))
+ .map((exhibit) => ({
+ id: exhibit.id,
+ name: exhibit.name,
+ desc: `${exhibit.hallName || '展项'} · ${exhibit.floorLabel || ''}`.trim(),
+ type: 'exhibit',
+ exhibitId: exhibit.id,
+ poiId: exhibit.poiId,
+ floorId: exhibit.floorId
+ }))
+
+ const hallItems = halls
+ .filter((hall) => !normalizedKeyword || includesKeyword([
+ hall.name,
+ hall.floorLabel,
+ hall.description
+ ], normalizedKeyword))
+ .map((hall) => ({
+ id: hall.id,
+ name: hall.name,
+ desc: `${hall.floorLabel || ''} · ${hall.exhibitCount || 0}件展项`.trim(),
+ type: 'hall',
+ hallId: hall.id,
+ poiId: hall.poiId,
+ floorId: hall.floorId
+ }))
+
+ const facilityItems = facilities.map((poi) => ({
+ id: poi.id,
+ name: poi.name,
+ desc: `${poi.floorLabel} · ${poi.primaryCategory.label}`,
+ type: 'facility',
+ poiId: poi.id,
+ floorId: poi.floorId
+ }))
+
+ return [
+ ...exhibitItems,
+ ...hallItems,
+ ...facilityItems
+ ]
+ }
+}
+
+export const museumContentRepository = new DefaultMuseumContentRepository()
diff --git a/src/services/navAssets.ts b/src/services/navAssets.ts
deleted file mode 100644
index aeacc32..0000000
--- a/src/services/navAssets.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-export const NAV_ASSET_BASE_URL = '/static/nav-assets/app_nav_assets_v2_clean_20260609_075339'
-
-export const NAV_ROUTE_UNAVAILABLE_MESSAGE = '正式路线数据尚未接入,可先查看馆内三维位置'
-
-export interface NavFloorOption {
- id: string
- label: string
- order: number
-}
-
-export interface CleanNavPoiCategory {
- topCategory: string
- topCategoryZh: string
- subcategory: string
- iconType: string
- reason?: string
-}
-
-export interface CleanNavPoi {
- id: string
- name: string
- floorId: string
- primaryCategory: string
- primaryCategoryZh: string
- categories?: CleanNavPoiCategory[]
- iconType?: string
- positionGltf?: [number, number, number]
- navigationReadiness?: string
- sourceConfidence?: string
-}
-
-interface CleanPoiIndex {
- status: string
- pois: CleanNavPoi[]
-}
-
-export const NAV_FLOOR_OPTIONS: NavFloorOption[] = [
- { id: 'L5', label: '5F', order: 5 },
- { id: 'L4', label: '4F', order: 4 },
- { id: 'L3', label: '3F', order: 3 },
- { id: 'L2', label: '2F', order: 2 },
- { id: 'L1.5', label: '1.5F', order: 1.5 },
- { id: 'L1', label: '1F', order: 1 },
- { id: 'L-1', label: 'B1', order: -1 },
- { id: 'L-2', label: 'B2', order: -2 }
-]
-
-const searchableCategories = new Set([
- 'touring_poi',
- 'basic_service_facility',
- 'transport_circulation',
- 'accessibility_special_service',
- 'operation_experience'
-])
-
-const normalizeBaseUrl = (baseUrl: string) => baseUrl.replace(/\/+$/, '')
-const poiCache = new Map()
-const poiRequestCache = new Map>()
-
-export const navAssetUrl = (relativePath: string, baseUrl = NAV_ASSET_BASE_URL) => (
- `${normalizeBaseUrl(baseUrl)}/${relativePath.replace(/^\/+/, '')}`
-)
-
-export const formatNavFloorLabel = (floorId: string) => (
- NAV_FLOOR_OPTIONS.find((floor) => floor.id === floorId)?.label || floorId
-)
-
-export const navFloorIdFromLabel = (labelOrId: string) => (
- NAV_FLOOR_OPTIONS.find((floor) => floor.label === labelOrId || floor.id === labelOrId)?.id || labelOrId
-)
-
-export const isPoiAccessible = (poi: CleanNavPoi) => (
- poi.primaryCategory === 'accessibility_special_service'
- || poi.categories?.some((category) => category.topCategory === 'accessibility_special_service') === true
-)
-
-const parseJsonPayload = (payload: unknown): T => {
- if (typeof payload === 'string') {
- return JSON.parse(payload) as T
- }
-
- return payload as T
-}
-
-const requestJson = (url: string): Promise => new Promise((resolve, reject) => {
- uni.request({
- url,
- method: 'GET',
- success: (response) => {
- const statusCode = Number(response.statusCode || 0)
- if (statusCode < 200 || statusCode >= 300) {
- reject(new Error(`导览资源读取失败: ${statusCode} ${url}`))
- return
- }
-
- try {
- resolve(parseJsonPayload(response.data))
- } catch (error) {
- reject(error)
- }
- },
- fail: reject
- })
-})
-
-export const loadCleanNavPois = async (baseUrl = NAV_ASSET_BASE_URL) => {
- const cacheKey = normalizeBaseUrl(baseUrl)
- const cachedPois = poiCache.get(cacheKey)
- if (cachedPois) return cachedPois
-
- const pendingPois = poiRequestCache.get(cacheKey)
- if (pendingPois) return pendingPois
-
- const request = requestJson(navAssetUrl('data/poi_all.json', cacheKey))
- .then((data) => {
- if (data.status !== 'pass') {
- throw new Error('导览 POI 数据状态不是 pass')
- }
-
- const pois = data.pois.filter((poi) => searchableCategories.has(poi.primaryCategory))
- poiCache.set(cacheKey, pois)
- return pois
- })
- .finally(() => {
- poiRequestCache.delete(cacheKey)
- })
-
- poiRequestCache.set(cacheKey, request)
- return request
-}
-
-export const loadCleanNavPoiById = async (id: string, baseUrl = NAV_ASSET_BASE_URL) => {
- const pois = await loadCleanNavPois(baseUrl)
- return pois.find((poi) => poi.id === id) || null
-}
-
-export const searchCleanNavPois = async (keyword = '', baseUrl = NAV_ASSET_BASE_URL) => {
- const pois = await loadCleanNavPois(baseUrl)
- const normalizedKeyword = keyword.trim().toLowerCase()
-
- const matchedPois = normalizedKeyword
- ? pois.filter((poi) => {
- const searchableText = [
- poi.name,
- poi.floorId,
- formatNavFloorLabel(poi.floorId),
- poi.primaryCategoryZh,
- poi.iconType,
- ...(poi.categories || []).flatMap((category) => [
- category.topCategoryZh,
- category.subcategory,
- category.iconType
- ])
- ]
- .filter(Boolean)
- .join(' ')
- .toLowerCase()
-
- return searchableText.includes(normalizedKeyword)
- })
- : pois
-
- return matchedPois
-}
diff --git a/src/usecases/explainUseCase.ts b/src/usecases/explainUseCase.ts
new file mode 100644
index 0000000..ad32bb6
--- /dev/null
+++ b/src/usecases/explainUseCase.ts
@@ -0,0 +1,75 @@
+import type {
+ ExplainTrack,
+ MediaAsset,
+ MuseumExhibit,
+ MuseumHall,
+ SearchIndexItem
+} from '@/domain/museum'
+import {
+ explainRepository,
+ type ExplainRepository
+} from '@/repositories/ExplainRepository'
+import {
+ mediaRepository,
+ type MediaRepository
+} from '@/repositories/MediaRepository'
+
+export interface ExplainAudioSelection {
+ exhibit: MuseumExhibit
+ track: ExplainTrack | null
+ media: MediaAsset | null
+ playable: boolean
+ unavailableMessage?: string
+}
+
+export class ExplainUseCase {
+ constructor(
+ private readonly explain: ExplainRepository = explainRepository,
+ private readonly media: MediaRepository = mediaRepository
+ ) {}
+
+ listExhibits() {
+ return this.explain.listExhibits()
+ }
+
+ getExhibitById(id: string) {
+ return this.explain.getExhibitById(id)
+ }
+
+ listHalls(): Promise {
+ return this.explain.listHalls()
+ }
+
+ getHallById(id: string) {
+ return this.explain.getHallById(id)
+ }
+
+ async listExhibitsByHallId(hallId: string) {
+ const exhibits = await this.explain.listExhibits()
+ return exhibits.filter((exhibit) => exhibit.hallId === hallId)
+ }
+
+ searchExplain(keyword?: string): Promise {
+ return this.explain.searchExplain(keyword)
+ }
+
+ async selectAudioForExhibit(exhibitId: string): Promise {
+ const exhibit = await this.explain.getExhibitById(exhibitId)
+ if (!exhibit) return null
+
+ const track = await this.explain.getTrackByExhibitId(exhibitId)
+ const media = track?.mediaId
+ ? await this.media.getMediaById(track.mediaId)
+ : null
+
+ return {
+ exhibit,
+ track,
+ media,
+ playable: media?.available === true && Boolean(media.url),
+ unavailableMessage: media?.unavailableReason || '该展项暂无讲解音频'
+ }
+ }
+}
+
+export const explainUseCase = new ExplainUseCase()
diff --git a/src/usecases/guideUseCase.ts b/src/usecases/guideUseCase.ts
new file mode 100644
index 0000000..cc2bbda
--- /dev/null
+++ b/src/usecases/guideUseCase.ts
@@ -0,0 +1,124 @@
+import type {
+ GuideLocationPreviewPlan,
+ GuidePreviewStep,
+ GuideStartLocation,
+ MuseumPoi
+} from '@/domain/museum'
+import {
+ guideRepository,
+ type GuideRepository
+} from '@/repositories/GuideRepository'
+import {
+ guideModelRepository,
+ type GuideModelRepository
+} from '@/repositories/GuideModelRepository'
+
+const startSourceLabels: Record = {
+ 'facility-detail': '设施详情选择',
+ manual: '手动选择'
+}
+
+const formatStartSourceLabel = (source?: string) => (
+ source ? startSourceLabels[source] || source : ''
+)
+
+const formatStartStepText = (startLocation: GuideStartLocation) => {
+ const sourceLabel = formatStartSourceLabel(startLocation.source)
+ const floorSuffix = startLocation.floor && !startLocation.label.includes(startLocation.floor)
+ ? ` · ${startLocation.floor}`
+ : ''
+ const sourceSuffix = sourceLabel ? `(${sourceLabel})` : ''
+
+ return `起点:${startLocation.label}${floorSuffix}${sourceSuffix}`
+}
+
+const createPreviewSteps = (
+ poi: MuseumPoi | null,
+ startLocation: GuideStartLocation | null,
+ routeUnavailableMessage: string
+): GuidePreviewStep[] => {
+ if (startLocation) {
+ return [
+ {
+ id: 'start',
+ text: formatStartStepText(startLocation)
+ },
+ {
+ id: 'target',
+ text: poi
+ ? `目标:${poi.floorLabel} · ${poi.primaryCategory.label} · 位置预览`
+ : '目标来自 clean 导览数据,暂仅支持位置预览'
+ }
+ ]
+ }
+
+ return [
+ {
+ id: 'floor',
+ text: poi ? `目标位于 ${poi.floorLabel} · ${poi.primaryCategory.label}` : '目标来自 clean 导览数据'
+ },
+ {
+ id: 'status',
+ text: routeUnavailableMessage
+ }
+ ]
+}
+
+export class GuideUseCase {
+ constructor(
+ private readonly guide: GuideRepository = guideRepository,
+ private readonly guideModel: GuideModelRepository = guideModelRepository
+ ) {}
+
+ getRouteReadiness() {
+ return this.guide.getRouteReadiness()
+ }
+
+ getFloors() {
+ return this.guide.getFloors()
+ }
+
+ getAssetBaseUrl() {
+ return this.guide.getAssetBaseUrl()
+ }
+
+ getModelSource() {
+ return this.guideModel
+ }
+
+ normalizeFloorId(labelOrId: string) {
+ return this.guide.normalizeFloorId(labelOrId)
+ }
+
+ searchPois(keyword?: string) {
+ return this.guide.searchPois(keyword)
+ }
+
+ getPoiById(id: string) {
+ return this.guide.getPoiById(id)
+ }
+
+ async createLocationPreviewPlan(
+ facilityId: string,
+ target: string,
+ startLocation: GuideStartLocation | null = null
+ ): Promise {
+ const poi = facilityId ? await this.guide.getPoiById(facilityId) : null
+ const routeReadiness = this.guide.getRouteReadiness()
+ const targetLocation = poi ? await this.guide.getLocationPreview(poi.id) : null
+
+ return {
+ id: `route-${facilityId || 'custom'}`,
+ facilityId,
+ target: target || poi?.name || '目标地点',
+ summary: poi
+ ? `${poi.floorLabel} · ${poi.primaryCategory.label} · 位置预览`
+ : '位置预览 · 尚未接入正式路线图',
+ steps: createPreviewSteps(poi, startLocation, routeReadiness.message),
+ targetLocation,
+ startLocation
+ }
+ }
+}
+
+export const guideUseCase = new GuideUseCase()
diff --git a/src/utils/dataLoader.ts b/src/utils/dataLoader.ts
deleted file mode 100644
index 675de40..0000000
--- a/src/utils/dataLoader.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Legacy demo data loader.
- *
- * 当前导览模块不要再从 src/assets/data 取数;室内导览、搜索、位置预览
- * 统一使用 src/services/navAssets.ts 读取 clean nav assets。
- * 这里保留给尚未重构的历史演示页面,避免删除造成不可控回归。
- */
-
-// 加载楼层数据
-export const loadFloors = async () => {
- try {
- const data = await import('@/assets/data/floors.json')
- return data.default || data
- } catch (error) {
- console.error('加载楼层数据失败:', error)
- return []
- }
-}
-
-// 加载展厅数据
-export const loadHalls = async () => {
- try {
- const data = await import('@/assets/data/halls.json')
- return data.default || data
- } catch (error) {
- console.error('加载展厅数据失败:', error)
- return []
- }
-}
-
-// 加载展品数据
-export const loadExhibits = async () => {
- try {
- const data = await import('@/assets/data/exhibits.json')
- return data.default || data
- } catch (error) {
- console.error('加载展品数据失败:', error)
- return []
- }
-}
-
-// 加载设施数据
-export const loadFacilities = async () => {
- try {
- const data = await import('@/assets/data/facilities.json')
- return data.default || data
- } catch (error) {
- console.error('加载设施数据失败:', error)
- return []
- }
-}
-
-// 加载路线数据
-export const loadRoutes = async () => {
- try {
- const data = await import('@/assets/data/routes.json')
- return data.default || data
- } catch (error) {
- console.error('加载路线数据失败:', error)
- return []
- }
-}
-
-// 根据 ID 查找展品
-export const findExhibitById = async (id: string) => {
- const exhibits = await loadExhibits()
- return exhibits.find((item: any) => item.id === id)
-}
-
-// 根据 ID 查找展厅
-export const findHallById = async (id: string) => {
- const halls = await loadHalls()
- return halls.find((item: any) => item.id === id)
-}
-
-// 根据 ID 查找设施
-export const findFacilityById = async (id: string) => {
- const facilities = await loadFacilities()
- return facilities.find((item: any) => item.id === id)
-}
-
-// 根据 ID 查找路线
-export const findRouteById = async (id: string) => {
- const routes = await loadRoutes()
- return routes.find((item: any) => item.id === id)
-}
-
-// 根据楼层筛选展厅
-export const filterHallsByFloor = async (floorId: string) => {
- const halls = await loadHalls()
- return halls.filter((item: any) => item.floor === floorId)
-}
-
-// 根据展厅筛选展品
-export const filterExhibitsByHall = async (hallId: string) => {
- const exhibits = await loadExhibits()
- return exhibits.filter((item: any) => item.hallId === hallId)
-}
diff --git a/src/view-models/explainViewModels.ts b/src/view-models/explainViewModels.ts
new file mode 100644
index 0000000..c36c6c2
--- /dev/null
+++ b/src/view-models/explainViewModels.ts
@@ -0,0 +1,90 @@
+import type {
+ MuseumExhibit,
+ MuseumHall,
+ SearchIndexItem
+} from '@/domain/museum'
+
+export interface ExplainExhibitViewModel {
+ id: string
+ name: string
+ hall?: string
+ floor?: string
+ image?: string
+ hasAudio: boolean
+ audioUnavailableReason?: string
+ poiId?: string
+}
+
+export interface ExplainDetailViewModel {
+ id: string
+ name: string
+ artist?: string
+ year?: string
+ material?: string
+ size?: string
+ hall?: string
+ image: string
+ description: string
+ hasAudio: boolean
+ audioUnavailableReason?: string
+ poiId?: string
+}
+
+export interface HallDetailViewModel {
+ id: string
+ name: string
+ floorLabel: string
+ description: string
+ image: string
+ exhibitCount: number
+ area?: string
+ poiId?: string
+}
+
+export const toExplainExhibitViewModel = (exhibit: MuseumExhibit): ExplainExhibitViewModel => ({
+ id: exhibit.id,
+ name: exhibit.name,
+ hall: exhibit.hallName && exhibit.floorLabel
+ ? `${exhibit.hallName} ${exhibit.floorLabel}`
+ : exhibit.hallName || exhibit.floorLabel,
+ floor: exhibit.floorLabel,
+ image: exhibit.image,
+ hasAudio: false,
+ audioUnavailableReason: '正式讲解音频尚未接入媒体仓储',
+ poiId: exhibit.poiId
+})
+
+export const toExplainDetailViewModel = (exhibit: MuseumExhibit): ExplainDetailViewModel => ({
+ id: exhibit.id,
+ name: exhibit.name,
+ artist: exhibit.artist,
+ year: exhibit.year,
+ material: exhibit.material,
+ size: exhibit.size,
+ hall: exhibit.hallName && exhibit.floorLabel
+ ? `${exhibit.hallName} ${exhibit.floorLabel}`
+ : exhibit.hallName || exhibit.floorLabel,
+ image: exhibit.image || '/static/exhibit-placeholder.jpg',
+ description: exhibit.description || '该展项介绍待正式内容库补充。',
+ hasAudio: false,
+ audioUnavailableReason: '正式讲解音频尚未接入媒体仓储',
+ poiId: exhibit.poiId
+})
+
+export const toHallDetailViewModel = (hall: MuseumHall): HallDetailViewModel => ({
+ id: hall.id,
+ name: hall.name,
+ floorLabel: hall.floorLabel || '楼层待补充',
+ description: hall.description || '该展厅介绍待正式内容库补充。',
+ image: hall.image || '/static/hall-placeholder.jpg',
+ exhibitCount: hall.exhibitCount || 0,
+ area: hall.area,
+ poiId: hall.poiId
+})
+
+export const toExplainSearchResultViewModel = (item: SearchIndexItem) => ({
+ id: item.id,
+ name: item.name,
+ desc: item.desc,
+ type: item.type
+})
diff --git a/src/view-models/guideViewModels.ts b/src/view-models/guideViewModels.ts
new file mode 100644
index 0000000..c62cf4e
--- /dev/null
+++ b/src/view-models/guideViewModels.ts
@@ -0,0 +1,70 @@
+import type {
+ GuideLocationPreview,
+ GuideLocationPreviewPlan,
+ MuseumPoi
+} from '@/domain/museum'
+
+export interface FacilityResultViewModel {
+ id: string
+ name: string
+ floor: string
+ meta: string
+ accessible: boolean
+ action: '查看'
+}
+
+export interface FacilityDetailViewModel {
+ id: string
+ name: string
+ status: string
+ location: string
+ traffic: string
+ tags: string[]
+}
+
+export interface TargetPoiFocusRequestViewModel extends GuideLocationPreview {
+ requestId: number | string
+}
+
+export const toFacilityResultViewModel = (poi: MuseumPoi): FacilityResultViewModel => ({
+ id: poi.id,
+ name: poi.name,
+ floor: poi.floorLabel,
+ meta: `${poi.floorLabel}|${poi.primaryCategory.label}|${poi.navigationReadiness || '展示点位'}`,
+ accessible: poi.accessible,
+ action: '查看'
+})
+
+export const toFacilityDetailViewModel = (
+ poi: MuseumPoi,
+ routeUnavailableMessage: string
+): FacilityDetailViewModel => ({
+ id: poi.id,
+ name: poi.name,
+ status: '可预览',
+ location: `${poi.floorLabel} · ${poi.primaryCategory.label}`,
+ traffic: routeUnavailableMessage,
+ tags: [
+ poi.floorLabel,
+ poi.primaryCategory.label,
+ poi.accessible ? '无障碍相关' : '展示点位'
+ ]
+})
+
+export const toTargetFocusRequestViewModel = (
+ targetLocation: GuideLocationPreview,
+ requestId: number | string
+): TargetPoiFocusRequestViewModel => ({
+ ...targetLocation,
+ requestId
+})
+
+export const initialLocationPreviewPlan = (): GuideLocationPreviewPlan => ({
+ id: 'route-custom',
+ facilityId: '',
+ target: '目标地点',
+ summary: '位置预览 · 尚未接入正式路线图',
+ steps: [],
+ targetLocation: null,
+ startLocation: null
+})
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-2.glb b/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-2.glb
deleted file mode 100644
index 3226aa8..0000000
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-2.glb and /dev/null differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.glb b/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.glb
deleted file mode 100644
index 37f3227..0000000
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.glb and /dev/null differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/README.clean_package.md b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/README.clean_package.md
similarity index 60%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/README.clean_package.md
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/README.clean_package.md
index f55d215..d0ed376 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/README.clean_package.md
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/README.clean_package.md
@@ -5,7 +5,7 @@
## 入口
- app_nav_manifest.json
-- building_overview.glb
+- building_overview.glb(无 L 楼层前缀的外墙/建筑外围/装饰对象)
- data/poi_all.json
- data/poi_by_floor/.json
- data/floor_index.json
@@ -13,4 +13,5 @@
## 说明
旧版 17 点 POI 与旧 poi_by_floor 目录没有复制到本包,避免小程序误读。
+models_by_floor/.glb 只包含对象名以对应 L 楼层前缀开头的模型;无 L 前缀对象只进入 building_overview.glb。
POI 坐标前端推荐使用 positionGltf。
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/app_nav_manifest.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/app_nav_manifest.json
similarity index 69%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/app_nav_manifest.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/app_nav_manifest.json
index b33faa3..613c1e1 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/app_nav_manifest.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/app_nav_manifest.json
@@ -1,13 +1,13 @@
{
"schemaVersion": "miniapp-nav-assets-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.467Z",
+ "generatedAt": "2026-06-11T09:36:23.719Z",
"projectRoot": "E:/MyWork/深圳国际艺术馆/lender-museum",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
- "sourcePackage": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_20260609_072638",
- "outputRoot": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_v2_clean_20260609_075339",
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
+ "sourcePackage": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_20260611_093410",
+ "outputRoot": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_v2_clean_20260611_093623",
"safety": {
"opensSwitchesReloadsOrSavesBlend": false,
"writesRouteGraph": false,
@@ -16,6 +16,11 @@
"writesWebModelCurrentSessionGlb": false,
"blenderFree": true
},
+ "modelSeparationPolicy": {
+ "floorModelRule": "models_by_floor/.glb contains only mesh objects whose Blender object names start with that exact L floor prefix",
+ "overviewModelRule": "building_overview.glb contains only no-floor-prefix exterior/envelope/decorative mesh objects",
+ "noZHeuristicForModelExport": true
+ },
"frontendLoadingStrategy": {
"initialView": [
"load app_nav_manifest.json",
@@ -38,82 +43,82 @@
"assets": {
"overviewModel": {
"asset": "building_overview.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/building_overview.glb",
- "bytes": 9602412,
- "sha256": "6df745c8760db68ca5bdd95f91bd523fd29b33998bb7b269ed8453c4762e6050"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/building_overview.glb",
+ "bytes": 3060532,
+ "sha256": "64c5d0f7c82bf7fbdd1094e9c2adf5646c57f6e38666669e8daea77f1fbd0692"
},
"floorModels": [
{
"floorId": "L-2",
"order": -2,
- "objectCount": 55,
+ "objectCount": 65,
"asset": "models_by_floor/L-2.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-2.glb",
- "bytes": 2064656,
- "sha256": "72ba73e98b56e27875f8b8168e09f171cc3eb10b9208c8cc7970644d33a78198"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-2.glb",
+ "bytes": 4380824,
+ "sha256": "3e7179f0b0aa6e4be9bdd9941814843762d20c496c1f0e84a59181f5925cc43a"
},
{
"floorId": "L-1",
"order": -1,
- "objectCount": 49,
+ "objectCount": 50,
"asset": "models_by_floor/L-1.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-1.glb",
- "bytes": 1601948,
- "sha256": "617f958d17232938f26239f6fd3051894cae9d5a0e6fe9de526ecce03acf9db9"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-1.glb",
+ "bytes": 1604640,
+ "sha256": "d0a9ee315722d44c6bd62e3275f7af582de23ffe5a8017eacf07b28b7a4f247a"
},
{
"floorId": "L1",
"order": 1,
- "objectCount": 90,
+ "objectCount": 94,
"asset": "models_by_floor/L1.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.glb",
- "bytes": 3992740,
- "sha256": "d1bf105c00bf7fa724d82dc8ac7c067c29dadc991dd550d404d4f3a75bab72cb"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.glb",
+ "bytes": 8550188,
+ "sha256": "315c8d325cda7de5f0650114e64b5ccd8279ae1b3155fd176caf313ee7dd1e50"
},
{
"floorId": "L1.5",
"order": 1.5,
"objectCount": 26,
"asset": "models_by_floor/L1.5.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.5.glb",
- "bytes": 1144212,
- "sha256": "6f372715c1837ec670cbfdfe2cee70bb1d11b2b6479ab95df81f0f863a00ad29"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.5.glb",
+ "bytes": 1128032,
+ "sha256": "43e82bf2c77fd961850644daf47e1222c1c1e58f850b696376c7e526e4cea7d0"
},
{
"floorId": "L2",
"order": 2,
- "objectCount": 50,
+ "objectCount": 58,
"asset": "models_by_floor/L2.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L2.glb",
- "bytes": 1595720,
- "sha256": "ca1581e89127275018d7402d1bbe0197b6aa28f0a77257bfe3bfffacf226b397"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L2.glb",
+ "bytes": 2165388,
+ "sha256": "481073fe17868f6fb3a563cd4f3d696da66a9e0c3db2c59485c96f1b41ba7e47"
},
{
"floorId": "L3",
"order": 3,
- "objectCount": 22,
+ "objectCount": 18,
"asset": "models_by_floor/L3.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L3.glb",
- "bytes": 3692804,
- "sha256": "f5099d6572dd4daf4f170678939839bb7b4f8a31fb5fe74eaaabc587cc31b21f"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L3.glb",
+ "bytes": 821016,
+ "sha256": "f9985fb5c7a7442be658a0359874e96a8f5155c7970bdf1933fa6f5f035c5d21"
},
{
"floorId": "L4",
"order": 4,
"objectCount": 36,
"asset": "models_by_floor/L4.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L4.glb",
- "bytes": 1073744,
- "sha256": "2f6c181ed840b4384878c9d3e138a865d3d355f7c17d65e8b48092875276181e"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L4.glb",
+ "bytes": 1073656,
+ "sha256": "9e86746cec793f3ae5dbfa57a3471cf231e9e2a686b9efa797df28182e6ffae4"
},
{
"floorId": "L5",
"order": 5,
- "objectCount": 15,
+ "objectCount": 14,
"asset": "models_by_floor/L5.glb",
- "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L5.glb",
- "bytes": 911340,
- "sha256": "ca0aa271996842ae083f96aebeaffac46b4a0499ab901046d7aaeb60c282fcdb"
+ "relativePath": "evidence/runs/codex_nav_20260607_reloaded_223947/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L5.glb",
+ "bytes": 751904,
+ "sha256": "6dbe090d31a13edee95f860e032db214cdccf20786efc326a90e5e437d46933f"
}
]
},
@@ -124,15 +129,15 @@
"poiByFloor": {
"L-2": {
"asset": "data/poi_by_floor/L-2.json",
- "poiCount": 52
+ "poiCount": 62
},
"L-1": {
"asset": "data/poi_by_floor/L-1.json",
- "poiCount": 46
+ "poiCount": 47
},
"L1": {
"asset": "data/poi_by_floor/L1.json",
- "poiCount": 78
+ "poiCount": 81
},
"L1.5": {
"asset": "data/poi_by_floor/L1.5.json",
@@ -140,11 +145,11 @@
},
"L2": {
"asset": "data/poi_by_floor/L2.json",
- "poiCount": 47
+ "poiCount": 55
},
"L3": {
"asset": "data/poi_by_floor/L3.json",
- "poiCount": 16
+ "poiCount": 15
},
"L4": {
"asset": "data/poi_by_floor/L4.json",
@@ -170,27 +175,27 @@
"L4",
"L5"
],
- "overviewObjectCount": 45,
- "poiCount": 298,
- "sourceEnhancedPoiCount": 294,
- "supplementalPoiCount": 4,
+ "overviewObjectCount": 5,
+ "poiCount": 319,
+ "sourceEnhancedPoiCount": 316,
+ "supplementalPoiCount": 3,
"poiCountByFloor": {
- "L-2": 52,
- "L-1": 46,
- "L1": 78,
+ "L-2": 62,
+ "L-1": 47,
+ "L1": 81,
"L1.5": 21,
- "L2": 47,
- "L3": 16,
+ "L2": 55,
+ "L3": 15,
"L4": 27,
"L5": 11
},
"poiCountByCategory": {
- "touring_poi": 17,
- "basic_service_facility": 47,
- "transport_circulation": 229,
+ "touring_poi": 34,
+ "basic_service_facility": 57,
+ "transport_circulation": 232,
"accessibility_special_service": 10,
"safety_management": 0,
- "operation_experience": 8
+ "operation_experience": 7
},
"connectorEndpointCount": 10
},
@@ -209,14 +214,6 @@
"primaryCategory": "operation_experience",
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation"
},
- {
- "id": "supplemental_919d93c114",
- "name": "楼顶绿化",
- "sourceObjectName": "楼顶绿化",
- "floorId": "L3",
- "primaryCategory": "operation_experience",
- "navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation"
- },
{
"id": "supplemental_306932bd08",
"name": "L1 室外水景",
@@ -238,6 +235,7 @@
"该 clean 包只保留前端应该读取的 canonical POI 数据,不再包含旧版 poi_all.json / poi_by_floor。",
"data/poi_all.json 已是增强版 POI,不是旧 17 点版本。",
"data/poi_by_floor/.json 覆盖每个模型楼层,包括 L-1。",
- "补充的景观/公共空间点位来自模型 bbox center,适合展示和搜索;精确路线需要后续 NAV anchor。"
+ "补充的景观/公共空间点位来自模型 bbox center,适合展示和搜索;精确路线需要后续 NAV anchor。",
+ "本 strict_floor_prefix 包不会把无 L 前缀的外墙、建筑外围或装饰对象归入任何楼层 GLB。"
]
}
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L3.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/building_overview.glb
similarity index 79%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L3.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/building_overview.glb
index c186616..9f981ec 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L3.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/building_overview.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/clean_package_audit.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/clean_package_audit.json
similarity index 70%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/clean_package_audit.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/clean_package_audit.json
index 5f095bd..e7b1f88 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/clean_package_audit.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/clean_package_audit.json
@@ -3,11 +3,11 @@
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"sourceInvocation": "clean_app_nav_assets_v2_audit",
- "outputRoot": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_v2_clean_20260609_075339",
+ "outputRoot": "E:\\MyWork\\深圳国际艺术馆\\lender-museum\\evidence\\runs\\codex_nav_20260607_reloaded_223947\\app_nav_assets_v2_clean_20260611_093623",
"checks": {
"noLegacyPoiByFloorDir": true,
"noLegacyEnhancedAlias": true,
- "canonicalPoiAllCount": 298,
+ "canonicalPoiAllCount": 319,
"allFloorPoiFilesExist": true,
"floorIndexUsesCanonicalPoiByFloor": true,
"nullPositionCount": 0,
@@ -25,27 +25,27 @@
"L4",
"L5"
],
- "overviewObjectCount": 45,
- "poiCount": 298,
- "sourceEnhancedPoiCount": 294,
- "supplementalPoiCount": 4,
+ "overviewObjectCount": 5,
+ "poiCount": 319,
+ "sourceEnhancedPoiCount": 316,
+ "supplementalPoiCount": 3,
"poiCountByFloor": {
- "L-2": 52,
- "L-1": 46,
- "L1": 78,
+ "L-2": 62,
+ "L-1": 47,
+ "L1": 81,
"L1.5": 21,
- "L2": 47,
- "L3": 16,
+ "L2": 55,
+ "L3": 15,
"L4": 27,
"L5": 11
},
"poiCountByCategory": {
- "touring_poi": 17,
- "basic_service_facility": 47,
- "transport_circulation": 229,
+ "touring_poi": 34,
+ "basic_service_facility": 57,
+ "transport_circulation": 232,
"accessibility_special_service": 10,
"safety_management": 0,
- "operation_experience": 8
+ "operation_experience": 7
},
"connectorEndpointCount": 10
}
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/connector_endpoints.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/connector_endpoints.json
similarity index 99%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/connector_endpoints.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/connector_endpoints.json
index bc76da7..d866138 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/connector_endpoints.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/connector_endpoints.json
@@ -1,6 +1,6 @@
{
"schemaVersion": "miniapp-connector-endpoints-clean-2.0",
- "generatedAt": "2026-06-09T07:26:41.747324+00:00",
+ "generatedAt": "2026-06-11T09:34:13.839693+00:00",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/floor_index.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/floor_index.json
similarity index 86%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/floor_index.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/floor_index.json
index afcd6d3..71f383c 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/floor_index.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/floor_index.json
@@ -1,6 +1,6 @@
{
"schemaVersion": "miniapp-floor-index-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.466Z",
+ "generatedAt": "2026-06-11T09:36:23.719Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
@@ -9,25 +9,25 @@
"floorId": "L-2",
"order": -2,
"modelAsset": "models_by_floor/L-2.glb",
- "objectCount": 55,
+ "objectCount": 65,
"poiDataAsset": "data/poi_by_floor/L-2.json",
- "poiCount": 52
+ "poiCount": 62
},
{
"floorId": "L-1",
"order": -1,
"modelAsset": "models_by_floor/L-1.glb",
- "objectCount": 49,
+ "objectCount": 50,
"poiDataAsset": "data/poi_by_floor/L-1.json",
- "poiCount": 46
+ "poiCount": 47
},
{
"floorId": "L1",
"order": 1,
"modelAsset": "models_by_floor/L1.glb",
- "objectCount": 90,
+ "objectCount": 94,
"poiDataAsset": "data/poi_by_floor/L1.json",
- "poiCount": 78
+ "poiCount": 81
},
{
"floorId": "L1.5",
@@ -41,17 +41,17 @@
"floorId": "L2",
"order": 2,
"modelAsset": "models_by_floor/L2.glb",
- "objectCount": 50,
+ "objectCount": 58,
"poiDataAsset": "data/poi_by_floor/L2.json",
- "poiCount": 47
+ "poiCount": 55
},
{
"floorId": "L3",
"order": 3,
"modelAsset": "models_by_floor/L3.glb",
- "objectCount": 22,
+ "objectCount": 18,
"poiDataAsset": "data/poi_by_floor/L3.json",
- "poiCount": 16
+ "poiCount": 15
},
{
"floorId": "L4",
@@ -65,7 +65,7 @@
"floorId": "L5",
"order": 5,
"modelAsset": "models_by_floor/L5.glb",
- "objectCount": 15,
+ "objectCount": 14,
"poiDataAsset": "data/poi_by_floor/L5.json",
"poiCount": 11
}
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.csv b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.csv
similarity index 86%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.csv
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.csv
index e1325e5..a233107 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.csv
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.csv
@@ -1,17 +1,25 @@
id,name,floorId,primaryCategory,primaryCategoryZh,iconType,sourceObjectName,positionGltfX,positionGltfY,positionGltfZ,coordinateSource,navigationReadiness
-modelpoi_L-2_492e987660,L-2 母婴室,L-2,accessibility_special_service,无障碍与特殊人群服务,nursery,L-2_母婴室,-51.175003,-14.191206,39.344395,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_433ee81108,L-2 男卫生间01,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间01,-82.988602,-14.491209,43.190712,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_673c254e4d,L-2 男卫生间02,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间02,-18.808712,-14.491209,19.713522,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_1468d92dfd,L-2 男卫生间04,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间04,57.642273,-14.491209,24.258451,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_a38a8c488e,L-2 女卫生间01,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间01,-91.456207,-14.491209,38.036762,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_b94325224a,L-2 女卫生间02,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间02,-30.663593,-14.491209,14.251428,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_e2cac3d857,L-2 女卫生间03,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间03,16.534239,-14.491209,25.273596,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_d36fe2dc9d,L-2 女卫生间03.001,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间03.001,32.573727,-14.491209,24.407684,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_c0855378b9,L-2 女卫生间04,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间04,68.159348,-14.491209,27.444523,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_492e987660,L-2 母婴室,L-2,accessibility_special_service,无障碍与特殊人群服务,nursery,L-2_母婴室,-51.175003,-13.147993,39.344395,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_433ee81108,L-2 男卫生间01,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间01,-82.988602,-13.447996,43.190712,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_673c254e4d,L-2 男卫生间02,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间02,-18.808712,-13.447996,19.713522,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_1468d92dfd,L-2 男卫生间04,L-2,basic_service_facility,基础服务设施,restroom,L-2_男卫生间04,57.642273,-13.447996,24.258451,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_a38a8c488e,L-2 女卫生间01,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间01,-91.456207,-13.447996,38.036762,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_b94325224a,L-2 女卫生间02,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间02,-30.663593,-13.447996,14.251428,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_e2cac3d857,L-2 女卫生间03,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间03,16.534239,-13.447996,25.273596,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_d36fe2dc9d,L-2 女卫生间03.001,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间03.001,32.573727,-13.447996,24.407684,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_c0855378b9,L-2 女卫生间04,L-2,basic_service_facility,基础服务设施,restroom,L-2_女卫生间04,68.159348,-13.447996,27.444523,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0009,L-2 展厅1宇宙厅,L-2,touring_poi,游览 POI,exhibition,L-2_展厅1宇宙厅,-90.488953,-14.388401,44.977547,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L-2_1fa3680520,L-2 展厅1宇宙厅 展柜,L-2,touring_poi,游览 POI,exhibition,L-2_展厅1宇宙厅_展柜,-87.730865,-13.891212,54.098366,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_0328e49a57,L-2 展厅1宇宙厅 装饰,L-2,touring_poi,游览 POI,exhibition,L-2_展厅1宇宙厅_装饰,-90.488953,-11.498024,44.977547,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0010,L-2 展厅2地球厅,L-2,touring_poi,游览 POI,exhibition,L-2_展厅2地球厅,-17.07975,-14.388401,-8.416769,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L-2_e2ec8ce8ba,L-2 展厅2地球厅 展柜,L-2,touring_poi,游览 POI,exhibition,L-2_展厅2地球厅_展柜,-17.069817,-13.827784,-8.752005,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_f23816be84,L-2 展厅2地球厅 装饰,L-2,touring_poi,游览 POI,exhibition,L-2_展厅2地球厅_装饰,-17.07975,-11.498024,-8.416769,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0008,L-2 展厅3演化厅,L-2,touring_poi,游览 POI,exhibition,L-2_展厅3演化厅,25.952524,-14.388403,51.155842,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L-2_34bbb3d9d4,L-2 展厅3演化厅 展柜,L-2,touring_poi,游览 POI,exhibition,L-2_展厅3演化厅_展柜,25.310183,-13.89121,51.903332,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_a2d90df88c,L-2 展厅3演化厅 装饰,L-2,touring_poi,游览 POI,exhibition,L-2_展厅3演化厅_装饰,25.952511,-11.48424,51.155872,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0007,L-2 展厅4恐龙厅,L-2,touring_poi,游览 POI,exhibition,L-2_展厅4恐龙厅,69.308327,-14.388403,-0.631475,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L-2_f877db497b,L-2 展厅4恐龙厅 展柜,L-2,touring_poi,游览 POI,exhibition,L-2_展厅4恐龙厅_展柜,69.237717,-13.987548,-0.634724,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_81c1403384,L-2 展厅4恐龙厅 装饰,L-2,touring_poi,游览 POI,exhibition,L-2_展厅4恐龙厅_装饰,70.205048,-7.689972,2.088411,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-2_ae5be493c0,L-2 电梯0001,L-2,transport_circulation,交通与通行动线,elevator,L-2_电梯0001,34.112198,-13.127687,77.432434,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-2_e628190832,L-2 电梯0002,L-2,transport_circulation,交通与通行动线,elevator,L-2_电梯0002,48.350098,-12.874514,67.133812,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-2_a1322a6c4d,L-2 电梯0003,L-2,transport_circulation,交通与通行动线,elevator,L-2_电梯0003,90.601959,-12.863037,49.503075,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -32,25 +40,27 @@ modelpoi_L-2_a7f866a09a,L-2 电梯0017,L-2,transport_circulation,交通与通行
modelpoi_L-2_0d88e71c27,L-2 电梯0018,L-2,transport_circulation,交通与通行动线,elevator,L-2_电梯0018,-99.716293,-12.873795,12.790838,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-2_ca23f27f00,L-2 电梯0019,L-2,transport_circulation,交通与通行动线,elevator,L-2_电梯0019,-100.377762,-12.873795,9.507727,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-2_73874acb68,L-2 扶梯,L-2,transport_circulation,交通与通行动线,escalator,L-2_扶梯,67.947716,-12.484815,42.180843,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_77bdede69c,L-2 楼梯0001,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0001,-113.980553,-14.191214,15.791812,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_d6275be404,L-2 楼梯0002,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0002,-125.09758,-14.191216,44.947601,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_d9df5eab1e,L-2 楼梯0003,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0003,-105.471481,-14.19121,-80.607361,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_3dd779ffc4,L-2 楼梯0004,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0004,-119.36657,-14.19121,-77.92852,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_bcfbe38b8c,L-2 楼梯0005,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0005,-118.673454,-14.191213,-19.434433,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_f5a71cd735,L-2 楼梯0006,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0006,-96.47963,-14.191214,1.494661,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_acacdf7cd3,L-2 楼梯0007,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0007,-34.926815,-14.191212,-27.636536,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_706e6e65ea,L-2 楼梯0008,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0008,-54.706528,-14.191216,59.089958,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_586f1dcb89,L-2 楼梯0009,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0009,-62.075691,-14.191199,69.846909,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_5e6d33b390,L-2 楼梯0010,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0010,-78.359177,-14.191216,79.284683,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_a158651e42,L-2 楼梯0011,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0011,-51.635437,-14.191216,48.365948,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_4d987dbec1,L-2 楼梯0012,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0012,-2.737168,-14.191216,53.378433,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_ff21400c01,L-2 楼梯0013,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0013,91.222206,-14.191216,58.967903,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_990fd35b22,L-2 楼梯0014,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0014,93.295212,-14.191216,42.003674,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_49592f09b2,L-2 楼梯0015,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0015,94.548233,-14.191213,-5.112744,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_a9c1ecac07,L-2 楼梯0016,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0016,46.435764,-14.191214,-3.948162,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_7a4fb7e3e7,L-2 楼梯0017,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0017,45.298622,-14.191214,4.789413,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_5250437db8,L-2 楼梯0018,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0018,53.007278,-14.191216,58.379272,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L-2_84885548c6,L-2 停车位,L-2,transport_circulation,交通与通行动线,parking,L-2_停车位,-13.833179,-14.191204,10.672264,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_77bdede69c,L-2 楼梯0001,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0001,-113.980553,-13.148001,15.791812,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_d6275be404,L-2 楼梯0002,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0002,-125.09758,-13.148003,44.947601,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_d9df5eab1e,L-2 楼梯0003,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0003,-105.471481,-13.147997,-80.607361,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_3dd779ffc4,L-2 楼梯0004,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0004,-119.36657,-13.147997,-77.92852,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_bcfbe38b8c,L-2 楼梯0005,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0005,-118.673454,-13.148,-19.434433,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_f5a71cd735,L-2 楼梯0006,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0006,-96.47963,-13.148001,1.494661,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_acacdf7cd3,L-2 楼梯0007,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0007,-34.926815,-13.147999,-27.636536,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_706e6e65ea,L-2 楼梯0008,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0008,-54.706528,-13.148003,59.089958,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_586f1dcb89,L-2 楼梯0009,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0009,-62.075691,-13.147986,69.846909,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_5e6d33b390,L-2 楼梯0010,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0010,-78.359177,-13.148004,79.284683,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_a158651e42,L-2 楼梯0011,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0011,-51.635437,-13.148003,48.365948,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_4d987dbec1,L-2 楼梯0012,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0012,-2.737168,-13.148003,53.378433,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_ff21400c01,L-2 楼梯0013,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0013,91.222206,-13.148003,58.967903,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_990fd35b22,L-2 楼梯0014,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0014,93.295212,-13.148003,42.003674,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_49592f09b2,L-2 楼梯0015,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0015,94.548233,-13.148,-5.112744,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_a9c1ecac07,L-2 楼梯0016,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0016,46.435764,-13.148001,-3.948162,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_7a4fb7e3e7,L-2 楼梯0017,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0017,45.298622,-13.148001,4.789413,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_5250437db8,L-2 楼梯0018,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0018,53.007278,-13.148003,58.379272,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_482544cba6,L-2 楼梯0019,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0019,-91.555466,-11.787357,46.893166,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_5753e93667,L-2 楼梯0020,L-2,transport_circulation,交通与通行动线,stair,L-2_楼梯0020,-77.065353,-11.787357,46.893166,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-2_84885548c6,L-2 停车位,L-2,transport_circulation,交通与通行动线,parking,L-2_停车位,-13.833179,-14.391253,10.672264,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_14ec89b181,L-1 球幕影院,L-1,touring_poi,游览 POI,theater,L-1_球幕影院,0.941269,-10.898361,-4.725914,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_e98e1e7579,L-1 电梯0001,L-1,transport_circulation,交通与通行动线,elevator,L-1_电梯0001,-99.961014,-9.296165,9.723492,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_31bfe24f01,L-1 电梯0002,L-1,transport_circulation,交通与通行动线,elevator,L-1_电梯0002,87.788162,-9.28541,49.793114,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -96,6 +106,7 @@ modelpoi_L-1_5b96f2b36e,L-1 楼梯0021,L-1,transport_circulation,交通与通行
modelpoi_L-1_c2152945b5,L-1 楼梯0022,L-1,transport_circulation,交通与通行动线,stair,L-1_楼梯0022,-118.173111,-10.669845,-18.677877,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_d10fc5993f,L-1 楼梯0023,L-1,transport_circulation,交通与通行动线,stair,L-1_楼梯0023,-105.15239,-10.669839,-79.589508,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_7639982b98,L-1 楼梯0024,L-1,transport_circulation,交通与通行动线,stair,L-1_楼梯0024,-119.786385,-10.669839,-77.311356,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L-1_04e400880b,L-1 楼梯0025,L-1,transport_circulation,交通与通行动线,stair,L-1_楼梯0025,-13.88942,-10.669846,-5.084072,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L-1_e3aff063cb,L-1 停车场地面,L-1,transport_circulation,交通与通行动线,parking,L-1_停车场地面,85.808472,-10.834019,67.684715,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_19555b8890,L1 轮椅及儿童车租赁,L1,accessibility_special_service,无障碍与特殊人群服务,rental,L1_轮椅及儿童车租赁,-65.994453,0.058651,15.326918,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_55e995bb4d,L1 母婴间,L1,accessibility_special_service,无障碍与特殊人群服务,nursery,L1_母婴间,-95.211792,0.058651,26.434822,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -111,10 +122,11 @@ modelpoi_L1_a89f999ce8,L1 男卫生间02,L1,basic_service_facility,基础服务
modelpoi_L1_8045e85848,L1 女卫生间,L1,basic_service_facility,基础服务设施,restroom,L1_女卫生间,-70.903793,0.258651,24.592087,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_170ebd7038,L1 女卫生间01,L1,basic_service_facility,基础服务设施,restroom,L1_女卫生间01,131.002686,0.25865,38.265602,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_90b628a1d5,L1 女卫生间02,L1,basic_service_facility,基础服务设施,restroom,L1_女卫生间02,49.345047,0.258652,11.62169,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_11ae2666ee,L1 售票机,L1,basic_service_facility,基础服务设施,ticket,L1_售票机,17.294315,1,24.678955,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_f41223bb9c,L1 贵宾接待区,L1,operation_experience,运营体验类点位,vip,L1_贵宾接待区,-77.729813,0.058651,19.560249,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-supplemental_b23c543281,L1 室外绿化,L1,operation_experience,运营体验类点位,landscape,L1_室外绿化,3.996948,0.172545,-0.012264,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
-supplemental_306932bd08,L1 室外水景,L1,operation_experience,运营体验类点位,photo,L1_室外水景,22.258747,-0.488044,-0.367207,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
-supplemental_cc67428117,L1 室外下沉广场,L1,operation_experience,运营体验类点位,plaza,L1_室外下沉广场,31.983009,-2.810548,-12.300758,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
+supplemental_b23c543281,L1 室外绿化,L1,operation_experience,运营体验类点位,landscape,L1_室外绿化,4.52948,0.172545,-0.231293,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
+supplemental_306932bd08,L1 室外水景,L1,operation_experience,运营体验类点位,photo,L1_室外水景,23.06905,0.274697,-0.831573,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
+supplemental_cc67428117,L1 室外下沉广场,L1,operation_experience,运营体验类点位,plaza,L1_室外下沉广场,32.247353,-2.810548,-12.300758,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
modelpoi_L1_350cd0e084,L1 动感多维影院,L1,touring_poi,游览 POI,theater,L1_动感多维影院,37.22998,0.058651,45.027328,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_9ba9a658bb,L1 巨幕影院,L1,touring_poi,游览 POI,theater,L1_巨幕影院,16.42691,0.058651,45.047546,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0003,L1 临展厅01,L1,touring_poi,游览 POI,exhibition,L1_临展厅01,-78.678642,0,-30.900698,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
@@ -122,6 +134,8 @@ poi_navpoi_0014,L1 临展厅02,L1,touring_poi,游览 POI,exhibition,L1_临展厅
modelpoi_L1_d2b5d8b621,L1 球幕影院,L1,touring_poi,游览 POI,theater,L1_球幕影院,1.775749,3.377288,-5.777876,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0002,L1 展厅5人类厅,L1,touring_poi,游览 POI,exhibition,L1_展厅5人类厅,112.822556,-0.000004,51.974705,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
modelpoi_L1_4e1111c7b1,L1 自然剧场,L1,touring_poi,游览 POI,theater,L1_自然剧场,24.2363,0.05865,65.833115,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_bce5578bda,L1 L1 展厅5人类厅 装饰01,L1,touring_poi,游览 POI,exhibition,L1_L1_展厅5人类厅_装饰01,112.835953,2.864931,51.190968,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_d6bfac9efe,L1 L1 展厅5人类厅 装饰02,L1,touring_poi,游览 POI,exhibition,L1_L1_展厅5人类厅_装饰02,112.655197,3.820072,51.249493,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_45de13b368,L1 电梯0001,L1,transport_circulation,交通与通行动线,elevator,L1_电梯0001,-100.345444,1.526052,9.748894,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_aae15a9bf4,L1 电梯0002,L1,transport_circulation,交通与通行动线,elevator,L1_电梯0002,86.457626,1.526052,9.073389,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_874fe33d28,L1 电梯0003,L1,transport_circulation,交通与通行动线,elevator,L1_电梯0003,79.746368,1.526052,17.265091,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -145,7 +159,6 @@ modelpoi_L1_d22f4e53ae,L1 电梯0020,L1,transport_circulation,交通与通行动
modelpoi_L1_5338a76c2c,L1 电梯0021,L1,transport_circulation,交通与通行动线,elevator,L1_电梯0021,-99.683975,1.526052,13.032006,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_b3347e28c9,L1 扶梯,L1,transport_circulation,交通与通行动线,escalator,L1_扶梯,81.070969,-0.552914,36.499767,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_84fb77260b,L1 楼梯0001,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0001,-113.303513,0.217286,15.44129,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L1_a4a00c978d,L1 楼梯0002,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0002,-118.638206,0.217286,-19.517469,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_360cce5a19,L1 楼梯0003,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0003,-34.709263,0.300862,-27.007214,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_12b7990225,L1 楼梯0004,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0004,-51.784405,0.300859,43.113773,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_87efe86522,L1 楼梯0005,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0005,90.36853,0.296874,-5.492186,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -169,9 +182,10 @@ modelpoi_L1_4247dcb42a,L1 楼梯0022,L1,transport_circulation,交通与通行动
modelpoi_L1_2ce36ed339,L1 楼梯0023,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0023,-123.082703,0.217286,29.087791,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_9461bfead0,L1 楼梯0024,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0024,-125.829529,0.217285,45.41563,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_8a9434da15,L1 楼梯0025,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0025,-73.533424,0.25,63.954227,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L1_9a31638f63,L1 楼梯0026,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0026,-127.951675,0.217286,-2.199766,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L1_fa423c9ad0,L1 楼梯0027,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0027,-104.784119,0.217286,-81.176064,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L1_7d0051d2a6,L1 楼梯0028,L1,transport_circulation,交通与通行动线,stair,L1_楼梯0028,-119.274986,0,-78.993362,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_5655c264c1,L1 室外楼梯0001,L1,transport_circulation,交通与通行动线,stair,L1_室外楼梯0001,-104.784119,0.217286,-81.176064,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_6fa8f94e0d,L1 室外楼梯0002,L1,transport_circulation,交通与通行动线,stair,L1_室外楼梯0002,-119.274986,0,-78.993362,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_9d38633ca9,L1 室外楼梯0003,L1,transport_circulation,交通与通行动线,stair,L1_室外楼梯0003,-118.638206,0.217286,-19.517469,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L1_3936c7e2b1,L1 室外楼梯0004,L1,transport_circulation,交通与通行动线,stair,L1_室外楼梯0004,-127.951675,0.217286,-2.199766,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_a6652685b8,L1 停车场,L1,transport_circulation,交通与通行动线,parking,L1_停车场,-126.124298,0,-16.088915,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_9611467f0f,L1 停车场入口,L1,transport_circulation,交通与通行动线,parking,L1_停车场入口,-117.349075,-2.64097,-76.993629,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L1_ce023b99e4,L1 停车场入口02,L1,transport_circulation,交通与通行动线,parking,L1_停车场入口02,72.57579,-4.072168,72.416092,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -202,10 +216,18 @@ modelpoi_L2_a5009070bb,L2 男卫生间001,L2,basic_service_facility,基础服务
modelpoi_L2_2d14073a06,L2 男卫生间002,L2,basic_service_facility,基础服务设施,restroom,L2_男卫生间002,8.952654,10.273865,-1.457422,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_4470473302,L2 女卫生间001,L2,basic_service_facility,基础服务设施,restroom,L2_女卫生间001,-92.132439,10.558371,37.83683,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_e9fc021625,L2 女卫生间002,L2,basic_service_facility,基础服务设施,restroom,L2_女卫生间002,4.273729,10.273865,4.899143,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_9267c2d1d4,L2 卫生间,L2,basic_service_facility,基础服务设施,restroom,L2_卫生间,52.255562,10.273865,9.283119,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_f362d56eba,L2 文创店旗舰店,L2,basic_service_facility,基础服务设施,shop,L2_文创店旗舰店,-70.947243,10.178164,38.432304,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0006,L2 展厅 6生物厅,L2,touring_poi,游览 POI,exhibition,L2_展厅_6生物厅,69.074303,10.178165,1.496778,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L2_ecd476d1be,L2 展厅 6生物厅 展柜01,L2,touring_poi,游览 POI,exhibition,L2_展厅_6生物厅_展柜01,69.279694,10.281687,5.825405,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_d93b7e7a22,L2 展厅 6生物厅 展柜02,L2,touring_poi,游览 POI,exhibition,L2_展厅_6生物厅_展柜02,69.861053,10.594574,5.292932,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_bf6262807a,L2 展厅 6生物厅 装饰,L2,touring_poi,游览 POI,exhibition,L2_展厅_6生物厅_装饰,69.074303,13.479435,1.496778,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0005,L2 展厅 7生态厅,L2,touring_poi,游览 POI,exhibition,L2_展厅_7生态厅,24.894789,10.178165,53.795837,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L2_2fea6b6cff,L2 展厅 7生态厅 展柜,L2,touring_poi,游览 POI,exhibition,L2_展厅_7生态厅_展柜,25.018467,10.511989,53.729153,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_91de093d1e,L2 展厅 7生态厅 装饰,L2,touring_poi,游览 POI,exhibition,L2_展厅_7生态厅_装饰,24.894787,13.408146,53.795837,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
poi_navpoi_0004,L2 展厅 8家园厅,L2,touring_poi,游览 POI,exhibition,L2_展厅_8家园厅,-13.14613,10.178164,-10.430546,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
+modelpoi_L2_8b43a8a2a8,L2 展厅 8家园厅 展柜,L2,touring_poi,游览 POI,exhibition,L2_展厅_8家园厅_展柜,-12.998978,10.478165,-10.578304,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_83406e72e2,L2 展厅 8家园厅 装饰,L2,touring_poi,游览 POI,exhibition,L2_展厅_8家园厅_装饰,-13.14613,13.373477,-10.430546,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_4e0d3ab858,L2 电梯0001,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0001,-100.345444,11.510569,9.748894,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_768d09579a,L2 电梯0002,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0002,86.457626,11.510569,9.073389,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_9d3633cb8c,L2 电梯0003,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0003,79.746368,11.510569,17.265091,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -222,17 +244,17 @@ modelpoi_L2_69b6036c36,L2 电梯0013,L2,transport_circulation,交通与通行动
modelpoi_L2_50d761d668,L2 电梯0014,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0014,-89.315796,11.510569,36.826317,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_8144b8df38,L2 电梯0015,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0015,-88.703072,11.510569,33.007458,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_580aca14fe,L2 电梯0016,L2,transport_circulation,交通与通行动线,elevator,L2_电梯0016,-99.683975,11.510569,13.032006,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_9040c9507a,L2 电梯017,L2,transport_circulation,交通与通行动线,elevator,L2_电梯017,60.687622,11.510571,19.346493,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_041990743f,L2 扶梯001,L2,transport_circulation,交通与通行动线,escalator,L2_扶梯001,94.99762,8.514649,36.362118,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_5b3ad4268d,L2 楼梯0001,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0001,49.78883,10.178167,-2.614235,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_579220538a,L2 楼梯0002,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0002,47.912979,10.178167,-3.191393,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_579220538a,L2 楼梯0002,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0002,48.342949,10.178167,-2.291168,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_e8eb126078,L2 楼梯0003,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0003,95.642593,10.178164,58.023407,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_aacd33c979,L2 楼梯0004,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0004,89.312012,10.178167,1.252304,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_75beeb2694,L2 楼梯0005,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0005,87.619148,10.178167,-5.131519,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_dfc31aec44,L2 楼梯0006,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0006,47.859646,10.178166,3.881408,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_aacd33c979,L2 楼梯0004,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0004,89.507751,10.178167,1.233227,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_75beeb2694,L2 楼梯0005,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0005,87.892075,10.178167,-4.699806,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_dfc31aec44,L2 楼梯0006,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0006,47.717403,10.178167,3.410032,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_67c8408dca,L2 楼梯0007,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0007,41.546097,10.178164,69.148041,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_fbfebb3318,L2 楼梯0008,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0008,49.141712,10.178164,57.450394,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_600395b893,L2 楼梯0009,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0009,0.464776,10.178164,52.972031,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-modelpoi_L2_220658455e,L2 楼梯0010,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0010,-4.680887,10.178166,10.44739,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
+modelpoi_L2_220658455e,L2 楼梯0010,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0010,-3.329174,10.178166,9.639655,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_2493f07479,L2 楼梯0011,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0011,-124.356628,10.178165,45.499649,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_f55d36b16e,L2 楼梯0012,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0012,-120.651779,10.178165,30.800243,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L2_8f3d7a0d43,L2 楼梯0013,L2,transport_circulation,交通与通行动线,stair,L2_楼梯0013,-111.083786,10.178166,18.195475,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
@@ -246,7 +268,6 @@ modelpoi_L2_50f2c5fe7f,L2 楼梯0020,L2,transport_circulation,交通与通行动
poi_navpoi_0016,L3 无障碍卫生间,L3,accessibility_special_service,无障碍与特殊人群服务,accessibility,L3_无障碍卫生间,-88.936966,16.489281,42.595558,nav_data.navAnchors.policy_approved_machine_verified_nav_layer,nav_anchor_available
modelpoi_L3_73737c95dc,L3 男卫生间,L3,basic_service_facility,基础服务设施,restroom,L3_男卫生间,-83.324158,16.540436,43.138031,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L3_7ead513df1,L3 女卫生间,L3,basic_service_facility,基础服务设施,restroom,L3_女卫生间,-91.718369,16.540436,37.972088,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
-supplemental_919d93c114,楼顶绿化,L3,operation_experience,运营体验类点位,landscape,楼顶绿化,6.860313,16.841034,-5.471432,model_object_bbox_center_candidate,display_candidate_requires_access_or_nav_anchor_confirmation
modelpoi_L3_293d59fa33,L3 电梯0001,L3,transport_circulation,交通与通行动线,elevator,L3_电梯0001,-100.076187,17.991472,12.459318,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L3_e311f0daf4,L3 电梯0002,L3,transport_circulation,交通与通行动线,elevator,L3_电梯0002,-100.57962,17.991472,9.362567,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
modelpoi_L3_4f70d09801,L3 电梯0003,L3,transport_circulation,交通与通行动线,elevator,L3_电梯0003,-81.503433,17.991472,30.988474,model_object_bbox_center_candidate,display_candidate_requires_nav_anchor_for_routing
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.json
similarity index 91%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.json
index ddab2be..4fa9ec0 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_all.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_all.json
@@ -1,31 +1,31 @@
{
"schemaVersion": "miniapp-poi-index-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.455Z",
+ "generatedAt": "2026-06-11T09:36:23.705Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"summary": {
- "poiCount": 298,
- "sourceEnhancedPoiCount": 294,
- "supplementalPoiCount": 4,
+ "poiCount": 319,
+ "sourceEnhancedPoiCount": 316,
+ "supplementalPoiCount": 3,
"poiCountByFloor": {
- "L-2": 52,
- "L-1": 46,
- "L1": 78,
+ "L-2": 62,
+ "L-1": 47,
+ "L1": 81,
"L1.5": 21,
- "L2": 47,
- "L3": 16,
+ "L2": 55,
+ "L3": 15,
"L4": 27,
"L5": 11
},
"poiCountByCategory": {
- "touring_poi": 17,
- "basic_service_facility": 47,
- "transport_circulation": 229,
+ "touring_poi": 34,
+ "basic_service_facility": 57,
+ "transport_circulation": 232,
"accessibility_special_service": 10,
"safety_management": 0,
- "operation_experience": 8
+ "operation_experience": 7
}
},
"pois": [
@@ -56,28 +56,28 @@
"positionBlender": [
-51.175003,
-39.344395,
- -14.191206
+ -13.147993
],
"positionGltf": [
-51.175003,
- -14.191206,
+ -13.147993,
39.344395
],
"bboxBlender": {
"min": [
-54.617416,
-41.925209,
- -14.191206
+ -13.147993
],
"max": [
-47.732586,
-36.76358,
- -14.191206
+ -13.147993
],
"center": [
-51.175003,
-39.344395,
- -14.191206
+ -13.147993
],
"size": [
6.88483,
@@ -117,28 +117,28 @@
"positionBlender": [
-82.988602,
-43.190712,
- -14.491209
+ -13.447996
],
"positionGltf": [
-82.988602,
- -14.491209,
+ -13.447996,
43.190712
],
"bboxBlender": {
"min": [
-88.683998,
-45.709488,
- -14.591208
+ -13.547996
],
"max": [
-77.293213,
-40.67194,
- -14.391209
+ -13.347996
],
"center": [
-82.988602,
-43.190712,
- -14.491209
+ -13.447996
],
"size": [
11.390785,
@@ -178,28 +178,28 @@
"positionBlender": [
-18.808712,
-19.713522,
- -14.491209
+ -13.447996
],
"positionGltf": [
-18.808712,
- -14.491209,
+ -13.447996,
19.713522
],
"bboxBlender": {
"min": [
-22.777105,
-22.294985,
- -14.591208
+ -13.547996
],
"max": [
-14.840318,
-17.132059,
- -14.391209
+ -13.347996
],
"center": [
-18.808712,
-19.713522,
- -14.491209
+ -13.447996
],
"size": [
7.936788,
@@ -239,28 +239,28 @@
"positionBlender": [
57.642273,
-24.258451,
- -14.491209
+ -13.447996
],
"positionGltf": [
57.642273,
- -14.491209,
+ -13.447996,
24.258451
],
"bboxBlender": {
"min": [
53.015755,
-27.422421,
- -14.591208
+ -13.547996
],
"max": [
62.268791,
-21.094482,
- -14.391209
+ -13.347996
],
"center": [
57.642273,
-24.258451,
- -14.491209
+ -13.447996
],
"size": [
9.253036,
@@ -300,28 +300,28 @@
"positionBlender": [
-91.456207,
-38.036762,
- -14.491209
+ -13.447996
],
"positionGltf": [
-91.456207,
- -14.491209,
+ -13.447996,
38.036762
],
"bboxBlender": {
"min": [
-94.292107,
-43.350998,
- -14.591208
+ -13.547996
],
"max": [
-88.620308,
-32.722527,
- -14.391209
+ -13.347996
],
"center": [
-91.456207,
-38.036762,
- -14.491209
+ -13.447996
],
"size": [
5.671799,
@@ -361,28 +361,28 @@
"positionBlender": [
-30.663593,
-14.251428,
- -14.491209
+ -13.447996
],
"positionGltf": [
-30.663593,
- -14.491209,
+ -13.447996,
14.251428
],
"bboxBlender": {
"min": [
-37.766853,
-19.75082,
- -14.591208
+ -13.547996
],
"max": [
-23.560335,
-8.752035,
- -14.391209
+ -13.347996
],
"center": [
-30.663593,
-14.251428,
- -14.491209
+ -13.447996
],
"size": [
14.206518,
@@ -422,28 +422,28 @@
"positionBlender": [
16.534239,
-25.273596,
- -14.491209
+ -13.447996
],
"positionGltf": [
16.534239,
- -14.491209,
+ -13.447996,
25.273596
],
"bboxBlender": {
"min": [
8.809361,
-29.865093,
- -14.591208
+ -13.547996
],
"max": [
24.259117,
-20.682098,
- -14.391209
+ -13.347996
],
"center": [
16.534239,
-25.273596,
- -14.491209
+ -13.447996
],
"size": [
15.449757,
@@ -483,28 +483,28 @@
"positionBlender": [
32.573727,
-24.407684,
- -14.491209
+ -13.447996
],
"positionGltf": [
32.573727,
- -14.491209,
+ -13.447996,
24.407684
],
"bboxBlender": {
"min": [
26.968565,
-28.120514,
- -14.591208
+ -13.547996
],
"max": [
38.178886,
-20.694853,
- -14.391209
+ -13.347996
],
"center": [
32.573727,
-24.407684,
- -14.491209
+ -13.447996
],
"size": [
11.210321,
@@ -544,28 +544,28 @@
"positionBlender": [
68.159348,
-27.444523,
- -14.491209
+ -13.447996
],
"positionGltf": [
68.159348,
- -14.491209,
+ -13.447996,
27.444523
],
"bboxBlender": {
"min": [
65.565315,
-29.686541,
- -14.591208
+ -13.547996
],
"max": [
70.753387,
-25.202505,
- -14.391209
+ -13.347996
],
"center": [
68.159348,
-27.444523,
- -14.491209
+ -13.447996
],
"size": [
5.188072,
@@ -621,6 +621,135 @@
"snappedWalkableId": "navwalk_0042",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_1fa3680520",
+ "name": "L-2 展厅1宇宙厅 展柜",
+ "sourceObjectName": "L-2_展厅1宇宙厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -87.730865,
+ -54.098366,
+ -13.891212
+ ],
+ "positionGltf": [
+ -87.730865,
+ -13.891212,
+ 54.098366
+ ],
+ "bboxBlender": {
+ "min": [
+ -108.995773,
+ -64.283768,
+ -14.391212
+ ],
+ "max": [
+ -66.465958,
+ -43.912968,
+ -13.391212
+ ],
+ "center": [
+ -87.730865,
+ -54.098366,
+ -13.891212
+ ],
+ "size": [
+ 42.529816,
+ 20.3708,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_0328e49a57",
+ "name": "L-2 展厅1宇宙厅 装饰",
+ "sourceObjectName": "L-2_展厅1宇宙厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -90.488953,
+ -44.977547,
+ -11.498024
+ ],
+ "positionGltf": [
+ -90.488953,
+ -11.498024,
+ 44.977547
+ ],
+ "bboxBlender": {
+ "min": [
+ -117.529358,
+ -72.258461,
+ -11.670148
+ ],
+ "max": [
+ -63.448547,
+ -17.696634,
+ -11.325901
+ ],
+ "center": [
+ -90.488953,
+ -44.977547,
+ -11.498024
+ ],
+ "size": [
+ 54.080811,
+ 54.561829,
+ 0.344247
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0010",
"name": "L-2 展厅2地球厅",
@@ -657,6 +786,135 @@
"snappedWalkableId": "navwalk_0043",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_e2ec8ce8ba",
+ "name": "L-2 展厅2地球厅 展柜",
+ "sourceObjectName": "L-2_展厅2地球厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -17.069817,
+ 8.752005,
+ -13.827784
+ ],
+ "positionGltf": [
+ -17.069817,
+ -13.827784,
+ -8.752005
+ ],
+ "bboxBlender": {
+ "min": [
+ -39.71352,
+ -17.498775,
+ -14.391212
+ ],
+ "max": [
+ 5.573887,
+ 35.002785,
+ -13.264354
+ ],
+ "center": [
+ -17.069817,
+ 8.752005,
+ -13.827784
+ ],
+ "size": [
+ 45.287407,
+ 52.50156,
+ 1.126859
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_f23816be84",
+ "name": "L-2 展厅2地球厅 装饰",
+ "sourceObjectName": "L-2_展厅2地球厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -17.07975,
+ 8.416769,
+ -11.498024
+ ],
+ "positionGltf": [
+ -17.07975,
+ -11.498024,
+ -8.416769
+ ],
+ "bboxBlender": {
+ "min": [
+ -39.80014,
+ -18.32555,
+ -11.670148
+ ],
+ "max": [
+ 5.640642,
+ 35.159088,
+ -11.325901
+ ],
+ "center": [
+ -17.07975,
+ 8.416769,
+ -11.498024
+ ],
+ "size": [
+ 45.440781,
+ 53.484638,
+ 0.344247
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0008",
"name": "L-2 展厅3演化厅",
@@ -693,6 +951,135 @@
"snappedWalkableId": "navwalk_0041",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_34bbb3d9d4",
+ "name": "L-2 展厅3演化厅 展柜",
+ "sourceObjectName": "L-2_展厅3演化厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.310183,
+ -51.903332,
+ -13.89121
+ ],
+ "positionGltf": [
+ 25.310183,
+ -13.89121,
+ 51.903332
+ ],
+ "bboxBlender": {
+ "min": [
+ 1.852014,
+ -74.143738,
+ -14.39121
+ ],
+ "max": [
+ 48.768353,
+ -29.662926,
+ -13.39121
+ ],
+ "center": [
+ 25.310183,
+ -51.903332,
+ -13.89121
+ ],
+ "size": [
+ 46.91634,
+ 44.480812,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_a2d90df88c",
+ "name": "L-2 展厅3演化厅 装饰",
+ "sourceObjectName": "L-2_展厅3演化厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.952511,
+ -51.155872,
+ -11.48424
+ ],
+ "positionGltf": [
+ 25.952511,
+ -11.48424,
+ 51.155872
+ ],
+ "bboxBlender": {
+ "min": [
+ 0.856802,
+ -76.251579,
+ -11.642575
+ ],
+ "max": [
+ 51.048218,
+ -26.060165,
+ -11.325903
+ ],
+ "center": [
+ 25.952511,
+ -51.155872,
+ -11.48424
+ ],
+ "size": [
+ 50.191414,
+ 50.191414,
+ 0.316672
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0007",
"name": "L-2 展厅4恐龙厅",
@@ -729,6 +1116,135 @@
"snappedWalkableId": "navwalk_0040",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_f877db497b",
+ "name": "L-2 展厅4恐龙厅 展柜",
+ "sourceObjectName": "L-2_展厅4恐龙厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.237717,
+ 0.634724,
+ -13.987548
+ ],
+ "positionGltf": [
+ 69.237717,
+ -13.987548,
+ -0.634724
+ ],
+ "bboxBlender": {
+ "min": [
+ 50.891533,
+ -17.570641,
+ -14.487549
+ ],
+ "max": [
+ 87.583908,
+ 18.840088,
+ -13.487547
+ ],
+ "center": [
+ 69.237717,
+ 0.634724,
+ -13.987548
+ ],
+ "size": [
+ 36.692375,
+ 36.410728,
+ 1.000002
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_81c1403384",
+ "name": "L-2 展厅4恐龙厅 装饰",
+ "sourceObjectName": "L-2_展厅4恐龙厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 70.205048,
+ -2.088411,
+ -7.689972
+ ],
+ "positionGltf": [
+ 70.205048,
+ -7.689972,
+ 2.088411
+ ],
+ "bboxBlender": {
+ "min": [
+ 56.539871,
+ -8.94316,
+ -13.630424
+ ],
+ "max": [
+ 83.870224,
+ 4.766338,
+ -1.74952
+ ],
+ "center": [
+ 70.205048,
+ -2.088411,
+ -7.689972
+ ],
+ "size": [
+ 27.330353,
+ 13.709497,
+ 11.880904
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-2_ae5be493c0",
"name": "L-2 电梯0001",
@@ -1969,28 +2485,28 @@
"positionBlender": [
-113.980553,
-15.791812,
- -14.191214
+ -13.148001
],
"positionGltf": [
-113.980553,
- -14.191214,
+ -13.148001,
15.791812
],
"bboxBlender": {
"min": [
-117.098137,
-18.852608,
- -14.191214
+ -13.148001
],
"max": [
-110.862968,
-12.731016,
- -14.191214
+ -13.148001
],
"center": [
-113.980553,
-15.791812,
- -14.191214
+ -13.148001
],
"size": [
6.235168,
@@ -2030,28 +2546,28 @@
"positionBlender": [
-125.09758,
-44.947601,
- -14.191216
+ -13.148003
],
"positionGltf": [
-125.09758,
- -14.191216,
+ -13.148003,
44.947601
],
"bboxBlender": {
"min": [
-127.874672,
-48.687687,
- -14.191216
+ -13.148003
],
"max": [
-122.320496,
-41.207516,
- -14.191216
+ -13.148003
],
"center": [
-125.09758,
-44.947601,
- -14.191216
+ -13.148003
],
"size": [
5.554176,
@@ -2091,28 +2607,28 @@
"positionBlender": [
-105.471481,
80.607361,
- -14.19121
+ -13.147997
],
"positionGltf": [
-105.471481,
- -14.19121,
+ -13.147997,
-80.607361
],
"bboxBlender": {
"min": [
-107.082985,
78.048264,
- -14.19121
+ -13.147997
],
"max": [
-103.859978,
83.166458,
- -14.19121
+ -13.147997
],
"center": [
-105.471481,
80.607361,
- -14.19121
+ -13.147997
],
"size": [
3.223007,
@@ -2152,28 +2668,28 @@
"positionBlender": [
-119.36657,
77.92852,
- -14.19121
+ -13.147997
],
"positionGltf": [
-119.36657,
- -14.19121,
+ -13.147997,
-77.92852
],
"bboxBlender": {
"min": [
-121.925667,
76.881042,
- -14.19121
+ -13.147997
],
"max": [
-116.807472,
78.975998,
- -14.19121
+ -13.147997
],
"center": [
-119.36657,
77.92852,
- -14.19121
+ -13.147997
],
"size": [
5.118195,
@@ -2213,28 +2729,28 @@
"positionBlender": [
-118.673454,
19.434433,
- -14.191213
+ -13.148
],
"positionGltf": [
-118.673454,
- -14.191213,
+ -13.148,
-19.434433
],
"bboxBlender": {
"min": [
-121.232552,
17.822931,
- -14.191213
+ -13.148
],
"max": [
-116.114357,
21.045935,
- -14.191213
+ -13.148
],
"center": [
-118.673454,
19.434433,
- -14.191213
+ -13.148
],
"size": [
5.118195,
@@ -2274,28 +2790,28 @@
"positionBlender": [
-96.47963,
-1.494661,
- -14.191214
+ -13.148001
],
"positionGltf": [
-96.47963,
- -14.191214,
+ -13.148001,
1.494661
],
"bboxBlender": {
"min": [
-99.402397,
-4.661394,
- -14.191214
+ -13.148001
],
"max": [
-93.556862,
1.672072,
- -14.191214
+ -13.148001
],
"center": [
-96.47963,
-1.494661,
- -14.191214
+ -13.148001
],
"size": [
5.845535,
@@ -2335,28 +2851,28 @@
"positionBlender": [
-34.926815,
27.636536,
- -14.191212
+ -13.147999
],
"positionGltf": [
-34.926815,
- -14.191212,
+ -13.147999,
-27.636536
],
"bboxBlender": {
"min": [
-38.009949,
24.437557,
- -14.191212
+ -13.147999
],
"max": [
-31.843681,
30.835512,
- -14.191212
+ -13.147999
],
"center": [
-34.926815,
27.636536,
- -14.191212
+ -13.147999
],
"size": [
6.166267,
@@ -2396,28 +2912,28 @@
"positionBlender": [
-54.706528,
-59.089958,
- -14.191216
+ -13.148003
],
"positionGltf": [
-54.706528,
- -14.191216,
+ -13.148003,
59.089958
],
"bboxBlender": {
"min": [
-57.330437,
-62.316452,
- -14.191216
+ -13.148003
],
"max": [
-52.082619,
-55.863464,
- -14.191216
+ -13.148003
],
"center": [
-54.706528,
-59.089958,
- -14.191216
+ -13.148003
],
"size": [
5.247818,
@@ -2457,28 +2973,28 @@
"positionBlender": [
-62.075691,
-69.846909,
- -14.191199
+ -13.147986
],
"positionGltf": [
-62.075691,
- -14.191199,
+ -13.147986,
69.846909
],
"bboxBlender": {
"min": [
-65.201813,
-73.03476,
- -14.191199
+ -13.147986
],
"max": [
-58.949566,
-66.659058,
- -14.191199
+ -13.147986
],
"center": [
-62.075691,
-69.846909,
- -14.191199
+ -13.147986
],
"size": [
6.252247,
@@ -2518,28 +3034,28 @@
"positionBlender": [
-78.359177,
-79.284683,
- -14.191216
+ -13.148004
],
"positionGltf": [
-78.359177,
- -14.191216,
+ -13.148004,
79.284683
],
"bboxBlender": {
"min": [
-81.453293,
-81.614021,
- -14.191216
+ -13.148004
],
"max": [
-75.265053,
-76.955353,
- -14.191216
+ -13.148004
],
"center": [
-78.359177,
-79.284683,
- -14.191216
+ -13.148004
],
"size": [
6.18824,
@@ -2579,28 +3095,28 @@
"positionBlender": [
-51.635437,
-48.365948,
- -14.191216
+ -13.148003
],
"positionGltf": [
-51.635437,
- -14.191216,
+ -13.148003,
48.365948
],
"bboxBlender": {
"min": [
-53.692112,
-51.385803,
- -14.191216
+ -13.148003
],
"max": [
-49.578766,
-45.346092,
- -14.191216
+ -13.148003
],
"center": [
-51.635437,
-48.365948,
- -14.191216
+ -13.148003
],
"size": [
4.113346,
@@ -2640,28 +3156,28 @@
"positionBlender": [
-2.737168,
-53.378433,
- -14.191216
+ -13.148003
],
"positionGltf": [
-2.737168,
- -14.191216,
+ -13.148003,
53.378433
],
"bboxBlender": {
"min": [
-4.629934,
-56.315605,
- -14.191216
+ -13.148003
],
"max": [
-0.844403,
-50.441261,
- -14.191216
+ -13.148003
],
"center": [
-2.737168,
-53.378433,
- -14.191216
+ -13.148003
],
"size": [
3.785531,
@@ -2701,28 +3217,28 @@
"positionBlender": [
91.222206,
-58.967903,
- -14.191216
+ -13.148003
],
"positionGltf": [
91.222206,
- -14.191216,
+ -13.148003,
58.967903
],
"bboxBlender": {
"min": [
88.597946,
-61.816963,
- -14.191216
+ -13.148003
],
"max": [
93.846466,
-56.118843,
- -14.191216
+ -13.148003
],
"center": [
91.222206,
-58.967903,
- -14.191216
+ -13.148003
],
"size": [
5.24852,
@@ -2762,28 +3278,28 @@
"positionBlender": [
93.295212,
-42.003674,
- -14.191216
+ -13.148003
],
"positionGltf": [
93.295212,
- -14.191216,
+ -13.148003,
42.003674
],
"bboxBlender": {
"min": [
91.280716,
-44.204193,
- -14.191216
+ -13.148003
],
"max": [
95.309708,
-39.803154,
- -14.191216
+ -13.148003
],
"center": [
93.295212,
-42.003674,
- -14.191216
+ -13.148003
],
"size": [
4.028992,
@@ -2823,28 +3339,28 @@
"positionBlender": [
94.548233,
5.112744,
- -14.191213
+ -13.148
],
"positionGltf": [
94.548233,
- -14.191213,
+ -13.148,
-5.112744
],
"bboxBlender": {
"min": [
91.702827,
1.737404,
- -14.191213
+ -13.148
],
"max": [
97.393631,
8.488084,
- -14.191213
+ -13.148
],
"center": [
94.548233,
5.112744,
- -14.191213
+ -13.148
],
"size": [
5.690804,
@@ -2884,28 +3400,28 @@
"positionBlender": [
46.435764,
3.948162,
- -14.191214
+ -13.148001
],
"positionGltf": [
46.435764,
- -14.191214,
+ -13.148001,
-3.948162
],
"bboxBlender": {
"min": [
44.394886,
1.178924,
- -14.191214
+ -13.148001
],
"max": [
48.476643,
6.7174,
- -14.191214
+ -13.148001
],
"center": [
46.435764,
3.948162,
- -14.191214
+ -13.148001
],
"size": [
4.081757,
@@ -2945,28 +3461,28 @@
"positionBlender": [
45.298622,
-4.789413,
- -14.191214
+ -13.148001
],
"positionGltf": [
45.298622,
- -14.191214,
+ -13.148001,
4.789413
],
"bboxBlender": {
"min": [
42.057297,
-9.810371,
- -14.191214
+ -13.148001
],
"max": [
48.539951,
0.231545,
- -14.191214
+ -13.148001
],
"center": [
45.298622,
-4.789413,
- -14.191214
+ -13.148001
],
"size": [
6.482655,
@@ -3006,28 +3522,28 @@
"positionBlender": [
53.007278,
-58.379272,
- -14.191216
+ -13.148003
],
"positionGltf": [
53.007278,
- -14.191216,
+ -13.148003,
58.379272
],
"bboxBlender": {
"min": [
50.737381,
-61.493492,
- -14.191216
+ -13.148003
],
"max": [
55.27718,
-55.265053,
- -14.191216
+ -13.148003
],
"center": [
53.007278,
-58.379272,
- -14.191216
+ -13.148003
],
"size": [
4.539799,
@@ -3047,6 +3563,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L-2_482544cba6",
+ "name": "L-2 楼梯0019",
+ "sourceObjectName": "L-2_楼梯0019",
+ "floorId": "L-2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -91.555466,
+ -46.893166,
+ -11.787357
+ ],
+ "positionGltf": [
+ -91.555466,
+ -11.787357,
+ 46.893166
+ ],
+ "bboxBlender": {
+ "min": [
+ -92.662071,
+ -50.393394,
+ -13.3075
+ ],
+ "max": [
+ -90.448868,
+ -43.392933,
+ -10.267215
+ ],
+ "center": [
+ -91.555466,
+ -46.893166,
+ -11.787357
+ ],
+ "size": [
+ 2.213203,
+ 7.000462,
+ 3.040285
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_5753e93667",
+ "name": "L-2 楼梯0020",
+ "sourceObjectName": "L-2_楼梯0020",
+ "floorId": "L-2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -77.065353,
+ -46.893166,
+ -11.787357
+ ],
+ "positionGltf": [
+ -77.065353,
+ -11.787357,
+ 46.893166
+ ],
+ "bboxBlender": {
+ "min": [
+ -78.171959,
+ -50.393394,
+ -13.3075
+ ],
+ "max": [
+ -75.958755,
+ -43.392933,
+ -10.267215
+ ],
+ "center": [
+ -77.065353,
+ -46.893166,
+ -11.787357
+ ],
+ "size": [
+ 2.213203,
+ 7.000462,
+ 3.040285
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-2_84885548c6",
"name": "L-2 停车位",
@@ -3067,28 +3705,28 @@
"positionBlender": [
-13.833179,
-10.672264,
- -14.191204
+ -14.391253
],
"positionGltf": [
-13.833179,
- -14.191204,
+ -14.391253,
10.672264
],
"bboxBlender": {
"min": [
-134.189468,
-95.291824,
- -14.191208
+ -14.391256
],
"max": [
106.523109,
73.947296,
- -14.1912
+ -14.391249
],
"center": [
-13.833179,
-10.672264,
- -14.191204
+ -14.391253
],
"size": [
240.712585,
@@ -5853,6 +6491,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L-1_04e400880b",
+ "name": "L-1 楼梯0025",
+ "sourceObjectName": "L-1_楼梯0025",
+ "floorId": "L-1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -13.88942,
+ 5.084072,
+ -10.669846
+ ],
+ "positionGltf": [
+ -13.88942,
+ -10.669846,
+ -5.084072
+ ],
+ "bboxBlender": {
+ "min": [
+ -15.016052,
+ 0.703743,
+ -10.670072
+ ],
+ "max": [
+ -12.762787,
+ 9.464401,
+ -10.66962
+ ],
+ "center": [
+ -13.88942,
+ 5.084072,
+ -10.669846
+ ],
+ "size": [
+ 2.253265,
+ 8.760658,
+ 0.000452
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-1_e3aff063cb",
"name": "L-1 停车场地面",
@@ -6760,6 +7459,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_11ae2666ee",
+ "name": "L1 售票机",
+ "sourceObjectName": "L1_售票机",
+ "floorId": "L1",
+ "primaryCategory": "basic_service_facility",
+ "primaryCategoryZh": "基础服务设施",
+ "categories": [
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "ticket_check",
+ "iconType": "ticket",
+ "reason": "matched_ticket_keywords"
+ }
+ ],
+ "iconType": "ticket",
+ "positionBlender": [
+ 17.294315,
+ -24.678955,
+ 1
+ ],
+ "positionGltf": [
+ 17.294315,
+ 1,
+ 24.678955
+ ],
+ "bboxBlender": {
+ "min": [
+ 16.932575,
+ -25.224066,
+ 0
+ ],
+ "max": [
+ 17.656055,
+ -24.133844,
+ 2
+ ],
+ "center": [
+ 17.294315,
+ -24.678955,
+ 1
+ ],
+ "size": [
+ 0.72348,
+ 1.090221,
+ 2
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_f41223bb9c",
"name": "L1 贵宾接待区",
@@ -6839,34 +7599,34 @@
],
"iconType": "landscape",
"positionBlender": [
- 3.996948,
- 0.012264,
+ 4.52948,
+ 0.231293,
0.172545
],
"positionGltf": [
- 3.996948,
+ 4.52948,
0.172545,
- -0.012264
+ -0.231293
],
"bboxBlender": {
"min": [
- -139.051422,
- -105.240479,
+ -139.421356,
+ -104.762138,
-0.077455
],
"max": [
- 147.045319,
- 105.265007,
+ 148.480316,
+ 105.224724,
0.422545
],
"center": [
- 3.996948,
- 0.012264,
+ 4.52948,
+ 0.231293,
0.172545
],
"size": [
- 286.096741,
- 210.505493,
+ 287.901672,
+ 209.986862,
0.5
]
},
@@ -6874,7 +7634,7 @@
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -6900,42 +7660,42 @@
],
"iconType": "photo",
"positionBlender": [
- 22.258747,
- 0.367207,
- -0.488044
+ 23.06905,
+ 0.831573,
+ 0.274697
],
"positionGltf": [
- 22.258747,
- -0.488044,
- -0.367207
+ 23.06905,
+ 0.274697,
+ -0.831573
],
"bboxBlender": {
"min": [
- -93.667229,
- -90.865891,
- -1.82078
+ -92.856926,
+ -90.40152,
+ -0.329199
],
"max": [
- 138.184723,
- 91.600304,
- 0.844692
+ 138.995026,
+ 92.064667,
+ 0.878593
],
"center": [
- 22.258747,
- 0.367207,
- -0.488044
+ 23.06905,
+ 0.831573,
+ 0.274697
],
"size": [
231.851959,
182.466187,
- 2.665472
+ 1.207792
]
},
"coordinateSource": "model_object_bbox_center_candidate",
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -6968,12 +7728,12 @@
],
"iconType": "plaza",
"positionBlender": [
- 31.983009,
+ 32.247353,
12.300758,
-2.810548
],
"positionGltf": [
- 31.983009,
+ 32.247353,
-2.810548,
-12.300758
],
@@ -6984,17 +7744,17 @@
-6.257907
],
"max": [
- 49.637825,
+ 50.166512,
37.382774,
0.63681
],
"center": [
- 31.983009,
+ 32.247353,
12.300758,
-2.810548
],
"size": [
- 35.309631,
+ 35.838318,
50.164032,
6.894717
]
@@ -7003,7 +7763,7 @@
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -7363,6 +8123,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_bce5578bda",
+ "name": "L1 L1 展厅5人类厅 装饰01",
+ "sourceObjectName": "L1_L1_展厅5人类厅_装饰01",
+ "floorId": "L1",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 112.835953,
+ -51.190968,
+ 2.864931
+ ],
+ "positionGltf": [
+ 112.835953,
+ 2.864931,
+ 51.190968
+ ],
+ "bboxBlender": {
+ "min": [
+ 84.834236,
+ -79.192871,
+ 0.034751
+ ],
+ "max": [
+ 140.837662,
+ -23.189064,
+ 5.695111
+ ],
+ "center": [
+ 112.835953,
+ -51.190968,
+ 2.864931
+ ],
+ "size": [
+ 56.003426,
+ 56.003807,
+ 5.66036
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L1_d6bfac9efe",
+ "name": "L1 L1 展厅5人类厅 装饰02",
+ "sourceObjectName": "L1_L1_展厅5人类厅_装饰02",
+ "floorId": "L1",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 112.655197,
+ -51.249493,
+ 3.820072
+ ],
+ "positionGltf": [
+ 112.655197,
+ 3.820072,
+ 51.249493
+ ],
+ "bboxBlender": {
+ "min": [
+ 108.68396,
+ -55.220016,
+ 0.032804
+ ],
+ "max": [
+ 116.626434,
+ -47.278969,
+ 7.607341
+ ],
+ "center": [
+ 112.655197,
+ -51.249493,
+ 3.820072
+ ],
+ "size": [
+ 7.942474,
+ 7.941048,
+ 7.574537
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_45de13b368",
"name": "L1 电梯0001",
@@ -8766,67 +9648,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "modelpoi_L1_a4a00c978d",
- "name": "L1 楼梯0002",
- "sourceObjectName": "L1_楼梯0002",
- "floorId": "L1",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- -118.638206,
- 19.517469,
- 0.217286
- ],
- "positionGltf": [
- -118.638206,
- 0.217286,
- -19.517469
- ],
- "bboxBlender": {
- "min": [
- -123.097366,
- 17.564606,
- 0.217286
- ],
- "max": [
- -114.179047,
- 21.470333,
- 0.217286
- ],
- "center": [
- -118.638206,
- 19.517469,
- 0.217286
- ],
- "size": [
- 8.91832,
- 3.905727,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
{
"id": "modelpoi_L1_360cce5a19",
"name": "L1 楼梯0003",
@@ -10231,70 +11052,9 @@
]
},
{
- "id": "modelpoi_L1_9a31638f63",
- "name": "L1 楼梯0026",
- "sourceObjectName": "L1_楼梯0026",
- "floorId": "L1",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- -127.951675,
- 2.199766,
- 0.217286
- ],
- "positionGltf": [
- -127.951675,
- 0.217286,
- -2.199766
- ],
- "bboxBlender": {
- "min": [
- -129.983459,
- -1.394757,
- 0.217286
- ],
- "max": [
- -125.919891,
- 5.794289,
- 0.217286
- ],
- "center": [
- -127.951675,
- 2.199766,
- 0.217286
- ],
- "size": [
- 4.063568,
- 7.189046,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
- {
- "id": "modelpoi_L1_fa423c9ad0",
- "name": "L1 楼梯0027",
- "sourceObjectName": "L1_楼梯0027",
+ "id": "modelpoi_L1_5655c264c1",
+ "name": "L1 室外楼梯0001",
+ "sourceObjectName": "L1_室外楼梯0001",
"floorId": "L1",
"primaryCategory": "transport_circulation",
"primaryCategoryZh": "交通与通行动线",
@@ -10353,9 +11113,9 @@
]
},
{
- "id": "modelpoi_L1_7d0051d2a6",
- "name": "L1 楼梯0028",
- "sourceObjectName": "L1_楼梯0028",
+ "id": "modelpoi_L1_6fa8f94e0d",
+ "name": "L1 室外楼梯0002",
+ "sourceObjectName": "L1_室外楼梯0002",
"floorId": "L1",
"primaryCategory": "transport_circulation",
"primaryCategoryZh": "交通与通行动线",
@@ -10413,6 +11173,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_9d38633ca9",
+ "name": "L1 室外楼梯0003",
+ "sourceObjectName": "L1_室外楼梯0003",
+ "floorId": "L1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -118.638206,
+ 19.517469,
+ 0.217286
+ ],
+ "positionGltf": [
+ -118.638206,
+ 0.217286,
+ -19.517469
+ ],
+ "bboxBlender": {
+ "min": [
+ -123.097366,
+ 17.564606,
+ 0.217286
+ ],
+ "max": [
+ -114.179047,
+ 21.470333,
+ 0.217286
+ ],
+ "center": [
+ -118.638206,
+ 19.517469,
+ 0.217286
+ ],
+ "size": [
+ 8.91832,
+ 3.905727,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L1_3936c7e2b1",
+ "name": "L1 室外楼梯0004",
+ "sourceObjectName": "L1_室外楼梯0004",
+ "floorId": "L1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -127.951675,
+ 2.199766,
+ 0.217286
+ ],
+ "positionGltf": [
+ -127.951675,
+ 0.217286,
+ -2.199766
+ ],
+ "bboxBlender": {
+ "min": [
+ -129.983459,
+ -1.394757,
+ 0.217286
+ ],
+ "max": [
+ -125.919891,
+ 5.794289,
+ 0.217286
+ ],
+ "center": [
+ -127.951675,
+ 2.199766,
+ 0.217286
+ ],
+ "size": [
+ 4.063568,
+ 7.189046,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_a6652685b8",
"name": "L1 停车场",
@@ -12221,6 +13103,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L2_9267c2d1d4",
+ "name": "L2 卫生间",
+ "sourceObjectName": "L2_卫生间",
+ "floorId": "L2",
+ "primaryCategory": "basic_service_facility",
+ "primaryCategoryZh": "基础服务设施",
+ "categories": [
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "restroom",
+ "iconType": "restroom",
+ "reason": "matched_restroom_keywords"
+ }
+ ],
+ "iconType": "restroom",
+ "positionBlender": [
+ 52.255562,
+ -9.283119,
+ 10.273865
+ ],
+ "positionGltf": [
+ 52.255562,
+ 10.273865,
+ 9.283119
+ ],
+ "bboxBlender": {
+ "min": [
+ 50.174667,
+ -11.629254,
+ 10.273865
+ ],
+ "max": [
+ 54.336456,
+ -6.936984,
+ 10.273865
+ ],
+ "center": [
+ 52.255562,
+ -9.283119,
+ 10.273865
+ ],
+ "size": [
+ 4.161789,
+ 4.69227,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_f362d56eba",
"name": "L2 文创店旗舰店",
@@ -12318,6 +13261,203 @@
"snappedWalkableId": "navwalk_0034",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_ecd476d1be",
+ "name": "L2 展厅 6生物厅 展柜01",
+ "sourceObjectName": "L2_展厅_6生物厅_展柜01",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.279694,
+ -5.825405,
+ 10.281687
+ ],
+ "positionGltf": [
+ 69.279694,
+ 10.281687,
+ 5.825405
+ ],
+ "bboxBlender": {
+ "min": [
+ 62.97464,
+ -12.536184,
+ 10.031687
+ ],
+ "max": [
+ 75.584747,
+ 0.885374,
+ 10.531687
+ ],
+ "center": [
+ 69.279694,
+ -5.825405,
+ 10.281687
+ ],
+ "size": [
+ 12.610107,
+ 13.421558,
+ 0.5
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_d93b7e7a22",
+ "name": "L2 展厅 6生物厅 展柜02",
+ "sourceObjectName": "L2_展厅_6生物厅_展柜02",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.861053,
+ -5.292932,
+ 10.594574
+ ],
+ "positionGltf": [
+ 69.861053,
+ 10.594574,
+ 5.292932
+ ],
+ "bboxBlender": {
+ "min": [
+ 63.916744,
+ -9.808617,
+ 10.031687
+ ],
+ "max": [
+ 75.805359,
+ -0.777246,
+ 11.157462
+ ],
+ "center": [
+ 69.861053,
+ -5.292932,
+ 10.594574
+ ],
+ "size": [
+ 11.888615,
+ 9.03137,
+ 1.125775
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_bf6262807a",
+ "name": "L2 展厅 6生物厅 装饰",
+ "sourceObjectName": "L2_展厅_6生物厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.074303,
+ -1.496778,
+ 13.479435
+ ],
+ "positionGltf": [
+ 69.074303,
+ 13.479435,
+ 1.496778
+ ],
+ "bboxBlender": {
+ "min": [
+ 52.643074,
+ -17.928007,
+ 13.479435
+ ],
+ "max": [
+ 85.505531,
+ 14.934451,
+ 13.479435
+ ],
+ "center": [
+ 69.074303,
+ -1.496778,
+ 13.479435
+ ],
+ "size": [
+ 32.862457,
+ 32.862457,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0005",
"name": "L2 展厅 7生态厅",
@@ -12354,6 +13494,135 @@
"snappedWalkableId": "navwalk_0033",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_2fea6b6cff",
+ "name": "L2 展厅 7生态厅 展柜",
+ "sourceObjectName": "L2_展厅_7生态厅_展柜",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.018467,
+ -53.729153,
+ 10.511989
+ ],
+ "positionGltf": [
+ 25.018467,
+ 10.511989,
+ 53.729153
+ ],
+ "bboxBlender": {
+ "min": [
+ 6.264536,
+ -72.165092,
+ 10.011989
+ ],
+ "max": [
+ 43.772396,
+ -35.293213,
+ 11.011989
+ ],
+ "center": [
+ 25.018467,
+ -53.729153,
+ 10.511989
+ ],
+ "size": [
+ 37.507858,
+ 36.87188,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_91de093d1e",
+ "name": "L2 展厅 7生态厅 装饰",
+ "sourceObjectName": "L2_展厅_7生态厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 24.894787,
+ -53.795837,
+ 13.408146
+ ],
+ "positionGltf": [
+ 24.894787,
+ 13.408146,
+ 53.795837
+ ],
+ "bboxBlender": {
+ "min": [
+ 6.307831,
+ -72.382797,
+ 13.408146
+ ],
+ "max": [
+ 43.481743,
+ -35.208881,
+ 13.408146
+ ],
+ "center": [
+ 24.894787,
+ -53.795837,
+ 13.408146
+ ],
+ "size": [
+ 37.173912,
+ 37.173916,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0004",
"name": "L2 展厅 8家园厅",
@@ -12390,6 +13659,135 @@
"snappedWalkableId": "navwalk_0032",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_8b43a8a2a8",
+ "name": "L2 展厅 8家园厅 展柜",
+ "sourceObjectName": "L2_展厅_8家园厅_展柜",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -12.998978,
+ 10.578304,
+ 10.478165
+ ],
+ "positionGltf": [
+ -12.998978,
+ 10.478165,
+ -10.578304
+ ],
+ "bboxBlender": {
+ "min": [
+ -33.451897,
+ -9.404156,
+ 9.978165
+ ],
+ "max": [
+ 7.453941,
+ 30.560764,
+ 10.978165
+ ],
+ "center": [
+ -12.998978,
+ 10.578304,
+ 10.478165
+ ],
+ "size": [
+ 40.905838,
+ 39.96492,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_83406e72e2",
+ "name": "L2 展厅 8家园厅 装饰",
+ "sourceObjectName": "L2_展厅_8家园厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -13.14613,
+ 10.430546,
+ 13.373477
+ ],
+ "positionGltf": [
+ -13.14613,
+ 13.373477,
+ -10.430546
+ ],
+ "bboxBlender": {
+ "min": [
+ -33.201469,
+ -9.624794,
+ 13.373477
+ ],
+ "max": [
+ 6.909211,
+ 30.485886,
+ 13.373477
+ ],
+ "center": [
+ -13.14613,
+ 10.430546,
+ 13.373477
+ ],
+ "size": [
+ 40.11068,
+ 40.11068,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_4e0d3ab858",
"name": "L2 电梯0001",
@@ -13366,6 +14764,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L2_9040c9507a",
+ "name": "L2 电梯017",
+ "sourceObjectName": "L2_电梯017",
+ "floorId": "L2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "elevator",
+ "iconType": "elevator",
+ "reason": "matched_elevator_keywords"
+ }
+ ],
+ "iconType": "elevator",
+ "positionBlender": [
+ 60.687622,
+ -19.346493,
+ 11.510571
+ ],
+ "positionGltf": [
+ 60.687622,
+ 11.510571,
+ 19.346493
+ ],
+ "bboxBlender": {
+ "min": [
+ 58.144585,
+ -21.878351,
+ 10.008377
+ ],
+ "max": [
+ 63.230656,
+ -16.814634,
+ 13.012766
+ ],
+ "center": [
+ 60.687622,
+ -19.346493,
+ 11.510571
+ ],
+ "size": [
+ 5.086071,
+ 5.063717,
+ 3.004389
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_041990743f",
"name": "L2 扶梯001",
@@ -13427,67 +14886,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "modelpoi_L2_5b3ad4268d",
- "name": "L2 楼梯0001",
- "sourceObjectName": "L2_楼梯0001",
- "floorId": "L2",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- 49.78883,
- 2.614235,
- 10.178167
- ],
- "positionGltf": [
- 49.78883,
- 10.178167,
- -2.614235
- ],
- "bboxBlender": {
- "min": [
- 48.060421,
- 0.55634,
- 10.178167
- ],
- "max": [
- 51.517239,
- 4.67213,
- 10.178167
- ],
- "center": [
- 49.78883,
- 2.614235,
- 10.178167
- ],
- "size": [
- 3.456818,
- 4.115789,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
{
"id": "modelpoi_L2_579220538a",
"name": "L2 楼梯0002",
@@ -13506,34 +14904,34 @@
],
"iconType": "stair",
"positionBlender": [
- 47.912979,
- 3.191393,
+ 48.342949,
+ 2.291168,
10.178167
],
"positionGltf": [
- 47.912979,
+ 48.342949,
10.178167,
- -3.191393
+ -2.291168
],
"bboxBlender": {
"min": [
- 46.033844,
- 1.109414,
+ 44.615009,
+ -1.112592,
10.178167
],
"max": [
- 49.792118,
- 5.273373,
+ 52.070892,
+ 5.694929,
10.178167
],
"center": [
- 47.912979,
- 3.191393,
+ 48.342949,
+ 2.291168,
10.178167
],
"size": [
- 3.758274,
- 4.163959,
+ 7.455883,
+ 6.80752,
0
]
},
@@ -13628,34 +15026,34 @@
],
"iconType": "stair",
"positionBlender": [
- 89.312012,
- -1.252304,
+ 89.507751,
+ -1.233227,
10.178167
],
"positionGltf": [
- 89.312012,
+ 89.507751,
10.178167,
- 1.252304
+ 1.233227
],
"bboxBlender": {
"min": [
- 86.608589,
- -4.589386,
+ 86.639137,
+ -4.504424,
10.178167
],
"max": [
- 92.015442,
- 2.084779,
+ 92.376358,
+ 2.037969,
10.178167
],
"center": [
- 89.312012,
- -1.252304,
+ 89.507751,
+ -1.233227,
10.178167
],
"size": [
- 5.406853,
- 6.674165,
+ 5.737221,
+ 6.542393,
0
]
},
@@ -13689,34 +15087,34 @@
],
"iconType": "stair",
"positionBlender": [
- 87.619148,
- 5.131519,
+ 87.892075,
+ 4.699806,
10.178167
],
"positionGltf": [
- 87.619148,
+ 87.892075,
10.178167,
- -5.131519
+ -4.699806
],
"bboxBlender": {
"min": [
- 85.311478,
- 2.042627,
+ 85.100731,
+ 0.739156,
10.178167
],
"max": [
- 89.926819,
- 8.220411,
+ 90.683418,
+ 8.660455,
10.178167
],
"center": [
- 87.619148,
- 5.131519,
+ 87.892075,
+ 4.699806,
10.178167
],
"size": [
- 4.615341,
- 6.177784,
+ 5.582687,
+ 7.921299,
0
]
},
@@ -13750,34 +15148,34 @@
],
"iconType": "stair",
"positionBlender": [
- 47.859646,
- -3.881408,
- 10.178166
+ 47.717403,
+ -3.410032,
+ 10.178167
],
"positionGltf": [
- 47.859646,
- 10.178166,
- 3.881408
+ 47.717403,
+ 10.178167,
+ 3.410032
],
"bboxBlender": {
"min": [
- 45.350086,
- -7.03454,
- 10.178166
+ 44.856789,
+ -7.097251,
+ 10.178167
],
"max": [
- 50.369205,
- -0.728276,
- 10.178166
+ 50.578018,
+ 0.277186,
+ 10.178167
],
"center": [
- 47.859646,
- -3.881408,
- 10.178166
+ 47.717403,
+ -3.410032,
+ 10.178167
],
"size": [
- 5.019119,
- 6.306264,
+ 5.72123,
+ 7.374437,
0
]
},
@@ -13994,34 +15392,34 @@
],
"iconType": "stair",
"positionBlender": [
- -4.680887,
- -10.44739,
+ -3.329174,
+ -9.639655,
10.178166
],
"positionGltf": [
- -4.680887,
+ -3.329174,
10.178166,
- 10.44739
+ 9.639655
],
"bboxBlender": {
"min": [
- -7.049561,
- -12.861378,
+ -7.459712,
+ -13.094296,
10.178166
],
"max": [
- -2.312214,
- -8.033401,
+ 0.801365,
+ -6.185015,
10.178166
],
"center": [
- -4.680887,
- -10.44739,
+ -3.329174,
+ -9.639655,
10.178166
],
"size": [
- 4.737347,
- 4.827976,
+ 8.261077,
+ 6.909281,
0
]
},
@@ -14812,67 +16210,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "supplemental_919d93c114",
- "name": "楼顶绿化",
- "sourceObjectName": "楼顶绿化",
- "floorId": "L3",
- "primaryCategory": "operation_experience",
- "primaryCategoryZh": "运营体验类点位",
- "categories": [
- {
- "topCategory": "operation_experience",
- "topCategoryZh": "运营体验类点位",
- "subcategory": "landscape_area",
- "iconType": "landscape",
- "reason": "clean_package_supplemental_rooftop_landscape_keyword"
- }
- ],
- "iconType": "landscape",
- "positionBlender": [
- 6.860313,
- 5.471432,
- 16.841034
- ],
- "positionGltf": [
- 6.860313,
- 16.841034,
- -5.471432
- ],
- "bboxBlender": {
- "min": [
- -126.819077,
- -81.523155,
- -0.851679
- ],
- "max": [
- 140.539703,
- 92.466019,
- 34.533749
- ],
- "center": [
- 6.860313,
- 5.471432,
- 16.841034
- ],
- "size": [
- 267.358765,
- 173.989166,
- 35.385429
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "bbox_center_z_heuristic",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位是清洁资源包补充的景观/公共空间候选,适合前端展示、筛选和搜索。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor 与开放状态。"
- ]
- },
{
"id": "modelpoi_L3_293d59fa33",
"name": "L3 电梯0001",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-1.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-1.json
similarity index 97%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-1.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-1.json
index 34d9c49..4151e56 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-1.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-1.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.446Z",
+ "generatedAt": "2026-06-11T09:36:23.694Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L-1",
- "poiCount": 46,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "poiCount": 47,
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "modelpoi_L-1_14ec89b181",
@@ -2753,6 +2753,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L-1_04e400880b",
+ "name": "L-1 楼梯0025",
+ "sourceObjectName": "L-1_楼梯0025",
+ "floorId": "L-1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -13.88942,
+ 5.084072,
+ -10.669846
+ ],
+ "positionGltf": [
+ -13.88942,
+ -10.669846,
+ -5.084072
+ ],
+ "bboxBlender": {
+ "min": [
+ -15.016052,
+ 0.703743,
+ -10.670072
+ ],
+ "max": [
+ -12.762787,
+ 9.464401,
+ -10.66962
+ ],
+ "center": [
+ -13.88942,
+ 5.084072,
+ -10.669846
+ ],
+ "size": [
+ 2.253265,
+ 8.760658,
+ 0.000452
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-1_e3aff063cb",
"name": "L-1 停车场地面",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-2.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-2.json
similarity index 80%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-2.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-2.json
index 72f6c9a..37c08b4 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L-2.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L-2.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.444Z",
+ "generatedAt": "2026-06-11T09:36:23.692Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L-2",
- "poiCount": 52,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "poiCount": 62,
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "modelpoi_L-2_492e987660",
@@ -35,28 +35,28 @@
"positionBlender": [
-51.175003,
-39.344395,
- -14.191206
+ -13.147993
],
"positionGltf": [
-51.175003,
- -14.191206,
+ -13.147993,
39.344395
],
"bboxBlender": {
"min": [
-54.617416,
-41.925209,
- -14.191206
+ -13.147993
],
"max": [
-47.732586,
-36.76358,
- -14.191206
+ -13.147993
],
"center": [
-51.175003,
-39.344395,
- -14.191206
+ -13.147993
],
"size": [
6.88483,
@@ -96,28 +96,28 @@
"positionBlender": [
-82.988602,
-43.190712,
- -14.491209
+ -13.447996
],
"positionGltf": [
-82.988602,
- -14.491209,
+ -13.447996,
43.190712
],
"bboxBlender": {
"min": [
-88.683998,
-45.709488,
- -14.591208
+ -13.547996
],
"max": [
-77.293213,
-40.67194,
- -14.391209
+ -13.347996
],
"center": [
-82.988602,
-43.190712,
- -14.491209
+ -13.447996
],
"size": [
11.390785,
@@ -157,28 +157,28 @@
"positionBlender": [
-18.808712,
-19.713522,
- -14.491209
+ -13.447996
],
"positionGltf": [
-18.808712,
- -14.491209,
+ -13.447996,
19.713522
],
"bboxBlender": {
"min": [
-22.777105,
-22.294985,
- -14.591208
+ -13.547996
],
"max": [
-14.840318,
-17.132059,
- -14.391209
+ -13.347996
],
"center": [
-18.808712,
-19.713522,
- -14.491209
+ -13.447996
],
"size": [
7.936788,
@@ -218,28 +218,28 @@
"positionBlender": [
57.642273,
-24.258451,
- -14.491209
+ -13.447996
],
"positionGltf": [
57.642273,
- -14.491209,
+ -13.447996,
24.258451
],
"bboxBlender": {
"min": [
53.015755,
-27.422421,
- -14.591208
+ -13.547996
],
"max": [
62.268791,
-21.094482,
- -14.391209
+ -13.347996
],
"center": [
57.642273,
-24.258451,
- -14.491209
+ -13.447996
],
"size": [
9.253036,
@@ -279,28 +279,28 @@
"positionBlender": [
-91.456207,
-38.036762,
- -14.491209
+ -13.447996
],
"positionGltf": [
-91.456207,
- -14.491209,
+ -13.447996,
38.036762
],
"bboxBlender": {
"min": [
-94.292107,
-43.350998,
- -14.591208
+ -13.547996
],
"max": [
-88.620308,
-32.722527,
- -14.391209
+ -13.347996
],
"center": [
-91.456207,
-38.036762,
- -14.491209
+ -13.447996
],
"size": [
5.671799,
@@ -340,28 +340,28 @@
"positionBlender": [
-30.663593,
-14.251428,
- -14.491209
+ -13.447996
],
"positionGltf": [
-30.663593,
- -14.491209,
+ -13.447996,
14.251428
],
"bboxBlender": {
"min": [
-37.766853,
-19.75082,
- -14.591208
+ -13.547996
],
"max": [
-23.560335,
-8.752035,
- -14.391209
+ -13.347996
],
"center": [
-30.663593,
-14.251428,
- -14.491209
+ -13.447996
],
"size": [
14.206518,
@@ -401,28 +401,28 @@
"positionBlender": [
16.534239,
-25.273596,
- -14.491209
+ -13.447996
],
"positionGltf": [
16.534239,
- -14.491209,
+ -13.447996,
25.273596
],
"bboxBlender": {
"min": [
8.809361,
-29.865093,
- -14.591208
+ -13.547996
],
"max": [
24.259117,
-20.682098,
- -14.391209
+ -13.347996
],
"center": [
16.534239,
-25.273596,
- -14.491209
+ -13.447996
],
"size": [
15.449757,
@@ -462,28 +462,28 @@
"positionBlender": [
32.573727,
-24.407684,
- -14.491209
+ -13.447996
],
"positionGltf": [
32.573727,
- -14.491209,
+ -13.447996,
24.407684
],
"bboxBlender": {
"min": [
26.968565,
-28.120514,
- -14.591208
+ -13.547996
],
"max": [
38.178886,
-20.694853,
- -14.391209
+ -13.347996
],
"center": [
32.573727,
-24.407684,
- -14.491209
+ -13.447996
],
"size": [
11.210321,
@@ -523,28 +523,28 @@
"positionBlender": [
68.159348,
-27.444523,
- -14.491209
+ -13.447996
],
"positionGltf": [
68.159348,
- -14.491209,
+ -13.447996,
27.444523
],
"bboxBlender": {
"min": [
65.565315,
-29.686541,
- -14.591208
+ -13.547996
],
"max": [
70.753387,
-25.202505,
- -14.391209
+ -13.347996
],
"center": [
68.159348,
-27.444523,
- -14.491209
+ -13.447996
],
"size": [
5.188072,
@@ -600,6 +600,135 @@
"snappedWalkableId": "navwalk_0042",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_1fa3680520",
+ "name": "L-2 展厅1宇宙厅 展柜",
+ "sourceObjectName": "L-2_展厅1宇宙厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -87.730865,
+ -54.098366,
+ -13.891212
+ ],
+ "positionGltf": [
+ -87.730865,
+ -13.891212,
+ 54.098366
+ ],
+ "bboxBlender": {
+ "min": [
+ -108.995773,
+ -64.283768,
+ -14.391212
+ ],
+ "max": [
+ -66.465958,
+ -43.912968,
+ -13.391212
+ ],
+ "center": [
+ -87.730865,
+ -54.098366,
+ -13.891212
+ ],
+ "size": [
+ 42.529816,
+ 20.3708,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_0328e49a57",
+ "name": "L-2 展厅1宇宙厅 装饰",
+ "sourceObjectName": "L-2_展厅1宇宙厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -90.488953,
+ -44.977547,
+ -11.498024
+ ],
+ "positionGltf": [
+ -90.488953,
+ -11.498024,
+ 44.977547
+ ],
+ "bboxBlender": {
+ "min": [
+ -117.529358,
+ -72.258461,
+ -11.670148
+ ],
+ "max": [
+ -63.448547,
+ -17.696634,
+ -11.325901
+ ],
+ "center": [
+ -90.488953,
+ -44.977547,
+ -11.498024
+ ],
+ "size": [
+ 54.080811,
+ 54.561829,
+ 0.344247
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0010",
"name": "L-2 展厅2地球厅",
@@ -636,6 +765,135 @@
"snappedWalkableId": "navwalk_0043",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_e2ec8ce8ba",
+ "name": "L-2 展厅2地球厅 展柜",
+ "sourceObjectName": "L-2_展厅2地球厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -17.069817,
+ 8.752005,
+ -13.827784
+ ],
+ "positionGltf": [
+ -17.069817,
+ -13.827784,
+ -8.752005
+ ],
+ "bboxBlender": {
+ "min": [
+ -39.71352,
+ -17.498775,
+ -14.391212
+ ],
+ "max": [
+ 5.573887,
+ 35.002785,
+ -13.264354
+ ],
+ "center": [
+ -17.069817,
+ 8.752005,
+ -13.827784
+ ],
+ "size": [
+ 45.287407,
+ 52.50156,
+ 1.126859
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_f23816be84",
+ "name": "L-2 展厅2地球厅 装饰",
+ "sourceObjectName": "L-2_展厅2地球厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -17.07975,
+ 8.416769,
+ -11.498024
+ ],
+ "positionGltf": [
+ -17.07975,
+ -11.498024,
+ -8.416769
+ ],
+ "bboxBlender": {
+ "min": [
+ -39.80014,
+ -18.32555,
+ -11.670148
+ ],
+ "max": [
+ 5.640642,
+ 35.159088,
+ -11.325901
+ ],
+ "center": [
+ -17.07975,
+ 8.416769,
+ -11.498024
+ ],
+ "size": [
+ 45.440781,
+ 53.484638,
+ 0.344247
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0008",
"name": "L-2 展厅3演化厅",
@@ -672,6 +930,135 @@
"snappedWalkableId": "navwalk_0041",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_34bbb3d9d4",
+ "name": "L-2 展厅3演化厅 展柜",
+ "sourceObjectName": "L-2_展厅3演化厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.310183,
+ -51.903332,
+ -13.89121
+ ],
+ "positionGltf": [
+ 25.310183,
+ -13.89121,
+ 51.903332
+ ],
+ "bboxBlender": {
+ "min": [
+ 1.852014,
+ -74.143738,
+ -14.39121
+ ],
+ "max": [
+ 48.768353,
+ -29.662926,
+ -13.39121
+ ],
+ "center": [
+ 25.310183,
+ -51.903332,
+ -13.89121
+ ],
+ "size": [
+ 46.91634,
+ 44.480812,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_a2d90df88c",
+ "name": "L-2 展厅3演化厅 装饰",
+ "sourceObjectName": "L-2_展厅3演化厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.952511,
+ -51.155872,
+ -11.48424
+ ],
+ "positionGltf": [
+ 25.952511,
+ -11.48424,
+ 51.155872
+ ],
+ "bboxBlender": {
+ "min": [
+ 0.856802,
+ -76.251579,
+ -11.642575
+ ],
+ "max": [
+ 51.048218,
+ -26.060165,
+ -11.325903
+ ],
+ "center": [
+ 25.952511,
+ -51.155872,
+ -11.48424
+ ],
+ "size": [
+ 50.191414,
+ 50.191414,
+ 0.316672
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0007",
"name": "L-2 展厅4恐龙厅",
@@ -708,6 +1095,135 @@
"snappedWalkableId": "navwalk_0040",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L-2_f877db497b",
+ "name": "L-2 展厅4恐龙厅 展柜",
+ "sourceObjectName": "L-2_展厅4恐龙厅_展柜",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.237717,
+ 0.634724,
+ -13.987548
+ ],
+ "positionGltf": [
+ 69.237717,
+ -13.987548,
+ -0.634724
+ ],
+ "bboxBlender": {
+ "min": [
+ 50.891533,
+ -17.570641,
+ -14.487549
+ ],
+ "max": [
+ 87.583908,
+ 18.840088,
+ -13.487547
+ ],
+ "center": [
+ 69.237717,
+ 0.634724,
+ -13.987548
+ ],
+ "size": [
+ 36.692375,
+ 36.410728,
+ 1.000002
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_81c1403384",
+ "name": "L-2 展厅4恐龙厅 装饰",
+ "sourceObjectName": "L-2_展厅4恐龙厅_装饰",
+ "floorId": "L-2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 70.205048,
+ -2.088411,
+ -7.689972
+ ],
+ "positionGltf": [
+ 70.205048,
+ -7.689972,
+ 2.088411
+ ],
+ "bboxBlender": {
+ "min": [
+ 56.539871,
+ -8.94316,
+ -13.630424
+ ],
+ "max": [
+ 83.870224,
+ 4.766338,
+ -1.74952
+ ],
+ "center": [
+ 70.205048,
+ -2.088411,
+ -7.689972
+ ],
+ "size": [
+ 27.330353,
+ 13.709497,
+ 11.880904
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-2_ae5be493c0",
"name": "L-2 电梯0001",
@@ -1948,28 +2464,28 @@
"positionBlender": [
-113.980553,
-15.791812,
- -14.191214
+ -13.148001
],
"positionGltf": [
-113.980553,
- -14.191214,
+ -13.148001,
15.791812
],
"bboxBlender": {
"min": [
-117.098137,
-18.852608,
- -14.191214
+ -13.148001
],
"max": [
-110.862968,
-12.731016,
- -14.191214
+ -13.148001
],
"center": [
-113.980553,
-15.791812,
- -14.191214
+ -13.148001
],
"size": [
6.235168,
@@ -2009,28 +2525,28 @@
"positionBlender": [
-125.09758,
-44.947601,
- -14.191216
+ -13.148003
],
"positionGltf": [
-125.09758,
- -14.191216,
+ -13.148003,
44.947601
],
"bboxBlender": {
"min": [
-127.874672,
-48.687687,
- -14.191216
+ -13.148003
],
"max": [
-122.320496,
-41.207516,
- -14.191216
+ -13.148003
],
"center": [
-125.09758,
-44.947601,
- -14.191216
+ -13.148003
],
"size": [
5.554176,
@@ -2070,28 +2586,28 @@
"positionBlender": [
-105.471481,
80.607361,
- -14.19121
+ -13.147997
],
"positionGltf": [
-105.471481,
- -14.19121,
+ -13.147997,
-80.607361
],
"bboxBlender": {
"min": [
-107.082985,
78.048264,
- -14.19121
+ -13.147997
],
"max": [
-103.859978,
83.166458,
- -14.19121
+ -13.147997
],
"center": [
-105.471481,
80.607361,
- -14.19121
+ -13.147997
],
"size": [
3.223007,
@@ -2131,28 +2647,28 @@
"positionBlender": [
-119.36657,
77.92852,
- -14.19121
+ -13.147997
],
"positionGltf": [
-119.36657,
- -14.19121,
+ -13.147997,
-77.92852
],
"bboxBlender": {
"min": [
-121.925667,
76.881042,
- -14.19121
+ -13.147997
],
"max": [
-116.807472,
78.975998,
- -14.19121
+ -13.147997
],
"center": [
-119.36657,
77.92852,
- -14.19121
+ -13.147997
],
"size": [
5.118195,
@@ -2192,28 +2708,28 @@
"positionBlender": [
-118.673454,
19.434433,
- -14.191213
+ -13.148
],
"positionGltf": [
-118.673454,
- -14.191213,
+ -13.148,
-19.434433
],
"bboxBlender": {
"min": [
-121.232552,
17.822931,
- -14.191213
+ -13.148
],
"max": [
-116.114357,
21.045935,
- -14.191213
+ -13.148
],
"center": [
-118.673454,
19.434433,
- -14.191213
+ -13.148
],
"size": [
5.118195,
@@ -2253,28 +2769,28 @@
"positionBlender": [
-96.47963,
-1.494661,
- -14.191214
+ -13.148001
],
"positionGltf": [
-96.47963,
- -14.191214,
+ -13.148001,
1.494661
],
"bboxBlender": {
"min": [
-99.402397,
-4.661394,
- -14.191214
+ -13.148001
],
"max": [
-93.556862,
1.672072,
- -14.191214
+ -13.148001
],
"center": [
-96.47963,
-1.494661,
- -14.191214
+ -13.148001
],
"size": [
5.845535,
@@ -2314,28 +2830,28 @@
"positionBlender": [
-34.926815,
27.636536,
- -14.191212
+ -13.147999
],
"positionGltf": [
-34.926815,
- -14.191212,
+ -13.147999,
-27.636536
],
"bboxBlender": {
"min": [
-38.009949,
24.437557,
- -14.191212
+ -13.147999
],
"max": [
-31.843681,
30.835512,
- -14.191212
+ -13.147999
],
"center": [
-34.926815,
27.636536,
- -14.191212
+ -13.147999
],
"size": [
6.166267,
@@ -2375,28 +2891,28 @@
"positionBlender": [
-54.706528,
-59.089958,
- -14.191216
+ -13.148003
],
"positionGltf": [
-54.706528,
- -14.191216,
+ -13.148003,
59.089958
],
"bboxBlender": {
"min": [
-57.330437,
-62.316452,
- -14.191216
+ -13.148003
],
"max": [
-52.082619,
-55.863464,
- -14.191216
+ -13.148003
],
"center": [
-54.706528,
-59.089958,
- -14.191216
+ -13.148003
],
"size": [
5.247818,
@@ -2436,28 +2952,28 @@
"positionBlender": [
-62.075691,
-69.846909,
- -14.191199
+ -13.147986
],
"positionGltf": [
-62.075691,
- -14.191199,
+ -13.147986,
69.846909
],
"bboxBlender": {
"min": [
-65.201813,
-73.03476,
- -14.191199
+ -13.147986
],
"max": [
-58.949566,
-66.659058,
- -14.191199
+ -13.147986
],
"center": [
-62.075691,
-69.846909,
- -14.191199
+ -13.147986
],
"size": [
6.252247,
@@ -2497,28 +3013,28 @@
"positionBlender": [
-78.359177,
-79.284683,
- -14.191216
+ -13.148004
],
"positionGltf": [
-78.359177,
- -14.191216,
+ -13.148004,
79.284683
],
"bboxBlender": {
"min": [
-81.453293,
-81.614021,
- -14.191216
+ -13.148004
],
"max": [
-75.265053,
-76.955353,
- -14.191216
+ -13.148004
],
"center": [
-78.359177,
-79.284683,
- -14.191216
+ -13.148004
],
"size": [
6.18824,
@@ -2558,28 +3074,28 @@
"positionBlender": [
-51.635437,
-48.365948,
- -14.191216
+ -13.148003
],
"positionGltf": [
-51.635437,
- -14.191216,
+ -13.148003,
48.365948
],
"bboxBlender": {
"min": [
-53.692112,
-51.385803,
- -14.191216
+ -13.148003
],
"max": [
-49.578766,
-45.346092,
- -14.191216
+ -13.148003
],
"center": [
-51.635437,
-48.365948,
- -14.191216
+ -13.148003
],
"size": [
4.113346,
@@ -2619,28 +3135,28 @@
"positionBlender": [
-2.737168,
-53.378433,
- -14.191216
+ -13.148003
],
"positionGltf": [
-2.737168,
- -14.191216,
+ -13.148003,
53.378433
],
"bboxBlender": {
"min": [
-4.629934,
-56.315605,
- -14.191216
+ -13.148003
],
"max": [
-0.844403,
-50.441261,
- -14.191216
+ -13.148003
],
"center": [
-2.737168,
-53.378433,
- -14.191216
+ -13.148003
],
"size": [
3.785531,
@@ -2680,28 +3196,28 @@
"positionBlender": [
91.222206,
-58.967903,
- -14.191216
+ -13.148003
],
"positionGltf": [
91.222206,
- -14.191216,
+ -13.148003,
58.967903
],
"bboxBlender": {
"min": [
88.597946,
-61.816963,
- -14.191216
+ -13.148003
],
"max": [
93.846466,
-56.118843,
- -14.191216
+ -13.148003
],
"center": [
91.222206,
-58.967903,
- -14.191216
+ -13.148003
],
"size": [
5.24852,
@@ -2741,28 +3257,28 @@
"positionBlender": [
93.295212,
-42.003674,
- -14.191216
+ -13.148003
],
"positionGltf": [
93.295212,
- -14.191216,
+ -13.148003,
42.003674
],
"bboxBlender": {
"min": [
91.280716,
-44.204193,
- -14.191216
+ -13.148003
],
"max": [
95.309708,
-39.803154,
- -14.191216
+ -13.148003
],
"center": [
93.295212,
-42.003674,
- -14.191216
+ -13.148003
],
"size": [
4.028992,
@@ -2802,28 +3318,28 @@
"positionBlender": [
94.548233,
5.112744,
- -14.191213
+ -13.148
],
"positionGltf": [
94.548233,
- -14.191213,
+ -13.148,
-5.112744
],
"bboxBlender": {
"min": [
91.702827,
1.737404,
- -14.191213
+ -13.148
],
"max": [
97.393631,
8.488084,
- -14.191213
+ -13.148
],
"center": [
94.548233,
5.112744,
- -14.191213
+ -13.148
],
"size": [
5.690804,
@@ -2863,28 +3379,28 @@
"positionBlender": [
46.435764,
3.948162,
- -14.191214
+ -13.148001
],
"positionGltf": [
46.435764,
- -14.191214,
+ -13.148001,
-3.948162
],
"bboxBlender": {
"min": [
44.394886,
1.178924,
- -14.191214
+ -13.148001
],
"max": [
48.476643,
6.7174,
- -14.191214
+ -13.148001
],
"center": [
46.435764,
3.948162,
- -14.191214
+ -13.148001
],
"size": [
4.081757,
@@ -2924,28 +3440,28 @@
"positionBlender": [
45.298622,
-4.789413,
- -14.191214
+ -13.148001
],
"positionGltf": [
45.298622,
- -14.191214,
+ -13.148001,
4.789413
],
"bboxBlender": {
"min": [
42.057297,
-9.810371,
- -14.191214
+ -13.148001
],
"max": [
48.539951,
0.231545,
- -14.191214
+ -13.148001
],
"center": [
45.298622,
-4.789413,
- -14.191214
+ -13.148001
],
"size": [
6.482655,
@@ -2985,28 +3501,28 @@
"positionBlender": [
53.007278,
-58.379272,
- -14.191216
+ -13.148003
],
"positionGltf": [
53.007278,
- -14.191216,
+ -13.148003,
58.379272
],
"bboxBlender": {
"min": [
50.737381,
-61.493492,
- -14.191216
+ -13.148003
],
"max": [
55.27718,
-55.265053,
- -14.191216
+ -13.148003
],
"center": [
53.007278,
-58.379272,
- -14.191216
+ -13.148003
],
"size": [
4.539799,
@@ -3026,6 +3542,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L-2_482544cba6",
+ "name": "L-2 楼梯0019",
+ "sourceObjectName": "L-2_楼梯0019",
+ "floorId": "L-2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -91.555466,
+ -46.893166,
+ -11.787357
+ ],
+ "positionGltf": [
+ -91.555466,
+ -11.787357,
+ 46.893166
+ ],
+ "bboxBlender": {
+ "min": [
+ -92.662071,
+ -50.393394,
+ -13.3075
+ ],
+ "max": [
+ -90.448868,
+ -43.392933,
+ -10.267215
+ ],
+ "center": [
+ -91.555466,
+ -46.893166,
+ -11.787357
+ ],
+ "size": [
+ 2.213203,
+ 7.000462,
+ 3.040285
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L-2_5753e93667",
+ "name": "L-2 楼梯0020",
+ "sourceObjectName": "L-2_楼梯0020",
+ "floorId": "L-2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -77.065353,
+ -46.893166,
+ -11.787357
+ ],
+ "positionGltf": [
+ -77.065353,
+ -11.787357,
+ 46.893166
+ ],
+ "bboxBlender": {
+ "min": [
+ -78.171959,
+ -50.393394,
+ -13.3075
+ ],
+ "max": [
+ -75.958755,
+ -43.392933,
+ -10.267215
+ ],
+ "center": [
+ -77.065353,
+ -46.893166,
+ -11.787357
+ ],
+ "size": [
+ 2.213203,
+ 7.000462,
+ 3.040285
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L-2_84885548c6",
"name": "L-2 停车位",
@@ -3046,28 +3684,28 @@
"positionBlender": [
-13.833179,
-10.672264,
- -14.191204
+ -14.391253
],
"positionGltf": [
-13.833179,
- -14.191204,
+ -14.391253,
10.672264
],
"bboxBlender": {
"min": [
-134.189468,
-95.291824,
- -14.191208
+ -14.391256
],
"max": [
106.523109,
73.947296,
- -14.1912
+ -14.391249
],
"center": [
-13.833179,
-10.672264,
- -14.191204
+ -14.391253
],
"size": [
240.712585,
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.5.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.5.json
similarity index 99%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.5.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.5.json
index 8f64ec6..4edd4bc 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.5.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.5.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.449Z",
+ "generatedAt": "2026-06-11T09:36:23.698Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L1.5",
"poiCount": 21,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "poi_navpoi_0012",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.json
similarity index 95%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.json
index 3bda12a..fe24de9 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L1.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L1.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.447Z",
+ "generatedAt": "2026-06-11T09:36:23.696Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L1",
- "poiCount": 78,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "poiCount": 81,
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "modelpoi_L1_19555b8890",
@@ -854,6 +854,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_11ae2666ee",
+ "name": "L1 售票机",
+ "sourceObjectName": "L1_售票机",
+ "floorId": "L1",
+ "primaryCategory": "basic_service_facility",
+ "primaryCategoryZh": "基础服务设施",
+ "categories": [
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "ticket_check",
+ "iconType": "ticket",
+ "reason": "matched_ticket_keywords"
+ }
+ ],
+ "iconType": "ticket",
+ "positionBlender": [
+ 17.294315,
+ -24.678955,
+ 1
+ ],
+ "positionGltf": [
+ 17.294315,
+ 1,
+ 24.678955
+ ],
+ "bboxBlender": {
+ "min": [
+ 16.932575,
+ -25.224066,
+ 0
+ ],
+ "max": [
+ 17.656055,
+ -24.133844,
+ 2
+ ],
+ "center": [
+ 17.294315,
+ -24.678955,
+ 1
+ ],
+ "size": [
+ 0.72348,
+ 1.090221,
+ 2
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_f41223bb9c",
"name": "L1 贵宾接待区",
@@ -933,34 +994,34 @@
],
"iconType": "landscape",
"positionBlender": [
- 3.996948,
- 0.012264,
+ 4.52948,
+ 0.231293,
0.172545
],
"positionGltf": [
- 3.996948,
+ 4.52948,
0.172545,
- -0.012264
+ -0.231293
],
"bboxBlender": {
"min": [
- -139.051422,
- -105.240479,
+ -139.421356,
+ -104.762138,
-0.077455
],
"max": [
- 147.045319,
- 105.265007,
+ 148.480316,
+ 105.224724,
0.422545
],
"center": [
- 3.996948,
- 0.012264,
+ 4.52948,
+ 0.231293,
0.172545
],
"size": [
- 286.096741,
- 210.505493,
+ 287.901672,
+ 209.986862,
0.5
]
},
@@ -968,7 +1029,7 @@
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -994,42 +1055,42 @@
],
"iconType": "photo",
"positionBlender": [
- 22.258747,
- 0.367207,
- -0.488044
+ 23.06905,
+ 0.831573,
+ 0.274697
],
"positionGltf": [
- 22.258747,
- -0.488044,
- -0.367207
+ 23.06905,
+ 0.274697,
+ -0.831573
],
"bboxBlender": {
"min": [
- -93.667229,
- -90.865891,
- -1.82078
+ -92.856926,
+ -90.40152,
+ -0.329199
],
"max": [
- 138.184723,
- 91.600304,
- 0.844692
+ 138.995026,
+ 92.064667,
+ 0.878593
],
"center": [
- 22.258747,
- 0.367207,
- -0.488044
+ 23.06905,
+ 0.831573,
+ 0.274697
],
"size": [
231.851959,
182.466187,
- 2.665472
+ 1.207792
]
},
"coordinateSource": "model_object_bbox_center_candidate",
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -1062,12 +1123,12 @@
],
"iconType": "plaza",
"positionBlender": [
- 31.983009,
+ 32.247353,
12.300758,
-2.810548
],
"positionGltf": [
- 31.983009,
+ 32.247353,
-2.810548,
-12.300758
],
@@ -1078,17 +1139,17 @@
-6.257907
],
"max": [
- 49.637825,
+ 50.166512,
37.382774,
0.63681
],
"center": [
- 31.983009,
+ 32.247353,
12.300758,
-2.810548
],
"size": [
- 35.309631,
+ 35.838318,
50.164032,
6.894717
]
@@ -1097,7 +1158,7 @@
"navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
"sourceConfidence": "medium",
"sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "floorInferenceMethod": "strict_object_name_floor_prefix",
"currentSceneObjectFound": true,
"duplicateOfAuthorityPoiId": null,
"notesZh": [
@@ -1457,6 +1518,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_bce5578bda",
+ "name": "L1 L1 展厅5人类厅 装饰01",
+ "sourceObjectName": "L1_L1_展厅5人类厅_装饰01",
+ "floorId": "L1",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 112.835953,
+ -51.190968,
+ 2.864931
+ ],
+ "positionGltf": [
+ 112.835953,
+ 2.864931,
+ 51.190968
+ ],
+ "bboxBlender": {
+ "min": [
+ 84.834236,
+ -79.192871,
+ 0.034751
+ ],
+ "max": [
+ 140.837662,
+ -23.189064,
+ 5.695111
+ ],
+ "center": [
+ 112.835953,
+ -51.190968,
+ 2.864931
+ ],
+ "size": [
+ 56.003426,
+ 56.003807,
+ 5.66036
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L1_d6bfac9efe",
+ "name": "L1 L1 展厅5人类厅 装饰02",
+ "sourceObjectName": "L1_L1_展厅5人类厅_装饰02",
+ "floorId": "L1",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 112.655197,
+ -51.249493,
+ 3.820072
+ ],
+ "positionGltf": [
+ 112.655197,
+ 3.820072,
+ 51.249493
+ ],
+ "bboxBlender": {
+ "min": [
+ 108.68396,
+ -55.220016,
+ 0.032804
+ ],
+ "max": [
+ 116.626434,
+ -47.278969,
+ 7.607341
+ ],
+ "center": [
+ 112.655197,
+ -51.249493,
+ 3.820072
+ ],
+ "size": [
+ 7.942474,
+ 7.941048,
+ 7.574537
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_45de13b368",
"name": "L1 电梯0001",
@@ -2860,67 +3043,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "modelpoi_L1_a4a00c978d",
- "name": "L1 楼梯0002",
- "sourceObjectName": "L1_楼梯0002",
- "floorId": "L1",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- -118.638206,
- 19.517469,
- 0.217286
- ],
- "positionGltf": [
- -118.638206,
- 0.217286,
- -19.517469
- ],
- "bboxBlender": {
- "min": [
- -123.097366,
- 17.564606,
- 0.217286
- ],
- "max": [
- -114.179047,
- 21.470333,
- 0.217286
- ],
- "center": [
- -118.638206,
- 19.517469,
- 0.217286
- ],
- "size": [
- 8.91832,
- 3.905727,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
{
"id": "modelpoi_L1_360cce5a19",
"name": "L1 楼梯0003",
@@ -4325,70 +4447,9 @@
]
},
{
- "id": "modelpoi_L1_9a31638f63",
- "name": "L1 楼梯0026",
- "sourceObjectName": "L1_楼梯0026",
- "floorId": "L1",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- -127.951675,
- 2.199766,
- 0.217286
- ],
- "positionGltf": [
- -127.951675,
- 0.217286,
- -2.199766
- ],
- "bboxBlender": {
- "min": [
- -129.983459,
- -1.394757,
- 0.217286
- ],
- "max": [
- -125.919891,
- 5.794289,
- 0.217286
- ],
- "center": [
- -127.951675,
- 2.199766,
- 0.217286
- ],
- "size": [
- 4.063568,
- 7.189046,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
- {
- "id": "modelpoi_L1_fa423c9ad0",
- "name": "L1 楼梯0027",
- "sourceObjectName": "L1_楼梯0027",
+ "id": "modelpoi_L1_5655c264c1",
+ "name": "L1 室外楼梯0001",
+ "sourceObjectName": "L1_室外楼梯0001",
"floorId": "L1",
"primaryCategory": "transport_circulation",
"primaryCategoryZh": "交通与通行动线",
@@ -4447,9 +4508,9 @@
]
},
{
- "id": "modelpoi_L1_7d0051d2a6",
- "name": "L1 楼梯0028",
- "sourceObjectName": "L1_楼梯0028",
+ "id": "modelpoi_L1_6fa8f94e0d",
+ "name": "L1 室外楼梯0002",
+ "sourceObjectName": "L1_室外楼梯0002",
"floorId": "L1",
"primaryCategory": "transport_circulation",
"primaryCategoryZh": "交通与通行动线",
@@ -4507,6 +4568,128 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L1_9d38633ca9",
+ "name": "L1 室外楼梯0003",
+ "sourceObjectName": "L1_室外楼梯0003",
+ "floorId": "L1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -118.638206,
+ 19.517469,
+ 0.217286
+ ],
+ "positionGltf": [
+ -118.638206,
+ 0.217286,
+ -19.517469
+ ],
+ "bboxBlender": {
+ "min": [
+ -123.097366,
+ 17.564606,
+ 0.217286
+ ],
+ "max": [
+ -114.179047,
+ 21.470333,
+ 0.217286
+ ],
+ "center": [
+ -118.638206,
+ 19.517469,
+ 0.217286
+ ],
+ "size": [
+ 8.91832,
+ 3.905727,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L1_3936c7e2b1",
+ "name": "L1 室外楼梯0004",
+ "sourceObjectName": "L1_室外楼梯0004",
+ "floorId": "L1",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "stair",
+ "iconType": "stair",
+ "reason": "matched_stair_keywords"
+ }
+ ],
+ "iconType": "stair",
+ "positionBlender": [
+ -127.951675,
+ 2.199766,
+ 0.217286
+ ],
+ "positionGltf": [
+ -127.951675,
+ 0.217286,
+ -2.199766
+ ],
+ "bboxBlender": {
+ "min": [
+ -129.983459,
+ -1.394757,
+ 0.217286
+ ],
+ "max": [
+ -125.919891,
+ 5.794289,
+ 0.217286
+ ],
+ "center": [
+ -127.951675,
+ 2.199766,
+ 0.217286
+ ],
+ "size": [
+ 4.063568,
+ 7.189046,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L1_a6652685b8",
"name": "L1 停车场",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L2.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L2.json
similarity index 82%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L2.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L2.json
index 25832de..ac1c2fb 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L2.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L2.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.450Z",
+ "generatedAt": "2026-06-11T09:36:23.699Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L2",
- "poiCount": 47,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "poiCount": 55,
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "poi_navpoi_0015",
@@ -356,6 +356,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L2_9267c2d1d4",
+ "name": "L2 卫生间",
+ "sourceObjectName": "L2_卫生间",
+ "floorId": "L2",
+ "primaryCategory": "basic_service_facility",
+ "primaryCategoryZh": "基础服务设施",
+ "categories": [
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "restroom",
+ "iconType": "restroom",
+ "reason": "matched_restroom_keywords"
+ }
+ ],
+ "iconType": "restroom",
+ "positionBlender": [
+ 52.255562,
+ -9.283119,
+ 10.273865
+ ],
+ "positionGltf": [
+ 52.255562,
+ 10.273865,
+ 9.283119
+ ],
+ "bboxBlender": {
+ "min": [
+ 50.174667,
+ -11.629254,
+ 10.273865
+ ],
+ "max": [
+ 54.336456,
+ -6.936984,
+ 10.273865
+ ],
+ "center": [
+ 52.255562,
+ -9.283119,
+ 10.273865
+ ],
+ "size": [
+ 4.161789,
+ 4.69227,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_f362d56eba",
"name": "L2 文创店旗舰店",
@@ -453,6 +514,203 @@
"snappedWalkableId": "navwalk_0034",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_ecd476d1be",
+ "name": "L2 展厅 6生物厅 展柜01",
+ "sourceObjectName": "L2_展厅_6生物厅_展柜01",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.279694,
+ -5.825405,
+ 10.281687
+ ],
+ "positionGltf": [
+ 69.279694,
+ 10.281687,
+ 5.825405
+ ],
+ "bboxBlender": {
+ "min": [
+ 62.97464,
+ -12.536184,
+ 10.031687
+ ],
+ "max": [
+ 75.584747,
+ 0.885374,
+ 10.531687
+ ],
+ "center": [
+ 69.279694,
+ -5.825405,
+ 10.281687
+ ],
+ "size": [
+ 12.610107,
+ 13.421558,
+ 0.5
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_d93b7e7a22",
+ "name": "L2 展厅 6生物厅 展柜02",
+ "sourceObjectName": "L2_展厅_6生物厅_展柜02",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.861053,
+ -5.292932,
+ 10.594574
+ ],
+ "positionGltf": [
+ 69.861053,
+ 10.594574,
+ 5.292932
+ ],
+ "bboxBlender": {
+ "min": [
+ 63.916744,
+ -9.808617,
+ 10.031687
+ ],
+ "max": [
+ 75.805359,
+ -0.777246,
+ 11.157462
+ ],
+ "center": [
+ 69.861053,
+ -5.292932,
+ 10.594574
+ ],
+ "size": [
+ 11.888615,
+ 9.03137,
+ 1.125775
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_bf6262807a",
+ "name": "L2 展厅 6生物厅 装饰",
+ "sourceObjectName": "L2_展厅_6生物厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 69.074303,
+ -1.496778,
+ 13.479435
+ ],
+ "positionGltf": [
+ 69.074303,
+ 13.479435,
+ 1.496778
+ ],
+ "bboxBlender": {
+ "min": [
+ 52.643074,
+ -17.928007,
+ 13.479435
+ ],
+ "max": [
+ 85.505531,
+ 14.934451,
+ 13.479435
+ ],
+ "center": [
+ 69.074303,
+ -1.496778,
+ 13.479435
+ ],
+ "size": [
+ 32.862457,
+ 32.862457,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0005",
"name": "L2 展厅 7生态厅",
@@ -489,6 +747,135 @@
"snappedWalkableId": "navwalk_0033",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_2fea6b6cff",
+ "name": "L2 展厅 7生态厅 展柜",
+ "sourceObjectName": "L2_展厅_7生态厅_展柜",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 25.018467,
+ -53.729153,
+ 10.511989
+ ],
+ "positionGltf": [
+ 25.018467,
+ 10.511989,
+ 53.729153
+ ],
+ "bboxBlender": {
+ "min": [
+ 6.264536,
+ -72.165092,
+ 10.011989
+ ],
+ "max": [
+ 43.772396,
+ -35.293213,
+ 11.011989
+ ],
+ "center": [
+ 25.018467,
+ -53.729153,
+ 10.511989
+ ],
+ "size": [
+ 37.507858,
+ 36.87188,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_91de093d1e",
+ "name": "L2 展厅 7生态厅 装饰",
+ "sourceObjectName": "L2_展厅_7生态厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ 24.894787,
+ -53.795837,
+ 13.408146
+ ],
+ "positionGltf": [
+ 24.894787,
+ 13.408146,
+ 53.795837
+ ],
+ "bboxBlender": {
+ "min": [
+ 6.307831,
+ -72.382797,
+ 13.408146
+ ],
+ "max": [
+ 43.481743,
+ -35.208881,
+ 13.408146
+ ],
+ "center": [
+ 24.894787,
+ -53.795837,
+ 13.408146
+ ],
+ "size": [
+ 37.173912,
+ 37.173916,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "poi_navpoi_0004",
"name": "L2 展厅 8家园厅",
@@ -525,6 +912,135 @@
"snappedWalkableId": "navwalk_0032",
"duplicateOfAuthorityPoiId": null
},
+ {
+ "id": "modelpoi_L2_8b43a8a2a8",
+ "name": "L2 展厅 8家园厅 展柜",
+ "sourceObjectName": "L2_展厅_8家园厅_展柜",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ },
+ {
+ "topCategory": "basic_service_facility",
+ "topCategoryZh": "基础服务设施",
+ "subcategory": "locker",
+ "iconType": "locker",
+ "reason": "matched_locker_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -12.998978,
+ 10.578304,
+ 10.478165
+ ],
+ "positionGltf": [
+ -12.998978,
+ 10.478165,
+ -10.578304
+ ],
+ "bboxBlender": {
+ "min": [
+ -33.451897,
+ -9.404156,
+ 9.978165
+ ],
+ "max": [
+ 7.453941,
+ 30.560764,
+ 10.978165
+ ],
+ "center": [
+ -12.998978,
+ 10.578304,
+ 10.478165
+ ],
+ "size": [
+ 40.905838,
+ 39.96492,
+ 1
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
+ {
+ "id": "modelpoi_L2_83406e72e2",
+ "name": "L2 展厅 8家园厅 装饰",
+ "sourceObjectName": "L2_展厅_8家园厅_装饰",
+ "floorId": "L2",
+ "primaryCategory": "touring_poi",
+ "primaryCategoryZh": "游览 POI",
+ "categories": [
+ {
+ "topCategory": "touring_poi",
+ "topCategoryZh": "游览 POI",
+ "subcategory": "exhibition_hall",
+ "iconType": "exhibition",
+ "reason": "matched_exhibition_keywords"
+ }
+ ],
+ "iconType": "exhibition",
+ "positionBlender": [
+ -13.14613,
+ 10.430546,
+ 13.373477
+ ],
+ "positionGltf": [
+ -13.14613,
+ 13.373477,
+ -10.430546
+ ],
+ "bboxBlender": {
+ "min": [
+ -33.201469,
+ -9.624794,
+ 13.373477
+ ],
+ "max": [
+ 6.909211,
+ 30.485886,
+ 13.373477
+ ],
+ "center": [
+ -13.14613,
+ 10.430546,
+ 13.373477
+ ],
+ "size": [
+ 40.11068,
+ 40.11068,
+ 0
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_4e0d3ab858",
"name": "L2 电梯0001",
@@ -1501,6 +2017,67 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
+ {
+ "id": "modelpoi_L2_9040c9507a",
+ "name": "L2 电梯017",
+ "sourceObjectName": "L2_电梯017",
+ "floorId": "L2",
+ "primaryCategory": "transport_circulation",
+ "primaryCategoryZh": "交通与通行动线",
+ "categories": [
+ {
+ "topCategory": "transport_circulation",
+ "topCategoryZh": "交通与通行动线",
+ "subcategory": "elevator",
+ "iconType": "elevator",
+ "reason": "matched_elevator_keywords"
+ }
+ ],
+ "iconType": "elevator",
+ "positionBlender": [
+ 60.687622,
+ -19.346493,
+ 11.510571
+ ],
+ "positionGltf": [
+ 60.687622,
+ 11.510571,
+ 19.346493
+ ],
+ "bboxBlender": {
+ "min": [
+ 58.144585,
+ -21.878351,
+ 10.008377
+ ],
+ "max": [
+ 63.230656,
+ -16.814634,
+ 13.012766
+ ],
+ "center": [
+ 60.687622,
+ -19.346493,
+ 11.510571
+ ],
+ "size": [
+ 5.086071,
+ 5.063717,
+ 3.004389
+ ]
+ },
+ "coordinateSource": "model_object_bbox_center_candidate",
+ "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
+ "sourceConfidence": "medium",
+ "sourceType": "current_blender_scene_model_object",
+ "floorInferenceMethod": "name_or_collection_or_custom_property",
+ "currentSceneObjectFound": true,
+ "duplicateOfAuthorityPoiId": null,
+ "notesZh": [
+ "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
+ "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
+ ]
+ },
{
"id": "modelpoi_L2_041990743f",
"name": "L2 扶梯001",
@@ -1562,67 +2139,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "modelpoi_L2_5b3ad4268d",
- "name": "L2 楼梯0001",
- "sourceObjectName": "L2_楼梯0001",
- "floorId": "L2",
- "primaryCategory": "transport_circulation",
- "primaryCategoryZh": "交通与通行动线",
- "categories": [
- {
- "topCategory": "transport_circulation",
- "topCategoryZh": "交通与通行动线",
- "subcategory": "stair",
- "iconType": "stair",
- "reason": "matched_stair_keywords"
- }
- ],
- "iconType": "stair",
- "positionBlender": [
- 49.78883,
- 2.614235,
- 10.178167
- ],
- "positionGltf": [
- 49.78883,
- 10.178167,
- -2.614235
- ],
- "bboxBlender": {
- "min": [
- 48.060421,
- 0.55634,
- 10.178167
- ],
- "max": [
- 51.517239,
- 4.67213,
- 10.178167
- ],
- "center": [
- 49.78883,
- 2.614235,
- 10.178167
- ],
- "size": [
- 3.456818,
- 4.115789,
- 0
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_nav_anchor_for_routing",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object",
- "floorInferenceMethod": "name_or_collection_or_custom_property",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位从当前 Blender 模型对象名和 bbox center 提取,适合前端搜索、筛选和初步展示。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
- ]
- },
{
"id": "modelpoi_L2_579220538a",
"name": "L2 楼梯0002",
@@ -1641,34 +2157,34 @@
],
"iconType": "stair",
"positionBlender": [
- 47.912979,
- 3.191393,
+ 48.342949,
+ 2.291168,
10.178167
],
"positionGltf": [
- 47.912979,
+ 48.342949,
10.178167,
- -3.191393
+ -2.291168
],
"bboxBlender": {
"min": [
- 46.033844,
- 1.109414,
+ 44.615009,
+ -1.112592,
10.178167
],
"max": [
- 49.792118,
- 5.273373,
+ 52.070892,
+ 5.694929,
10.178167
],
"center": [
- 47.912979,
- 3.191393,
+ 48.342949,
+ 2.291168,
10.178167
],
"size": [
- 3.758274,
- 4.163959,
+ 7.455883,
+ 6.80752,
0
]
},
@@ -1763,34 +2279,34 @@
],
"iconType": "stair",
"positionBlender": [
- 89.312012,
- -1.252304,
+ 89.507751,
+ -1.233227,
10.178167
],
"positionGltf": [
- 89.312012,
+ 89.507751,
10.178167,
- 1.252304
+ 1.233227
],
"bboxBlender": {
"min": [
- 86.608589,
- -4.589386,
+ 86.639137,
+ -4.504424,
10.178167
],
"max": [
- 92.015442,
- 2.084779,
+ 92.376358,
+ 2.037969,
10.178167
],
"center": [
- 89.312012,
- -1.252304,
+ 89.507751,
+ -1.233227,
10.178167
],
"size": [
- 5.406853,
- 6.674165,
+ 5.737221,
+ 6.542393,
0
]
},
@@ -1824,34 +2340,34 @@
],
"iconType": "stair",
"positionBlender": [
- 87.619148,
- 5.131519,
+ 87.892075,
+ 4.699806,
10.178167
],
"positionGltf": [
- 87.619148,
+ 87.892075,
10.178167,
- -5.131519
+ -4.699806
],
"bboxBlender": {
"min": [
- 85.311478,
- 2.042627,
+ 85.100731,
+ 0.739156,
10.178167
],
"max": [
- 89.926819,
- 8.220411,
+ 90.683418,
+ 8.660455,
10.178167
],
"center": [
- 87.619148,
- 5.131519,
+ 87.892075,
+ 4.699806,
10.178167
],
"size": [
- 4.615341,
- 6.177784,
+ 5.582687,
+ 7.921299,
0
]
},
@@ -1885,34 +2401,34 @@
],
"iconType": "stair",
"positionBlender": [
- 47.859646,
- -3.881408,
- 10.178166
+ 47.717403,
+ -3.410032,
+ 10.178167
],
"positionGltf": [
- 47.859646,
- 10.178166,
- 3.881408
+ 47.717403,
+ 10.178167,
+ 3.410032
],
"bboxBlender": {
"min": [
- 45.350086,
- -7.03454,
- 10.178166
+ 44.856789,
+ -7.097251,
+ 10.178167
],
"max": [
- 50.369205,
- -0.728276,
- 10.178166
+ 50.578018,
+ 0.277186,
+ 10.178167
],
"center": [
- 47.859646,
- -3.881408,
- 10.178166
+ 47.717403,
+ -3.410032,
+ 10.178167
],
"size": [
- 5.019119,
- 6.306264,
+ 5.72123,
+ 7.374437,
0
]
},
@@ -2129,34 +2645,34 @@
],
"iconType": "stair",
"positionBlender": [
- -4.680887,
- -10.44739,
+ -3.329174,
+ -9.639655,
10.178166
],
"positionGltf": [
- -4.680887,
+ -3.329174,
10.178166,
- 10.44739
+ 9.639655
],
"bboxBlender": {
"min": [
- -7.049561,
- -12.861378,
+ -7.459712,
+ -13.094296,
10.178166
],
"max": [
- -2.312214,
- -8.033401,
+ 0.801365,
+ -6.185015,
10.178166
],
"center": [
- -4.680887,
- -10.44739,
+ -3.329174,
+ -9.639655,
10.178166
],
"size": [
- 4.737347,
- 4.827976,
+ 8.261077,
+ 6.909281,
0
]
},
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L3.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L3.json
similarity index 93%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L3.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L3.json
index e5cc144..ce833e2 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L3.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L3.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.451Z",
+ "generatedAt": "2026-06-11T09:36:23.700Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L3",
- "poiCount": 16,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "poiCount": 15,
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "poi_navpoi_0016",
@@ -173,67 +173,6 @@
"如需用于精确路线规划,需要后续补充或确认 NAV anchor。"
]
},
- {
- "id": "supplemental_919d93c114",
- "name": "楼顶绿化",
- "sourceObjectName": "楼顶绿化",
- "floorId": "L3",
- "primaryCategory": "operation_experience",
- "primaryCategoryZh": "运营体验类点位",
- "categories": [
- {
- "topCategory": "operation_experience",
- "topCategoryZh": "运营体验类点位",
- "subcategory": "landscape_area",
- "iconType": "landscape",
- "reason": "clean_package_supplemental_rooftop_landscape_keyword"
- }
- ],
- "iconType": "landscape",
- "positionBlender": [
- 6.860313,
- 5.471432,
- 16.841034
- ],
- "positionGltf": [
- 6.860313,
- 16.841034,
- -5.471432
- ],
- "bboxBlender": {
- "min": [
- -126.819077,
- -81.523155,
- -0.851679
- ],
- "max": [
- 140.539703,
- 92.466019,
- 34.533749
- ],
- "center": [
- 6.860313,
- 5.471432,
- 16.841034
- ],
- "size": [
- 267.358765,
- 173.989166,
- 35.385429
- ]
- },
- "coordinateSource": "model_object_bbox_center_candidate",
- "navigationReadiness": "display_candidate_requires_access_or_nav_anchor_confirmation",
- "sourceConfidence": "medium",
- "sourceType": "current_blender_scene_model_object_supplemental_clean_package",
- "floorInferenceMethod": "bbox_center_z_heuristic",
- "currentSceneObjectFound": true,
- "duplicateOfAuthorityPoiId": null,
- "notesZh": [
- "该点位是清洁资源包补充的景观/公共空间候选,适合前端展示、筛选和搜索。",
- "如需用于精确路线规划,需要后续补充或确认 NAV anchor 与开放状态。"
- ]
- },
{
"id": "modelpoi_L3_293d59fa33",
"name": "L3 电梯0001",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L4.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L4.json
similarity index 99%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L4.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L4.json
index c37f0f1..81f1775 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L4.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L4.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.452Z",
+ "generatedAt": "2026-06-11T09:36:23.701Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L4",
"poiCount": 27,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "poi_navpoi_0017",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L5.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L5.json
similarity index 99%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L5.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L5.json
index 2d8eab9..79199fd 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_by_floor/L5.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_by_floor/L5.json
@@ -1,12 +1,12 @@
{
"schemaVersion": "miniapp-floor-poi-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.453Z",
+ "generatedAt": "2026-06-11T09:36:23.703Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
"floorId": "L5",
"poiCount": 11,
- "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois",
+ "sourceInvocation": "clean_app_nav_assets_v2_from_enhanced_model_pois_strict_floor_prefix",
"pois": [
{
"id": "poi_navpoi_0013",
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_category_index.json b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_category_index.json
similarity index 89%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_category_index.json
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_category_index.json
index b55266f..e9e78c7 100644
--- a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/data/poi_category_index.json
+++ b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/data/poi_category_index.json
@@ -1,6 +1,6 @@
{
"schemaVersion": "miniapp-poi-category-index-clean-2.0",
- "generatedAt": "2026-06-09T07:53:40.463Z",
+ "generatedAt": "2026-06-11T09:36:23.714Z",
"runId": "codex_nav_20260607_reloaded_223947",
"workflowRunId": "codex_nav_20260607_reloaded_223947",
"status": "pass",
@@ -8,12 +8,20 @@
{
"topCategory": "touring_poi",
"topCategoryZh": "游览 POI",
- "poiCount": 17,
+ "poiCount": 34,
"poiIds": [
"poi_navpoi_0009",
+ "modelpoi_L-2_1fa3680520",
+ "modelpoi_L-2_0328e49a57",
"poi_navpoi_0010",
+ "modelpoi_L-2_e2ec8ce8ba",
+ "modelpoi_L-2_f23816be84",
"poi_navpoi_0008",
+ "modelpoi_L-2_34bbb3d9d4",
+ "modelpoi_L-2_a2d90df88c",
"poi_navpoi_0007",
+ "modelpoi_L-2_f877db497b",
+ "modelpoi_L-2_81c1403384",
"modelpoi_L-1_14ec89b181",
"modelpoi_L1_350cd0e084",
"modelpoi_L1_9ba9a658bb",
@@ -22,9 +30,18 @@
"modelpoi_L1_d2b5d8b621",
"poi_navpoi_0002",
"modelpoi_L1_4e1111c7b1",
+ "modelpoi_L1_bce5578bda",
+ "modelpoi_L1_d6bfac9efe",
"poi_navpoi_0006",
+ "modelpoi_L2_ecd476d1be",
+ "modelpoi_L2_d93b7e7a22",
+ "modelpoi_L2_bf6262807a",
"poi_navpoi_0005",
+ "modelpoi_L2_2fea6b6cff",
+ "modelpoi_L2_91de093d1e",
"poi_navpoi_0004",
+ "modelpoi_L2_8b43a8a2a8",
+ "modelpoi_L2_83406e72e2",
"modelpoi_L4_4ba6b2c3cd",
"modelpoi_L4_a306ac4979"
]
@@ -32,7 +49,7 @@
{
"topCategory": "basic_service_facility",
"topCategoryZh": "基础服务设施",
- "poiCount": 47,
+ "poiCount": 57,
"poiIds": [
"modelpoi_L-2_492e987660",
"modelpoi_L-2_433ee81108",
@@ -43,6 +60,10 @@
"modelpoi_L-2_e2cac3d857",
"modelpoi_L-2_d36fe2dc9d",
"modelpoi_L-2_c0855378b9",
+ "modelpoi_L-2_1fa3680520",
+ "modelpoi_L-2_e2ec8ce8ba",
+ "modelpoi_L-2_34bbb3d9d4",
+ "modelpoi_L-2_f877db497b",
"modelpoi_L1_55e995bb4d",
"poi_navpoi_0001",
"poi_navpoi_0011",
@@ -56,6 +77,7 @@
"modelpoi_L1_8045e85848",
"modelpoi_L1_170ebd7038",
"modelpoi_L1_90b628a1d5",
+ "modelpoi_L1_11ae2666ee",
"poi_navpoi_0012",
"modelpoi_L1.5_b21db95ba5",
"modelpoi_L1.5_a5b10d8b77",
@@ -65,7 +87,12 @@
"modelpoi_L2_2d14073a06",
"modelpoi_L2_4470473302",
"modelpoi_L2_e9fc021625",
+ "modelpoi_L2_9267c2d1d4",
"modelpoi_L2_f362d56eba",
+ "modelpoi_L2_ecd476d1be",
+ "modelpoi_L2_d93b7e7a22",
+ "modelpoi_L2_2fea6b6cff",
+ "modelpoi_L2_8b43a8a2a8",
"poi_navpoi_0016",
"modelpoi_L3_73737c95dc",
"modelpoi_L3_7ead513df1",
@@ -86,7 +113,7 @@
{
"topCategory": "transport_circulation",
"topCategoryZh": "交通与通行动线",
- "poiCount": 229,
+ "poiCount": 232,
"poiIds": [
"modelpoi_L-2_ae5be493c0",
"modelpoi_L-2_e628190832",
@@ -126,6 +153,8 @@
"modelpoi_L-2_a9c1ecac07",
"modelpoi_L-2_7a4fb7e3e7",
"modelpoi_L-2_5250437db8",
+ "modelpoi_L-2_482544cba6",
+ "modelpoi_L-2_5753e93667",
"modelpoi_L-2_84885548c6",
"modelpoi_L-1_e98e1e7579",
"modelpoi_L-1_31bfe24f01",
@@ -171,6 +200,7 @@
"modelpoi_L-1_c2152945b5",
"modelpoi_L-1_d10fc5993f",
"modelpoi_L-1_7639982b98",
+ "modelpoi_L-1_04e400880b",
"modelpoi_L-1_e3aff063cb",
"supplemental_cc67428117",
"modelpoi_L1_45de13b368",
@@ -196,7 +226,6 @@
"modelpoi_L1_5338a76c2c",
"modelpoi_L1_b3347e28c9",
"modelpoi_L1_84fb77260b",
- "modelpoi_L1_a4a00c978d",
"modelpoi_L1_360cce5a19",
"modelpoi_L1_12b7990225",
"modelpoi_L1_87efe86522",
@@ -220,9 +249,10 @@
"modelpoi_L1_2ce36ed339",
"modelpoi_L1_9461bfead0",
"modelpoi_L1_8a9434da15",
- "modelpoi_L1_9a31638f63",
- "modelpoi_L1_fa423c9ad0",
- "modelpoi_L1_7d0051d2a6",
+ "modelpoi_L1_5655c264c1",
+ "modelpoi_L1_6fa8f94e0d",
+ "modelpoi_L1_9d38633ca9",
+ "modelpoi_L1_3936c7e2b1",
"modelpoi_L1_a6652685b8",
"modelpoi_L1_9611467f0f",
"modelpoi_L1_ce023b99e4",
@@ -260,8 +290,8 @@
"modelpoi_L2_50d761d668",
"modelpoi_L2_8144b8df38",
"modelpoi_L2_580aca14fe",
+ "modelpoi_L2_9040c9507a",
"modelpoi_L2_041990743f",
- "modelpoi_L2_5b3ad4268d",
"modelpoi_L2_579220538a",
"modelpoi_L2_e8eb126078",
"modelpoi_L2_aacd33c979",
@@ -345,7 +375,7 @@
{
"topCategory": "operation_experience",
"topCategoryZh": "运营体验类点位",
- "poiCount": 8,
+ "poiCount": 7,
"poiIds": [
"modelpoi_L1_19555b8890",
"modelpoi_L1_e1f290ee5a",
@@ -353,8 +383,7 @@
"modelpoi_L1_f41223bb9c",
"supplemental_b23c543281",
"supplemental_306932bd08",
- "supplemental_cc67428117",
- "supplemental_919d93c114"
+ "supplemental_cc67428117"
]
}
]
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-1.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-1.glb
similarity index 89%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-1.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-1.glb
index 9eefbf3..5a71bbd 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L-1.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-1.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-2.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-2.glb
new file mode 100644
index 0000000..0bb396d
Binary files /dev/null and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L-2.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.5.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.5.glb
similarity index 94%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.5.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.5.glb
index 49dd1f1..bb42c02 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L1.5.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.5.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/building_overview.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.glb
similarity index 57%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/building_overview.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.glb
index f902083..c84fc62 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/building_overview.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L1.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L2.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L2.glb
similarity index 66%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L2.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L2.glb
index 922d760..689c8a1 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L2.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L2.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L3.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L3.glb
new file mode 100644
index 0000000..c11ae05
Binary files /dev/null and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L3.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L4.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L4.glb
similarity index 95%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L4.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L4.glb
index 8983ee2..3744ff6 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L4.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L4.glb differ
diff --git a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L5.glb b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L5.glb
similarity index 78%
rename from static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L5.glb
rename to static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L5.glb
index 78443d3..5bf136f 100644
Binary files a/static/nav-assets/app_nav_assets_v2_clean_20260609_075339/models_by_floor/L5.glb and b/static/nav-assets/app_nav_assets_v2_clean_20260611_093623/models_by_floor/L5.glb differ