Skip to content

Commit d18d024

Browse files
committed
fix(ui): 图文会话跳过讲者分析(无音频不误报错误)
kind=photo 会话渲染'讲者分析不适用'灰态并跳过 analyze_session_speakers——此前每个图文会话详情页都报红色'讲者分析不可用:会话音频缺失',把预期降级渲染成错误。
1 parent 9f71fdd commit d18d024

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

‎app/src/components/SessionDetailPanel.tsx‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,9 @@ export default function SessionDetailPanel({ detail, fusing, degradedBanner, onT
265265
</div>
266266
)}
267267

268-
{/* v0.7.2(REQ-153):讲者切换(弱化版说话人分离——懒加载幂等) */}
269-
<SpeakerSwitchCard sessionId={sessionId} />
268+
{/* v0.7.2(REQ-153):讲者切换(弱化版说话人分离——懒加载幂等;
269+
v0.12.1:图文会话跳过(无音频,不再误报红色错误)) */}
270+
<SpeakerSwitchCard sessionId={sessionId} kind={detail.session.kind} />
270271

271272
{/* 两视图切换(原料 / 笔记预览——REQ-081;v0.11.5 产物视图下线) */}
272273
<div style={{ display: "flex", alignItems: "center", gap: 6, marginBottom: 10 }}>

‎app/src/components/SpeakerSwitchCard.tsx‎

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ import { listen } from "@tauri-apps/api/event";
1616
import type { DownloadProgress, SpeakerAnalysisResult } from "../types";
1717
import { fmtMs } from "../utils/fmt";
1818

19-
export default function SpeakerSwitchCard({ sessionId }: { sessionId: number }) {
19+
export default function SpeakerSwitchCard({
20+
sessionId,
21+
kind,
22+
}: {
23+
sessionId: number;
24+
/** 会话类型(v0.11.7:'photo'=图文截屏会话,无音频;v0.12.1 起跳过讲者分析) */
25+
kind?: string | null;
26+
}) {
2027
// null=加载中;未启用(模型缺失)时 result.enabled=false
2128
const [result, setResult] = useState<SpeakerAnalysisResult | null>(null);
2229
const [error, setError] = useState("");
@@ -26,6 +33,13 @@ export default function SpeakerSwitchCard({ sessionId }: { sessionId: number })
2633

2734
const analyze = useCallback(
2835
(cancelled: { current: boolean }) => {
36+
// v0.12.1:图文会话无音频——不发起分析(此前每个图文会话详情页都会
37+
// 报"讲者分析不可用:会话音频缺失",把预期降级渲染成红色错误)
38+
if (kind === "photo") {
39+
setResult(null);
40+
setError("");
41+
return;
42+
}
2943
setResult(null);
3044
setError("");
3145
void invoke<SpeakerAnalysisResult>("analyze_session_speakers", { sessionId })
@@ -36,7 +50,7 @@ export default function SpeakerSwitchCard({ sessionId }: { sessionId: number })
3650
if (!cancelled.current) setError(`讲者分析失败: ${e}`);
3751
});
3852
},
39-
[sessionId],
53+
[sessionId, kind],
4054
);
4155

4256
useEffect(() => {
@@ -82,6 +96,14 @@ export default function SpeakerSwitchCard({ sessionId }: { sessionId: number })
8296
}
8397
};
8498

99+
// v0.12.1:图文会话无音频——直接渲染"不适用",不进入错误/加载/未启用分支
100+
if (kind === "photo") {
101+
return (
102+
<div style={{ fontSize: 11, color: "#9ca3af", marginBottom: 8 }}>
103+
👥 讲者分析不适用(图文会话无音频)
104+
</div>
105+
);
106+
}
85107
if (error) {
86108
return (
87109
<div style={{ fontSize: 11, color: "#dc2626", marginBottom: 8 }}>

0 commit comments

Comments
 (0)