sessionlog

A deterministic MoonBit model and analytics library for rehabilitation session logs.

rehabilitation
session-log
analytics
MoonBit
moon add ywz1314/sessionlog@0.2.3
Download zip
Author
Version
0.2.3
License
Apache-2.0
Last updated
7 hours ago
Downloads
5
README

#moonbit-sessionlog

一个面向康复训练记录的 MoonBit 数据模型与分析库。它把训练动作、组数、疼痛、RPE、完成度和备注组织成可校验、可迁移、可分析的会话数据,并提供可直接嵌入命令行工具、服务端或前端适配层的纯函数 API。

#项目定位

moonbit-sessionlog 解决的是“训练记录可长期使用”这一问题:输入数据要能发现错误,旧格式要能迁移,连续会话要能比较,输出要能脱敏,规则变化后仍要有稳定的测试与基准。项目不绑定数据库和 UI,核心包保持确定性,方便在 Wasm-GC、原生或其他 MoonBit 目标中复用。

#核心能力

  • lib/coreSetMovementSession 及次数、组数、负荷、完成度和疼痛变化等派生指标。
  • lib/validation:字段范围、日期、备注、组数和重复次数的基础校验,以及可配置的严格校验摘要。
  • lib/schema:V1/V2 JSON 兼容、迁移告警、批量解析、规范化 JSON 和往返检查。
  • lib/analyticslib/serieslib/aggregation:趋势、移动平均、连续会话序列和动作聚合。
  • lib/progressionlib/planninglib/forecast:动作进阶策略、训练计划执行、负荷与完成度预测。
  • lib/alertslib/safetylib/insightslib/quality:风险告警、安全分层、数据质量和可解释洞察。
  • lib/storagelib/querylib/history:有容量边界的内存存储、组合查询和审计记录。
  • lib/reportinglib/interchangelib/dashboard:文本/CSV/JSON、TSV/JSON Lines、汇总看板。
  • lib/cataloglib/calendarlib/consistency:动作目录、日期运算和重复动作的一致性分析。
  • lib/retentionlib/normalization:归档策略、隐私脱敏、去重、导入前清洗与规范化。
  • lib/statisticslib/cohortlib/outcomeslib/workload:描述统计、分组分析、结果量表和负荷窗口。
  • lib/episodeslib/protocollib/operationslib/workflow:连续治疗阶段、目标协议、运营队列和病例状态机。
  • lib/auditlib/risklib/forecastlib/schema:可追溯审计、风险评分、预测区间和兼容性迁移计划。

#快速开始

需要 MoonBit stable 工具链。当前本地验收使用 moon 0.1.20260814 / moonc v0.10.8,可先执行:

moon check --target wasm-gc --deny-warn moon test --target wasm-gc --deny-warn moon run cmd/main

运行基准与确定性校验:

moon run cmd/bench

#CLI

cmd/main 展示 V1 迁移、V2 解析、严格校验、进阶建议、规范化和 dashboard 汇总;cmd/bench 生成固定规模的会话夹具,输出统计量与 checksum,便于在不同机器和 CI 中复测。

在其他 MoonBit 包中引入模块:

import {
"ywz1314/sessionlog/lib/core",
"ywz1314/sessionlog/lib/analytics",
"ywz1314/sessionlog/lib/validation",
}

let session = @core.Session::{
id: "demo-1",
date: "2026-08-19",
duration: 30,
pain_before: 4,
pain_after: 2,
movements: [],
notes: "",
}
let errors = @validation.validate_session(session)
let trend = @analytics.analyze([session])

#架构

core types ├── validation ── schema migration ── interchange/reporting ├── metrics ──── aggregation ─────── analytics/series ├── catalog ──── planning ────────── progression/forecast ├── quality ──── safety/alerts ───── insights/dashboard ├── query ────── storage/history └── calendar ─── normalization ───── retention

包之间通过 moon.pkg 显式声明依赖;数据结构使用 ToJson/FromJson,计算和报告 API 不依赖全局状态。归档与规范化默认保留可追踪的报告信息,隐私策略需要由调用方显式选择。

#基准

基准夹具是确定性的,不把运行时间写死在程序输出中:程序输出 checksum,外层命令负责测量实际耗时。一次 cmd/bench 同时覆盖 10/100/1000 会话规模,以及 1000 会话、6 动作、每动作 4 组的规范化流水线。

本地实测(2026-08-22,Windows NT 10.0.26200.0,AMD Ryzen 7 5800H,moonc v0.10.8,PowerShell Measure-Command,7 次复测):

场景输入规模稳定输出
smoke10 sessions × 2 movements × 2 setschecksum 718862029
weekly100 sessions × 4 movements × 3 setschecksum 1950637087
history1,000 sessions × 6 movements × 4 setschecksum -1039633519
pipeline1,000 sessions × 6 movements × 4 sets,规范化 + retentionchecksum 602712179

cmd/bench 端到端耗时:首轮冷启动 1427.27 ms;其余 6 次热运行平均 282.85 ms,中位数 279.49 ms,完整样本为 1427.27, 298.23, 277.77, 276.50, 285.60, 281.21, 277.76 ms。这些数字用于复现当前环境,不代表所有机器的性能承诺;复测命令为 moon run cmd/bench

#测试与质量门禁

测试覆盖核心模型、边界值、日期闰年、空集合、非法 JSON、迁移告警、容量限制、隐私脱敏、归档去重、动作合并、风险分层、报告格式、工作流门禁和确定性 checksum。当前本地 native 与 Wasm-GC 目标为 88 个测试全部通过

当前生产源码规模为 75 个 MoonBit 文件、26,038 行非空源码;其中去除注释后的非空代码行数为 23,142 行。统计排除了 _build*_test.mbt*_wbtest.mbt,CI 使用去除注释后的代码行数执行 20,000 行门禁。

常用命令:

moon fmt moon info moon check --target wasm-gc --deny-warn moon test --target wasm-gc --deny-warn

#CI

GitHub Actions 在 Ubuntu、macOS、Windows 上执行格式检查、moon info 接口检查、moon check --target all --deny-warnmoon test --target all --deny-warn;Linux 额外生成覆盖率并检查不少于 20,000 行生产 MoonBit 源码。工具链安装脚本跟随 MoonBit stable,接口生成后的工作树必须保持干净。

#许可证

本项目使用 Apache License 2.0