# 变更审计：DWS numeric 精度扩展 + ODS 库存 siteid 注入

> 日期：2026-03-01
> 触发：ETL 全栈联调发现 P1（gross_margin 溢出）+ P2（dwd_goods_stock_summary 缺 site_id）

## 变更清单

### P1: DWS numeric 精度扩展（7 个字段）
- `docs/database/ddl/etl_feiqiu__dws.sql` — 7 个字段 numeric(5,4)/numeric(6,4) → numeric(7,4)
- `apps/etl/connectors/feiqiu/tasks/dws/assistant_finance_task.py` — gross_margin 计算加 clamp 防御
- `db/etl_feiqiu/migrations/20260301_dws_numeric_precision_fix.sql` — 迁移 SQL（含视图 DROP/重建）
- `db/etl_feiqiu/migrations/20260301_dws_numeric_precision_fix_rollback.sql` — 回滚 SQL
- 7 个 `app.v_dws_*` RLS 视图已 DROP 并重建

### P2: ODS goods_stock_summary 加 siteid + DWD 映射
- `docs/database/ddl/etl_feiqiu__ods.sql` — goods_stock_summary 加 siteid bigint 列
- `apps/etl/connectors/feiqiu/tasks/ods/ods_tasks.py` — 通用 siteid 注入逻辑
- `apps/etl/connectors/feiqiu/tasks/dwd/dwd_load_task.py` — FACT_MAPPINGS 补 site_id 映射
- `db/etl_feiqiu/migrations/20260301_ods_goods_stock_summary_add_siteid.sql` — 迁移 SQL + 回填

### 文档
- `docs/database/BD_Manual_20260301_cleanup_and_fixes.md` — 追加 §1.4/§1.5/§3.4/§3.5 + 验证 SQL #6-#9

## 验证状态
- P1 迁移：✅ 测试库 7 个字段全部 numeric(7,4)，7 个视图已重建
- P2 迁移：✅ ODS siteid 列已加，3216 条记录已回填
- DWD 层 site_id 回填：待下次 DWD_LOAD_FROM_ODS 运行后生效

## 风险评估
- P1 低风险：纯精度扩展，不影响已有数据，视图已重建
- P2 中风险：ODS 入库通用注入逻辑影响所有含 siteid 列的 ODS 表，但仅在记录不含 siteid 时才注入，已有 siteid 的记录不受影响
