test
38 行
1.8 KiB
Markdown
38 行
1.8 KiB
Markdown
# WeHub 全资源 Demo
|
||
|
||
覆盖 WeHub Deploy Protocol 当前支持的全部 5 种资源的最小可运行标准项目。
|
||
|
||
CTyun E2E run ID:`ctyun-e2e-20260730T101505Z`
|
||
|
||
## 资源
|
||
|
||
| kind | name | 说明 |
|
||
|---|---|---|
|
||
| `static_site` | `web` | `frontend/dist/index.html`,调 `/api/cloud/health` 展示绑定状态 |
|
||
| `function` | `api` | `functions/api/index.js` 导出 `handler`,路由 `/api/cloud/*`,runtime `nodejs20` |
|
||
| `postgres_database` | `app_db` | `app.demo_events` 表读写 |
|
||
| `object_storage` | `uploads` | presigned PUT/GET + 运行时凭证刷新 |
|
||
| `model_router` | `models` | 经 OpenAI 兼容 endpoint 单轮问答 |
|
||
|
||
## 路由
|
||
|
||
- `GET /api/cloud/health` —— 报告 DB/存储/模型绑定是否配置。
|
||
- `GET /api/cloud/db` —— 建表 + 写一条 `app.demo_events` 记录。
|
||
- `POST /api/cloud/presigned-upload` —— 签发 presigned PUT/GET URL。
|
||
- `POST /api/cloud/chat` —— 经 `model_router` 单轮问答。
|
||
|
||
## 资源引用
|
||
|
||
`wehub.manifest.json` 中函数 env 用 `ref:<resource>.<field>` 引用逻辑资源输出:
|
||
|
||
- `DATABASE_URL`: `ref:app_db.connection_url`
|
||
- `OBJECT_BUCKET` / `OBJECT_PREFIX` / `OBJECT_ENDPOINT` / `OBJECT_REGION`: `ref:uploads.*`
|
||
- `OBJECT_CREDENTIALS` / `OBJECT_CREDENTIALS_URL` / `OBJECT_CREDENTIALS_TOKEN` / `NANOHUB_RUNTIME_TOKEN`: `ref:uploads.*`
|
||
- `OPENAI_BASE_URL` / `OPENAI_API_KEY` / `OPENAI_MODEL`: `ref:models.*`
|
||
|
||
函数把 `OBJECT_ENDPOINT` 直接作为 S3 endpoint,`OBJECT_BUCKET` 交给 AWS SDK 生成 bucket Host;运行时凭证经 `OBJECT_CREDENTIALS_URL` + token 刷新,camelCase/snake_case 归一化。
|
||
|
||
## 本地检查
|
||
|
||
仓库不需要预生成 `deploy.zip`。部署打包产物由 `wehub-runner` 在构建阶段生成。前端为预构建静态 HTML(无 `package.json`),runner 跳过前端构建;函数 `package.json` 存在时 runner 执行 `npm ci --omit=dev`。
|