Repository navigation
content: sector pages target live-avarii intent (dispecerat, strazi, FAQ acum) - #10
tiXor-code wants to merge 2 commits into
Conversation
…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
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
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>
|
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). |
There was a problem hiding this comment.
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 fromlib/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 please address this review:
|
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:
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.