54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
|
|
# DMK 项目第三阶段代码生成审计报告 (Level 3 Audit)
|
|||
|
|
|
|||
|
|
本报告针对第三阶段(区域、场景及空间聚类汇总层)四张表进行审计。
|
|||
|
|
|
|||
|
|
## 1. 总体审计结论 (Executive Summary)
|
|||
|
|
|
|||
|
|
> [!CAUTION]
|
|||
|
|
> **审计结论:不通过 (FAIL)**
|
|||
|
|
> 发现致命逻辑缺陷,场景表无法关联数据,聚类表存在 SQL 语法错误。
|
|||
|
|
|
|||
|
|
| 检查项 | 状态 | 主要发现 |
|
|||
|
|
| :--- | :--- | :--- |
|
|||
|
|
| **数据关联性** | ❌ 致命 | `tm_scene_coverage_m` 漏掉核心桥接表,无法产出数据。 |
|
|||
|
|
| **执行可靠性** | ❌ 失败 | `tm_cluster_area_m` 存在 SQL 别名不一致,运行时报错。 |
|
|||
|
|
| **指标准确性** | ❌ 错误 | `grid_count` 统计口径错误(仅统计有数栅格)。 |
|
|||
|
|
| **业务完整性** | ❌ 缺失 | 未实现 `build_type_specs.md` 要求的楼宇分类逻辑。 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 详细审计详情 (Detailed Findings)
|
|||
|
|
|
|||
|
|
### 2.1 tm_building_coverage_m (楼宇覆盖月表)
|
|||
|
|
- **compute.sql**:
|
|||
|
|
- ❌ **口径错误**: `grid_count` 仅统计了 `tm_grid_coverage_m` 中出现的栅格,未包含无采样的空白栅格,导致楼宇覆盖率计算结果虚高。
|
|||
|
|
- ❌ **业务缺失**: 忽略了 Skill 中强制要求的 `specs\build_type_specs.md` 判定逻辑。
|
|||
|
|
|
|||
|
|
### 2.2 tm_region_coverage_m (行政区域覆盖月表)
|
|||
|
|
- **compute.sql**:
|
|||
|
|
- ❌ **去重失效**: 用户数统计(OTT)直接置为 NULL,未按照 Skill 要求进行跨栅格的 `approx_count_distinct` 去重统计。
|
|||
|
|
- ❌ **口径错误**: 行政区域总栅格数统计口径错误。
|
|||
|
|
|
|||
|
|
### 2.3 tm_scene_coverage_m (场景覆盖月表)
|
|||
|
|
- **compute.sql**:
|
|||
|
|
- ❌ **核心桥接缺失**: 场景表 `td_scene` 必须通过 `td_scene_grid_m` 才能关联到栅格数据。代码中直接 JOIN `tm_grid_coverage_m` 导致关联键失效(scene 表无 regionid)。
|
|||
|
|
- ❌ **统计源错误**: 用户数去重必须读取 ODS OTT 原始 ID,代码错误地读取了已经过聚合的栅格事实表。
|
|||
|
|
|
|||
|
|
### 2.4 tm_cluster_area_m (聚类区域月表)
|
|||
|
|
- **compute.sql**:
|
|||
|
|
- ❌ **SQL 语法错误**: `INSERT` 语句中 `FROM tmp_cluster_metrics trm` 定义了别名 `trm`,但在字段选择中大量使用了 `cm.xxx`,会导致 PG 执行报错。
|
|||
|
|
- ❌ **空间函数疑云**: `ST_ClusterWithinWin` 非 PostGIS 标准函数,建议检查环境是否支持或改用 `ST_ClusterDBSCAN`。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 改进建议 (Action Items)
|
|||
|
|
|
|||
|
|
1. **引入桥接表**: 在场景计算逻辑中强制加入 `td_scene_grid_m`。
|
|||
|
|
2. **重构去重逻辑**: 汇总表的 `user_cnt` 必须回到 ODS 层级通过 `device_id` 进行聚合,不能从事实表二次聚合。
|
|||
|
|
3. **对齐分类算法**: 严格按照 `build_type_specs.md` 实现 `CASE WHEN` 逻辑。
|
|||
|
|
4. **修复 SQL 语法**: 修正别名冲突,并改用 PostGIS 标准聚类函数。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
**审计人**: Antigravity
|
|||
|
|
**日期**: 2026-05-03
|