
Super Productivity 指标系统深度解析每日指标存储、评分模型与上下文统计【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivityMetrics指标是 Super Productivity 中按天记录、随上下文变化的工作回顾数据原始输入焦点会话、影响力评分、精力打卡、反思由应用持久化保存而生产力评分、可持续性评分、聚合统计与趋势指标则在打开视图时按需计算。阅读本文后你将掌握哪些数据被存储、哪些被实时计算的边界理解生产力与可持续性两套评分模型的具体权重与公式并能正确解读指标视图Metrics View、评估表Evaluation Sheet和分享摘要在不同上下文下的统计口径。每日指标追踪什么Super Productivity 为每一天维护一条以日期为唯一标识的指标记录metric record。应用将指标数据划分为两大类别持久化字段作为当天记录的一部分存入本地数据并在启用同步时一并同步与计算字段仅在打开相关视图或报表时临时算出。持久化的每日字段从 metric.model.ts 中的MetricCopy接口可以看到每天持久化保存的字段包括日期id该记录归属的日期字符串也是记录的实体主键。焦点会话focusSessions当天来自专注模式Focus Mode的会话时长列表。完成一个焦点会话后应用会把时长追加进该列表。评估字段Evaluation fields笔记notes、明天提醒remindTomorrow、以及自由文本形式的反思reflections。这些是在评估表中输入的内容反思条目由ReflectionEntry文本 创建时间戳构成。影响力评分impactOfWork你对当天工作价值打出的 1–4 星评分。注释明确标注这是v2.4 引入的生产力评分字段且以影响力为核心驱动——生产力得分对影响力的权重远超原始工时。精力打卡energyCheckin你对当天状态的 1–3 评分1疲惫2尚可3良好是 v2.3 可持续性评分字段用于区分高产但正在透支与高产且可持续。工作与任务计数器当天总工作分钟数totalWorkMinutes源码注释标注为 TODO 待移除的旧字段、已完成任务数completedTasks与计划任务数plannedTasks。其中totalWorkMinutes在实际计算中优先由 worklog 推导见下文仅在 worklog 无数据时才回退到该字段。默认值定义在 metric.const.ts新的一天从空焦点会话列表、remindTomorrow: false、空反思列表开始。所以应用为一天记住的内容就是日期、焦点会话、笔记/提醒/反思、影响力、精力、工作与任务总数。其余你看到的一切分数、平均值、趋势、图表都是在打开相关视图时由这些存储数据叠加 worklog 与任务数据计算出来的。按需计算的字段应用不持久化下列数据而是在需要时即时计算聚合指标简单指标 SimpleMetrics针对所选日期范围与上下文计算总耗时、总休息时间与休息次数、任务计数已完成/总数/子任务/主任务/父任务、范围内的工作天数以及各类平均值每天平均耗时、每个任务平均耗时、每天平均休息次数等。这些由 worklog、休息数据和任务列表派生而来完整的字段清单见 metric.model.ts 的SimpleMetrics接口含timeSpent、timeEstimate、breakTime、breakNr、nrOfCompletedTasks、nrOfAllTasks、nrOfSubTasks、nrOfMainTasks、nrOfParentTasks、daysWorked及一组avg*平均值。生产力评分0–100 的当日得分或按周期取平均由影响力评分主权重、专注分钟数来自焦点会话与总工作分钟数共同计算。因此得分反映的是工作有多有价值而非工作了多久。可持续性评分综合专注分钟数、总工作分钟数与精力打卡计算的得分用于区分高产且可持续与高产但过度消耗。趋势指标跨周期对比如本周 vs 上周判断生产力或可持续性上升、下降还是持平并给出变化幅度。生产力分解Productivity Breakdown按天列出的明细项得分、影响力、专注分钟、总分钟、精力用于表格和图表渲染。图表数据生产力与可持续性得分随时间变化的折线图以及焦点会话、简单计数器等其他序列底层数字由持久化指标与 worklog 在展示范围内计算得出。打开指标视图或评估表时应用会先加载存储的每日记录再为当前范围和上下文计算得分与聚合值全局图表序列则展示在 Today 指标视图中。从 metric.service.ts 可以看出getAverageProductivityScore$、getProductivityTrend$、getAverageSustainabilityScore$、getSustainabilityTrend$等方法都接收days默认 7与endDate参数通过选择器拉取最近 N 天指标后套用评分工具函数而上一周期则由_getPreviousPeriodDate将结束日期往前回退days天得到。持久化 vs 计算为什么这个边界很重要持久化数据存储在你的数据中启用同步时会被同步可以手动编辑或新增如影响力、精力、反思焦点会话由应用在完成时自动追加工作/任务计数器随工作推进更新。它是这一天的事实来源source of truth。计算数据不以独立数字形式存储。当你修改任一持久化值比如把影响力从 2 改成 4或新增焦点会话后下次打开指标视图或评估表时分数与趋势会重新计算——你看到的永远是与当前存储数据一致的分数和图表。这一设计让存储保持简单每天一条记录、字段集合固定同时仍能提供丰富的汇总与趋势。在实现层面metric.reducer.ts 展示了upsertMetric与logFocusSession两个 action 的处理logFocusSession会在已有记录上追加时长或为不存在记录的新日期用默认值创建新记录——分数本身从不进入 reducer这印证了只存原始数据、按需计算的架构。生产力评分以影响力为主的 65/30/5 加权模型评分实现集中在 metric-scoring.util.ts源码注释标明这是v2.8 版本Impact-driven影响力驱动同时认可非专注工作。核心权重常量如下分量权重说明影响力IMPACT0.65用户对工作价值的 1–4 分评估是主要驱动专注进度FOCUS0.30朝向深度工作目标的进度达标给满分超出持平总工作量TOTAL_WORK0.05对整体付出的认可10 小时封顶calculateProductivityScore的具体算法metric-scoring.util.ts影响力分量impactRating / 4归一化到 0–1IMPACT_SCALE_MAX 4。专注进度分量focusedMinutes / 240默认目标 4 小时DEFAULT_TARGET_FOCUSED_MINUTES 240钳制在 0–1超过目标不额外加分但也绝不扣分——得分必须随专注时间单调不减因为过度工作应由可持续性评分来惩罚源码注释明确说明这一设计意图。总工作量分量totalWorkMinutes / 600默认上限 10 小时DEFAULT_MAX_WORK_MINUTES 600封顶防奖励加班。三个加权分量求和后放大到 0–100 并四舍五入。源码给出的三个示例直观展示其行为calculateProductivityScore(4, 240, 600)→100高影响力 达标专注calculateProductivityScore(2, 180, 360)→约 58中等影响力的典型工作日calculateProductivityScore(1, 240, 360)→约 49专注很好但影响力低分数只有中等单元测试 metric-scoring.util.spec.ts 还验证了更多边界行为低影响力高专注日得分显著偏低约 48影响力恒定、专注从 120 提到 240 时得分提升 14–20 分专注是次要因素(4, 240, 600)与(4, 360, 600)都返回 100超出目标不给额外分等等。可持续性评分精力、负荷与专注平衡可持续性评分是v2.5 版本指数衰减 sigmoid 工作量模型metric-scoring.util.ts分量权重说明新鲜度FRESHNESS0.45精力水平来自打卡缺失时用中性回退工作量WORKLOAD0.40合理工时惩罚过度工作专注平衡FOCUS_BALANCE0.15倒 V 曲线——4 小时最优超出则惩罚三个分量的数学形式calculateSustainabilityScoremetric-scoring.util.ts新鲜度精力打卡(value - 1) / 2映射到 0/0.5/1ENERGY_CHECKIN_MIN 1、ENERGY_CHECKIN_DIVISOR 2未打卡时回退到FRESHNESS_NEUTRAL 0.5。工作量以 8 小时480 分钟为拐点的 sigmoid 函数2 / (1 exp(0.01 × (minutes − 480))) − 1钳制在 0–1——0 小时接近满分8 小时归零16 小时接近 −1钳制为 0。这是平滑衰减而非生硬线性截断。专注平衡倒 V 曲线。专注 ≤ 4 小时FOCUS_BALANCE_PEAK_MINUTES 240时线性增长到 1超过 4 小时后按exp(−0.00001 × excess²)指数衰减——认知疲劳是非线性的过度深度工作会被惩罚这正是4 小时得分约 49、6 小时约 47的原因见源码注释示例。示例验证源码注释 测试calculateSustainabilityScore(240, 420, 2)→ 约 49calculateSustainabilityScore(360, 420, 2)→ 约 47比 4 小时低calculateSustainabilityScore(240, 420, 3)→ 约 72精力好、工时合理、专注最优。值得注意的是计算前提在 metric.service.ts 中只有当天存在energyCheckin数据时才计算可持续性得分专注时间可以为 0同理生产力得分只在存在impactOfWork时计算metric.service.ts。因此没有填写影响力/精力打卡的日子不产生分数是设计使然。每日状态分类四象限 两个特殊状态基于两套得分应用把每一天归入一个状态标签utils/get-daily-state-info.util.ts以 50 分为两个维度的高低分界线DEEP_FLOW心流生产力高 可持续性高——理想状态。STEADY稳健生产力中等40–50 可持续性高。OVERDRIVE过载生产力高 可持续性低——提示有燃尽风险。RECOVERY恢复生产力低 可持续性高——休息充电期。IMPACT_MISMATCH影响力错配可持续性高、影响力只有 1 星、但专注时间 ≥ 150 分钟——专注很多却自评低价值的矛盾信号。DRIFT漂移两个维度都低——需要关注。每个状态在评估表中对应不同的图标、标题与提示文案。得分颜色则由getScoreColorGradientmetric-scoring.util.ts按 0–100 映射到红→绿的 HSL 渐变0–33 红、34–66 黄、67–100 绿。指标出现在应用的哪些地方指标视图Metrics View指标视图是当前工作上下文下的聚合指标表总耗时、预估时间、已完成/全部任务数、工作天数、每天平均任务数、每天平均休息次数、每天平均耗时、每个任务平均耗时含/不含子任务、平均休息耗时等数据来自 metric.component.ts 与 metric.component.html。当上下文为Today全部任务视图时使用AllTasksMetricsService为项目时使用ProjectMetricsService。此外 Today 指标视图还会展示全局折线图生产力与可持续性得分随时间变化、焦点会话趋势、简单计数器数据源码见 metric.component.ts并带有活动热力图activity-heatmap。评估表Evaluation Sheet评估表面向单个日期负责展示并编辑持久化字段笔记、反思、影响力、精力、明天提醒同时实时计算当天的生产力得分与可持续性得分evaluation-sheet.component.ts。也就是说评估表既是每日数据的输入口也是当日得分的展示处——修改影响力或精力后得分立即通过computed信号重算。它还会展示最近 7 天的平均分与趋势getAverageProductivityScore$(7, day)与getProductivityTrend$(7, day)evaluation-sheet.component.ts并可打开生产力分解对话框查看明细。分享 / 工作总结Share / Summary使用分享或工作总结功能时应用基于聚合指标可选附带当前项目或 Today 上下文生成分享文本。从 metric.component.ts 可见sharePayload直接把simpleMetrics中的总耗时、完成任务数、日期范围、项目名以及所有avg*平均值交给ShareFormatter.formatWorkSummary——分享出去的数字与你在该上下文和范围内看到的一致。图表Charts生产力与可持续性过去 N 天的折线图在 Today 指标视图中展示数据来自计算的 breakdown 与得分数据不存在独立的图表存储对象。getProductivityBreakdown$按天生成含得分、影响力、专注分钟、总分钟、精力的明细metric.service.ts组件据此构建 Chart.js 折线图数据集生产力为青色、可持续性为紫色metric.component.ts。小结持久化数据在评估表中编辑与查看焦点会话自动追加计算型聚合与得分展示在指标视图、评估表与分享摘要中全局趋势与图表展示在 Today 指标视图。上下文如何影响指标聚合指标表的上下文敏感性体现在服务选择上metric.component.tsToday / 全部任务AllTasksMetricsService使用所有任务与完整 worklog 计算总数与平均值——你会看到所选范围内的全部数据。实现上它会跨所有项目与标签聚合休息次数与休息时长_aggregateBreaksAcrossContexts见 all-tasks-metrics.service.ts并通过getAllTasksEverywhere()拉取全部任务。项目ProjectMetricsService只使用当前项目内的任务与该项目对应的 worklog通过getAllTasksForProject(activeId)与getBreakNrForProject/getBreakTimeForProject取数得到项目维度的总数与平均值。而评估表与每日得分永远按天计算一次一个日期生产力与可持续性的趋势和图表则按日期范围如最近 7 或 30 天从存储的每日记录与 worklog 计算不受项目限制——它们使用全局每日指标记录与 worklog展示在 Today 指标视图中。底层聚合逻辑集中在 metric.util.ts 的mapSimpleMetrics它根据 worklog 汇总daysWorked与休息数据遍历任务列表统计主任务/子任务/父任务数、累计timeEstimate、统计已完成任务最后计算avgBreakNr、avgBreakTime、avgTasksPerDay、avgTimeSpentOnDay、avgTimeSpentOnTask、avgTimeSpentOnTaskIncludingSubTasks等平均值。另外totalWorkMinutes的取值优先级在 metric.service.ts 中为worklog 当日实际耗时 → 记录的totalWorkMinutes字段 → 专注分钟数兜底。总结每天持久化日期、焦点会话、笔记、明天提醒、反思、影响力1–4、精力1–3、总工作分钟、已完成/计划任务数。按需计算聚合指标范围内耗时、休息、任务数、平均值、生产力得分、可持续性得分、趋势指标、生产力分解与图表数据。生产力得分强调影响力65%可持续性得分综合专注时间、总工时与精力打卡新鲜度 45%、工作量 40%、专注平衡 15%。查看位置评估表每日输入与得分、指标视图按上下文的聚合表 Today 全局图表、分享摘要当前上下文的聚合值。相关文档4.18-Reflection — 反思是持久化每日指标字段之一4.15-Timers-and-Focus-Mode — 焦点会话记入每日指标并输入生产力/可持续性得分3.02-Settings-and-Preferences — 评估与指标生产力助手设置指标数据模型 —MetricCopy与SimpleMetrics字段定义评分工具与权重 — 生产力/可持续性评分公式与常量指标服务 — 平均分、趋势、分解等按需计算入口评分单元测试 — 评分模型的数值验证用例【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考