系统架构概览
请求如何流转
首页 / 始终返回公开网页,包括已经登录的用户。/dashboard 等私有路径交给工作台;工作台读取会话并决定是否跳转登录,接口再校验身份与数据归属。
三个部署单元
| 应用 | 职责 | 关键入口 |
|---|---|---|
| 公开站 | 静态网页、工具、博客及请求分流 | apps/web/worker.ts |
| 工作台 | 单页应用、会话状态及私有页面 | apps/app/wrangler.jsonc(静态资源与单页回退) |
| 接口 | 认证与类型化业务接口 | apps/api/worker.ts |
公开站通过 APP_SERVICE 和 API_SERVICE 调用另外两个服务。接口使用两个 Hyperdrive 绑定;认证、权限、账单和写后读走无查询缓存的连接。
公开内容与私有数据
Astro 在构建时生成公开正文、元信息和博客页面;交互工具按需加载 React。搜索访问不需要登录或等待私有工作台脚本。用户历史和积分通过登录后的接口获取,不写入公开构建产物。
认证模块仍设置会话提示 cookie,但当前公开入口不据此将首页切换为工作台。该 cookie 不是授权凭据,历史设计见 认证提示 cookie 决策。
本地与线上
完整预览由 scripts/preview.py 启动各服务,再用 scripts/local-gateway.ts 在 4400 分流。线上使用 Worker 服务绑定。两者必须保持相同路径归属,相关检查在 apps/app/lib/edge-routing.test.ts。
构建顺序应让邮件模板先可供接口引用;使用根目录 bun build,避免手动漏掉依赖。部署依次更新接口、工作台和公开入口,细节见 部署上线。