From 0e670aa1cf43ae4a657eeaf87d0f765bb4ac5e6f Mon Sep 17 00:00:00 2001 From: tamakyi Date: Wed, 30 Sep 2026 16:58:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E8=A1=A5=E3=80=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=88=B0=E8=AE=BF=E3=80=8D=E4=B8=A4=E7=B1=BB?= =?UTF-8?q?=E6=88=90=E5=9B=A0=EF=BC=88=E7=AB=99=E7=82=B9=E4=BE=A7=E5=89=AF?= =?UTF-8?q?=E6=9C=AC=20/=20=E8=A1=A5=E5=BD=95=E8=A1=8C=E8=A2=AB=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=9B=9E=E6=9D=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e634fbf..7f9bb8d 100644 --- a/README.md +++ b/README.md @@ -35,16 +35,20 @@ ### 数据编辑页上的「重复到访」 -站点里可能残留**历史副本**:同样一次到访存了两份,差别只在 UUID(站点侧生成的那份, -在手机包里找不到)。合并与差异页都是按 UUID 认人的,于是它们会被当成「备份新增」, -导出到 rond 后就是成对的两条。 +站点里可能多出一条一模一样的到访,成因有两种,卡片上会分别标出来: -判定以**这份数据集的基线(导入时留下的手机包)**为参照:到访的 UUID 在基线里找不到、 -而基线里有一条「到达时间 + 地点」完全相同的,判为副本。卡片只在检出时出现在数据编辑页, -默认全选 + 二次确认;清理会连它的位移 / 天气 / 留档一起删,并把指向它的合并标记改指到保留项 -(不动就会在导出时留下悬空引用)。基线不可用或与本站一条都对不上时,卡片只给说明、不给按钮。 +- **站点侧副本**:同一次到访在站点存了两份,差别只在 UUID(站点侧生成的那份在手机包里找不到)。 + 合并与差异页都是按 UUID 认人的,于是它被当成「备份新增」。 +- **补录行被合并回来**:站点**补录**的到访没有留档、也就没有 UUID;导出时会被补上一个确定性的 + 派生 UUID(`v5("ZVISIT/<编号>")`)写进包里,手机于是把它当成一条真记录。这份包再合并回站点时, + 站点这侧没有 UUID 可对齐,又插了一条。 -命令行也有一条等价的工具:`tools/dedup_site_visits.py`(默认只预演,加 `--apply` 才动手)。 +判定以**这份数据集的基线(导入时留下的手机包)**为参照(第二类不用基线)。卡片只在检出时出现在 +数据编辑页,默认全选 + 二次确认;清理会连它的位移 / 天气 / 留档一起清——「补录行被合并回来」那类 +会把位移 / 天气**改挂**到保留项(补录行自己名下没有位移,跟着删就白丢里程),并把指向它的合并 +标记改指到保留项。基线不可用或与本站一条都对不上时,只判第二类,另给一行说明。 + +命令行有一条等价的工具 **只覆盖第一类**:`tools/dedup_site_visits.py`(默认只预演,加 `--apply` 才动手)。 ### 为什么有些到访在页面上看不到