Skip to content

fix(web): earbuds show phone specs (1 inch screen, 1GB RAM, 64GB ROM, cameras); Watch Ultra 2 shows 5G #1142

Closed

Description

@JOY

Found by the live sweep #1131 (Production c23ab85b, 2026-10-27, anonymous visitor).

Problem

Earbuds (and partly smartwatches) are shown with the phone spec schema, filled with values that are wrong or meaningless for the device.

https://rate.vn/earbuds/samsung-galaxy-buds3-pro (desktop 1280 and phone 390), "Thông số kỹ thuật chi tiết":

  • "1. Màn hình": "Kích thước màn hình 1 inch", "Tần số quét 60 Hz", "Mật độ điểm ảnh 300 ppi", "Độ phân giải: Enhanced 2-Way Speaker…", "Kính bảo vệ: IP57…".
  • "2. Phần cứng": "Bộ nhớ RAM 1 GB", "Bộ nhớ trong (ROM) 64 GB", "Đồ họa (GPU): 360 Audio Direct Multi-Channel Engine".
  • "3. Máy ảnh": "Camera chính: 3 High-SNR Microphones", "Camera trước (Selfie): gia tốc kế + con quay hồi chuyển…".
  • Key specs above the fold: "Bộ nhớ (RAM/ROM) 1GB / 64GB", "Camera chính: 3 Micro…".

https://rate.vn/earbuds/apple-airpods-pro-3-usb-c stores display.size_inch 1, refresh_rate_hz 60, ram_gb 1, storage_gb 1; the home page and /earbuds card read "Apple · 1GB RAM · 1GB".

https://rate.vn/smartwatches/apple-watch-ultra-2-64gb shows "Apple · 5G · 64GB": the master has has_5g: true, but the Watch Ultra 2 is LTE (4G), and the offers say "4G" / "GPS + Cellular".

Source: these values are in master_products.specifications, ram_gb, storage_gb, has_5g (GET /api/v1/rate/products/<slug>), apparently filled by the spec enricher into the phone template.

Not a duplicate of #1123 (that one is the stored model_key, samsung:galaxy-buds3-pro:64gb).

Proposed fix

  • Web: render the spec groups per category. For earbuds, use audio groups (drivers, codecs, ANC, battery, connectivity, water resistance) and never show screen size, refresh rate, ppi, RAM, ROM or camera rows; drop the "xGB RAM · yGB" chip on earbud cards. For smartwatches, show "LTE"/"Cellular" rather than "5G" and treat has_5g as phones/tablets only.
  • Data: clear the phone-only fields on earbud masters (ram_gb, storage_gb, display.* numerics) and set Watch Ultra 2 has_5g false. That is a Production data change: propose the SQL for JOY's approval (AGENTS.md 0.1). If the enricher lives in DOS/Rate-Services, open a follow-up there so it stops writing phone fields for earbuds.

Acceptance

  • No earbud page or card shows a screen, refresh rate, ppi, RAM, ROM or camera value.
  • Watch Ultra 2 shows no "5G".

Activity

  1. self-assigned this
    on Oct 27, 2026
  2. JOY commented on Oct 27, 2026

    @JOY
    ContributorAuthor

    [Agent: Audit] Release: filed from the live sweep #1131; research only, no code started. Status Ready on Project #9. The next session may take it over with node scripts/ops/board.mjs 1142 --status in-progress --agent <Nick> --take-over, citing this comment. Evidence was gathered on Production c23ab85b on 2026-10-27; re-check the live numbers before fixing, since crawls change them.

  3. added
    status:in-progressTask currently claimed and being worked on by an Agent
    agent:webClaimed by Agent: Web
    and removed
    status:readyTask ready to be picked up by an Agent
    agent:auditClaimed by Agent: Audit
    on Oct 27, 2026
  4. JOY commented on Oct 27, 2026

    @JOY
    ContributorAuthor

    [Agent: Web] Claimed (take-over per the Audit release comment above). Plan: per-category spec templates on the product page and cards (earbuds: audio groups only, no screen/RAM/ROM/camera rows; smartwatches: no 5G), tests per template, and a trace of which writer stored the phone fields (importer here vs Rate-Services). Any data cleanup will be a SQL proposal only.

  5. added
    status:in-reviewTask completed and waiting for review / PR merge
    and removed
    status:in-progressTask currently claimed and being worked on by an Agent
    on Oct 27, 2026
  6. JOY commented on Oct 27, 2026

    @JOY
    ContributorAuthor

    [Agent: Web] Writer trace: the phone-shaped values come from this repo's importer, not from Rate-Services code. AiSpecEnricher asked the LLM for the phone ten-group schema for every category, and EntityMatcher stored it (Tier 3 insert and enrichMasterProductById). Rate-Services only runs that engine through vendor/rate; a read-only check found no writer of its own for ram_gb, has_5g or specs. The fix in #1163 covers both the display and the importer writes, and reaches the crawler on the next vendor/rate bump. The stored-row cleanup is a SQL proposal in the PR body. Remaining surfaces (/compare, leaderboard, export, API) are in #1166.

  7. added
    status:doneTask completed and verified
    and removed
    status:in-reviewTask completed and waiting for review / PR merge
    on Oct 28, 2026
  8. JOY commented on Oct 28, 2026

    @JOY
    ContributorAuthor

    [Agent: PO] Done: released to production in promote PR #1181 (main 6be33d7); verify-live passed (database ok, 5 routes 200).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions