From 1373eff4ab26f5c8178cf79c7926a8bb1bb119e0 Mon Sep 17 00:00:00 2001 From: oliver Date: Fri, 7 Aug 2026 17:57:33 +0800 Subject: [PATCH] Stop applying UME inventory totals to empty manual root maps. Co-authored-by: Cursor --- netx_api/topology_views_tree.py | 27 ++++++--------------------- web/src/pages/TopologyPage.tsx | 4 ++-- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/netx_api/topology_views_tree.py b/netx_api/topology_views_tree.py index 2d9d49c..fa8b34a 100644 --- a/netx_api/topology_views_tree.py +++ b/netx_api/topology_views_tree.py @@ -747,30 +747,15 @@ def get_topology_tree(db: Session) -> TopologyTreeOut: pid = str(f.parent_id or "") by_parent.setdefault(pid, []).append(f) - root_id = str(root.id) if root is not None else "" - - def _is_manual_root_map(folder: TopoFolder) -> bool: - ext = str(getattr(folder, "external_ref", None) or "").strip() - if ext: - return False - if not bool(folder.is_system): - return False - return is_manual_root_map_name(folder.name) - def _is_whole_network_folder(folder: TopoFolder) -> bool: - """根 / 根图 / UME World / World — same inventory, different presentation.""" + """UME World / World / 世界地图 — same UME inventory, different presentation. + + Manual「根」/「根图」are separate canvases and must use their own subtree counts + (empty root map → 0N), never the UME thousands. + """ from .ume_topology_world import is_ume_world_container, is_world_drill_folder - if is_ume_world_container(folder) or is_world_drill_folder(folder): - return True - ext = str(getattr(folder, "external_ref", None) or "").strip() - if ext.startswith("ume:"): - return False - parent = str(folder.parent_id or "").strip() - # Top-level manual「根」(nav-only under system root). - if root_id and parent == root_id and not ext: - return True - return _is_manual_root_map(folder) + return is_ume_world_container(folder) or is_world_drill_folder(folder) def _subtree_inventory(folder_id: str) -> int: """Directory semantics: NEs owned by this folder + all descendant folders.""" diff --git a/web/src/pages/TopologyPage.tsx b/web/src/pages/TopologyPage.tsx index a9b4c9e..8cc009d 100644 --- a/web/src/pages/TopologyPage.tsx +++ b/web/src/pages/TopologyPage.tsx @@ -315,8 +315,8 @@ function primaryTreeView( /** * Directory NE badge from API: fabric inventory under the folder. - * 根 / 根图 / UME World / World share the same whole-network total; nested regions - * sum owned NEs in their subtree. Region folders themselves never count as NEs. + * UME World / World / 世界地图 share the UME total; manual 根/根图 use their own + * subtree (empty → 0). Region folders themselves never count as NEs. */ function folderNeCount(folder: TopologyTreeFolderItem | null | undefined): number { if (!folder) return 0;