@@ -16,7 +16,14 @@ import { listen } from "@tauri-apps/api/event";
1616import type { DownloadProgress , SpeakerAnalysisResult } from "../types" ;
1717import { 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