fix: simplify visible brand to skg logo
This commit is contained in:
@@ -45,9 +45,9 @@
|
||||
"type" : "oauth_app"
|
||||
}
|
||||
],
|
||||
"description" : "SKG 生图生视频:默认首页面向公司团队成员的个人隔离创作空间,主路径为文生图、图生图、文生视频、图生视频和营销图文方案生成;每个登录用户只看到自己的任务和结果。任务详情页沉淀参考图、生成图、视频候选、提示词和图文方案,可继续生成、删除和复用。生成画布用于整理多次生成结果;旧 TK 复刻\/一键出片能力保留为高级入口。",
|
||||
"description" : "SKG 营销内容生产平台:默认首页面向公司团队成员的个人隔离创作空间,终端可见品牌位只保留 SKG logo。主路径为文生图、图生图、文生视频、图生视频和营销图文方案生成;每个登录用户只看到自己的任务和结果。任务详情页沉淀参考图、生成图、视频候选、提示词和图文方案,可继续生成、删除和复用。画布用于整理多次生成结果;旧 TK 复刻\/一键出片能力保留为高级入口。",
|
||||
"kind" : "app",
|
||||
"name" : "SKG 生图生视频",
|
||||
"name" : "SKG 营销内容生产平台",
|
||||
"ownership" : "company",
|
||||
"pin_order" : 1778664997,
|
||||
"pinned" : true,
|
||||
@@ -64,7 +64,7 @@
|
||||
}
|
||||
],
|
||||
"quick_login" : {
|
||||
"label" : "SKG 生图生视频",
|
||||
"label" : "SKG 营销内容生产平台",
|
||||
"password" : "",
|
||||
"url" : "https:\/\/marketing.skg.com\/login\/",
|
||||
"username" : "飞书免登录;备用账号见 credentials.WEB_LOGIN"
|
||||
|
||||
10
RULES.md
10
RULES.md
@@ -1,10 +1,10 @@
|
||||
# SKG 生图生视频
|
||||
# SKG 营销内容生产平台
|
||||
|
||||
## 启动
|
||||
- 后台启动(不弹 Terminal):`./scripts/start-dev-background.sh`(通过 macOS launchd 后台托管;前端 4290 + 后端 4291,日志写入 `.logs/`)
|
||||
- 后台停止:`./scripts/stop-dev-background.sh`
|
||||
- 前端 dev:`cd web && npm run dev`(Next.js 16,端口 4290)
|
||||
- 生成画布 dev:`cd web && npm run dev:canvas`(Vue / Vite,端口 4292;生产构建会输出到 `/canvas/`)
|
||||
- 画布 dev:`cd web && npm run dev:canvas`(Vue / Vite,端口 4292;生产构建会输出到 `/canvas/`)
|
||||
- 后端 dev:`cd api && uvicorn main:app --host 127.0.0.1 --port 4291`(FastAPI,端口 4291,重任务用)
|
||||
- 注意:后端不要带 `--reload` 跑长下载 / 抽帧 / 音频任务;reload 会等待后台任务结束,导致 4291 端口占用但新请求卡住。
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
- 详见 `CLAUDE.md` 立项决策段 + `.memory/plan.md` 七步管线拆解
|
||||
- 风格:`04-Dark-Gallery-Ambient`(路径:`~/Projects/research/20260305-网页风格库/04-Dark-Gallery-Ambient.md`)
|
||||
- 第一冲刺:步骤 1-4(下载 / 拆轨 / 关键帧 / ASR+翻译)
|
||||
- 当前产品方向(2026-05-25 单对话框 + 生成画布版):默认首页彻底从“信息流广告复刻管线”切换为多人通用的 SKG 生图生视频入口,服务公司内部成员同时使用。首页默认只保留一个中央对话框,不再显示侧栏、灵感区、任务列表或大结果面板;用户先选择四种生成方式之一:文生视频、文生图、首帧生视频、首尾帧生视频,然后手写提示词并点击生成。首帧 / 首尾帧模式只露必要图片上传位,图片模式显示尺寸选择,视频模式显示画幅和真实可用时长选择。后端 `/health` 向前端返回可选图片 / 视频模型、图片尺寸、视频画幅和视频时长,首页允许用户选择图片模型(自动、GPT Image 2、Gemini 图片兜底)和视频模型(Seedance、Kling、Veo 3 等别名;实际可用模型以环境变量映射为准)。当前 Doubao / Seedance 生产链路单条视频最长按 15 秒暴露,不在 UI 显示 30 秒;如后续要 30 秒,需要改成多段生成后合成。用户登录后仍只看到自己的任务、结果和详情页,继续沿用后端 owner 隔离;结果生成后从对话框下方进入 `/detail/?job=<id>` 沉淀参考图、生成图、视频候选和提示词。新增 `/canvas/` 作为个人生成画布入口,基于 huobao-canvas 交互逻辑改造为 SKG 内部版,界面去除原可见品牌/API 设置,生成调用本项目后端 `/api`,每个浏览器的画布项目先保存在本地 localStorage,图片/视频资产仍按登录用户写入后端 job。旧 TK 复刻工作台、Agent Cut 一键出片和营销图文方案保留为高级/详情页能力,不再作为默认首页入口或默认理解框架。
|
||||
- 当前产品方向(2026-05-25 单对话框 + logo-only 画布版):默认首页彻底从“信息流广告复刻管线”切换为多人通用的 SKG 营销内容生产平台入口,服务公司内部成员同时使用。终端可见品牌位只放 SKG logo,不再把“生图生视频”“SKG 生成画布”或长系统名放在主界面上。首页默认只保留一个中央对话框,不再显示侧栏、灵感区、任务列表或大结果面板;用户先选择四种生成方式之一:文生视频、文生图、首帧生视频、首尾帧生视频,然后手写提示词并点击生成。首帧 / 首尾帧模式只露必要图片上传位,图片模式显示尺寸选择,视频模式显示画幅和真实可用时长选择。后端 `/health` 向前端返回可选图片 / 视频模型、图片尺寸、视频画幅和视频时长,首页允许用户选择图片模型(自动、GPT Image 2、Gemini 图片兜底)和视频模型(Seedance、Kling、Veo 3 等别名;实际可用模型以环境变量映射为准)。当前 Doubao / Seedance 生产链路单条视频最长按 15 秒暴露,不在 UI 显示 30 秒;如后续要 30 秒,需要改成多段生成后合成。用户登录后仍只看到自己的任务、结果和详情页,继续沿用后端 owner 隔离;结果生成后从对话框下方进入 `/detail/?job=<id>` 沉淀参考图、生成图、视频候选和提示词。新增 `/canvas/` 作为个人画布入口,基于 huobao-canvas 交互逻辑改造为 SKG 内部版,界面去除原可见品牌/API 设置,生成调用本项目后端 `/api`,每个浏览器的画布项目先保存在本地 localStorage,图片/视频资产仍按登录用户写入后端 job。旧 TK 复刻工作台、Agent Cut 一键出片和营销图文方案保留为高级/详情页能力,不再作为默认首页入口或默认理解框架。
|
||||
|
||||
## 部署事实
|
||||
- 平台:VPS `76.13.31.179`(Ubuntu 24.04 / Docker Compose / Coolify Traefik)
|
||||
@@ -63,7 +63,7 @@
|
||||
- 最近部署验证(2026-05-20):`f1c710e` 已推送并部署到 `/opt/skg-marketing-studio`;本地 `web/npm run build` 通过,生产 Docker 重建后 `./scripts/verify-prod-docker.sh` 通过(web/API 容器 Up、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`)。转换层中间栏先清空为待重构占位,不再接收拖拽或触发 subject-agent / subject-assets;右侧主体元素输出逻辑保持不变。
|
||||
- 最近部署验证(2026-05-20):`7e763cf` 已推送并部署到 `/opt/skg-marketing-studio`;本地 `web/npm run build` 通过,生产 Docker 重建后 `./scripts/verify-prod-docker.sh` 通过(web/API 容器 Up、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`)。转换层改为参考帧分析 + 对话生成提示词 + 弹窗确认后再生成主体套图;右侧主体元素输出逻辑保持不变。部署时发现服务器 `WEB_AUTH_*` 环境变量缺失导致 `/auth/check` 503,已从 `/root/skg-marketing-studio-login.txt` 和新 session secret 恢复服务器 `deploy/.env.production` 后重启验证通过;后续同步生产代码必须继续排除服务器真实 `deploy/.env.production`。
|
||||
- 主站 / 前端:`https://marketing.skg.com`
|
||||
- 生成画布:`https://marketing.skg.com/canvas/`
|
||||
- 画布:`https://marketing.skg.com/canvas/`
|
||||
- API / 后端:`https://marketing.skg.com/api`
|
||||
- 代码仓库 / Gitea:`https://git.kang-kang.com/kangwan/20260512-skg-tk`
|
||||
- 文档 / 解析:`docs/source-analysis.html`(项目内独立文档,不公开挂主应用路由)
|
||||
@@ -72,7 +72,7 @@
|
||||
- 生产部署唯一入口:`./scripts/deploy-prod-safe.sh`(先在服务器备份 `deploy/.env.production`、`data/jobs`、资源库和 `secrets`,再用受保护 rsync 同步代码,最后 Docker 重建并运行 `verify-prod-docker.sh`)
|
||||
- 生产容器重建命令:`docker compose -f docker-compose.prod.yml --env-file deploy/.env.production up -d --build`;只允许脚本内部或明确只重启容器时使用,不允许再用裸 `rsync --delete` 手动同步。
|
||||
- 独立预览容器重建命令:服务器 `/opt/skg-marketing-studio` 下执行 `docker compose -f docker-compose.standalone.yml --env-file deploy/.env.production up -d --build`;Web 暴露 `0.0.0.0:4290->80`,后端仅在 compose 内部网络暴露,`/api/` 由 Web 容器 Nginx 反代并复用应用内登录校验。
|
||||
- 生产架构:`web` 容器用 Nginx 承载 Next 静态导出;`/login/`、`/_next/`、`/assets/`、`/skg-logo-black.svg`、`/oasis-source/` 等登录页必需静态资源公开访问;未登录访问工作台跳转 `/login/`;`/canvas/` 是受同一登录保护的 Vue / Vite 生成画布静态应用,Nginx fallback 到 `/canvas/index.html`;`/api/` 通过 Nginx `auth_request` 校验 FastAPI 会话 Cookie 后反代到 `skg-marketing-api:4291`;Traefik 通过 `coolify` 外部网络接入 80/443
|
||||
- 生产架构:`web` 容器用 Nginx 承载 Next 静态导出;`/login/`、`/_next/`、`/assets/`、`/skg-logo-black.svg`、`/oasis-source/` 等登录页必需静态资源公开访问;未登录访问工作台跳转 `/login/`;`/canvas/` 是受同一登录保护的 Vue / Vite 画布静态应用,Nginx fallback 到 `/canvas/index.html`;`/api/` 通过 Nginx `auth_request` 校验 FastAPI 会话 Cookie 后反代到 `skg-marketing-api:4291`;Traefik 通过 `coolify` 外部网络接入 80/443
|
||||
- Web 验收必须以生产 Docker 形态为准:前端是 `next export` 静态产物 + Nginx,不是 `next dev` / `next start`。任何 Web 改动部署后必须运行 `./scripts/verify-prod-docker.sh`,确认 `/login/`、`/_next/`、`/api/health`、本地 API 地址泄漏和 API 镜像 `.env` 污染检查通过;不能只用本地 `npm run build` 作为上线依据。
|
||||
- 当前音频解析:`https://ai.skg.com/azure/v1` 的 `gpt-4o-transcribe` 当前返回 `DeploymentNotFound`,且官方 Azure OpenAI transcription 路径探测也未返回可用部署;生产临时复制本地成功策略,直接使用容器内多语言 `faster-whisper` 真实转写,默认语种为 `auto`,支持中文、英文和其他多语言原文识别,关闭 Gemini 多模态音频兜底。拿到真实 Azure ASR deployment 名后再恢复 `ASR_REMOTE_ENABLED=true`,并保持 `ASR_LANGUAGE` 为空或 `auto`,除非明确只想强制单一语种。
|
||||
- 持久化目录:服务器 `./data/jobs` 挂载到后端 `/data/jobs`;全局资源中心持久化在 `./data/asset_library`、`./data/prompt_library` 和 `./data/_trash`
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -12,8 +12,8 @@ const _playfairDisplay = Playfair_Display({
|
||||
})
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "SKG 生图生视频",
|
||||
description: "SKG AI 图片和视频生成入口",
|
||||
title: "SKG",
|
||||
description: "SKG AI 图片、视频和图文内容生产入口",
|
||||
}
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
@@ -142,7 +142,6 @@ export default function LoginPage() {
|
||||
<section className="login-auth-panel login-source-auth-panel login-source-combo-panel rounded-[8px]">
|
||||
<div className="login-top-brand" aria-hidden="true">
|
||||
<img className="login-top-brand__logo" src="/skg-logo-black.svg" alt="" />
|
||||
<span className="login-top-brand__system">生图生视频</span>
|
||||
</div>
|
||||
<div className="login-source-character-strip" aria-hidden="true">
|
||||
<AnimatedLoginCharacters mood={mood} eyeOffset={eyeOffset} />
|
||||
|
||||
@@ -358,11 +358,8 @@ export default function Home() {
|
||||
<Toaster richColors position="top-center" />
|
||||
<div className="flex min-h-screen flex-col">
|
||||
<header className="flex h-14 shrink-0 items-center justify-between px-4 text-xs text-white/42 sm:px-6">
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<span className="flex h-6 w-6 items-center justify-center rounded-lg bg-cyan-400/12 text-cyan-200">
|
||||
<Sparkles className="h-3.5 w-3.5" />
|
||||
</span>
|
||||
SKG 生图生视频
|
||||
<div className="inline-flex h-8 items-center rounded-full bg-white px-3 shadow-[0_10px_30px_rgba(0,0,0,0.24)]">
|
||||
<img src="/skg-logo-black.svg" alt="SKG" className="h-4 w-auto" />
|
||||
</div>
|
||||
{job ? (
|
||||
<a href={`/detail/?job=${job.id}`} className="inline-flex items-center gap-1.5 rounded-lg px-2 py-1.5 text-white/52 transition hover:bg-white/8 hover:text-white">
|
||||
@@ -517,7 +514,7 @@ export default function Home() {
|
||||
className="inline-flex h-10 items-center justify-center gap-2 rounded-full border border-white/10 bg-white/6 px-4 text-sm font-semibold text-white/72 transition hover:border-cyan-200/24 hover:text-cyan-100"
|
||||
>
|
||||
<ExternalLink className="h-4 w-4" />
|
||||
生成画布
|
||||
画布
|
||||
</a>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SKG 生成画布
|
||||
# SKG 画布
|
||||
|
||||
这是 SKG 生图生视频的内部画布模块,部署在主站 `/canvas/` 路径下。
|
||||
这是 SKG 营销内容生产平台的内部画布模块,部署在主站 `/canvas/` 路径下。
|
||||
|
||||
## 内部使用方式
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/skg-logo-black.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>SKG 生成画布</title>
|
||||
<title>SKG</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
<!-- Header | 顶部导航 -->
|
||||
<AppHeader>
|
||||
<template #left>
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="flex h-8 items-center rounded-full bg-white px-3 shadow-sm">
|
||||
<img src="/skg-logo-black.svg" alt="SKG" class="h-6 w-auto dark:invert" />
|
||||
<span class="text-sm font-semibold text-[var(--text-secondary)]">生图生视频</span>
|
||||
</div>
|
||||
</template>
|
||||
</AppHeader>
|
||||
@@ -15,9 +14,9 @@
|
||||
<main class="max-w-5xl mx-auto px-4 py-8 md:py-16">
|
||||
<!-- Welcome section | 欢迎区域 -->
|
||||
<section class="text-center mb-12">
|
||||
<div class="flex items-center justify-center gap-4 mb-8">
|
||||
<img src="/skg-logo-black.svg" alt="SKG" class="h-9 w-auto dark:invert" />
|
||||
<h1 class="text-2xl md:text-4xl font-bold text-[var(--text-primary)]">SKG 生成画布</h1>
|
||||
<div class="flex items-center justify-center mb-8">
|
||||
<img src="/skg-logo-black.svg" alt="SKG" class="h-12 w-auto dark:invert" />
|
||||
<h1 class="sr-only">SKG</h1>
|
||||
</div>
|
||||
|
||||
<!-- Input area | 输入区域 -->
|
||||
|
||||
Reference in New Issue
Block a user