fix: place supervision feedback below project overview
Order the task center as project overview, supervision feedback, then project tasks. Update the sidebar layout documentation to match. Release note: 任务中心的监督反馈现位于项目概览下方、项目任务上方。
This commit is contained in:
@@ -36,6 +36,8 @@
|
||||
|
||||
仅在应用已启用时挂载监督面板及固定目标控件;关闭或设置尚未加载时不挂载,也不发起面板查询。任务列表仍按原规则显示。
|
||||
|
||||
任务中心从上到下依次显示项目概览(含当前会话统计)、监督反馈、项目任务。
|
||||
|
||||
右侧通用助手工作栏中的监督卡片展示“监督反馈”,沿用现有[工作栏设计](../assistant-workbar/prd.md)的布局和执行边界。当前支持 Conversation/Task:有选中任务时跟随任务,否则跟随会话;“固定监督目标”保存当前目标,切换聊天后保持,取消固定恢复跟随。卡片显示目标、结果真实范围、回顾区间和摘要,可刷新并查看匹配来源;无目标或无匹配结果显示空态。Experiment 尚未接入。
|
||||
|
||||
有匹配结果时提供“在图谱中查看”,打开现有监督者页面的图谱页签并读取该结果;无匹配结果不显示入口。按钮保留原生键盘操作,进入后焦点落在图谱页签,继续使用共享 PageTabs 的方向键导航。固定目标不因跳转改变;再次点击相同或不同结果均重新定位,包括页面缓存后再次进入。结果不可用时显示错误并重试原 ID,不展示默认最新结果。
|
||||
|
||||
@@ -2082,6 +2082,21 @@ export function RightAssistantSidebar({
|
||||
) : null}
|
||||
{instance.appId === 'tasks' && (
|
||||
<section className="assistant-sidebar__section task-center">
|
||||
<section className="task-center__stats" aria-label={t('sidebar.tasks.stats.label')}>
|
||||
<p className="task-center__scope">{currentProject
|
||||
? t('sidebar.tasks.projectScope', { project: currentProject.name })
|
||||
: t('sidebar.tasks.scope.currentProject')}</p>
|
||||
<span className="task-center__eyebrow">{t('sidebar.tasks.stats.currentConversation')}</span>
|
||||
<h3>{activeConversationId
|
||||
? currentStats?.title ?? conversationTitles.get(activeConversationId) ?? t('sidebar.tasks.stats.currentConversation')
|
||||
: t('sidebar.tasks.stats.noConversation')}</h3>
|
||||
<dl className="task-center__stat-grid">
|
||||
<div><dt>{t('sidebar.tasks.stats.replyDuration')}</dt><dd>{currentStats ? formatDuration(currentStats.replyDurationMs) : t('sidebar.tasks.stats.unavailable')}</dd></div>
|
||||
<div><dt>{t('sidebar.tasks.stats.messages')}</dt><dd>{currentStats ? currentStats.messageCount.toLocaleString(locale) : t('sidebar.tasks.stats.unavailable')}</dd></div>
|
||||
</dl>
|
||||
{currentStats?.incomplete && <p className="task-center__incomplete">{t('sidebar.tasks.stats.incomplete')}</p>}
|
||||
<details><summary>{t('sidebar.tasks.stats.timeHelp')}</summary><p>{t('sidebar.tasks.stats.timeDescription')}</p></details>
|
||||
</section>
|
||||
{supervisionEnabled && <>
|
||||
<SupervisionCard
|
||||
pinned={Boolean(instance.targetRef)}
|
||||
@@ -2101,21 +2116,6 @@ export function RightAssistantSidebar({
|
||||
onOpenSupervisionConversation={onOpenSupervisionConversation}
|
||||
/>
|
||||
</>}
|
||||
<section className="task-center__stats" aria-label={t('sidebar.tasks.stats.label')}>
|
||||
<p className="task-center__scope">{currentProject
|
||||
? t('sidebar.tasks.projectScope', { project: currentProject.name })
|
||||
: t('sidebar.tasks.scope.currentProject')}</p>
|
||||
<span className="task-center__eyebrow">{t('sidebar.tasks.stats.currentConversation')}</span>
|
||||
<h3>{activeConversationId
|
||||
? currentStats?.title ?? conversationTitles.get(activeConversationId) ?? t('sidebar.tasks.stats.currentConversation')
|
||||
: t('sidebar.tasks.stats.noConversation')}</h3>
|
||||
<dl className="task-center__stat-grid">
|
||||
<div><dt>{t('sidebar.tasks.stats.replyDuration')}</dt><dd>{currentStats ? formatDuration(currentStats.replyDurationMs) : t('sidebar.tasks.stats.unavailable')}</dd></div>
|
||||
<div><dt>{t('sidebar.tasks.stats.messages')}</dt><dd>{currentStats ? currentStats.messageCount.toLocaleString(locale) : t('sidebar.tasks.stats.unavailable')}</dd></div>
|
||||
</dl>
|
||||
{currentStats?.incomplete && <p className="task-center__incomplete">{t('sidebar.tasks.stats.incomplete')}</p>}
|
||||
<details><summary>{t('sidebar.tasks.stats.timeHelp')}</summary><p>{t('sidebar.tasks.stats.timeDescription')}</p></details>
|
||||
</section>
|
||||
{!currentProject ? (
|
||||
<p className="assistant-sidebar__empty">
|
||||
{t('sidebar.tasks.scope.noCurrentProject')}
|
||||
|
||||
Reference in New Issue
Block a user