@@ -120,6 +120,7 @@ export default function RefineWorkbench({
120120 onRegenerate,
121121 ruleMd : propRuleMd ,
122122 refinedMd : propRefinedMd ,
123+ onOpenSessionAt,
123124} : {
124125 /** 会话级目标(规则草稿基线;与 noteMode 二选一) */
125126 sessionId ?: number ;
@@ -140,6 +141,10 @@ export default function RefineWorkbench({
140141 ruleMd ?: string ;
141142 /** 只读模式透传精修版 markdown */
142143 refinedMd ?: string ;
144+ /** 批 7 T17(C10.2):`[[ts:ms]]` 芯片的**容器侧事件委托**出口(双栏/差异三处阅读面共用)。
145+ * @ai -context 缺省 ⇒ 芯片不可点(与今天逐字相同)。生产接线见 `VersionPanel`(笔记页版本对比);
146+ * `AiRefineCard` / `NoteAiDialog` 两处调用点未接线(理由见 T17 报告「诚实边界」)。 */
147+ onOpenSessionAt ?: ( sessionId : number , ms : number ) => void ;
143148} ) {
144149 const [ data , setData ] = useState < WorkbenchData | null > ( null ) ;
145150 const [ status , setStatus ] = useState < "loading" | "ready" | "error" > ( "loading" ) ;
@@ -324,6 +329,12 @@ export default function RefineWorkbench({
324329 const leftHtml = renderSideHtml ( baseRows ) ;
325330 const rightHtml = hasRefined ? decorateRefined ( renderSideHtml ( refinedRows ) , sections ) : "" ;
326331 const diffHtml = renderDiffColumnHtml ( diffRows ) ;
332+ /** 批 7 T17(C10.2):容器侧事件委托(三处阅读面都是 `dangerouslySetInnerHTML` 的串产物,
333+ * 芯片没有 React 上下文)⇒ 按 C10.2 逐字给的 `closest("[data-ts-ms]")` 取目标。 */
334+ const openChip = ( e : React . MouseEvent < HTMLDivElement > ) => {
335+ const el = ( e . target as HTMLElement ) . closest ( "[data-ts-ms]" ) ;
336+ if ( el && sessionId && onOpenSessionAt ) onOpenSessionAt ( sessionId , Number ( el . getAttribute ( "data-ts-ms" ) ) ) ;
337+ } ;
327338 // 差异视图仅在两版可比时展示(精修版缺失时保持并排占位——单侧无 diff 语义)
328339 const showDiff = view === "diff" && hasRefined ;
329340
@@ -436,7 +447,7 @@ export default function RefineWorkbench({
436447 < span style = { { margin : "0 8px" } } > /</ span >
437448 < span > 灰 = 两版共有</ span >
438449 </ div >
439- < div style = { { flex : 1 , overflowY : "auto" , padding : 12 } } >
450+ < div style = { { flex : 1 , overflowY : "auto" , padding : 12 } } onClick = { openChip } >
440451 < Surface
441452 level = "surface"
442453 radius = "panel"
@@ -455,6 +466,7 @@ export default function RefineWorkbench({
455466 < div
456467 ref = { leftRef }
457468 onScroll = { ( ) => onScroll ( "left" ) }
469+ onClick = { openChip }
458470 style = { { flex : 1 , overflowY : "auto" , padding : 12 , fontSize : 12 , lineHeight : 1.6 } }
459471 dangerouslySetInnerHTML = { { __html : leftHtml } }
460472 />
@@ -468,6 +480,7 @@ export default function RefineWorkbench({
468480 < div
469481 ref = { rightRef }
470482 onScroll = { ( ) => onScroll ( "right" ) }
483+ onClick = { openChip }
471484 style = { { flex : 1 , overflowY : "auto" , padding : 12 , fontSize : 12 , lineHeight : 1.6 } }
472485 dangerouslySetInnerHTML = { { __html : rightHtml } }
473486 />
0 commit comments