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

202 lines
22 KiB
Markdown
Raw Permalink Normal View History

# 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 再写入,失败记录应返回明确的入库错误。