按各视图的拼写方式呈现已写入的时钟¶
问题:https://github.com/morluto/rea/issues/4933
结果¶
某些应用会根据视图以不同方式拼写同一时刻。Mealie 的食谱视图用 Z 读取结束时间戳(2026-10-21T17:06:13.710410Z),而其食谱列表用 +00:00。状态会为它记录的实体保留每个视图自己的值,因此这些值按记录时的原样渲染;但新建或更新的实体只拥有写入所呈现的值。因此,创建之后进行的列表读取,会以条目的拼写方式渲染新食谱的时钟。写入门控发现矛盾,导致创建未被服务;而若强行服务,则会列出错误的拼写。
行为¶
- 学习。 在检查条目视图或列表视图是否重现其记录时,门控会将每个记录对象的时钟字段与实体存储的值进行比较。如果某个字段的记录值始终以另一种拼写表示同一时刻,则该拼写会进入视图的可选
clock_formats。若视图还以存储值形式显示该字段,或该字段以两种方式拼写(且计入指向另一时刻的值),则该字段不获得任何拼写。一种拼写最多有九位小数。时刻相等性涵盖所有记录的小数位,而不仅仅是毫秒;仅偏移量变化或末尾补零不会改变时刻。时钟解析器负责这一精度,渲染时复用其解析出的信息。 - 边界。 每个字段最多保留一个匹配的拼写和一个其他时刻的拼写,或者为任一类别保留永久的混合标记。被拒绝的格式不会累积。现有的投影预算在保留之前即涵盖学习器的映射、键、格式和返回的视图成员;预算耗尽时保持现有的类型化资源拒绝行为。初步的列表查询探针不会学习或保留时钟状态;只有最终被认可的视图才会如此。
- 渲染。 视图从未记录过的存储值(例如由写入产生的值)将按视图的拼写进行渲染:其挂钟时间位于视图所在时区,使用视图的分隔符,且自带的小数位会用零填充至视图的宽度。不会丢弃任何数字,因此从整秒学习到的宽度不会截断后续值的小数部分。纪元拼写由该时刻计算得出。
门控和服务通过同一函数渲染,因此被服务的创建操作会在列表中按列表的拼写列出,并在读回时使用条目的拼写。data/get 返回存储的值。
验收标准¶
- 试点录制中的 Mealie 创建操作会在列表查询栈上被服务。
- 在 50 个已发布的捕获中,有一个视图学会了某种拼写(Mealie 的食谱列表),且所有写入判定均未改变。
- 50 个捕获中每个被服务的写入工具仍然适用。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea