Orisumi

Overview

ADR 记录 Orisumi 的架构决定及其理由

ADR(Architecture Decision Record)记录一项架构决定和它的理由。规则写在 Core、API、Storage 和 Observers 中,ADR 解释为什么。

何时写 ADR

三类决定写成 ADR:

  • 责任归哪个组件。
  • 协议的语义。
  • 某类数据的权威位置。

较小的决定写在对应的类型页、规则页或契约中。只涉及单个 Observer 的决定写在该 Observer 的文档中,模块的运行说明写在模块 README 中。

结构

部分内容
背景需要作出决定的问题
决定确定的做法,每条一句
理由为什么这样做,放弃了哪些方案
代价接受了哪些成本或限制
规则位置承载具体规则的文档

条件、例外和细节写在规则中,ADR 链接过去。流程类决定在 Core 中没有页面,这类 ADR 在“决定”之后加一节“规则”,例如文档的权威与传播。写法见 Core · Conventions。

命名

ADR 用英文 slug 命名,例如 entity-model.mdx,没有编号。引用时写标题并链接,例如 ADR · 实体模型;代码注释写 ADR entity-model。按侧边栏顺序读,每篇只依赖排在它前面的 ADR。

  • 重写期间,ADR 直接改成当前的决定。合并、拆分或改名时,同时更新所有引用。
  • 重写完成后,slug 固定。决定被取代时,新写一篇 ADR,并在旧 ADR 开头链接新的。

目录

分组ADR决定
Foundation定位与边界Orisumi 保存一个人经历了什么,记录以用户为主体,独立于采集和使用它的软件
Foundation文档的权威与传播文档是唯一权威,分为四层,更新只能从模型向实现前向传播
Model实体模型实体表达身份,不可变的版本保存完整内容,引用固定到版本,只引用已保存的版本
ModelObserver 与输入集Observer 是对观测负责的实体,按负责的陈述划分;一次处理实际使用的版本由可共享的 InputSet 列出
Model身份、时间与更新业务规则决定身份和粒度,每个版本有自己的保存时间,更新形成新版本,独立的陈述形成新观测
Model提交与 SDK程序实例的身份持久不变,Observer 的业务代码按业务规则形成事实,平台 SDK 按依赖顺序可靠提交
Model删除删除以实体为单位,只移除选中实体的全部版本,删除后不可复活
Backend后端运行与本地环境四个后端项目组成一个进程,Aspire 编排本地环境,NGINX 提供同源入口
Backend实体 API接口按身份寻址,所有类型共用一组路由,一次提交是一组有序的版本,内容按 JSON 的值比较,错误带规则编号
Backend实体存储所有版本以 jsonb 保存在一张表中,查询走以类型开头的索引,删除留下墓碑,所有操作串行执行
Clients桌面客户端菜单栏客户端托管本机的桌面 Observer,负责启停、状态和设置,只读展示它们当天的数据;陈述由各 Observer 负责
Verification开发验证与测试证据Orisumi.Dev 组织验证并保存证据,原生测试报告是测试结果的权威来源
Verification开发环境的启动与隔离Orisumi.Dev 是启动环境的统一入口,每个检出目录运行一套环境,数据卷可选,服务按需启动
Verification文档站的发布文档站构建为静态文件,GitHub Actions 从 main 构建并发布到 GitHub Pages,测试报告随发布固定

贡献者

页面历史