feat: add direct PostgreSQL and ACK deployment support

This commit is contained in:
brother7 committed 2026-08-12 19:20:07 +08:00
1 parent d0192081c7
commit c44274f098
55 files changed
+3317 -1064

No files matched your search

+14 -10
View File
@@ -2,6 +2,10 @@
[完整中文说明](./README.zh-CN.md)
Production deployment on Alibaba Cloud ACK uses direct RDS PostgreSQL. See
[`docs/DEPLOYMENT.md`](./docs/DEPLOYMENT.md) and the templates in [`deploy/ack`](./deploy/ack).
Use `/api/health` for process liveness and `/api/ready` for database-backed readiness.
这是 `智念AIGC平台` 的 Web 极简 MVP。当前产品只保留核心闭环:统一创作图片/视频、在任务模块查看详情与下载结果,以及必要设置。
运维部署与 API 对接:
@@ -63,11 +67,11 @@ Docker 部署默认使用 `docker-compose.yml` 同时启动 Web 服务和 `zhini
## 平台账号体系
平台不再依赖外部 OAuth2/SSO。浏览器用户统一使用手机号和密码登录,账号数据由平台自己管理:生产环境使用 Supabase/Postgres,本地开发使用 `.runtime/data/platform-accounts.json`。
平台不再依赖外部 OAuth2/SSO。浏览器用户统一使用手机号和密码登录,账号数据由平台自己管理:生产环境直连 PostgreSQL,本地开发使用 `.runtime/data/platform-accounts.json`。
平台支持超级管理员、组织管理员和普通用户三层角色。组织管理员只能管理本组织普通用户和查看组织汇总用量,不能查看日志、系统配置或管理组织生命周期;普通用户只能访问自己的创作、素材、任务和账户安全。
核心配置:`ZHINIAN_AUTH_REQUIRED`、`ZHINIAN_AUTH_SESSION_SECRET`、`NEXT_PUBLIC_SUPABASE_URL`、`SUPABASE_SERVICE_ROLE_KEY`、`ZHINIAN_DATA_DIR`。
核心配置:`ZHINIAN_AUTH_REQUIRED`、`ZHINIAN_AUTH_SESSION_SECRET`、`ZHINIAN_DATA_BACKEND`、`DATABASE_URL`、`ZHINIAN_DATA_DIR`。
首次部署时执行一次:
@@ -229,21 +233,21 @@ cp .env.example .env.local
- `SEEDANCE_RESOLUTION`:支持 `480p`、`720p`、`1080p`、`4k`;Seedance 2.0 fast 不支持 `1080p`
- `SEEDANCE_MOCK`
- `ALI_OSS_*`:用于上传素材和生成结果转存
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `SUPABASE_SERVICE_ROLE_KEY`
- `ZHINIAN_DATA_BACKEND`:生产使用 `postgres`,开发可使用 `local`
- `DATABASE_URL`:仅服务端读取的 PostgreSQL 连接串
- `DATABASE_SSL_MODE` / `DATABASE_CA_CERT_PATH`:RDS TLS 验证配置
如果 Supabase 未配置,应用会使用 `.runtime/data/web-app-state.json` 做本地开发数据层。如果 OSS 未配置,上传和 mock 结果会保存到 `.runtime/uploads` 和 `.runtime/generated-results`,并通过 Web 路由提供访问。
当 `ZHINIAN_DATA_BACKEND=local` 时,应用使用 `.runtime/data/web-app-state.json` 作为单实例开发数据层。生产 `postgres` 模式缺少连接配置会直接失败,不会静默写入本地 JSON。如果 OSS 未配置,上传和 mock 结果会保存到 `.runtime/uploads` 和 `.runtime/generated-results`,并通过 Web 路由提供访问。
## 数据库
Supabase/Postgres 表结构在:
版本化 PostgreSQL 迁移在:
```text
supabase/schema.sql
database/migrations/
```
升级已启用 Supabase 的部署时,先在 Supabase SQL Editor 重新执行该幂等脚本。它会迁移用量快照字段、按 `job_id` 去重历史记录,并解除任务删除对用量记录的级联删除。
首次部署和每次发布均先执行 `npm run db:migrate`。迁移器使用 advisory lock、版本记录和校验和,避免多个发布任务并发迁移或已应用脚本被静默改写。
当前仍保留必要数据表,供上传、生成任务和用量记录使用:
@@ -256,7 +260,7 @@ supabase/schema.sql
## 任务管理与开放 API
平台支持服务端任务管理:页面和 `/api/v1` 创建任务后只入队,Worker 统一提交供应商、轮询、转存结果、失败重试和 Webhook 回调。生产部署建议配置 Supabase/Postgres;本地开发可继续使用 `.runtime/data/web-app-state.json`。
平台支持服务端任务管理:页面和 `/api/v1` 创建任务后只入队,Worker 统一提交供应商、轮询、转存结果、失败重试和 Webhook 回调。生产部署使用 PostgreSQL;本地开发可继续使用 `.runtime/data/web-app-state.json`。
开放 API 使用 API Key: