auto-save 2026-05-15 18:23 (~6)

This commit is contained in:
2026-05-15 18:23:40 +08:00
parent a851ce1c59
commit 981ac40d86
6 changed files with 33 additions and 18 deletions

View File

@@ -1,11 +1,5 @@
{
"entries": [
{
"files_changed": 4,
"message": "Codex 会话活跃 · 最近命令codex · 4 项未提交变更 · 最近提交auto-save 2026-05-14 02:36 (~2)",
"ts": "2026-05-13T18:38:48Z",
"type": "session-heartbeat"
},
{
"files_changed": 4,
"hash": "43da937",
@@ -3254,6 +3248,13 @@
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 4 项未提交变更 · 最近提交auto-save 2026-05-15 18:12 (~1)",
"files_changed": 4
},
{
"ts": "2026-05-15T18:18:10+08:00",
"type": "commit",
"message": "auto-save 2026-05-15 18:17 (+1, ~4)",
"hash": "a851ce1",
"files_changed": 5
}
]
}

View File

@@ -21,7 +21,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/` 等登录页必需静态资源公开访问;未登录访问工作台跳转 `/login/``/api/` 通过 Nginx `auth_request` 校验 FastAPI 会话 Cookie 后反代到 `skg-marketing-api:4291`Traefik 通过 `coolify` 外部网络接入 80/443
- 生产架构:`web` 容器用 Nginx 承载 Next 静态导出;`/login/``/_next/``/assets/``/oasis-source/` 等登录页必需静态资源公开访问;未登录访问工作台跳转 `/login/``/api/` 通过 Nginx `auth_request` 校验 FastAPI 会话 Cookie 后反代到 `skg-marketing-api:4291`Traefik 通过 `coolify` 外部网络接入 80/443
- 持久化目录:服务器 `./data/jobs` 挂载到后端 `/data/jobs`
- 登录凭证:用户名写下方快捷登录;密码明文备份只放服务器 `/root/skg-marketing-studio-login.txt`,生产环境变量 `WEB_AUTH_PASSWORD` / `WEB_AUTH_SESSION_SECRET` 只放服务器 `deploy/.env.production`

View File

@@ -92,6 +92,11 @@ server {
try_files $uri =404;
}
location /oasis-source/ {
root /usr/share/nginx/html;
try_files $uri =404;
}
location ~* ^/(icon|apple-icon|favicon|manifest|placeholder).* {
root /usr/share/nginx/html;
try_files $uri =404;

View File

@@ -536,7 +536,7 @@
<tr>
<td>生产站点</td>
<td><code>https://marketing.skg.com</code></td>
<td>公司域名已解析到 VPS <code>76.13.31.179</code>。线上由既有 Coolify / Traefik 负责 HTTPS 入口,项目 <code>web</code> 容器用 Nginx 承载静态前端;<code>/login/</code><code>/_next/</code><code>/assets/</code> 为公开登录页资源,未登录访问工作台跳转 <code>/login/</code><code>/api/</code> 通过 <code>auth_request</code> 校验 FastAPI 会话 Cookie 后再反代。</td>
<td>公司域名已解析到 VPS <code>76.13.31.179</code>。线上由既有 Coolify / Traefik 负责 HTTPS 入口,项目 <code>web</code> 容器用 Nginx 承载静态前端;<code>/login/</code><code>/_next/</code><code>/assets/</code><code>/oasis-source/</code> 为公开登录页资源,未登录访问工作台跳转 <code>/login/</code><code>/api/</code> 通过 <code>auth_request</code> 校验 FastAPI 会话 Cookie 后再反代。</td>
</tr>
<tr>
<td>生产部署</td>
@@ -592,7 +592,8 @@
<tbody>
<tr><td><code>web/app/page.tsx</code></td><td>产品工作台主状态jobs、activeJobId、按 job 隔离的 selectedFrames/详情面板状态、clipboard、ReactFlow 节点和边;负责打开/找回画布工作面板。</td></tr>
<tr><td><code>web/app/login/page.tsx</code></td><td>生产登录页:访问账号/访问密钥表单、保持会话、错误/成功状态;页面改为全屏 Digital Oasis 式动态背景、黑白/香槟金视觉、Internal Access 胶囊和画面/声音/成片状态栏;同时保留动态角色作为 Live Creative Modules 小组件。</td></tr>
<tr><td><code>web/components/login/oasis-canvas.tsx</code></td><td>登录页全屏动态视觉层:本地 Canvas 绘制低视角景深草场、金色柔光、粒子和随鼠标轻微摆动的草叶,不依赖外部 CDN不出现任何产品元素</td></tr>
<tr><td><code>web/components/login/oasis-canvas.tsx</code></td><td>登录页全屏动态视觉层:用 iframe 直接承载下载包 <code>web/public/oasis-source/index.html</code> 的原 WebGPU / Three.js 草场源码;父级登录页只覆盖自己的文案和表单</td></tr>
<tr><td><code>web/public/oasis-source/index.html</code></td><td>从下载包 <code>remix-3d-website-the-digital-o</code> 复制来的原始视觉源码。只额外隐藏 demo 站自己的导航、文字和设置面板,保留原 WebGPU 渲染、草场、景深和鼠标交互源码。</td></tr>
<tr><td><code>web/components/login/animated-login-characters.tsx</code></td><td>登录页四个几何动态角色组件:当前以小型 Live Creative Modules 方式挂在左侧展示区,保留鼠标眼神跟随、输入、显示密码、错误和成功状态反馈。</td></tr>
<tr><td><code>web/components/nodes/index.tsx</code></td><td>DAG 节点定义Input、VisualLab、Audio、Compose以及画布工作面板 KeyframePanel / VideoFramePanel旧 Keyframe/Storyboard/VideoGen 组件保留但不再挂主画布。</td></tr>
<tr><td><code>web/components/audio-strip.tsx</code></td><td>底部吸附音频条:可拖拽调整高度;播放原音频时移动指针,逐个高亮英文/中文字幕节点和对应波形,并在右侧固定显示按原音频时长生成的 SKG 英文产品口播和 MiniMax 随机英文配音。</td></tr>
@@ -951,8 +952,8 @@ SubjectAsset {
</header>
<div class="body">
<p><strong>问题:</strong>用户希望采用下载的 <code>remix-3d-website-the-digital-o</code> 视觉方向;登录页需要更有沉浸感,但不能回到具体产品展示。</p>
<p><strong>改动:</strong>新增 <code>web/components/login/oasis-canvas.tsx</code>,用本地 Canvas 绘制全屏低视角景深草场、金色柔光、粒子和鼠标轻微交互,替代原左侧抽象流程卡片;<code>web/app/login/page.tsx</code> 改为全屏动态背景 + 右侧身份验证面板结构,保留 <code>Live Creative Modules</code> 动态角色、内容创作中枢文案和画面/声音/成片状态栏,不引入外部 CDN 或产品元素</p>
<p><strong>影响:</strong><code>web/app/login/page.tsx</code><code>web/components/login/oasis-canvas.tsx</code><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p>
<p><strong>改动:</strong>新增 <code>web/public/oasis-source/index.html</code>,直接复制下载包原始 WebGPU / Three.js 草场源码;<code>web/components/login/oasis-canvas.tsx</code> 改为 iframe 承载这份源码,登录页只做上层文案和表单覆盖。源码页仅用 CSS 隐藏 demo 站自己的导航、文字和设置面板,保留原草场、景深、风动和鼠标交互</p>
<p><strong>影响:</strong><code>web/app/login/page.tsx</code><code>web/components/login/oasis-canvas.tsx</code><code>web/public/oasis-source/index.html</code><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p>
</div>
</article>
<article class="change">

View File

@@ -3,8 +3,10 @@
export function OasisCanvas() {
return (
<iframe
allow="webgpu; fullscreen"
aria-hidden="true"
className="login-oasis-canvas"
loading="eager"
src="/oasis-source/index.html"
title="Digital Oasis WebGPU background"
/>

View File

@@ -864,21 +864,27 @@
.delay-4 { transition-delay: 0.55s !important; }
/* Embedded in SKG Marketing Studio login.
Keep the original WebGPU scene source running, hide this demo site's
page chrome/content so the parent login UI owns all text and controls. */
Keep the original DOM alive because the WebGPU source reads section
positions for camera state. Visual text/chrome is made transparent so
the parent login UI owns all visible text and controls. */
html, body {
height: 100%;
overflow: hidden !important;
min-height: 100%;
}
#scroll-container,
.nav-float,
.nav-mobile-overlay,
.site-footer {
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
}
.settings-gear,
.settings-panel,
.progress-bar,
.site-footer {
display: none !important;
.progress-bar {
opacity: 0 !important;
pointer-events: none !important;
}
canvas {