# DWD 层 DDL 同步修正 — 变更记录

> 结构性变更：修正 1 项差异（补充 1 个缺失字段定义）

## 溯源

- 日期：2026-02-13（Asia/Shanghai）
- 工具：`scripts/compare_ddl_db.py --schema dwd --ddl-path database/schema_dwd_doc.sql`
- Direct cause：DDL 对比脚本发现 `database/schema_dwd_doc.sql` 与数据库 `dwd` schema 实际状态存在 1 项差异，以数据库为准修正 DDL 文件。

## 变更内容

| Schema | 表名 | 操作 | 字段 | DDL 原定义 | 数据库实际 | 说明 |
|--------|------|------|------|-----------|-----------|------|
| `dwd` | `dwd_refund_ex` | DDL 补充字段 | `check_status` | — | `INTEGER` | 数据库中有但 DDL 中未定义（解析器 bug 导致遗漏，已修复） |

## 变更原因

1. `dwd_refund_ex.check_status`：该字段实际已存在于数据库中，对应 ODS 层 `refund_transactions.check_status`（退款审核状态）
2. DDL 解析器存在 bug 导致该字段在先前对比中被遗漏，修复解析器后重新对比发现此差异
3. 该字段由 DWD 加载任务从 ODS 层 `refund_transactions` 映射而来

## 影响范围

| 影响对象 | 影响程度 | 说明 |
|----------|----------|------|
| ETL 加载任务 | 无影响 | 本次仅修正 DDL 文档，不涉及数据库结构变更 |
| 后端 API | 无影响 | DDL 文件为文档性质，不影响运行时 |
| 小程序字段映射 | 无影响 | 小程序不直接读 DWD 层 |
| DWD 表级文档 | ⚠️ 需同步 | `BD_manual_dwd_refund_ex.md` 字段列表应包含 `check_status` |
| ODS→DWD 映射 | 无影响 | `check_status` 已在 DWD 加载映射中正确配置 |

**注意**：本次变更仅修正 DDL 文件（文档同步），数据库结构未发生任何变更。

## 回滚策略

本次为 DDL 文件修正（文档同步），无需数据库回滚。若需恢复 DDL 文件，使用 Git 回退即可：

```bash
git checkout HEAD~1 -- database/schema_dwd_doc.sql
```

若未来需要将数据库结构回退（不推荐）：

```sql
-- 删除 check_status 列（会丢失已有数据）
ALTER TABLE dwd.dwd_refund_ex DROP COLUMN check_status;
```

## 验证 SQL

```sql
-- 1) 确认 dwd_refund_ex.check_status 存在且类型为 integer
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_schema = 'dwd'
  AND table_name = 'dwd_refund_ex'
  AND column_name = 'check_status';
-- 预期：1 行，data_type = 'integer'

-- 2) 确认 ODS 层对应字段也存在（数据来源一致性）
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'ods'
  AND table_name = 'refund_transactions'
  AND column_name = 'check_status';
-- 预期：1 行，data_type = 'integer'

-- 3) 确认 dwd_refund_ex 表当前总列数
SELECT count(*) AS total_columns
FROM information_schema.columns
WHERE table_schema = 'dwd'
  AND table_name = 'dwd_refund_ex';
-- 预期：列数包含 check_status

-- 4) 确认修正后 DDL 与数据库零差异（通过对比脚本验证）
-- python scripts/compare_ddl_db.py --schema dwd --ddl-path database/schema_dwd_doc.sql
-- 预期：0 项差异
```

## 关联变更

- ODS 层同步修正：`docs/database/ODS/changes/2026-02-13_ddl_sync_ods.md`（`refund_transactions.check_status` 同步补充）
- DDL 文件：`database/schema_dwd_doc.sql`
- 对比结果：`docs/database/ddl_compare_results.md`
