diff --git a/src/tx_retention_gate.rs b/src/tx_retention_gate.rs index 2bc0d74..3e568fe 100644 --- a/src/tx_retention_gate.rs +++ b/src/tx_retention_gate.rs @@ -3,8 +3,9 @@ //! //! 前两切片把「已折叠的明细」变成了可删的:`tx_rollup` 把它们折成可加汇总行(#351), //! 读侧改从读模型 `tx_facts = 汇总 ∪ 未折叠明细` 取数(#352)。本切片真的删。 -//! 删除只受一条约束 —— `transactions` 的**分页列表**要的是逐行身份(`id`/`counterpart`), -//! 汇总行没有它,所以列表**永远**只能从明细表答。于是: +//! 删除只受一条约束 —— 它原先靠**分页列表**立足:列表要的是逐行身份(`id`/`counterpart`), +//! 汇总行没有它,于是当时的列表**永远**只能从明细表答。这条前提已随验收项 2(#406)作废 +//! (列表改从读模型取数、窗外那段历史由分钟汇总行承载,见下)。于是: //! //! * **保留窗口必须能用分钟表达,且它在盖不住列表的预设时必须有「还债」的载体**。 //! 窗口是 `time < datetime('now', '-N minutes')`,列表最深预设若比它还深、而列表又**只** diff --git a/src/usage_retention_gate.rs b/src/usage_retention_gate.rs index 01e5d05..c22e622 100644 --- a/src/usage_retention_gate.rs +++ b/src/usage_retention_gate.rs @@ -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` 的部门本月已用),于是只需一条更简单的不变量: //!