ctc_poc2026/POC-TSG匹配测试用例_DMK库表清单(1).md

202 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# POC-TSG匹配测试用例 DMK 库表清单
## 1. 设计结论
本次查询服务建议建设 `dmk` 模式下的两类表:`td_` 维度/配置表和 `tm_` 月粒度业务指标表。设计不采用“一个业务一两张超宽表”的方式,而是按楼宇、区域栅格、重点场景、聚类质差、报表导出五个查询主题拆分指标表;在各 `tm_` 表中回填高频筛选、排序、列表展示字段,减少 Java 查询时的运行时关联。
业界实践可提炼为三点:
- 查询服务层优先围绕接口查询模式做反范式宽表,冗余常用维度字段,避免高频 Join。
- 维度表仍需保留,作为枚举、区域、楼宇、场景、图层口径的统一治理来源,避免不同指标表语义漂移。
- GIS 字段以 WKT 文本作为接口和数据交换口径,同时在 PostgreSQL/PostGIS 中使用生成列转换为 `geometry`,并建立 GiST 空间索引,兼顾 WKT 呈现和空间过滤性能GeoServer 图层可按 `geom_column` 直接发布,也可在视图中统一别名为 `geom`
## 2. 命名和建模约定
| 项 | 约定 |
| --- | --- |
| 数据库 | PostgreSQL + PostGIS |
| Schema | `dmk` |
| 维度/配置表 | `td_` 开头 |
| 指标/业务表 | `tm_` 开头 |
| 时间粒度 | 月账期,统一字段 `year_month`,保留 `year``month` |
| GIS 存储 | 原始/接口字段使用 `*_wkt`,数据库生成 `*_geom` 空间列 |
| 坐标系 | EPSG:4326 |
| 分区建议 | 数据量大的 `tm_*_m` 表按 `year_month` 做月分区或冷热分层 |
| 字段命名 | 优先沿用 PRD 和接口清单中的 `provincecode``citycode``regionid``x_offset_20``operator_name``network_class``rsrpcount``avgrsrp` 等字段 |
## 3. 库表总览
### 3.1 维度/配置表
| 表名 | 粒度 | 主要用途 | 支撑接口/场景 |
| --- | --- | --- | --- |
| `td_account_period` | 数据来源 + 月账期 | 可查询账期 | `/api/common/account-periods` |
| `td_region` | 行政区域 | 省/市/区县树、分权分域、GIS 钻取 | `/api/common/region-tree`、质差地图 |
| `td_dict_item` | 字典类型 + 字典值 | 枚举统一管理 | `/api/common/dict``/api/common/dict/types` |
| `td_metric_definition` | 模块 + 指标 + 阈值 | 指标口径、算法说明 | `/api/common/metric-definitions`、报表口径弹窗 |
| `td_layer_config` | 图层类型 + 图层角色 + 渲染模式 | GeoServer 图层基础配置 | 楼宇/栅格/场景/工参/聚类/质差 WMS 图层 |
| `td_layer_metric` | 图层类型 + 指标 | 图层指标白名单和默认样式 | `/api/common/layer-metrics` |
| `td_layer_legend` | 账号 + 图层 + 指标 | 自定义图例配置 | `/api/layers/legends/*` |
| `td_grid` | 栅格 | 栅格空间维度和中心点 | 栅格详情、空间关联、GeoServer 发布 |
| `td_cell_param_m` | 月账期 + 小区 + 网络制式 | 工参基础信息 | `/api/layers/cells``/api/layers/cells/detail` |
| `td_building` | 楼宇 | 楼宇基础属性、AOI、楼宇类型 | `/api/buildings/*``/api/ott/building-report` |
| `td_building_grid_m` | 月账期 + 楼宇 + 栅格 + 运营商 + 网络制式 + 频段 + 室内外 | 楼宇-栅格桥接、楼宇图层 | `/api/buildings/layer` |
| `td_building_cell_m` | 月账期 + 楼宇 + 小区 + 运营商 + 网络制式 + 频段 + 室内外 | 楼宇-小区桥接、楼宇小区关系 | `/api/buildings/cells` |
| `td_scene` | 重点场景 | 场景基础属性、AOI、场景类型 | `/api/scenes/*``/api/ott/scene-report` |
| `td_cluster_threshold` | 账号 + 聚类类型 + 网络制式 | 在线调整聚类阈值 | `/api/clusters/thresholds/*` |
| `td_custom_region` | 用户自定义区域 | GIS 绘制区域持久化和复查 | `/api/grids/custom-region` |
### 3.2 业务指标表
| 表名 | 粒度 | 主要用途 | 支撑接口/场景 |
| --- | --- | --- | --- |
| `tm_grid_coverage_m` | 月账期 + 栅格 + 运营商 + 网络制式 + 频段 + 室内外 | 栅格级覆盖指标、GIS 渲染、单栅格详情 | `/api/grids/layer``/api/grids/detail`、区域/场景栅格聚合 |
| `tm_region_coverage_m` | 月账期 + 行政区域 + 运营商 + 网络制式 + 频段 + 室内外 | 区域概览、覆盖统计、地市级 OTT 报表 | `/api/grids/overview``/api/grids/coverage-stats``/api/ott/city-report` |
| `tm_building_coverage_m` | 月账期 + 楼宇 + 运营商 + 网络制式 + 频段 + 室内外 | 楼宇图层、概览、室内无线覆盖、竞对对比、4G/5G_SA 用户与市场份额、报表 | `/api/buildings/overview``/api/buildings/layer``/api/buildings/compare``/api/buildings/report` |
| `tm_scene_grid_coverage_m` | 月账期 + 场景 + 栅格 + 运营商 + 网络制式 + 频段 + 室内外 | 场景栅格图层、场景-栅格覆盖 | `/api/scenes/layer` |
| `tm_building_user_wifi_m` | 月账期 + 楼宇 + 运营商 | 楼宇 WiFi 用户、WiFi 市场份额和 WiFi 信号强度 | `/api/buildings/detail` |
| `tm_scene_coverage_m` | 月账期 + 场景 + 运营商 + 网络制式 + 频段 + 室内外 | 重点场景概览、用户分析、单场景覆盖扩展、对比、报表 | `/api/scenes/overview``/api/scenes/user-analysis``/api/scenes/detail``/api/ott/scene-report` |
| `tm_cell_grid_coverage_m` | 月账期 + 数据来源 + 运营商 + 网络制式 + 频段 + 室内外 + 小区 + 覆盖栅格 | 小区详情、覆盖扩展指标、单小区覆盖栅格、栅格与小区连线 | `/api/layers/cells/detail``/api/layers/cells/cover-grid``/api/grids/detail` |
| `tm_cluster_area_m` | 月账期 + 聚类区域 | 聚类清单、覆盖扩展指标、加权得分、多维分析、聚类 WMS | `/api/clusters/overview``/api/clusters/list``/api/clusters/detail``/api/clusters/score` |
| `tm_cluster_feedback` | 反馈记录 | 质差区域问题根因和解决措施 | `/api/clusters/feedback/*` |
| `tm_poor_region_metric_m` | 月账期 + 区域 + 统计页签 + 质差类型 + 指标分组 + 场景类型 + 网络制式 + 指标 | 质差场景概览、趋势、地图、排名 | `/api/poor-scenes/summary``/api/poor-scenes/trend``/api/poor-scenes/map``/api/poor-scenes/ranking` |
| `tm_poor_scene_list_m` | 月账期 + 质差场景记录 | 质差场景清单和导出 | `/api/poor-scenes/list``/api/poor-scenes/export` |
| `tm_poor_cell_list_m` | 月账期 + 质差/超忙小区记录 | 质差小区、超忙小区清单和导出 | `/api/poor-scenes/cells``/api/poor-scenes/export` |
| `tm_export_task` | 导出任务 | 异步导出任务状态、下载、取消 | `/api/common/export-tasks/*`、各导出接口 |
## 4. 主题域设计说明
### 4.1 通用配置域
包含 `td_account_period``td_region``td_dict_item``td_metric_definition``td_layer_config``td_layer_metric``td_layer_legend``tm_export_task`。该域不参与大规模指标计算,主要支撑通用筛选、口径说明、图层配置、导出任务。
`td_layer_config` 通过 `layer_role` 区分基础图层、视图层或发布层,通过 `geom_column` 明确 GeoServer 发布时实际使用的几何列名;若服务侧采用视图输出,则可统一别名为 `geom`
### 4.2 区域栅格域
核心表为 `td_grid``tm_grid_coverage_m``tm_region_coverage_m``tm_grid_coverage_m` 保留栅格 WKT 和主要覆盖指标,便于 GeoServer 直接发布图层;`tm_region_coverage_m` 按省/市/区县提前聚合,用于概览卡片、覆盖统计和 OTT 地市报表,避免每次从栅格明细实时聚合。
### 4.3 楼宇域
核心表为 `td_building``td_building_grid_m``td_building_cell_m``tm_building_coverage_m``tm_building_user_wifi_m`。楼宇指标表回填楼宇类型、区域、中心点、楼宇面积、AOI WKT 等高频字段,支撑 2D/3D 图层、竞对对比、楼宇报表;室内 4G/5G_SA 无线覆盖通过 `tm_building_coverage_m.network_class='4G'/'5G_SA'``indoor_flag=1` 表达并补充弱覆盖、重叠覆盖、过覆盖、MOD 干扰等覆盖扩展字段;楼宇无线市场份额不再作为单一核心指标,替换为 `user_count_4g``user_market_share_4g``user_count_5g``user_market_share_5g`。楼宇-栅格和楼宇-小区桥接表分别支撑楼宇图层与楼宇小区关系查询WiFi 指标独立成表,避免在网络制式维度下大量重复 WiFi 字段。
### 4.4 重点场景域
核心表为 `td_scene``tm_scene_grid_coverage_m``tm_scene_coverage_m`。场景覆盖指标表回填场景类型、场景名称、AOI WKT、区域字段、用户统计字段和覆盖扩展字段满足场景搜索、概览、用户分析、单场景详情、图层配置、场景级报表场景-栅格桥接表支撑 `/api/scenes/layer`
### 4.5 工参与小区覆盖域
核心表为 `td_cell_param_m``tm_cell_grid_coverage_m`。工参维度按月保留,避免工参随账期变化导致历史查询不一致;小区覆盖栅格表按小区与栅格关系展开,支撑单小区覆盖栅格、栅格 TOP 小区、栅格-小区连线和小区覆盖扩展指标。工参字段保留在 `td_cell_param_m`,覆盖统计字段统一落在 `tm_cell_grid_coverage_m`。入库时 WKT 需先校验类型、`SRID=4326``ST_IsValid`;若来源是 GeoJSON/BBox先在 ETL/服务侧转换成 WKT 再入库。
### 4.6 聚类与质差域
核心表为 `td_cluster_threshold``tm_cluster_area_m``tm_cluster_feedback``tm_poor_region_metric_m``tm_poor_scene_list_m``tm_poor_cell_list_m`。聚类区域与质差概览分表,避免将聚类评分、质差趋势、清单导出全部塞入单张大表;`tm_cluster_area_m` 同时保留聚类区域覆盖扩展字段,用于聚类栅格详情和加权得分展示;清单表内回填排序、筛选和导出所需的区域、场景、小区字段。
## 5. 原始数据到 DMK 表映射
### 5.1 基础数据源说明
本项目所有计算依赖以下三张 ODS 基础表:
| ODS 表名 | 数据内容 | 主要字段 |
| --- | --- | --- |
| `ods.OTT_GRID` | OTT 栅格级覆盖数据 | `year_month`, `provincecode`, `citycode`, `districtcode`, `operator_name`, `network_class`, `regionid`, `x_offset_20`, `y_offset_20`, `center_lon`, `center_lat`, `earfcn`, `freq`, `rsrpcount`, `totalrsrp`, `totalsinr`, `totalrsrq`, `avgrsrp`, `avgsinr`, `avgrsrq`, `rsrpgoodcount_105`, `rsrpgoodcount_110`, `sinrgoodcount`, `rsrqgoodcount`, `compgoodcount_105_3`, `compgoodcount_110_3` 及 RSRP/SINR/RSRQ 分级统计字段 |
| `ods.4G_MR_GRID_SCELL` | 4G 小区-栅格 MR 数据 | `provincecode`, `citycode`, `districtcode`, `cellkey`, `cell_name`, `cell_lon`, `cell_lat`, `cell_regionid`, `pci`, `indoor_flag`, `azimuth`, `freq`, `vendor`, `antenna_height`, `rspower`, `regionid`, `x_offset_20`, `y_offset_20`, `grid_lon`, `grid_lat`, `rsrpcount`, `totalrsrp`, `avgrsrp`, `weakcover_mrcount`, `overlap_mrcount`, `overlap_totalrsrp`, `overlap_avgrsrp`, `overshoot_mrcount`, `overshoot_totalrsrp`, `overshoot_avgrsrp`, `mod3interfer_mrcount`, `mod3interfer_totalrsrp`, `mod3interfer_avgrsrp`, `avg_sinr`, `is_highrail_grid`, `is_highway_grid`, `is_build_grid`, `is_road_grid` 及 RSRP 5级分段统计字段 |
| `ods.5G_MR_GRID_SCELL` | 5G 小区-栅格 MR 数据 | `provincecode`, `citycode`, `districtcode`, `cellkey`, `cell_name`, `cell_lon`, `cell_lat`, `cell_regionid`, `pci`, `indoor_flag`, `azimuth`, `freq`, `vendor`, `antenna_height`, `rspower`, `regionid`, `x_offset_20`, `y_offset_20`, `grid_lon`, `grid_lat`, `ssrsrpcount`, `totalrsrp`, `avg_rsrp`, `weak_cover_mr_nums`, `overlap_mrcount`, `overlap_totalrsrp`, `overlap_avgrsrp`, `overshoot_mrcount`, `overshoot_totalrsrp`, `overshoot_avgrsrp`, `mod30interfer_mrcount`, `mod30interfer_totalrsrp`, `mod30interfer_avgrsrp`, `avg_sinr`, `is_highrail_grid`, `is_highway_grid`, `is_build_grid`, `is_road_grid` 及 RSRP 10级分段统计字段 |
### 5.2 映射规则
| 原始/补充数据 | 入库目标 | 处理说明 |
| --- | --- | --- |
| `ods.OTT_GRID` | `tm_grid_coverage_m``tm_region_coverage_m``tm_building_coverage_m``tm_scene_coverage_m``tm_scene_grid_coverage_m` | 从 OTT_GRID 提取 `rsrpcount`, `totalrsrp`, `totalsinr`, `totalrsrq`, `avgrsrp`, `avgsinr`, `avgrsrq`, `rsrpgoodcount_105`, `rsrpgoodcount_110`, `sinrgoodcount`, `rsrqgoodcount`, `compgoodcount_105_3`, `compgoodcount_110_3` 及分级统计字段;计算 `mr_cover_rate_105 = rsrpgoodcount_105 / rsrpcount``mr_cover_rate_110 = rsrpgoodcount_110 / rsrpcount`;回填 `grid_count`(范围内总栅格数)、`mr_grid_count`(有 MR 采样点的栅格数)、`covered_grid_count_105/110`;通过 `network_class` 区分 4G/5G_SA`operator_name` 区分运营商 |
| `ods.4G_MR_GRID_SCELL` | `td_cell_param_m``tm_cell_grid_coverage_m``tm_building_coverage_m``tm_scene_coverage_m``tm_cluster_area_m` | 工参字段(`cellkey`, `cell_name`, `cell_lon`, `cell_lat`, `pci`, `indoor_flag`, `azimuth`, `freq`, `vendor`, `antenna_height`, `rspower`)入库 `td_cell_param_m`;覆盖指标(`rsrpcount`, `avgrsrp`, `avg_sinr`, `weakcover_mrcount`, `overlap_mrcount`, `overlap_totalrsrp`, `overlap_avgrsrp`, `overshoot_mrcount`, `overshoot_totalrsrp`, `overshoot_avgrsrp`, `mod3interfer_mrcount`, `mod3interfer_totalrsrp`, `mod3interfer_avgrsrp`标准化到各指标表4G MOD3 干扰字段按 `mod3interfer_*` 解释 |
| `ods.5G_MR_GRID_SCELL` | `td_cell_param_m``tm_cell_grid_coverage_m``tm_building_coverage_m``tm_scene_coverage_m``tm_cluster_area_m` | 工参字段同 4G 入库 `td_cell_param_m`;覆盖指标使用 `ssrsrpcount`, `avg_rsrp`, `avg_sinr`, `weak_cover_mr_nums`, `mod30interfer_*` 等字段5G MOD30 干扰字段按 `mod30interfer_*` 解释;注意 5G 字段命名差异(`ssrsrpcount` vs `rsrpcount``avg_rsrp` vs `avgrsrp` |
| 楼宇基础/AOI 数据 | `td_building``td_building_grid_m``td_building_cell_m``tm_building_coverage_m` | 统一 `building_id``building_type``building_area``aoi_wkt``bbox`、人口密度 |
| 场景 AOI 数据 | `td_scene``tm_scene_grid_coverage_m``tm_scene_coverage_m``tm_poor_scene_list_m` | 统一 `scene_id``scene_type``aoi_wkt`、场景搜索字段 |
| 用户统计补充表 | `tm_region_coverage_m``tm_building_coverage_m``tm_scene_coverage_m``tm_cluster_area_m` | 回填用户数、4G/5G_SA 用户数、市场份额;楼宇侧回填 `user_count_4g``user_market_share_4g``user_count_5g``user_market_share_5g` |
| WiFi 统计补充表 | `tm_building_user_wifi_m` | 回填楼宇 WiFi 用户数、WiFi 市场份额、WiFi 信号强度 |
| 聚类算法结果 | `tm_cluster_area_m` | 回填加权得分、五维权重、区域 WKT、TOP 档位排序字段 |
| 质差识别结果 | `tm_poor_region_metric_m``tm_poor_scene_list_m``tm_poor_cell_list_m` | 生成概览卡片、趋势、地图、排名、清单导出所需指标 |
### 5.3 字段命名差异说明
| 差异点 | 4G 字段 | 5G 字段 | 目标表统一字段 |
| --- | --- | --- | --- |
| MR 总数 | `rsrpcount` | `ssrsrpcount` | `rsrpcount`4G 直接用5G 映射) |
| 平均 RSRP | `avgrsrp` | `avg_rsrp` | `avgrsrp`4G 直接用5G 映射为 `avgrsrp` |
| 弱覆盖数 | `weakcover_mrcount` | `weak_cover_mr_nums` | `weakcover_mrcount`4G 直接用5G 映射) |
| MOD 干扰 | `mod3interfer_*` | `mod30interfer_*` | `mod_interference_*`(通用字段,按 `network_class` 解释为 MOD3 或 MOD30 |
| 平均 SINR | `avg_sinr` | `avg_sinr` | `avg_sinr` |
## 6. 接口到表映射
| 接口组 | 主要读取表 |
| --- | --- |
| 通用基础接口 | `td_account_period``td_region``td_dict_item``td_metric_definition``td_layer_metric``tm_export_task` |
| 楼宇覆盖与 3D 图层 | `td_building``td_building_grid_m``td_building_cell_m``tm_building_coverage_m``tm_building_user_wifi_m``td_layer_config``td_layer_legend``td_cell_param_m` |
| 图层、工参与自定义图例 | `td_layer_config``td_layer_metric``td_layer_legend``td_cell_param_m``tm_cell_grid_coverage_m``tm_scene_grid_coverage_m` |
| 区域栅格 | `tm_region_coverage_m``tm_grid_coverage_m``tm_cell_grid_coverage_m``td_custom_region` |
| 重点场景 | `td_scene``tm_scene_grid_coverage_m``tm_scene_coverage_m``td_layer_config``td_layer_legend` |
| 聚类栅格与加权得分 | `td_cluster_threshold``tm_cluster_area_m``tm_cluster_feedback``tm_export_task` |
| 质差场景概览 | `tm_poor_region_metric_m``tm_poor_scene_list_m``tm_poor_cell_list_m``tm_export_task` |
| OTT 报表检索 | `tm_region_coverage_m``tm_scene_coverage_m``tm_building_coverage_m``tm_export_task` |
## 7. 覆盖扩展字段清单
### 7.1 通用覆盖扩展字段
以下字段用于承接模型修正表中“需要扩展字段”的覆盖呈现要求;同一条记录仍通过 `operator_name``network_class``freq``indoor_flag` 区分运营商、4G/5G_SA、频段与室内外不新增 4G/5G_SA 成对物理字段。
| 字段 | 类型 | 含义 | 适用表 |
| --- | --- | --- | --- |
| `rsrpcount` | `bigint` | RSRP/MR 采样点数 | 各覆盖指标表既有或新增 |
| `avgrsrp` / `avg_rsrp` | `numeric(10,4)` | 平均 RSRPdBm | `tm_building_coverage_m``tm_scene_coverage_m``tm_cell_grid_coverage_m``tm_cluster_area_m` |
| `avgsinr` / `avg_sinr` | `numeric(10,4)` | 平均 SINRdB | `tm_building_coverage_m``tm_scene_coverage_m``tm_cell_grid_coverage_m``tm_cluster_area_m` |
| `weakcover_mrcount` | `bigint` | 弱覆盖采样数 | `tm_building_coverage_m``tm_scene_coverage_m``tm_cell_grid_coverage_m``tm_cluster_area_m` |
| `overlap_mrcount` | `bigint` | 重叠覆盖采样数 | 同上 |
| `overlap_total_value` | `numeric(20,4)` | 重叠覆盖总值 | 同上 |
| `overlap_rate` | `numeric(12,6)` | 重叠覆盖率 | 同上 |
| `overlap_avgrsrp` | `numeric(10,4)` | 重叠覆盖平均 RSRPdBm | 同上 |
| `overshoot_mrcount` | `bigint` | 过覆盖采样数 | 同上 |
| `overshoot_total_value` | `numeric(20,4)` | 过覆盖总值 | 同上 |
| `overshoot_rate` | `numeric(12,6)` | 过覆盖率 | 同上 |
| `overshoot_avgrsrp` | `numeric(10,4)` | 过覆盖平均 RSRPdBm | 同上 |
| `mod_interference_mrcount` | `bigint` | MOD 干扰采样数4G 按 MOD3、5G 按 MOD30 解释 | 同上 |
| `mod_interference_total_value` | `numeric(20,4)` | MOD 干扰采样点总值4G 按 MOD3、5G 按 MOD30 解释 | 同上 |
| `mod_interference_avgrsrp` | `numeric(10,4)` | MOD 干扰平均 RSRPdBm4G 按 MOD3、5G 按 MOD30 解释 | 同上 |
| `mod_interference_ratio` | `numeric(12,6)` | MOD 干扰占比4G 按 MOD3、5G 按 MOD30 解释 | 同上 |
### 7.2 分表补充字段
| 表名 | 本次补充字段 | 说明 |
| --- | --- | --- |
| `tm_building_coverage_m` | `avgrsrq`、通用覆盖扩展字段、`user_count_4g``user_count_5g``user_market_share_4g``user_market_share_5g` | 支撑楼宇室内 4G/5G_SA 无线覆盖、竞对无线网络覆盖和“无线市场份额”替换指标。 |
| `tm_scene_coverage_m` | 通用覆盖扩展字段 | 支撑单场景详情中的覆盖相关指标;用户数、市场份额和 5G 驻留比沿用既有字段。 |
| `tm_cell_grid_coverage_m` | `totalsinr``rsrpgoodcount_105``rsrpgoodcount_110``mr_cover_rate_105``mr_cover_rate_110`、通用覆盖扩展字段中该表原缺失字段 | 支撑小区维度和栅格小区维度的覆盖详情;`avg_sinr` 维持既有命名。 |
| `tm_cluster_area_m` | `rsrpcount`、通用覆盖扩展字段 | 支撑聚类栅格详情的覆盖指标;`weak_grid_count`/`weak_grid_ratio` 继续表示弱覆盖栅格数/占比,不替代弱覆盖采样数。 |
| `tm_building_user_wifi_m` | 删除 `total_user_count``user_count``market_share`,保留 `wifi_total_user_count``wifi_user_count``wifi_market_share``wifi_signal_strength` | 楼宇无线用户数和市场份额迁移到 `tm_building_coverage_m` 的 4G/5G 拆分字段;该表仅承载 WiFi 指标。 |
## 8. 索引建议
| 表类型 | 索引策略 |
| --- | --- |
| 月粒度指标表 | 组合索引以 `year_month` 起始,追加区域、运营商、网络制式、频段、室内外等高频筛选字段 |
| 列表/排名表 | 对 `weighted_score``rank_no``grid_cover_rate``mr_cover_rate` 等排序字段建立局部或组合索引 |
| GIS 表 | 对 `*_geom` 生成列建立 GiST 索引;保留 `bbox` 供接口快速返回地图视野 |
| 模糊搜索 | 场景名、楼宇名可按实际 PostgreSQL 扩展情况补充 `pg_trgm` GIN 索引 |
| 写入配置表 | 按 `account_id``layer_type``metric_code``cluster_type` 建唯一或普通索引 |
## 9. 口径约束
- `mr_cover_rate_105 = sum(rsrpgoodcount_105) / sum(rsrpcount)`,主要支撑 FUNC-065 口径。
- `mr_cover_rate_110 = sum(rsrpgoodcount_110) / sum(rsrpcount)`,主要支撑 FUNC-014、FUNC-016 口径。
- `grid_cover_rate_105 = covered_grid_count_105 / mr_grid_count``grid_cover_rate_110 = covered_grid_count_110 / mr_grid_count`,即 MR 覆盖率达到 -105/-110 阈值的栅格数除以有 MR 采样点的栅格数(`rsrpcount > 0` 的栅格数);`grid_count` 表示该范围内的总栅格数,仅作分母参考,不直接用于栅格覆盖率计算。
- 4G/5G_SA 指标拆分优先通过 `network_class='4G'/'5G_SA'` 表达,不新增 `avgrsrp_4g``avgrsrp_5g``grid_cover_rate_4g``grid_cover_rate_5g` 等成对物理字段。
- `RSRP低于-105/-110采样点` 可由 `rsrpcount - rsrpgoodcount_105/110` 派生,不在指标表中重复存储。
- 楼宇无线市场份额不再作为单一核心指标,替换为 `tm_building_coverage_m.user_count_4g``user_market_share_4g``user_count_5g``user_market_share_5g`;楼宇 WiFi 用户与 WiFi 市场份额仍保留在 `tm_building_user_wifi_m`
- `operator_5g_reside_rate``user_market_share_*``tm_building_coverage_m.total_user_count` 来自用户统计补充表,不从 OTT 栅格表硬推导;其中 `total_user_count` 直接支撑 `/api/ott/building-report` 楼宇总用户数字段。楼宇侧 5G 驻留比按 CSV 标记不再作为新增核心字段,区域和场景侧继续保留。
- 覆盖扩展字段中的 `mod_interference_*` 为通用 MOD 干扰字段4G 展示为 MOD35G 展示为 MOD30。
- CSV 标记“可废弃”的指标不作为本次新增核心字段;既有字段如 `grid_cover_rate_105/110` 因区域、场景、图层和报表仍使用而保留。
- `cql_filter` 由 Java 服务基于白名单字段拼装;表中提供生成过滤条件所需的基础字段,不存储用户原始输入拼接结果。
- WKT 入库前需做类型、`SRID=4326``ST_IsValid` 校验GeoJSON/BBox 等来源统一先转换为 WKT 再写入,失败记录应返回明确的入库错误。