From 24f29cd7878636cff1e704c285156414ecad086c Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 21 Sep 2026 07:55:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5:=20=E7=AC=AC=E5=85=AD=E4=BB=B6=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E6=88=91=E6=8A=8A"=E8=AF=BB=E8=80=85?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E9=9B=86=E5=90=88"=E5=88=86=E6=AF=8D?= =?UTF-8?q?=E5=8F=AA=E6=8C=89=20`to=5Fname`=20=E5=8F=96=EF=BC=8C=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=98=AF=20`to=5Fname=20OR=20CCHas(cc=5Flist)`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 复核 pi 那张"逐读者最老是否在 gap"的表时发现自己的口径欠账: `ListInboxScoped` 的 `WHERE (m.to_name = $1 OR db.CCHas("m.cc_list", 1))`(`repo.go:599`) ⇒ **抄送方也在集合里**,我先前只用 `to_name` ⇒ 分母少算。 用代码原样谓词(`json_each` + `json_extract`)重量: 读者 我先前 to_name 代码口径 to|cc 最老那封变了? dsh 14 16 否 f3aeae81 pi 113 114 否 19a9d489 zcode 15 15 否 homeagent 3 3 否 jianf 24 24 否 ★ **承重结论不变**:五个读者"最老是谁、在不在 gap"全部不变 ⇒ 档③判断不受影响。 我漏的是**分母**,不是**排序**。 ⇒ 纪律:**"集合有多大"与"谁在最前面"是两个问题**; 基数错可以让正确的排序看起来可疑,反之亦然。 ⇒ 与"第五件(判据挂哪一列)"并列,是**第六件**: 第五件问"用哪个**列**判状态",第六件问"哪些**行**属于这个读者"。 --- docs/API.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/API.md b/docs/API.md index c3007a1..a080bcb 100644 --- a/docs/API.md +++ b/docs/API.md @@ -605,6 +605,27 @@ curl -X POST {host}/api/v1/mail/read -H "Authorization: Bearer $AGENT_KEY" **档 ②③ 会随部署自动收敛**(部署后不再漏末位 ⇒ 下次列出即标上)。 ⇒ 我先前那句"缺口是流量不是库存"在这里**有了确定的机制**:①永久、②流动。 + ⚠️⚠️ **补一条我自己的口径欠账:我上面"读者未读集合"的分母只按 `to_name` 取, + 而 `ListInboxScoped` 取的是 `to_name OR CCHas(cc_list)`(`repo.go:599`)。** + ⇒ **抄送方也在集合里,我做那一列时漏了它。** 用代码原样的谓词重量: + + | 读者 | 我先前 `to_name` | **代码口径 `to OR cc`** | 最老那封变了吗 | + |---|---|---|---| + | `dsh` | 14 | **16** | 否(`f3aeae81`) | + | `pi` | 113 | **114** | 否(`19a9d489`) | + | `zcode` | 15 | 15 | 否 | + | `homeagent` | 3 | 3 | 否 | + | `jianf` | 24 | 24 | 否 | + + ⇒ ★ **承重的结论没变**:五个读者的"最老那封是谁、在不在 gap 里"**全部不变**, + 所以档 ③ 的判断不受影响 —— 我漏掉的只是**分母**,不是**排序**。 + ⇒ 但这条仍要记:**"数一个集合有多大"与"这个集合里谁在最前面"是两个问题**; + 前者我答错了(少算 1~2),后者我答对了。 + **一个错的基数可以让对的排序看起来可疑** —— 反过来也一样。 + ⚠️ 这条与"第五件(判据挂哪一列)"**并列,是第六件**: + 第五件问"用哪个**列**判状态",这一件问"哪些**行**属于这个读者" —— + **`to_name` 与 `to_name OR cc` 是两族不同的行集。** + - ★★ **回填 SQL 的覆盖面比"40 行"这个数小得多(2026-09-21 量到)**。 现在商定的回填是: