Issue 137 - ShaoClean/Alune GitHub Wiki
Issue #137:仓库数据总览——功能与 UI 设计
- 类型:功能
- 状态:综合总览已按新版月光 UI 实现;macOS 本机/loopback SSH 与规模验收通过,草稿 PR 待审阅;跨平台原生验收待完成
- Issue:https://github.com/ShaoClean/Alune/issues/137
- PR:#150(草稿)
- 最近更新:2026-10-01
- 代码调研基线:
6a35428e68de14ef1623c30733a8188242a529a8
目标与确认范围
在现有卡片、列表之外增加“数据总览”,集中展示本机与 SSH 仓库的规模、活跃度、当前工作区状态和来源分布。用户可从数字和图表定位到相关仓库并打开工作区。
2026-09-30,用户明确希望看到各种统计信息和图表,并选择“综合总览:规模、活跃度、状态、来源”。查看修订视觉稿后,用户确认同步。当前以已展示的 01 综合总览 为实现基线,另保留 02 趋势分析、03 全屏大屏 两种布局参考;是否同时产品化不作为已确认的首期承诺。
本页已经替换早期仓库地图方案,旧稿不再作为实现要求。下方历史视觉稿中的数字均为演示数据。2026-10-01 已完成综合总览实现,生产样式以重构后的 UI 为准;真实夹具截图、最终统计口径与证据边界见实现与验收记录。功能尚未合并发布。
2026-10-01 实现更新
- 六项指标、五类图表与下钻已实现,沿用新版主题变量、Geist、Ant Design 和统一弹窗;不引入 ECharts。
- 当前 HEAD、提交者时间、完整 UTC 日;clone/worktree 按登记工作区分别计数。最终口径、接口、缓存与限制见验收记录。
- 已验证真实本机 Git 与临时 SSH、15 组来源/周期、空/未知/失败、浅克隆、焦点回退和 768/1024/1440 明暗布局。500 工作区完整页面采集约 17.2 秒。
- 历史“抽屉”交互由新版统一明细弹窗承担;备选趋势分析/全屏布局未产品化。
- 下方勾选仅表示本次 macOS 与 loopback SSH 环境通过,Windows/Linux 原生、屏幕阅读器真机、公网高延迟及生产大历史未运行。
视觉稿与可下载原型
沿用 Alune 月光主题、产品图标和 Ant Design 图标体系。HTML/CSS 视觉稿使用 Apache ECharts 5.6.0 绘制统计图表,数据可交互筛选。
01 综合总览:当前基线
顶部为范围、周期与六项核心指标;主行展示趋势与状态;第二行展示来源、排行和语言;下方列出需要关注的仓库。

02 趋势分析:布局参考
扩大提交趋势和活跃排行,来源、状态和语言作为下一层信息。使用相同指标与统计口径。

03 全屏大屏:布局参考
隐藏应用侧栏,默认深色,放大指标与图表,适合持续展示。是否在首期提供专门入口待评估。

窄窗口与交互附件
下载 ZIP 后解压并打开 index.html;脚本、图表库、主题与图标已包含。可以切换方案、明暗主题、来源、7/30/90 天、查看提示、点击图表或数字进入明细。正式开发前也可用任意静态 HTTP 服务预览。
顶部三方案切换、演示数据标记及底部评审说明属于设计评审工具,不进入生产页面。截图保留评审时原貌;本页顶部记录当前确认状态。刷新和打开工作区在原型中只显示演示反馈,不连接真实 Git 或 SSH。
首期功能范围
入口与基础行为
- 仓库页右上切换“卡片/列表/数据总览”。保留原默认值,按设备记忆选择,兼容旧偏好。
- 连接页仍支持卡片/列表;共享视图类型与持久化校验应按页面约束。
- 切换视图保留共用的来源范围;原列表的搜索/排序应保留各自状态,不能给总览悄悄施加不可见条件。
- 默认展示当前全部已登记仓库;来源下拉可限定本机或指定 SSH 连接,未解析的连接保留独立兜底身份。
六项核心指标
| 指标 | 口径 | 交互 |
|---|---|---|
| 仓库总数 | 当前来源范围内已登记仓库数量,附本机与 SSH 数量 | 查看全部登记仓库 |
| 活跃仓库 | 本期至少一次符合统计范围的提交,按仓库计数;显示占总数比例 | 查看本期活跃仓库 |
| 本期提交 | 本期提交数量,对比上一等长周期 | 查看贡献提交的仓库及各自计数 |
| 有未提交改动 | 新鲜有效状态中存在改动的仓库数,附改动文件数量 | 查看有改动的仓库 |
| 待同步仓库 | ahead > 0 或 behind > 0 的唯一仓库并集;分别显示待推送、待拉取 | 查看对应工作区和同步数量 |
| 状态待确认 | 未获取、缓存过期或读取失败的仓库数 | 查看原因、时间与重试入口 |
仓库总数是登记数量;当前状态有效覆盖率是新鲜有效状态数/登记数。采集过程中不能将尚未获取的状态计为零改动。
改动文件数量须按仓库和路径去重,同一文件同时已暂存和未暂存不能重复计数。ahead/behind 相对本地已获取的远端跟踪引用,不表示托管服务器的实时状态。无上游应显示“未设置上游”,不能解释为已同步。
五类图表
| 图表 | 表达内容 | 点选下钻 |
|---|---|---|
| 提交趋势 | 每日提交数量,折线/面积;上期对应日用虚线;日均、峰值及有提交天数 | 对应日期有提交的仓库 |
| 工作区状态 | 干净/有改动/未知的互斥环图,数量和比例;显示状态覆盖率 | 对应状态仓库 |
| 来源分布 | 各本机/SSH 来源仓库数量,按上述状态堆叠 | 点击段同时限定来源和状态 |
| 活跃仓库排行 | 本期提交次数 Top 5,显示对总提交的贡献比例 | 目标仓库详情 |
| 主要语言分布 | 每个仓库按主要语言归类计一次,以数量条形图展示 | 对应语言仓库 |
语言图统计的是仓库数,不能解释为代码行数、工作量或人员贡献。未知语言、未采集和分析失败需要明确分类,不能丢弃后仍声称全量覆盖。
筛选与时间
- 来源筛选影响全部指标、图表、下钻与关注表。
- 近 7/30/90 天只影响活跃、提交、历史对比、趋势和排行;状态、来源与语言仍为当前快照。
- 统计图、指标、排行、汇总与明细必须使用同一范围和一致的去重策略。
- 本期与上期采用相邻且不重叠的等长区间;明确包含当前日期与时间边界。上期为 0 时显示“上期无提交”或“新增”,不显示无穷比率。
- 分母为 0 时显示可理解的空态,不使用 NaN;历史缺失、尚未采集与实际零提交必须可区分。
关注表与明细
下方“需要关注的仓库”列出有改动、待推拉及状态未知的仓库,跨类别去重。展示名称、来源、分支、工作区状态、同步状态与操作。支持全部、有改动、待同步、未知/异常切换和查看全部。
点选图表或指标打开新版统一明细弹窗;标题与说明明确当前筛选口径,显示完整来源、路径、分支、状态新鲜度及错误原因,并提供打开正确工作区、刷新/重试。明细返回时保留看板筛选。窄窗口使用可滚动的统一弹窗。
首期不包含自动 fetch/pull/push、跨仓库批量写入、人员绩效评分、仓库依赖图或主机拓扑。
UI 与可访问性规格
- 桌面默认保留现有导航,内容按“标题与操作 → 范围/周期 → 六项数字 → 图表 → 关注表”排列。
- 数字使用清楚的层级和等宽数字特性;次级文字承担统计范围、单位和更新时间,不用装饰性图表填充空间。
- 主色用于正常统计系列;琥珀色表达改动,灰色表达未知。关键状态同时显示文字、数量或图标,不能只依赖颜色。
- 趋势本期为实线,上期为虚线;提示中明确日期和对比含义。当前状态图不会随周期选择变成历史状态图。
- 图表单位、坐标、图例和样本覆盖范围可见;缺失区间不能通过平滑曲线伪造连续数据。
- 复用
theme.css的背景、表面、文字、边框、主色、状态色、圆角与动效变量。支持浅色、深色与减少动态效果。 - 1440 px 等宽屏保持多图表布局;1024/768 px 按可用宽度重排指标及图表。表格可内部横向滚动,页面无整体横向溢出。
- 对图表提供可键盘访问的指标/图例/数据表替代入口及必要文字描述;纯 Canvas 点击不能是唯一入口。弹窗支持 Esc、焦点圈定及关闭后恢复到触发项。
原设计的数据能力与工程建议(2026-09-30)
已有数据可复用
仓库登记、来源归属、状态 phase/data/updatedAt/stale、分支与变更文件、ahead/behind、工作区打开动作、视图偏好与主题。
现有状态队列总并发上限 3、后台上限 2,缓存 60 秒(调研基线)。新的聚合方案需要继续尊重状态缓存、去重和资源边界;最终限制以实现时基线为准。
需要新增的数据
- 活动聚合:跨仓库提交摘要、周期序列、上一等长周期与排行。
- 语言识别:主要语言、采集覆盖率、未知/失败原因及缓存。
- 统一聚合摘要:来源、状态、活动与语言的统计版本、时间、范围、覆盖数和部分失败信息。
拟将渲染与采集分开:页面消费摘要,后台按预算采集并增量更新;点击后再加载必要明细。避免每个图表独立重复请求 Git、拉取完整 diff 或扫描文件内容。
控制 SSH 并发、超时、扫描文件数及体积,支持取消、缓存和单来源失败隔离。不能为了显示全量数字在进入页面时无界执行全量远程探测。尚未采集项明确为未知,并提供有范围说明的手动刷新。
提交历史范围、作者时间/提交时间、时区、浅克隆覆盖、多个 clone/worktree 共享历史去重以及语言检测排除规则,需要在实现前落入接口设计和测试。视觉稿按当前分支演示,不代表这些细节全部最终确定。
代码线索
- RepositoriesPage:页面入口、来源范围和原视图操作。
- CollectionViewSwitch 与 workspaceStore:增加按页面约束的 dashboard 模式及持久化兼容。
- repositoryStore 与 useRepositoryStatus:缓存、过期及失败语义。
- repositorySource:本机/SSH 归属与兜底。
- 共享数据类型 与 theme.css。
可新增独立总览组件、纯统计派生函数和后台聚合接口。ECharts 已用于视觉稿;正式库选型仍需验证许可证、包体、可访问性与性能,视觉确认不强制具体依赖。
验收标准
- 卡片/列表/数据总览切换及偏好恢复正确,旧配置兼容,连接页与原视图无回归。
- 六项核心指标与五类图表数据一致,来源、周期、范围、去重与比例规则可追溯。
- 同期日期边界及零分母正确,当前快照不随周期切换伪造成历史状态。
- 状态分类互斥且总和等于登记数;待同步并集去重;无上游、未知、旧缓存及失败无误报。
- 图表/指标下钻与交集筛选准确,关注表与明细能打开正确仓库。
- 空列表、无活动、未采集、无匹配、部分失败、浅克隆和远端超时均有明确反馈。
- 提交及语言统计口径有文档、针对性测试及真实 Git 夹具验证。
- 缓存、并发、错误隔离、刷新及取消符合资源约束,不隐式同步或修改仓库。
- 明暗主题、减少动态效果、键盘与语义化替代入口、弹窗焦点及窄屏布局验收通过。
- 对 0/1/20/100/500 仓库完成真实采集、渲染与本机/SSH 回归记录。
验证记录与证据边界
视觉稿使用同一份可重复计算的 48 仓库演示数据:24 本机、12 开发、8 预发布、4 构建;近 30 天提交 427 次,上期 349 次,21 个活跃仓库。工作区状态为 32 干净、11 有改动、5 未知;待推送 7、待拉取 6,其中 3 个重叠,去重后待同步 10。
| 日期 | 场景 | 结果 |
|---|---|---|
| 2026-09-30 | HTML/CSS+ECharts 浏览器视觉稿;五张图表、指标、明细 | 已渲染并截图检查 |
| 2026-09-30 | 排行点击、来源筛选、7 天联动、零结果、异常入口、表格筛选、主题与布局 | 演示交互验证通过 |
| 2026-09-30 | 5 个来源范围(含全部)× 7/30/90 天 | 15 组演示数据校验通过:每日和提交总数一致,状态与语言汇总等于范围内仓库数,待同步并集正确;见 JSON 附件 |
| 2026-09-30 | 1600 px 桌面/完整页面与 768 px 窄窗口 | 截图已检查,768 px 无页面整体横向溢出 |
| 2026-09-30 历史状态 | 真正的状态、提交、语言采集;大规模性能;跨平台应用;完整无障碍 | 当时未运行:产品尚未实现,不能以演示验证代替 |
| 2026-10-01 | 真实数据实现、macOS 浏览器、loopback SSH、0/1/20/100/500 规模 | 实现与验收记录;跨平台原生与生产边界另列,未视为通过 |
实现时使用临时本机/SSH 仓库和受控提交历史验证日期、分支、clone/worktree、浅克隆、改动状态和语言识别,记录真实命令、系统和结果。较长验收可另建 Issue-137-Validation。
风险、未决事项与回退
- 历史和语言统计的采集成本、缓存失效、部分覆盖与去重规则是主要工程风险。
- 基础状态与新增活动/语言能力可以分阶段交付;未接入的图表必须显示“尚未采集/暂不可用”,不得用随机数据占位。完整验收仍要求本页的六项指标和五类图表。
- 02/03 布局是否进入首期及是否提供全屏入口待实现评估。
- 本功能不改变磁盘仓库;若总览需回退,可关闭入口并将失效视图偏好安全回退到卡片,保留原有两种视图。