# 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