fix: use full width for supervisor recap and activity
Remove the extra reading and dashboard width caps so recap controls, results, and activity details fill the supervisor panel. Update layout assertions and UI documentation. Release note: 修复监督者工作回顾与活动记录页面偏窄的问题,内容现在铺满页签下方的可用宽度。
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
当前应用页只使用一套共享 PageTabs:“工作回顾 / 故事线图谱 / 自动监督 / 活动记录 / 设置”(英文活动标签为 Activity records)。自动监督独立管理计划;设置只显示模型超时与并发、回顾算法,不含计划、报告、审计或内部页签,也不显示整页全局徽标或独立刷新行。计划范围仍在表单和每条计划内显示。整个页面只有一个一级标题;监督者 bridge 不可用时显示明确错误,设置仍可访问,不回退到旧心跳概览。共享页签保留方向键、Home/End、游标焦点和单一激活面板,窄窗口横向滚动。
|
||||
|
||||
工作回顾只读取统一监督结果。顶部为紧凑的“新回顾”范围、时间、发起与刷新控件,不新增 Modal;简短帮助说明选择仅作用于新请求。历史结果选择与图谱入口位于正文之前,即使只有一条结果也显示选择器。新回顾工具栏、状态、历史选择和结果面板共用 `--content-reading`(820px)宽度,沿页面内容左侧对齐;结果内部按面板内边距排版,不再单独居中窄正文。正文使用“监督结果”标题,常显生成日期、真实范围和覆盖区间,历史结果不标为最新。工作总结按原有空行分段并保留换行;本次变化和未解决事项直接使用已有字段,不补写结论或截断正文。390px 下新请求字段与操作各占两列,结果元数据可换行。
|
||||
工作回顾只读取统一监督结果。顶部为紧凑的“新回顾”范围、时间、发起与刷新控件,不新增 Modal;简短帮助说明选择仅作用于新请求。历史结果选择与图谱入口位于正文之前,即使只有一条结果也显示选择器。新回顾工具栏、状态、历史选择和结果面板铺满监督者页面壳层的可用内容宽度,与页签左右对齐,不另设阅读宽度上限;结果内部按面板内边距排版,不再单独居中窄正文。正文使用“监督结果”标题,常显生成日期、真实范围和覆盖区间,历史结果不标为最新。工作总结按原有空行分段并保留换行;本次变化和未解决事项直接使用已有字段,不补写结论或截断正文。390px 下新请求字段与操作各占两列,结果元数据可换行。
|
||||
|
||||
新回顾运行中保留已显示结果及其日期、范围,禁用重复提交,并显示简短状态和活动记录入口;该入口清除计划筛选并聚焦活动页签。工作回顾不读取自动监督报告,也不显示自动报告空态、记忆与行动建议或第二行全局范围与刷新。无监督结果时显示手动回顾入口;自动报告是否为空不影响此判断。
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
加载、空记录和读取失败分开显示;读取失败保留已显示记录并提供就地重试。活动页面激活时,存在运行中记录则在上次读取结束 2 秒后刷新,否则 10 秒后刷新;每次最多一个请求。切换顶层页签、离开监督者或关闭应用后停止定时器,迟到响应不更新界面。错误后等待用户重试,不持续重发失败查询。
|
||||
|
||||
活动列表与工具栏共用 `--content-dashboard`(1040px)宽度,沿页面内容左侧对齐。范围、计划筛选、清除筛选和刷新紧邻排列,空间不足时换行。列表使用共享表面、边框、状态颜色和按钮。每条运行首先显示类型、状态、开始时间和范围;“收集来源 / 整理批次 / 合并摘要 / 发布回顾”紧随其后,宽窗口使用按内容排布的紧凑状态行,窄于 720px 时两列,不为每个阶段铺设独立色块卡片。阶段读取已保存位置和真实运行状态,剩余来源为零不表示发布成功。旧运行没有阶段字段时显示“未记录”,不猜测失败位置;已提交来源清单可确认收集结束。无变化运行不显示新结果跳转,后续无需执行的阶段单独标注。
|
||||
活动列表与工具栏铺满监督者页面壳层的可用内容宽度,与页签左右对齐,不另设仪表盘宽度上限。范围、计划筛选、清除筛选和刷新紧邻排列,空间不足时换行。列表使用共享表面、边框、状态颜色和按钮。每条运行首先显示类型、状态、开始时间和范围;“收集来源 / 整理批次 / 合并摘要 / 发布回顾”紧随其后,宽窗口使用按内容排布的紧凑状态行,窄于 720px 时两列,不为每个阶段铺设独立色块卡片。阶段读取已保存位置和真实运行状态,剩余来源为零不表示发布成功。旧运行没有阶段字段时显示“未记录”,不猜测失败位置;已提交来源清单可确认收集结束。无变化运行不显示新结果跳转,后续无需执行的阶段单独标注。
|
||||
|
||||
阶段下显示已保存批数、已读字符数、剩余来源和已保存导航合并数,运行中另显示排队或在途数。字符进度按码点统计,界面不展示 Unicode 术语。恢复操作先于详情:运行中可暂停,失败或暂停后沿用同一运行继续;已记录合并、发布阶段时分别显示“继续合并摘要”“重试发布”。成功叶子保留。来源失效时显示新建回顾提示,不提供无效继续。原始错误默认折叠,展开后的完整文本最多占 240px 高度,可滚动、选择复制和键盘聚焦;错误与恢复操作位于批次树之前。结束时间、覆盖区间、报告状态和已有摘要收进“运行详情与配置”,已保存配置在其中再次折叠。
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
.supervisor-workspace {
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
container: supervisor / inline-size;
|
||||
}
|
||||
.supervisor-workspace[data-view="overview"] {
|
||||
width: min(100%, var(--content-reading));
|
||||
}
|
||||
.heartbeat-center > [role='tabpanel'] {
|
||||
min-width: 0;
|
||||
flex: 0 0 auto;
|
||||
@@ -623,7 +621,7 @@
|
||||
display: grid;
|
||||
gap: var(--space-4);
|
||||
min-width: 0;
|
||||
width: min(100%, var(--content-dashboard));
|
||||
width: 100%;
|
||||
}
|
||||
.supervisor-activity > .supervisor-workspace__action-bar {
|
||||
justify-content: flex-start;
|
||||
|
||||
@@ -83,7 +83,7 @@ app
|
||||
const report = await js(`(() => {
|
||||
const box = selector => { const r = document.querySelector(selector)?.getBoundingClientRect(); return r && { left:r.left, right:r.right, width:r.width, height:r.height }; };
|
||||
return { width:innerWidth, pageWidth:document.documentElement.scrollWidth,
|
||||
toolbar:box('.supervisor-workspace__toolbar'), history:box('.supervisor-workspace__result-navigation'), recap:box('.supervisor-workspace__recap'),
|
||||
panel:box('.heartbeat-center > [role=tabpanel]:not([hidden])'), toolbar:box('.supervisor-workspace__toolbar'), history:box('.supervisor-workspace__result-navigation'), recap:box('.supervisor-workspace__recap'),
|
||||
prose:box('.supervisor-workspace__prose'), activity:box('.supervisor-activity'),
|
||||
steps:box('.supervisor-activity__steps'),
|
||||
summaryLength:[...document.querySelectorAll('.supervisor-workspace__summary')].map(e=>e.textContent).join('').length,
|
||||
@@ -93,13 +93,13 @@ app
|
||||
assert(report.pageWidth <= width, 'No page overflow')
|
||||
if (view !== 'activity') {
|
||||
assert(report.summaryLength > 2000 && report.tail, 'Long summary retained')
|
||||
assert(report.recap.width <= 820, 'Whole recap uses reading frame')
|
||||
assert(Math.abs(report.recap.width - report.panel.width) < 1, 'Recap fills the page panel')
|
||||
for (const control of [report.toolbar, report.history]) {
|
||||
assert(Math.abs(control.left - report.recap.left) < 1 && Math.abs(control.right - report.recap.right) < 1, 'Toolbar, history and result share edges')
|
||||
}
|
||||
assert(report.prose.left - report.recap.left <= 25, 'No separately centered inner body')
|
||||
} else {
|
||||
assert(report.activity.width <= 1040, 'Activity dashboard frame')
|
||||
assert(Math.abs(report.activity.width - report.panel.width) < 1, 'Activity fills the page panel')
|
||||
if (width >= 1024) {
|
||||
assert(report.steps.height < 40, 'Compact stage row')
|
||||
assert(report.controls[2].left - report.controls[1].right <= 24, 'Refresh grouped with filter')
|
||||
@@ -217,7 +217,7 @@ app
|
||||
if (scenario !== 'empty') {
|
||||
assert.equal(report.paragraphs, 4)
|
||||
assert(report.text.includes('外部评审时间') && report.text.includes('未解决事项'))
|
||||
if (width === 1440) assert(report.proseWidth < 820, 'Bounded prose width')
|
||||
assert(report.clientWidth - report.proseWidth <= 50, 'Prose fills the panel within card padding')
|
||||
} else assert(report.text.includes('还没有成功回顾'))
|
||||
} else {
|
||||
assert.equal(report.text.includes('暂无自动监督报告'), scenario !== 'populated')
|
||||
|
||||
Reference in New Issue
Block a user