Skip to content

content: sector pages target live-avarii intent (dispecerat, strazi, FAQ acum) - #10

Open
tiXor-code wants to merge 2 commits into
mainfrom
content/sector-live-avarii-intent
Open

tiXor-code wants to merge 2 commits into
mainfrom
content/sector-live-avarii-intent

Conversation

@tiXor-code

Copy link
Copy Markdown
Owner

TLDR: GSC shows /sector/ pages stuck at position 6-9 on live-intent queries, biggest one 'avarii apa calda sector 3 deschis acum' (2,200 impressions, pos 7.6) plus generic 'apa calda sector 2' (936, pos 9.1). This strengthens the sector template to answer the 'in curs acum' intent explicitly and adds per-sector data the SERP leaders (cmteb.ro live list, stale news) do not have. One template edit covers all 6 sector pages.

Changes to app/sector/[id]/page.tsx:

  • Title: 'Apa calda Sectorul N, avarii in curs acum' (59 chars with suffix); description now mentions streets, dispatch and history (153 chars).
  • FAQ restructured: new first question 'Ce avarii de apa calda sunt in curs acum in Sectorul N?' carries the live status sentence plus an honest freshness caveat (nightly update, check cmteb.ro / 031.9442 for the last hours). 'De ce nu am apa calda' keeps only the punct-termic explanation, so the status text is not duplicated.
  • New FAQ + visible line in the live section with the Termoenergetica dispatch numbers for the sector, verified against cmteb.ro/contact.php on 2026-08-24 (Sector 3: 0775.541.175 Vitan, 0775.541.162 Titan; all sectors covered), plus the 031.9442 automated status line and 0800.820.002 TELVERDE. Source cited in a code comment with a re-check note.
  • New section per sector: top 10 streets by days without hot water in the last complete year, from the existing strazi ranking data, with multi-sector streets labeled ('Sectoarele 2-3') and a note that totals cover the whole street. Links to /strada/ pages and the full /clasament/strazi ranking.
  • 'Cauta strada ta' pointer added to the has-outages branch of the live section (previously only shown when the list was empty).

Verification: npm run build zero errors (all 6 sector pages prerendered), vitest 91/91 pass, rendered HTML for /sector/2 and /sector/3 checked for title, dispatch line, streets table and 6-question FAQPage JSON-LD (answers match visible text via the existing faqJsonLd helper).

Generated by SEO Sentinel (orders 54, 55). PR only, human review required before merge.

…FAQ acum)

Queries 'avarii apa calda sector 3 deschis acum' (2.2k impressions, pos 7.6)
and 'apa calda sector N' sit on /sector/[id]; the SERP leaders are cmteb.ro's
live list and stale news. Close the gap on the 'in curs acum' intent and add
per-sector data none of them have:

- title/description now lead with 'avarii in curs acum' (59/153 chars)
- FAQ #1: 'Ce avarii de apa calda sunt in curs acum?' carries the live
  status sentence; 'De ce nu am apa calda' keeps the PT explanation only
- verified Termoenergetica dispatch numbers per sector (cmteb.ro/contact.php,
  checked 2026-08-24) shown in the live section and as a FAQ answer,
  plus 031.9442 status line and 0800.820.002 TELVERDE
- new top-10 streets table per sector from the strazi ranking, with
  multi-sector totals labeled, linking /strada/ and /clasament/strazi
- 'cauta strada ta' pointer added to the has-outages branch too
@vercel

vercel Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
termo-site Ready Ready Preview Oct 12, 2026 7:42am UTC

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified: title (59) and description (153) rendered-char counts match the PR's claims exactly; new topStreets/sectorsLabel usage in app/sector/[id]/page.tsx:168-170,478-480 correctly reuses existing, already-shipped ranking helpers (no new untested logic there); dispeceratPhrase()/DISPECERATE (page.tsx:55-80) is a small pure function gated by the static SECTORS allowlist, so no out-of-range risk; FAQ JSON-LD still mirrors visible answer text via the unchanged faqJsonLd helper. Static generation only (dynamicParams = false), no user input reaches this code, so no injection/authz surface.

One non-blocking note for the human merge step: the hardcoded Termoenergetica dispatch numbers (page.tsx:56-73) are a factual claim I can't verify from code — worth a manual double-check against cmteb.ro/contact.php before merge, as the PR description itself flags.

… content

Conflict resolution for app/sector/[id]/page.tsx: main's newer
generateMetadata (dated status snippet, Sep-Oct) and H1/intro win; this
branch's additions are re-applied on top — dispecerat numbers per sector
(re-verified against cmteb.ro/contact.php on 2026-10-12), the
top-streets table, the 'avarii in curs acum' FAQ entry, and the
'Blocul tau nu apare in tabel?' pointer under the live table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tiXor-code

Copy link
Copy Markdown
Owner Author

TLDR: branch refreshed on 2026-10-12 — merged main (was 53 commits behind, conflicted), build (6,331 pages) and all 137 tests pass. GSC still shows the generic sector queries striking: 'apa calda sector 6' at position 6.1 (459 impressions), 'apa calda sector 4' at 8.5, 'apa calda sector 3' at 9.3, plus the avarii variants at 4-6.5 — this PR's dispecerat numbers, top-streets table and 'in curs acum' FAQ remain the missing content for that intent.

Conflict resolution: main's newer generateMetadata (dated-status description from Sep-Oct) and the new H1/dated intro were kept; this PR's metadata hunk was dropped as superseded. Re-applied on top: DISPECERATE per-sector numbers (re-verified against cmteb.ro/contact.php today, all numbers unchanged), the dispecerat paragraph + FAQ entry, the top-10 streets table with sectorsLabel, and the 'Blocul tau nu apare in tabel?' pointer. Note: PR #12 and #29 also touch this page; whichever merges after this one will need the same kind of refresh (#29 currently merges clean).

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content/code additions (dispecerat numbers, streets table, restructured FAQ) are correct: getStraziRanking/sectorsLabel reused as-is, DISPECERATE lookup is gated by the static 1-6 SECTORS allowlist (no out-of-range access), FAQ JSON-LD still goes through faqJsonLd/JsonLd so the escaping rule in CLAUDE.md is respected, and the streets ranking array is pre-sorted (same .slice(0, N) pattern as app/page.tsx and app/clasament/page.tsx), so .filter(...).slice(0, STREETS_SHOWN) correctly yields the top streets per sector.

One real mismatch with the PR description, though: bullet 1 claims the title changed to "Apă caldă Sectorul N, avarii în curs acum" (59 chars) and the description now mentions streets/dispatch/history (153 chars). That's not what's in this diff — generateMetadata in app/sector/[id]/page.tsx:191-197 is untouched; the title is still the pre-existing `Apă caldă Sectorul ${id}: avarii azi și istoric` (43 chars before the brand suffix), same text that was already on main before this PR. Checked it against git blame: that line was last touched by c37d62a (PR #41, the "adaptive title/description fit" change), which landed on main after this branch opened. The merge commit on this branch (5e2590b, "keep newer sector metadata, re-apply dispecerat + streets content") deliberately kept main's title/description logic over this PR's original title/description edit when resolving the conflict — so the title change described in the PR body was dropped, not merely rebased.

That matters beyond description accuracy: the PR's whole rationale is the title/snippet not capturing the "avarii ... acum" live-intent query (GSC pos 6-9). The FAQ now answers that intent in the body, but the title/meta description — the highest-leverage SERP signal — still says "avarii azi și istoric", not "acum" / "în curs". Please either:

  • reapply the live-intent title/description wording on top of the current adaptive-length title logic (app/sector/[id]/page.tsx:157-198), keeping the 30-60/70-160 char-fit guarantees from lib/seo-meta.ts's sibling pages, or
  • if that's intentionally deferred, update the PR description to drop the stale title/description bullet so it matches what's actually in this diff.

Everything else in the diff looks good to me.

@claude

claude Bot commented Oct 12, 2026

Copy link
Copy Markdown

@claude please address this review:

  • Reconcile the title/description bullet with the actual diff. generateMetadata (app/sector/[id]/page.tsx:191-197) is unchanged — the title is still Apă caldă Sectorul ${id}: avarii azi și istoric (the newer adaptive-title logic from PR Ghid nou: numerele Termoenergetica pentru avarii, pe sectoare #41/c37d62a), not the "avarii în curs acum" wording the PR description claims. The merge commit 5e2590b kept main's title/description over this branch's own edit.
  • Either reapply the live-intent title/meta-description wording on top of the current adaptive-length title logic (keeping the 30-60/70-160 char-fit guarantees from lib/seo-meta.ts), since the title is the highest-leverage SERP signal for the "avarii ... acum" query this PR targets, or update the PR description to remove the stale title/description claim if that part is intentionally deferred.

This branch was successfully deployed

1 active deployment
Preview — 5e2590bc Deployed Oct 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant