Record in the catalog design how duplicate originals are proved
catalog.md said content_hash is computed only for import duplicate detection and reconnection, and left "the same image catalogued twice" as unspecified. FR-CAT-11a now handles the within-root case: it proves a group by content_hash where every copy has one, otherwise by first and last megabyte digests kept in dedup_probes, a table created on first use rather than by migration (core/dr-catalog/src/duplicates.rs:296). The cross-root case stays open, and the bullet now says which half is done.
This commit is contained in:
+10
-2
@@ -249,6 +249,13 @@ what you actually have.
|
|||||||
only when something needs it: import duplicate detection (FR-CAT-11), or reconnecting a moved source
|
only when something needs it: import duplicate detection (FR-CAT-11), or reconnecting a moved source
|
||||||
(FR-CAT-9). Never during a routine scan.
|
(FR-CAT-9). Never during a routine scan.
|
||||||
|
|
||||||
|
Consolidating the duplicates a library already holds (FR-CAT-11a, 0.16.0) does not wait for it. It
|
||||||
|
proves a group the same by `content_hash` where every copy has one, and otherwise by a digest of
|
||||||
|
each copy's first and last megabyte, read by range through the backend and kept in `dedup_probes`
|
||||||
|
keyed on the size and mtime it was taken at, so a second review reads nothing.
|
||||||
|
`dedup_probes` is created on first use rather than by a migration, because a schema bump would make
|
||||||
|
an older build refuse this catalog's snapshot at sync (`core/dr-catalog/src/duplicates.rs`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. The library view
|
## 4. The library view
|
||||||
@@ -711,8 +718,9 @@ because if the SQLite path proves troublesome, this is the fallback with a known
|
|||||||
membership needs to be *stable* — for manual ordering, or for a pinned set that must not shift
|
membership needs to be *stable* — for manual ordering, or for a pinned set that must not shift
|
||||||
under the user — it needs materialising with an invalidation rule. Deferred until there is a
|
under the user — it needs materialising with an invalidation rule. Deferred until there is a
|
||||||
concrete need.
|
concrete need.
|
||||||
- **Multi-root capture-time collisions.** FR-CAT-11 detects duplicates on import; the same image
|
- **Multi-root capture-time collisions.** FR-CAT-11 detects duplicates on import, and FR-CAT-11a
|
||||||
catalogued under two roots is a related but distinct case, not yet specified.
|
consolidates the copies one root holds in several folders; the same image catalogued under two
|
||||||
|
roots is a related but distinct case, not yet specified.
|
||||||
- **Timeline granularity selection.** Which bucket size the UI picks for a given zoom is a UI
|
- **Timeline granularity selection.** Which bucket size the UI picks for a given zoom is a UI
|
||||||
concern, but the catalog should probably suggest one from the query's date span rather than have
|
concern, but the catalog should probably suggest one from the query's date span rather than have
|
||||||
the UI guess.
|
the UI guess.
|
||||||
|
|||||||
Reference in New Issue
Block a user