@@ -84,13 +84,22 @@ export default function ReviewPage({ active, focusGroupId, onFocusGroupConsumed
8484
8585 useEffect ( ( ) => { void load ( ) ; } , [ load , token ] ) ;
8686
87- // 跨页深链消费:预选组 + 退出进行中的会话(新意图优先)+ 通知父层清空
87+ // 会话退出/完成:回总览并重载到期统计(评分已改变到期分布)。useCallback
88+ // 化供深链打断复用(审查 P3-5a:两处退出必须同语义——裸 setSession(null)
89+ // 会残留旧到期统计,深链新意图就位后展示的是会话前的过期数字)
90+ const exitSession = useCallback ( ( ) => {
91+ setSession ( null ) ;
92+ setToken ( ( t ) => t + 1 ) ;
93+ } , [ ] ) ;
94+
95+ // 跨页深链消费:预选组 + 退出进行中的会话(新意图优先)+ 通知父层清空。
96+ // 退出走 exitSession(token++ 重载——与手动退出/完成同出口,防旧统计残留)
8897 useEffect ( ( ) => {
8998 if ( focusGroupId == null ) return ;
90- setSession ( null ) ;
99+ exitSession ( ) ;
91100 setSelGroupId ( focusGroupId ) ;
92101 onFocusGroupConsumed ?.( ) ;
93- } , [ focusGroupId , onFocusGroupConsumed ] ) ;
102+ } , [ focusGroupId , onFocusGroupConsumed , exitSession ] ) ;
94103
95104 // 到期>0 的组行(chips 数据源;纯归约见 utils/reviewStats)
96105 const dueRows = useMemo ( ( ) => dueGroupRows ( groups , byGroupDue ) , [ groups , byGroupDue ] ) ;
@@ -103,28 +112,26 @@ export default function ReviewPage({ active, focusGroupId, onFocusGroupConsumed
103112 setSession ( { groupId : selGroupId , groupName : scopeName } ) ;
104113 } ;
105114
106- // 会话退出/完成:回总览并重载到期统计(评分已改变到期分布)
107- const exitSession = ( ) => {
108- setSession ( null ) ;
109- setToken ( ( t ) => t + 1 ) ;
110- } ;
111-
112115 if ( session ) {
113116 return (
114117 < div style = { { height : "calc(100vh - 56px)" , display : "flex" , flexDirection : "column" , minHeight : 0 , background : "#fff" } } >
115118 < ReviewSessionPanel
116119 groupId = { session . groupId }
117120 groupName = { session . groupName }
121+ // 审查 P2-11:ESC 监听门控到页面可见(隐藏期保活会话不被别页 ESC 误退)
122+ active = { active }
118123 onExit = { exitSession }
119124 />
120125 </ div >
121126 ) ;
122127 }
123128
124- // 空态文案分支:全局无到期 / 本组无到期但别组有(引导换范围,避免困惑)
129+ // 空态文案分支:全局无到期 / 本组无到期但别组有(引导换范围,避免困惑)。
130+ // 审查 P3-5b:范围空态标题内嵌 scopeLabel 组名——零到期深链(focusGroupId
131+ // 指向无到期组)只预选不弹窗,标题不带组名时用户看不出"预选到了哪一组"
125132 const emptyTitle = totalDue === 0
126133 ? "当前没有到期卡片 🎉"
127- : "该组当前没有到期卡片" ;
134+ : `「 ${ scopeName } 」组当前没有到期卡片` ;
128135 const emptyBody = totalDue === 0
129136 ? "闪卡由笔记组产出(组 ⓘ 管理「⚙ 生成闪卡」/「+ 概念卡」/碎片升卡),到期时间由 FSRS 间隔调度——到期后再来复习(弹性承诺,不追债)。若从未生成过闪卡:到「📝 笔记」页任一组点 ⓘ →「⚙ 生成闪卡」起步。"
130137 : `其余组共 ${ totalDue } 张到期——切换上方范围即可复习。` ;
0 commit comments