# Hunter Quant 公网访问桥接交付说明

## 最终架构

`pages.dev` 公网入口通过 Cloudflare Service Binding 在 Cloudflare 内部调用 `hunter` Worker。浏览器不再直接解析或访问当前网络被污染/阻断的 `workers.dev` 域名；门户、API、静态资源以及 `SimulationEngine` Durable Object 仍由同一套生产 Worker 提供。

## 域名说明

Cloudflare 的免费 Worker 域名格式固定为 `<Worker 名>.<账户子域>.workers.dev`。目标中的账户子域 `quant` 已被其他 Cloudflare 账户占用，无法注册精确的 `hunter.quant.workers.dev`。已注册的最接近备选是 `hunter.quant01.workers.dev`，但当前网络无法可靠访问 `workers.dev`。

因此新增更适合当前网络的 `pages.dev` 入口。Cloudflare 已成功创建 `hunter-quant` 项目，最终稳定公网地址为：

**https://hunter-quant.pages.dev**

首次生产部署地址为 `https://f9315cc0.hunter-quant.pages.dev`；日常使用稳定主域即可。

## 常驻计算与同步

- Durable Object Alarm 无人访问时仍每秒唤醒模拟引擎。
- 门户每秒请求同一个生产引擎的最新账户状态。
- 成交、持仓、权益曲线和事件日志来自同一账本，不另造演示曲线。
- Service Binding 是 Cloudflare 内部调用，不依赖公开 `workers.dev` DNS。

## 生产验证结果

- 公网首页：HTTP 200，返回完整 Quant Atlas 门户 HTML。
- 健康检查：HTTP 200，确认 `SIMULATION_ENGINE` 与静态资源绑定均存在。
- 模拟账户 API：HTTP 200，运行模式为 `always-on-durable-object`。
- 引擎初始化时间保持为 `2026-07-31T18:55:46.088Z`，证明页面刷新没有创建另一套账户。
- 无访问验证：第一次读取 `alarmCount=18`、`alarmHeartbeat=2026-07-31T19:12:23Z`；随后停止门户请求，第二次读取为 `alarmCount=71`、`alarmHeartbeat=2026-07-31T19:13:16Z`。53 秒内后台计数恰好增加 53，证明 Alarm 每秒执行。
- 同一间隔内成交数由 717 增至 722，成交继续写入同一模拟账本。

## 已修复的兼容问题

Durable Object 返回的响应头在 Service Binding 链路中是不可变的；Vinext 尝试追加框架响应头时会触发 `Can't modify immutable headers.` 并返回 1101。现已在 API 路由中复制为新的可变 Response，修复后首页和 API 均为 HTTP 200。

## 免费额度边界

每秒 Alarm 每天约 86,400 次请求。免费 Durable Objects 每天 100,000 次请求的余量有限；若监控页面长时间打开或多人访问，需升级 Workers Paid 才能稳妥满足全年每秒运行和持续查看。当前部署不会自动产生付费升级。
