# 宏观关键数据 · 风控前置

中控 **系统设置** 手动录入 FOMC / CPI / 就业数据发布时间，在 **监控区** 发布前后各 1 小时给出风险提示。  
**不看公布结果、不解读数据**，仅作波动窗口前的行为提醒；**不拦截下单**（与账户冷静期/日冻结独立）。

## 支持的数据类型

| 类型 ID | 显示名称 |
|---------|----------|
| `fomc` | FOMC 联邦基金利率 |
| `cpi` | 美国 CPI 通胀 |
| `employment` | 就业与劳工数据 |

每项在设置中 **名称下拉三选一**，**发布时间** 手动输入（北京时间，精确到分钟）。FOMC 只录 **一条**（决议公布时刻即可）。

## 风险窗口

- 默认：**发布时间 ±1 小时**
- 发布前 **30 分钟内**：文案加强为「即将发布」
- 窗口结束后横幅自动消失；设置列表中过期记录逐步不再展示

环境变量（可选）：

```env
HUB_MACRO_WINDOW_BEFORE_SEC=3600
HUB_MACRO_WINDOW_AFTER_SEC=3600
HUB_MACRO_IMMINENT_BEFORE_SEC=1800
HUB_MACRO_LIST_FUTURE_DAYS=60
```

## 监控区提示文案

读取当前监控板：**任意交易所有持仓 = 有仓**，否则 = 无仓。

| 场景 | 提示要点 |
|------|----------|
| 无仓 · 窗口内 | 建议等待，避免新开仓 |
| 有仓 · 窗口内 | 注意仓位，勿加仓，检查止损/减仓 |
| 即将发布（30 分钟内） | 在上述基础上标注剩余分钟数 |

## 存储

- SQLite：`manual_trading_hub/data/hub_macro_calendar.db`
- 可覆盖：`HUB_MACRO_CALENDAR_DB_PATH`

表 `macro_events`：`event_type`, `event_at_ms`, `note`, `created_at_ms`, `updated_at_ms`  
同类型 + 同一发布时间不可重复录入。

## API（均需中控登录）

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/macro-calendar/meta` | 类型列表与窗口说明 |
| GET | `/api/macro-calendar/events` | 设置页列表 |
| GET | `/api/macro-calendar/active` | 当前处于窗口内的事件（监控横幅） |
| POST | `/api/macro-calendar/events` | 新增 |
| PATCH | `/api/macro-calendar/events/{id}` | 更新 |
| DELETE | `/api/macro-calendar/events/{id}` | 删除 |

请求体示例：

```json
{
  "event_type": "cpi",
  "event_at": "2026-06-18 20:30",
  "note": "可选备注"
}
```

## 使用习惯

1. 每月在金十/日历查看 **FOMC、CPI、非农** 公布时间  
2. 中控 **系统设置 → 宏观关键数据** 录入 1～3 条  
3. 到点前后监控区顶栏出现 **宏观风控** 横幅；无操作则窗口结束后自动消失  

## 与账户风控的关系

| 模块 | 时机 | 作用 |
|------|------|------|
| 宏观日历 | **事前** | 已知高波动窗口，提醒等待或管仓 |
| 账户冷静期/日冻结 | **事后** | 用户主动平仓后的惩罚性限制 |

宏观提醒 **不触发** 冷静期、不计入手动平仓次数。
