# 沙箱端到端验证报告

- site_id: `2790685415443269`
- sandbox_date: `2025-09-01`
- 生成时间: `2026-05-02T12:56:36`

## 1. 视图层（C 方案）

sandbox 模式下，max(各日期列) 必须 <= sandbox_date。

| 视图.列 | 取值 | 结果 |
|---|---|---|
| `app.v_dws_finance_area_daily.stat_date` | 2025-09-01 | PASS |
| `app.v_dws_finance_daily_summary.stat_date` | 2025-09-01 | PASS |
| `app.v_dws_member_visit_detail.visit_date` | 2025-09-01 | PASS |
| `app.v_dws_member_consumption_summary.stat_date` | None | OK (None) |
| `app.v_dws_assistant_daily_detail.stat_date` | 2025-09-01 | PASS |
| `app.v_dws_assistant_monthly_summary.stat_month` | 2025-09-01 | PASS |
| `app.v_dws_assistant_salary_calc.salary_month` | 2025-09-01 | PASS |
| `app.v_dwd_settlement_head.create_time` | 2025-09-01 | PASS |
| `app.v_dwd_assistant_service_log.create_time` | 2025-09-01 | PASS |
| `app.v_dwd_recharge_order.pay_time` | 2025-09-01 | PASS |
| `app.v_dws_member_winback_index.last_visit_time` | 2025-09-01 | PASS |
| `app.v_dws_assistant_customer_stats.stat_date` | None | OK (None) |
| `app.v_dws_member_assistant_intimacy.calc_time` | None | OK (None) |
| `app.v_dws_member_newconv_index.stat_date` | 2025-09-01 | PASS |
| `app.v_dws_finance_board_cache.computed_at` | None | OK (None) |
| `app.v_finance_daily.stat_date` | 2025-09-01 | PASS |

### live 模式 baseline（同样 site_id，无 GUC）

| 视图.列 | 取值 | 备注 |
|---|---|---|
| `app.v_dws_finance_area_daily.stat_date` | 2026-04-27 | live (CURRENT_DATE 行为) |
| `app.v_dws_finance_daily_summary.stat_date` | 2026-04-27 | live (CURRENT_DATE 行为) |
| `app.v_dws_member_visit_detail.visit_date` | 2026-04-27 | live (CURRENT_DATE 行为) |
| `app.v_dws_member_consumption_summary.stat_date` | 2026-05-01 | live (CURRENT_DATE 行为) |
| `app.v_dws_assistant_daily_detail.stat_date` | 2026-04-26 | live (CURRENT_DATE 行为) |
| `app.v_dws_assistant_monthly_summary.stat_month` | 2026-04-01 | live (CURRENT_DATE 行为) |
| `app.v_dws_assistant_salary_calc.salary_month` | 2026-04-01 | live (CURRENT_DATE 行为) |
| `app.v_dwd_settlement_head.create_time` | 2026-04-28 | live (CURRENT_DATE 行为) |
| `app.v_dwd_assistant_service_log.create_time` | 2026-04-26 | live (CURRENT_DATE 行为) |
| `app.v_dwd_recharge_order.pay_time` | 2026-04-21 | live (CURRENT_DATE 行为) |
| `app.v_dws_member_winback_index.last_visit_time` | 2026-04-27 | live (CURRENT_DATE 行为) |
| `app.v_dws_assistant_customer_stats.stat_date` | 2026-05-01 | live (CURRENT_DATE 行为) |
| `app.v_dws_member_assistant_intimacy.calc_time` | 2026-02-08 | live (CURRENT_DATE 行为) |
| `app.v_dws_member_newconv_index.stat_date` | 2026-05-01 | live (CURRENT_DATE 行为) |
| `app.v_dws_finance_board_cache.computed_at` | 2026-03-29 | live (CURRENT_DATE 行为) |
| `app.v_finance_daily.stat_date` | 2026-04-27 | live (CURRENT_DATE 行为) |

## 2. 应用层（B 方案 / RuntimeContext / fdw_queries / AI prompt）

| 调用 | 取值 | 结果 |
|---|---|---|
| `ctx.is_sandbox` | True | PASS |
| `ctx.business_date` | 2025-09-01 | PASS / =bd |
| `ctx.business_now` | 2025-09-01 | PASS |
| `as_runtime_today_param` | 2025-09-01 | PASS |
| `as_runtime_year_month_param` | 2025-09 | PASS |
| `as_runtime_business_now_str` | 2025-09-01 12:56:29 | OK |
| `board.month range end` | 2025-09-01 | PASS / =bd |
| `board.quarter range end` | 2025-09-01 | PASS |
| `board.week range end` | 2025-09-01 | PASS |
| `pick member_ids` | [2854141942400709, 2799207305578245, 2848686922632133, 2848686922632133, 2799207290996485] | OK |
| `fdw.get_customer_board_recent(items=10)` | 2025-09-01 | PASS |
| `fdw.get_customer_board_recharge(items=10)` | 2025-09-01 | PASS |
| `fdw.get_customer_board_freq60(items=0)` | None | OK (no date in items) |
| `fdw.get_customer_board_recall(items=10)` | None | OK (no date in items) |
| `AI prompt current_time(date)` | 2025-09-01 | PASS |

## 3. 汇总

- 总检查项: 31
- PASS / OK: 31
- FAIL / ERROR: 0
- 其他: 0

**结论：PASS — sandbox 模式下，所有关键读取路径都被截到 sandbox_date 之前。**