Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/tx_retention_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
//!
//! 前两切片把「已折叠的明细」变成了可删的:`tx_rollup` 把它们折成可加汇总行(#351),
//! 读侧改从读模型 `tx_facts = 汇总 ∪ 未折叠明细` 取数(#352)。本切片真的删。
//! 删除只受一条约束 —— `transactions` 的**分页列表**要的是逐行身份(`id`/`counterpart`),
//! 汇总行没有它,所以列表**永远**只能从明细表答。于是:
//! 删除只受一条约束 —— 它原先靠**分页列表**立足:列表要的是逐行身份(`id`/`counterpart`),
//! 汇总行没有它,于是当时的列表**永远**只能从明细表答。这条前提已随验收项 2(#406)作废
//! (列表改从读模型取数、窗外那段历史由分钟汇总行承载,见下)。于是:
//!
//! * **保留窗口必须能用分钟表达,且它在盖不住列表的预设时必须有「还债」的载体**。
//! 窗口是 `time < datetime('now', '-N minutes')`,列表最深预设若比它还深、而列表又**只**
Expand Down
5 changes: 3 additions & 2 deletions src/usage_retention_gate.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//! 用量明细保留门禁(rant `2026-10-09T12:28:58` 的独立余项):`usage_records` 可以被删,
//! 但**不许删到读者答不出来**。
//!
//! `transactions` 的删除切片(`tx_retention_gate`)靠一条别的理由立足:列表要逐行身份,所以
//! 窗口必须盖住列表自己提供的预设区间。`usage_records` 没有那层 —— 它的**每一个**生产读者
//! `transactions` 的删除切片(`tx_retention_gate`)靠一条别的理由立足:真实明细的窗口要能用
//! **分钟**表达,而窗口外那段历史另需载体 —— 交易页改从读模型 `tx_facts` 取数之后,它由
//! **分钟汇总行**承担。`usage_records` 没有那层 —— 它的**每一个**生产读者
//! 都是写死的**月/日**窗口(`routes/ops.rs` 的本月与当天、`routes/admin.rs` 的三张用量报表、
//! `routes/org.rs` 的部门本月已用),于是只需一条更简单的不变量:
//!
Expand Down
Loading