fix: hide audio analysis summary cards
This commit is contained in:
2
RULES.md
2
RULES.md
@@ -15,7 +15,7 @@
|
||||
|
||||
## 部署事实
|
||||
- 平台:VPS `76.13.31.179`(Ubuntu 24.04 / Docker Compose / Coolify Traefik)
|
||||
- 发布状态:已部署并验证(2026-05-19,隐藏工作区顶部状态提示条 + 三字段候选生成工作流 + 折叠紧凑候选区);`https://marketing.skg.com` 已启用应用内登录页,未登录 API 返回 401,认证后首页 200;容器内 `/health` 返回 `ok:true`
|
||||
- 发布状态:已部署并验证(2026-05-19,隐藏源视频工作区音频解析摘要卡 + 隐藏工作区顶部状态提示条 + 三字段候选生成工作流 + 折叠紧凑候选区);`https://marketing.skg.com` 已启用应用内登录页,未登录 API 返回 401,认证后首页 200;容器内 `/health` 返回 `ok:true`
|
||||
- 主站 / 前端:`https://marketing.skg.com`
|
||||
- API / 后端:`https://marketing.skg.com/api`
|
||||
- 代码仓库 / Gitea:`https://git.kang-kang.com/kangwan/20260512-skg-tk`
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2260,14 +2260,8 @@ function AudioIntakePanel({
|
||||
const videoRef = useRef<HTMLVideoElement | null>(null)
|
||||
const rowRefs = useRef<Record<number, HTMLDivElement | null>>({})
|
||||
const syncFrameRef = useRef<number | null>(null)
|
||||
const script = job?.audio_script
|
||||
const audioSrcUrl = job ? apiAssetUrl(job.source_audio_url) || sourceAudioUrl(job.id) : ""
|
||||
const profiles = [
|
||||
{ label: "讲话人", value: script?.speaker_profile },
|
||||
{ label: "节奏", value: script?.rhythm_profile },
|
||||
{ label: "背景音", value: script?.background_audio_profile },
|
||||
]
|
||||
const processing = !!job && (job.status === "transcribing" || script?.status === "rewriting")
|
||||
const processing = !!job && (job.status === "transcribing" || job.audio_script?.status === "rewriting")
|
||||
const timelineDuration = useMemo(() => {
|
||||
if (!job) return 1
|
||||
const lastTranscriptEnd = job.transcript.reduce((max, segment) => Math.max(max, segment.end || 0), 0)
|
||||
@@ -2409,23 +2403,6 @@ function AudioIntakePanel({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<details className="group mb-2 rounded-md border border-white/10 bg-black/24 p-2">
|
||||
<summary className="flex cursor-pointer list-none items-center justify-between gap-3">
|
||||
<SectionTitle icon={<Mic className="h-4 w-4" />} title="音频解析结果" />
|
||||
<div className="flex min-w-0 items-center gap-2">
|
||||
<span className="hidden min-w-0 truncate text-[11px] text-white/40 md:inline">
|
||||
讲话人 / 节奏 / 背景音,展开查看完整模型判断
|
||||
</span>
|
||||
<ChevronDown className="h-4 w-4 shrink-0 text-white/38 transition group-open:rotate-180" />
|
||||
</div>
|
||||
</summary>
|
||||
<div className="mt-2 grid grid-cols-1 gap-2 md:grid-cols-3">
|
||||
{profiles.map((item) => (
|
||||
<ProfileTile key={item.label} label={item.label} value={item.value} running={processing} />
|
||||
))}
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<div className="grid gap-2 border-t border-white/8 pt-2">
|
||||
<div className="grid gap-2">
|
||||
<div className="grid gap-3 xl:grid-cols-[360px_minmax(0,1fr)] 2xl:grid-cols-[390px_minmax(0,1fr)]">
|
||||
@@ -5492,20 +5469,6 @@ function AudioWaveform({
|
||||
)
|
||||
}
|
||||
|
||||
function ProfileTile({ label, value, running }: { label: string; value?: string; running?: boolean }) {
|
||||
return (
|
||||
<div className="min-h-[58px] rounded-md border border-white/10 bg-black/35 p-2">
|
||||
<div className="mb-1 flex items-center justify-between gap-2">
|
||||
<span className="text-[11px] font-semibold text-white/48">{label}</span>
|
||||
{running ? <Loader2 className="h-3.5 w-3.5 animate-spin text-cyan-200" /> : value ? <Check className="h-3.5 w-3.5 text-emerald-200" /> : <Circle className="h-3.5 w-3.5 text-white/32" />}
|
||||
</div>
|
||||
<p className="line-clamp-2 text-[11px] leading-snug text-white/58" title={value}>
|
||||
{value || (running ? "模型分析中..." : "等待音频分析结果。")}
|
||||
</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function ModelTrace({ trace, compact = false }: { trace: ModelTraceSpec; compact?: boolean }) {
|
||||
const [position, setPosition] = useState<{ left: number; top: number } | null>(null)
|
||||
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
||||
|
||||
Reference in New Issue
Block a user