chore: persist resource libraries in production

This commit is contained in:
2026-05-18 21:18:54 +08:00
parent e6004b3bb5
commit 3b7a06272d
4 changed files with 11 additions and 4 deletions

View File

@@ -15,7 +15,7 @@
## 部署事实
- 平台VPS `76.13.31.179`Ubuntu 24.04 / Docker Compose / Coolify Traefik
- 发布状态已部署并验证2026-05-15`https://marketing.skg.com` 已启用应用内登录页,认证后首页 200`/api/health` 返回 `ok:true`
- 发布状态已部署并验证2026-05-18`https://marketing.skg.com` 已启用应用内登录页,认证后首页 200`/api/health` 返回 `ok:true`
- 主站 / 前端:`https://marketing.skg.com`
- API / 后端:`https://marketing.skg.com/api`
- 代码仓库 / Gitea`https://git.kang-kang.com/kangwan/20260512-skg-tk`
@@ -24,7 +24,7 @@
- 服务器目录:`/opt/skg-marketing-studio`
- 生产启动:`docker compose -f docker-compose.prod.yml --env-file deploy/.env.production up -d --build`
- 生产架构:`web` 容器用 Nginx 承载 Next 静态导出;`/login/``/_next/``/assets/``/skg-logo-black.svg``/oasis-source/` 等登录页必需静态资源公开访问;未登录访问工作台跳转 `/login/``/api/` 通过 Nginx `auth_request` 校验 FastAPI 会话 Cookie 后反代到 `skg-marketing-api:4291`Traefik 通过 `coolify` 外部网络接入 80/443
- 持久化目录:服务器 `./data/jobs` 挂载到后端 `/data/jobs`
- 持久化目录:服务器 `./data/jobs` 挂载到后端 `/data/jobs`;全局资源中心持久化在 `./data/asset_library``./data/prompt_library``./data/_trash`
- 登录凭证:用户名写下方快捷登录;密码明文备份只放服务器 `/root/skg-marketing-studio-login.txt`,生产环境变量 `WEB_AUTH_PASSWORD` / `WEB_AUTH_SESSION_SECRET` 只放服务器 `deploy/.env.production`
## 快捷登录

View File

@@ -3,6 +3,8 @@
# Runtime
JOBS_DIR=/data/jobs
ASSET_LIBRARY_DIR=/data/asset_library
PROMPT_LIBRARY_DIR=/data/prompt_library
KEYFRAME_COUNT=12
CORS_ORIGINS=https://marketing.skg.com
API_PORT=4291

View File

@@ -10,9 +10,14 @@ services:
- ./deploy/.env.production
environment:
JOBS_DIR: /data/jobs
ASSET_LIBRARY_DIR: /data/asset_library
PROMPT_LIBRARY_DIR: /data/prompt_library
CORS_ORIGINS: https://marketing.skg.com
volumes:
- ./data/jobs:/data/jobs
- ./data/asset_library:/data/asset_library
- ./data/prompt_library:/data/prompt_library
- ./data/_trash:/data/_trash
restart: unless-stopped
networks:
- skg-marketing-internal

View File

@@ -541,7 +541,7 @@
<tr>
<td>生产部署</td>
<td><code>docker compose -f docker-compose.prod.yml --env-file deploy/.env.production up -d --build</code></td>
<td>服务器目录为 <code>/opt/skg-marketing-studio</code>;后端任务文件挂载到 <code>./data/jobs</code>,真实 Key 只放服务器 <code>deploy/.env.production</code></td>
<td>服务器目录为 <code>/opt/skg-marketing-studio</code>;后端任务文件挂载到 <code>./data/jobs</code>全局资源中心挂载到 <code>./data/asset_library</code><code>./data/prompt_library</code><code>./data/_trash</code>真实 Key 只放服务器 <code>deploy/.env.production</code></td>
</tr>
<tr>
<td>前端开发服务</td>
@@ -1099,7 +1099,7 @@ ProductRefStateItem {
</header>
<div class="body">
<p><strong>问题:</strong>主体、产品、首尾帧、视频候选和常用 prompt 都散落在单个 job 里,跨任务复用时容易重新上传、重新生成或误把旧 job 文件当公共引用,后续也缺少删除保护和使用次数记录。</p>
<p><strong>改动:</strong>后端新增和 <code>jobs/</code> 平级的 <code>asset_library/</code><code>prompt_library/</code>,服务启动扫描目录重建索引;提示词提供 CRUD、复制计数和 5 类分类;素材提供主体/产品/场景/视频四类 CRUD、引用检查、强删移入 <code>_trash/</code><code>copy-to-job</code>。前端新增 <code>LibraryDrawer</code> 浮窗,顶部“资源库”按钮打开;浮窗记忆尺寸、位置和 Tab提示词按“常用 + 月份”分列,素材按月份分列,节点不能拖动;提示词支持一键复制英文/中文/双语,素材应用到当前 job 时只走复制模式。</p>
<p><strong>改动:</strong>后端新增和 <code>jobs/</code> 平级的 <code>asset_library/</code><code>prompt_library/</code>,服务启动扫描目录重建索引;提示词提供 CRUD、复制计数和 5 类分类;素材提供主体/产品/场景/视频四类 CRUD、引用检查、强删移入 <code>_trash/</code><code>copy-to-job</code>。前端新增 <code>LibraryDrawer</code> 浮窗,顶部“资源库”按钮打开;浮窗记忆尺寸、位置和 Tab提示词按“常用 + 月份”分列,素材按月份分列,节点不能拖动;提示词支持一键复制英文/中文/双语,素材应用到当前 job 时只走复制模式。生产 compose 同步挂载 <code>/data/asset_library</code><code>/data/prompt_library</code><code>/data/_trash</code>,避免容器重建后库文件丢失。</p>
<p><strong>影响:</strong>后续保存产品图、首尾帧、主体模板和分镜 prompt 时优先进入资源中心。库素材永远不要直接写成 job 引用,必须通过 <code>POST /asset-library/{kind}/{id}/copy-to-job/{job_id}</code> 复制成普通 job asset删除库素材前必须查 <code>/refs</code> 并让用户确认。</p>
</div>
</article>