feat(sf-fe-a11): Section 5 «Атмосфера / воздух» #361
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#361
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/sf-fe-a11-section5-atmosphere"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
SF Frontend Wave 4 §A11: Section 5 «Атмосфера / воздух» — последняя из 5 sections на analysis page.
Files (2)
NEW
frontend/src/components/site-finder/analysis/Section5Atmosphere.tsx:id="section-5"+ scrollMarginTopuseParcelAnalyzeQuery(cad)— TanStack Query cache shared<SeasonalWeatherBlock/>(existing) для seasonalityEnvironmentTabбез import full tab (avoid pulling Hydrology/SectionLabel)Modified
frontend/src/app/site-finder/analysis/[cad]/AnalysisPageContent.tsx:<Section5Atmosphere cad={cad}/>Constraints
useParcelAnalyzeQuery(lib/site-finder-api)Verify post-deploy
/site-finder/analysis/66:41:0204016:10— Section 5 рендерится (noise/air/wind + seasonality)auto-fit minmax(220px, 1fr)Part of plan vault
code/patterns/SiteFinder_Frontend_Migration_Plan_May18.md§A11. Все Wave 1-4 sections (1/2/3/4/5) теперь заполнены. Остаётся A12 (Landing redesign) + final acceptance audit.Deep Code Review — verdict: APPROVE
Imports / extraction
HeadlineBar(components/ui/HeadlineBar.tsx) andSeasonalWeatherBlock(components/site-finder/SeasonalWeatherBlock.tsx) resolve, signatures match ({ title, subtitle, rightSlot },{ seasonal }).ParcelAnalysisNoise/AirQuality/Windexist intypes/site-finder.ts;noise/air_quality/wind/seasonal_weathernullable onParcelAnalysis— null-guards correct.NoiseBlock/AirQualityBlock/WindBlock/WeatherWindBlock/WindArrowdefined inline — no import ofEnvironmentTab(grep confirms), so Hydrology/SectionLabel transitive deps avoided as documented.Sections 1-4 preservation
AnalysisPageContent.tsxdiff is exactly: +1 import line, -7/+2 lines swapping the placeholder block. Sections 1-4 wiring byte-identical, sidebar nav anchors 1..5 still present.Duplication justification
EnvironmentTabtransitive import — explicitly called out in PR body. Block components are scoped to file and could be extracted into sharedcomponents/site-finder/atmosphere/*later. Non-blocking; flag as MINOR follow-up candidate.Conventions
as unknown as ParcelAnalysiscast mirrors existing pattern atAnalysisPageContent.tsx:88; non-null assertions gated byhas*flags. No bareany.useParcelAnalyzeQuery(cad)— cache shared, no new HTTP, nouseEffectantipattern.var(--success-soft, #DCFCE7)etc.) — token-first, acceptable.Wind,Thermometer,Droplets); no emoji;aria-labelonWindArrow;aria-hiddenon decorative skeleton/icons.repeat(auto-fit, minmax(220px, 1fr))— mobile collapse ready.EmptyCard+ full empty state all present; wind fallback chain (wind→weather.wind→ empty).Merging.