fix(data): un-pair 7 genuinely different smartphone devices - #349
Merged
Merged
Conversation
… base slug The brand-prefix scan across #329/#330/#334 kept flagging some pairs as duplicates that are actually two DIFFERENT products which happen to share a base name — the mechanical slug-matching couldn't tell them apart. A focused pass for that specific pattern (name divergence, not the "same device / data conflict" or "needs a source" patterns already handled) found 7, each confirmed against a source as a distinct real device. Un-paired by giving the mis-slugged variant a distinct slug/filename /name so it is no longer a false duplicate of the base model. No merges; both records stay as separate devices. - HTC U11+ vs U11 — distinct fall-2017 model, smaller bezels, SD835/6GB/3930mAh vs the summer U11 (androidcentral). `u11` -> `u11-plus` (name "HTC U11+"). - HTC One M9+ vs One M9 — the M9+ uses a Helio X10 and QHD display, separate from the SD810 One M9. `one-m9` -> `one-m9-plus`. - Huawei P40 Pro+ vs P40 Pro — distinct higher model (pocket-lint, CNET). `p40-pro` -> `p40-pro-plus`. - Sony Xperia Z3+ vs Xperia Z3 — the Z3+ (a.k.a. Xperia Z4) is a distinct 2015 Snapdragon 810 model with its own Wikipedia page, vs the 2014 Z3 (Snapdragon 801). `xperia-z3` -> `xperia-z3-plus`. - Motorola Razr (2023) vs Razr (2019) — different foldable generations (SD 8+ Gen 1 vs SD 710). `razr` -> `razr-2023`. - Fairphone 3+ (2020) vs Fairphone 3 (2019) — successor model. The 3+ record -> `fairphone-3-plus-dual-sim-lte-fp3plus`. - Gigabyte GSmart GS202+ vs GS202 — distinct + variant. The + record -> `gsmart-gs202-plus`. Each renamed record keeps its own specs and sources untouched (nothing merged, nothing invented); only slug, base_model_slug, name and filename change so the two devices no longer collide as a false pair. New slugs are collision-free. Both gates pass: `python -m app.validate` and `integrity_check.py <data> --strict` (0 hard anomalies). Residual brand-prefix pairs drop from 183 to 176. Refs #296
Regenerates site/public/v1 from the current data with no re-scrape (python -m app.dump). Replaces the 7 old base-name slug pages with the new distinct variant slugs (u11-plus, one-m9-plus, p40-pro-plus, xperia-z3-plus, razr-2023, fairphone-3-plus-dual-sim-lte-fp3plus, gsmart-gs202-plus) and reconciles score percentiles. `app.validate` passes on the dumped tree.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A focused pass for one specific pattern the earlier brand-prefix dedup (#329 / #330
/ #334) kept surfacing: pairs flagged as duplicates that are actually two
different products sharing a base name, which the mechanical slug-matching
couldn't distinguish. This finds 7 (the 3 previously reported plus 4 new) and
un-pairs them — no merges.
Each was confirmed against a source as a genuinely distinct device, then un-paired
by giving the mis-slugged variant a distinct slug / filename / name so it no longer
collides with the base model:
u11u11-plusone-m9one-m9-plusp40-prop40-pro-plusxperia-z3xperia-z3-plusrazrrazr-2023fairphone-3-dual-sim-lte-fp3fairphone-3-plus-dual-sim-lte-fp3plusgigabyte-gsmart-gs202gsmart-gs202-plusIn each pair the other record (the base model —
htc-u11,htc-one-m9,huawei-p40-pro,sony-xperia-z3,motorola-razr, and the base Fairphone 3 /GS202) is left untouched. Nothing merged, nothing invented — only slug,
base_model_slug, name and filename change on the renamed side so the two devices
stop colliding as a false pair. New slugs are collision-free.
Counts
same-model wrong-soc + 157 needing a per-record ram/weight/battery source) genuinely
needs external sources I don't have and is deliberately left alone, per the task.
Validation
python -m app.validate→ passed.integrity_check.py <data> --strict→ no hard anomalies (slug==filename holdsfor all renames; no duplicate slugs).
refreshed in the last commit (old base-name slug pages replaced by the new variant
slugs).
Refs #296